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上找到,下面是网址:
步骤:
准备Mysql数据库
- 安装mysql数据,创建一个
table
表用来存储数据。创建table
的sql语句如下:
create database arduino_test; // 创建一个数据库
create table test1( // 创建一个测试表,用来存储开发板发来的信息
tem double(3,1),
hem double(3,1)
);
-
配置
Mysql
- 首先在
Dos
窗口中执行命令关闭mysql服务:net stop msyql
// 服务名是在安装的时候设置的 - 在Dos窗口切换到
mysql/bin
目录下,就是Mysql安装目录,默认安装的话一般都是:C:\Program Files\MySQL\MySQL Server 5.5\bin
。 或者从文件管理里面进入这个目录下,按住Shift
的同时点击鼠标右键。选择在此处打开Powershel窗口。 - 在Dos窗口输入
mysqld --skip-grant-tables
命令回车。 - 再开一个DOS窗口,也切换到
mysql\bin
目录。 - 在新开的窗口 输入
mysql
回车, - 连接权限数据库:
use mysql
; - 更改密码:
update MySQL.user set authentication_string=password('root') where user='root'
; - 开启远程连接:
update user set host='%' where user='root';
- 最后刷新配置:
flush privileges
; - 关闭这两个窗口
- 开启Mysql服务,在Dos窗口中输入
net start mysql
- 首先在
如果还不行就去这个网址看一下,这个大神讲的很详细,www.cnblogs.com/lzyThingkin…
编写程序上传到板子里
#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
tostrf(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("读取传感器数据,并写入数据库");
elete 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);
}
测试
将代码上传到板子里,打开串口可以看到传感器数据。打开数据库可以看到传感器读取的数据
[参考] MySQL Connector/Arduino Dr.Charles Bell January 2016 PDF
这篇文章之前写在CSDN上,现在进行了重新排版修改。在CSDN上的地址:ESP8266开发板+mysql数据库+DHT11_不可食用盐的博客-CSDN博客_esp8266 mysql