ESP8266开发板+mysql数据库+DHT11

2023-11-15

wemos D1 wifi ESP8266开发板连接mysql

wemos D1 wifi ESP8266开发板是一款基于esp8266的开发板,使用这个开发板可以很方便的连接wifi。同时这个开发板有很多IO口供我们使用。这个开发板的可以使用Arduino的IDE进行程序的编辑上传。具体的配置方法我就不说了,网上有很多教程。
目的:配置D1开发板连接mysql数据库,将DHT传感器读取到的数据存进mysql数据库。
准备库文件:配置开发板连接wifi用的库文件: esp8266WIFi
配置开发板连接Mysql需要的库文件:MySQL_Connector_Arduino
这些库文件可以在gitHab上找到,下面是网址:
https://github.com/adafruit/DHT-sensor-library
https://github.com/ChuckBell/MySQL_Connector_Arduino
https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WiFi
步骤:
1. 安装mysql数据,创建一个用户,一个table用来存储数据。

create database arduino_test;  // 创建一个数据库
create table test1(			//  创建一个测试表,用来存储开发板发来的信息
    tem double(3,1),
    hem double(3,1)
     );
  1. 配置mysql,运行用户进行远程连接。如果不进行配置开发板讲无法连接数据库。
    首先关闭mysql服务 net stop msyql // 具体的服务名要看你安装的时候设置的
    进入Dos界面,切换到mysql/bin目录下,就是你的Mysql安装目录默认安装的话一般都是:C:\Program Files\MySQL\MySQL Server 5.5\bin 或者进入这个目录下,按住Shift的同时点击鼠标右键。选择在此处打开Powershel窗口。
    输入mysqld --skip-grant-tables回车。
    再开一个DOS窗口,也切换到mysql\bin目录。
    在新开的窗口 输入mysql 回车,
    连接权限数据库:use mysql;
    更改密码 update MySQL.user set authentication_string=password(‘root’) where user=‘root’;
    最后刷新一下:flush privileges;
    关闭这两个窗口
    开启Mysql服务,在Dos窗口中输入 net start mysql
    如果还不行就去这个网址看一下,这个大神讲的很详细,https://www.cnblogs.com/lzyThingking/p/6501316.html

  2. 编写程序上传到板子里

#include <ESP8266WiFi.h>             // esp8266库
#include <MySQL_Connection.h>    // Arduino连接Mysql的库
#include <MySQL_Cursor.h>
#include <DHT.h>      // DHT库 
#define DHTPIN 4     // 定义DHT的引脚
#define DHTTYPE DHT11 // 定义dht类型

DHT dht(DHTPIN, DHTTYPE); // 初始化DHT11传感器

IPAddress server_addr(192,168,###,###);   // 安装Mysql的电脑的IP地址
char user[] = "root";              // Mysql的用户名
char password[] = "root";        // 登陆Mysql的密码

// Mysql中添加一条数据的命令
// arduino_test,test1:刚才创建的数据和表
char INSERT_SQL[] = "INSERT INTO  arduino_test.test1(tem,hem) VALUES ('%s','%s')";

char ssid[] = "360WiFi";         // WiFi名
char pass[] = "ss123456";     // WiFi密码

WiFiClient client;                 // 声明一个Mysql客户端,在lianjieMysql中使用
MySQL_Connection conn(&client);
MySQL_Cursor* cursor;		// 

// 读取传感器的数据并写入到数据库
void readAndRecordData(){
				  Serial.print(dht.readTemperature());      	// 在串口中打印读取到的温度
				  Serial.print(",\t"); 
                  Serial.println(dht.readHumidity());             // 在串口中打印读取到的湿度
                  char buff[128];                                         // 定义存储传感器数据的数组
                  char tem[5];			
                  char hem[4];				
                  // 将传感器采集的浮点数转换为3位整数一位小数的字串放入temp
                  dtostrf(dht.readHumidity(),3,1,tem);
                  dtostrf(dht.readTemperature(),2,1,hem);
                  sprintf(buff,INSERT_SQL,tem,hem);                 // 讲tem和hem中数据放入SQL中
                  MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);         // 创建一个Mysql实例
                  cur_mem->execute(buff);         // 将采集到的温湿度值插入数据库中
                  Serial.println("读取传感器数据,并写入数据库");
                  delete cur_mem;        // 删除mysql实例为下次采集作准备
}

