文章目录
- 1.数据库使用简介
- 1.Navicat premium连接
- 2.新建数据库
- 3.在数据库中新建表
- 2.代码实现
-
1.数据库使用简介
建立数据库连接,在连接里新建数据库,在数据库里新建表
1.Navicat premium连接
安装完数据库后,用Navicat premium软件进行连接,这个也需要安装,这个相当于数据库的可视化软件,安装过程随便找找就有,接下来建立连接
这里连接名随便起,记住就行,主机写IP地址,可以通过命令查询,window+R→cmd→ipconfig
不确定的可以将这俩都试试,端口默认,用户名你没改的话就是root,密码就是你的数据库密码了,然后点击连接测试,出现连接成功就可以了,点击确定,连接,有些人可能会报错,采用navicat软件连接的话相当于远程连接,所以需要更改数据库的用户权限,搜一搜就可以解决了,反正最终的结果就是连接成功的界面,其它的报错信息直接复制搜索就可以找到解决办法了。
2.新建数据库
在新建的连接下新建数据库
这是我已经建好的数据库,数据库名data,随便起,下面俩参数就按照我这就行。
3.在数据库中新建表
数据库建立完成后,需要新建表来接收数据,相当于建一个EXCEL表
这里我设置了7列数据,nowtime是用来加时间戳的,其他的都是我所需要的传感器数据,名称、类型(数据类型)、长度、小数点根据需要设置就可以了,值得说明的是,如果你选择了float类型,小数点那里不可以为0,不然数据可能写不进来。
2.代码实现
实现风速、风向、颗粒物、CO四种传感器的采集,注释详细
连接数据库用到MySQL_Connection库,这里首先到arduino ide的工具那里下载一个库,直接搜索MYSQL安装即可
代码
#include <ESP8266WiFi.h>
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>
#include "SoftwareSerial.h"
SoftwareSerial uart1(13,15);
SoftwareSerial uart2(14,12);
SoftwareSerial uart3(0,2);
SoftwareSerial uart4(5,4);
unsigned char item[9] = {0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00,0X00, 0x79};
unsigned char item1[8] = {0x01, 0x03, 0x00, 0x00, 0x00, 0x02,0xC4, 0x0B};
IPAddress server_addr(192,168,42,93);
char user[] = "root";
char password[] = "******";
char INSERT_SQL[] = "INSERT INTO data.data(PM1,PM2,PM10,CO,Direction,Speed,nowtime) VALUES ('%d','%d','%d','%.1f','%d','%.1f',now())";
char ssid[] = "realme X7 Pro";
char pass[] = "12345678";
WiFiClient client;
MySQL_Connection conn(&client);
MySQL_Cursor* cursor;
int isConnection=0;
void readAndRecordData(){
char buff[128];
int arr[6];
ProcessSerialData(arr);
int pm1=arr[0];
int pm2=arr[1];
int pm10=arr[2];
int direct=arr[4];
float co =float(arr[3])*0.1;
float sp =float(arr[5])*0.1;
sprintf(buff,INSERT_SQL,pm1,pm2,pm10,co,direct,sp);
MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
cur_mem->execute(buff);
Serial.println("读取数据,并写入数据库");
delete cur_mem;
}
void setup()
{
Serial.begin(115200);
uart1.begin(9600);
uart2.begin(9600);
uart3.begin(4800);
uart4.begin(4800);
while (!Serial);
Serial.printf("\nConnecting to %s", ssid);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nConnected to network");
Serial.print("Connecting to SQL... ");
if (conn.connect(server_addr, 3306, user, password))
{
isConnection=1;
Serial.println("成功连接数据库---OK.");
}else{
isConnection=0;
Serial.println("连接数据库失败---FAILED.");
}
cursor = new MySQL_Cursor(&conn);
}
void loop()
{
if(isConnection==1)
{
readAndRecordData();
delay(10000);
}
}
void ProcessSerialData(int* arr)
{
uint8_t mPkt[9] = {0};
uint8_t coPkt[9] = {0};
uint8_t dPkt[9] = {0};
uint8_t sPkt[9] = {0};
for (int i = 0 ; i < 9; i++)
{
uart1.write(item[i]);
uart2.write(item[i]);
}
for (int m = 0 ; m < 8; m++)
{
uart3.write(item1[m]);
uart4.write(item1[m]);
}
delay(100);
while (uart1.available())
{
for(int j=0;j<9;j++){
mPkt[j]=uart1.read();
}
if(uart2.available()>0){
for(int k=0;k<9;k++){
coPkt[k]=uart2.read();
}
}
if(uart3.available()>0){
for(int n=0;n<9;n++){
dPkt[n]=uart3.read();
}
}
if(uart4.available()>0){
for(int a=0;a<9;a++){
sPkt[a]=uart4.read();
}
}
}
arr[0]=mPkt[6]*256+mPkt[7];
arr[1]=mPkt[2]*256+mPkt[3];
arr[2]= mPkt[4]*256+mPkt[5];
arr[3]=coPkt[2]*256+coPkt[3];
arr[4]=dPkt[3]*256+dPkt[4];
arr[5]=sPkt[3]*256+sPkt[4];
Serial.println(dPkt[4]);
}
下面就是我所实现的传感器数据采集上传到数据库,板子与电脑需要在同一个局域网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)