void setup()
{
  Serial.begin(9600);
  while (!Serial);      //  等待端口的释放
  Serial.printf("\nConnecting to %s", ssid);
  WiFi.begin(ssid, pass);         // 连接WiFi
  while (WiFi.status() != WL_CONNECTED) {       // 如果WiFi没有连接,一直循环打印点
    delay(500);
    Serial.print(".");
  }

  Serial.println("\nConnected to network");
  Serial.print("My IP address is: ");
  Serial.println(WiFi.localIP());     // 打印开发板的IP地址

  Serial.print("Connecting to SQL...  ");
  if (conn.connect(server_addr, 3306, user, password))         // 连接数据库
    Serial.println("OK.");   
  else
    Serial.println("FAILED.");
  cursor = new MySQL_Cursor(&conn);    // 创建一个数据库游标实例
}

void loop()
{
  readAndRecordData();        
  delay(5000);
}
  1. 测试
    将代码上传到板子里,打开串口可以看到传感器数据。打开数据库可以看到传感器读取的数据

[参考]
MySQL Connector/Arduino Dr.Charles Bell January 2016 PDF

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ESP8266开发板+mysql数据库+DHT11 的相关文章

  • 如何根据条件删除结果以计算平均值

    我有下面的架构 对其的快速解释是 鲍勃评分为 5 5 詹姆斯评分 1 5 梅西百货评分高达 5 5 逻辑 如果我是 A 请查找我屏蔽的所有人 查阅所有电影评论 任何留下电影评论且 personA 已屏蔽的人 请将其从计算中删除 计算电影的平
  • Postgresql 的 SQL_NO_CACHE?

    MySQL 关键字是否有等效的 postgresqlSQL NO CACHE 或 SQL Serverdbcc drop clean buffers 即您可以简单地将其包含在 SQL 语句中或作为脚本的一部分吗 UPDATE 这个问题 查看
  • 拉拉维尔; “SQLSTATE[HY000] [2002] 连接被拒绝”

    我在 OSX 主机上设置了 homestead 2 0 并使用 Sequel Pro 我可以进行迁移并确认数据已在Sequel Pro中迁移 因此看起来数据库连接没有问题 但是 一旦我尝试从 Laravel 4 2 应用程序获取数据 它就无
  • 为 java 项目创建安装

    我创建了一个 java 项目 它使用数据库来检索 编辑和保存数据 我使用 Netbeans 完成了该项目 现在我想在该项目之外创建一个安装 为此 我想包含与项目一起安装的数据库 我用来连接数据库的代码是 Class forName com
  • MySQL:“您的 SQL 语法错误...靠近键...”? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我发现了一个非常酷的用于丢失密码的脚本 但是这一行给我带来了问题 r mysql query INSERT INTO keys u
  • 如何比较行内的重叠值?

    我似乎对这个 SQL 查询有问题 SELECT FROM appts WHERE timeStart gt timeStart AND timeEnd lt timeEnd AND dayappt boatdate 时间格式为军用时间 物流
  • 打印表数据mysql php

    我在尝试打印表格的一些数据时遇到问题 我是 php mysql 的新手 但我认为我的代码是正确的 这里是 h1 Lista de usu rios h1
  • 重置 MySQL root 密码不起作用

    我花了很多时间阅读并尝试了数十种重置 root 密码的方法 但我一无所获 我发现 并尝试过 的最完整的说明如下 顺便说一句 我在 Win7 32 位上运行 MySQL 5 5 我创建了一个文件 c mysqlinit txt 其中包含两行
  • Python MySQL 操作错误:1045,“用户 root@'localhost' 的访问被拒绝

    我试图通过以下方式从我的 python 程序访问数据库 db mysql connect host localhost user Max passwd maxkim db TESTDB cursor db cursor 但是 我在第一行代码
  • MYSQL 的 Google OAuth 2.0 用户 ID 数据类型

    我正在实施 Google OAuth 2 0 并注意到 Google OAuth 返回的唯一用户 ID 是21位数字长的 我想大整数 20 足以满足这种需求 但我现在看到 Google OAuth 返回的用户 ID 的长度感到困惑 关于我应
  • 如何重命名 MySQL 数据库(更改架构名称)?

    如何快速重命名 MySQL 数据库 更改其架构名称 通常我只是转储数据库并使用新名称重新导入它 对于非常大的数据库来说 这不是一个选项 显然RENAME DATABASE SCHEMA db name TO new db name 做了坏事
  • 私人聊天系统MYSQL查询显示发送者/接收者的最后一条消息

    在这里我延伸一下我之前的问题 私人聊天系统MYSQL查询ORDERBY和GROUPBY https stackoverflow com questions 10929366 private chat system mysql query o
  • 外键和索引

    我有 2 张桌子 products and 类别 每个类别有很多产品 一个产品可以属于多个类别 products product id int primary auto increment name unique etc 类别 catego
  • Magento --“SQLSTATE[23000]:违反完整性约束..”客户更新

    迁移服务器后 每次尝试更新客户信息时都会出现错误 我正在使用一个客户激活插件 http www magentocommerce com magento connect vinai extension 489 customer activat
  • 一个表可以有多个主键吗?

    我现在很困惑 也许你可以帮助我更好地理解这个问题 即一个表可以有两个主键 如果是 那么如何 如果没有 那为什么 您询问是否可以有多个主键field你当然可以 您只能有一个主键 但它可以包含唯一标识行所需的任意数量的列 创建表时使用类似这样的
  • MySQL集群启动失败

    这不是我第一次创建ndbcluster 但我没有收到这样的问题 我正在关注本手册 https hub docker com r mysql mysql cluster by mysql团队 我正在使用回显的默认配置在此 GitHub 存储库
  • 猪的组连接等效吗?

    试图在 Pig 上完成这个任务 寻找 MySQL 的 group concat 等效项 例如 在我的表中 我有以下内容 3fields userid clickcount pagenumber 155 2 12 155 3 133 155
  • MySQL - 多个结果集

    我正在使用 NET Connector 连接到 MySQL 在我的应用程序中 很少有线程使用相同的连接 因此如果 MySQLDataReader 尚未关闭并且某个线程正在尝试执行查询 则会出现该错误 已经有一个打开的 DataReader
  • mysql表中的数据非常大。即使 select 语句也需要很多时间

    我正在开发一个数据库 它是一个相当大的数据库 有 13 亿行和大约 35 列 这是我检查表状态后得到的结果 Name Table Name Engine InnoDB Version 10 Row format Compact Rows 1
  • 如何使用 Mysql Python 连接器检索二进制数据?

    如果我在 MySQL 中创建一个包含二进制数据的简单表 CREATE TABLE foo bar binary 4 INSERT INTO foo bar VALUES UNHEX de12 然后尝试使用 MySQL Connector P

随机推荐

  • 由于现在工作环境不适合经常发博客,所以暂缓更新。

    好久没更新了 其实还有一些内容 不过目前没时间整理 后续争取补回 转载于 https www cnblogs com xianghang123 p 4908710 html
  • 【网络】UDP网络服务器

    代码的整体逻辑 UDP服务端 udpServer cc 服务端的调用 udpServer hpp 服务端的实现 UDP客户端 udpClient cc 客户端的调用 udpClient hpp 客户端的实现 1 udp服务端 服务端 1 初
  • 【用python写一个简易的消息轰炸代码】

    用python写一个简易的消息轰炸代码 前言 一 思路讲解 二 使用步骤 1 引入库 2 完整代码 总结 前言 有没有在qq 微信想用一句话不停怼一个人 这篇文章教你在回车能发送消息的一系列软件中 快速多次发送你想发的话 一 思路讲解 1
  • cocos2d-x学习笔记(持续更新)

    接受触屏事件的优先级是值越小 响应触屏事件的优先级越高 Z值越大 越外面 粒子系统设计工具 Particle Designer软件 目前只支持MAC平台 导出 plist文件 地图设计工具 Tiles 目前有两个版本 一个是Java版本 另
  • 免费的API

    https www jianshu com p e6f072839282 目前接口列表 新实时段子https api apiopen top getJoke page 1 count 2 type video 通过Id查段子https ap
  • VSCode无法登录leetcode,[ERROR] invalid password?

    VSCode无法登录leetcode 我使用的是 leetcode cn com 账户 选择的是第三方登录 github账号 v16 13 0 Active Name Version Desc solution discuss 2019 0
  • c语言常用算法归纳,C语言常用算法

    一 计数 求和 求阶乘等简单算法 此类问题都要使用循环 要注意根据问题确定循环变量的初值 终值或结束条件 更要注意用来表示计数 和 阶乘的变量的初值 例 用随机函数产生100个 0 99 范围内的随机整数 统计个位上的数字分别为1 2 3
  • pycharm配置监听端口0.0.0.0后不能在浏览器上通过本地地址访问

    解决方案 https segmentfault com q 1010000007625566参考方案 在settings py的ALLOWED HOSTS中添加 127 0 0 1 192 168 0 128 localhost 中间是本地
  • Jquery Ajax前后端交互技术

    Jquery Ajax前后端交互技术 1 什么是Ajax Ajax是一种异步 无刷新技术 什么是异步 1 现在我们大部分的请求都是同步 我必须接受你的请求给我返回结果了 我才能进行下一步操作 2 异步就是 无需返回服务器的结果 就可以继续做
  • 操作系统复习指南

    文章目录 前言 一 中断 1 中断的分类 2 硬中断和软中断 二 系统调用 1 什么是系统调用 三 进程 1 什么是进程 2 进程的组织方式 3 进程的特征 4 进程的几种状态及其转换 5 进程间的通信 6 进程的调度 7 作业调度算法 8
  • ua获取手机型号_如何根据 UA 判断手机型号和厂家?

    开门见山 拿下面2个 ua 来举例 Mozilla 5 0 Linux U Android 8 1 0 zh cn PBEM00 Build OPM1 171019 026 AppleWebKit 537 36 KHTML like Gec
  • idea中yml配置文件编写规范

    yaml文件实际是用YAML语言编写的 YAML简述 如下 1 语法特点 大小写敏感 通过缩进表示层级关系 禁止使用tab缩进 只能使用空格键 缩进的空格数据不重要 只要相同层级左对齐即可 使用 表示注释 2 yaml支持的数据结构有三种
  • 11,输出保留3位小数的浮点数

    读入一个浮点数 保留 3 位小数输出这个浮点数 输入格式 只有一行 一个浮点数 x 105 x 105 输出格式 也只有一行 保留 3 位小数的浮点数 输出时每行末尾的多余空格 不影响答案正确性 样例输入 12 34521 样例输出 12
  • MySQL几个问题:Column 'XXXX' in where clause is ambiguous,去除重复项,mybatis报错

    最近工作西街口 遇到MySQL Mybatis相关的几个问题 大概讲一下问题发生情况 解决办法和原因 一 Column create time in where clause is ambiguous 问题 这个不管你是在IDEA的控制台看
  • git查看远程仓库(git remote)

    实例 描述 git remote v 查看远程仓库地址 git remote show origin 查看远程仓库信息
  • 15. Canvas制作汽车油耗仪表盘

    1 说明 本篇文章在14 利用Canvas组件制作时钟的基础上进行一些更改 想查看全面的代码可以点击链接查看即可 效果展示 2 整体代码 import QtQuick 2 15 import QtQuick Controls 2 15 It
  • 深度学习——时间序列模型评价指标总结

    大Y老师 小X 你做的这个时间序列模型用什么指标评价啊 小X 直接把这篇甩给老师 老师您看哪个指标顺眼 就选哪个指标 最近在实现基于深度学习的时间序列模型时 需要对模型进行评价 总结了一些常用的和不常用的评价指标 还有相关概念的辨析 上面是
  • 谷粒学院——Day09【整合阿里云视频点播】

    作者主页 Java技术一点通的博客 个人介绍 大家好 我是Java技术一点通 记得关注 点赞 收藏 评论 认真学习 共同进步 视频点播简介 一 阿里云视频点播技术能力盘点 视频点播 ApsaraVideo for VoD 是集音视频采集 编
  • 图计算:社区发现算法

    一 定义什么是社区 社区是一种局部性结构 该局部性结构内部连接紧密 而不同的局部性结构之间连接稀疏 这种局部性结构是社区 主要应用 好友推荐 广告推送 二 如何评价一个社区的分类好坏的情况 用Modurity衡量 三 社区发现算法 算法1
  • ESP8266开发板+mysql数据库+DHT11

    wemos D1 wifi ESP8266开发板连接mysql wemos D1 wifi ESP8266开发板是一款基于esp8266的开发板 使用这个开发板可以很方便的连接wifi 同时这个开发板有很多IO口供我们使用 这个开发板的可以