文章目录

  • 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>             // esp8266库
#include <MySQL_Connection.h>    // Arduino连接Mysql的库
#include <MySQL_Cursor.h>#include "SoftwareSerial.h"
SoftwareSerial uart1(13,15);//RX=d7,TX=d8,用于颗粒物传感器
SoftwareSerial uart2(14,12);//RX=d5,TX=6,用于CO传感器
SoftwareSerial uart3(0,2);//RX=d3,TX=d4,用于风向传感器
SoftwareSerial uart4(5,4);//RX=d1,TX=d2, 用于风速传感器unsigned char item[9] = {0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00,0X00, 0x79}; //16进制颗粒物问询命令,CO也一样,共用
unsigned char item1[8] = {0x01, 0x03, 0x00, 0x00, 0x00, 0x02,0xC4, 0x0B}; //16进制风向传感器问询命令,风速一样IPAddress server_addr(192,168,42,93);   // 安装Mysql的电脑的IP地址,和连接里的一样
char user[] = "root";              // Mysql的用户名
char password[] = "******";        // 登陆Mysql的密码// Mysql中添加一条数据的命令
char INSERT_SQL[] = "INSERT INTO  data.data(PM1,PM2,PM10,CO,Direction,Speed,nowtime) VALUES ('%d','%d','%d','%.1f','%d','%.1f',now())";//第一个data是数据库名,第二个data是表名,后面七个对应表的7列名称,再后面就是每列对应数据类型了
char ssid[] = "realme X7 Pro";         // WiFi名
char pass[] = "12345678";     // WiFi密码
WiFiClient client;                 // 声明一个Mysql客户端,在连接Mysql中使用
MySQL_Connection conn(&client);
MySQL_Cursor* cursor;    //
int isConnection=0;//用来判断数据库是否连接成功// 读取数据并写入到数据库
void readAndRecordData(){char buff[128];// 定义存储数据的数组int arr[6];//定义一个数组用于接收传感器返回的三种颗粒物的值和CO、风速、风向值ProcessSerialData(arr);//读取颗粒物CO传感器函数中传入这个数组,用这个数组来接收,如果不用数组接收的话,涉及到局部变量的问题,采集的数据在另一个函数调不出来,所以传入一个数组接收,之后直接调用数据即可//经过上面采集数据函数处理后,所需要的七个传感器数据都已存在arr[6]里面int pm1=arr[0];//定义类型数据来接收数组里的数据,需要进行类型转换的也可以int pm2=arr[1];int pm10=arr[2];int direct=arr[4];float co =float(arr[3])*0.1;//转为float型,在对应数据库要设置小数点位数float sp =float(arr[5])*0.1;//转为float型,在对应数据库要设置小数点位数sprintf(buff,INSERT_SQL,pm1,pm2,pm10,co,direct,sp); //insert_SQL上面定义了列的数据类型接收,写入数据库表里面MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn); // 创建一个Mysql实例cur_mem->execute(buff);         Serial.println("读取数据,并写入数据库");delete cur_mem;        // 删除mysql实例为下次采集作准备
}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);         // 开始连接WiFiwhile (WiFi.status() != WL_CONNECTED) {       // 如果WiFi没有连接,一直循环打印点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};//定义CO数组返回字节接收数组uint8_t dPkt[9] = {0};//定义风向数组返回字节接收数组uint8_t sPkt[9] = {0};//定义风速数组返回字节接收数组for (int i = 0 ; i < 9; i++) // 发送测温命令{ uart1.write(item[i]); // write输出,写入颗粒物传感器问询指令uart2.write(item[i]); // write输出,写入CO传感器问询指令}for (int m = 0 ; m < 8; m++) // 发送测温命令{ uart3.write(item1[m]); // write输出,写入风向传感器问询指令uart4.write(item1[m]); // write输出,写入风速传感器问询指令 }delay(100); // 等待数据返回
while (uart1.available()) //判断对于串口是否返回了数据{for(int j=0;j<9;j++){mPkt[j]=uart1.read(); // read按字节读取,存入数组}if(uart2.available()>0){for(int k=0;k<9;k++){coPkt[k]=uart2.read(); // read按字节读取,存入数组}}if(uart3.available()>0){for(int n=0;n<9;n++){dPkt[n]=uart3.read(); // read按字节读取,存入数组}}   if(uart4.available()>0){for(int a=0;a<9;a++){sPkt[a]=uart4.read(); // read按字节读取,存入数组}}   }   arr[0]=mPkt[6]*256+mPkt[7];//PM1.0arr[1]=mPkt[2]*256+mPkt[3];//PM2.5arr[2]= mPkt[4]*256+mPkt[5];  //PM10arr[3]=coPkt[2]*256+coPkt[3];//COarr[4]=dPkt[3]*256+dPkt[4];//wind direction,八向,第五第六两位为360°arr[5]=sPkt[3]*256+sPkt[4];//wind speedSerial.println(dPkt[4]);
}  

下面就是我所实现的传感器数据采集上传到数据库,板子与电脑需要在同一个局域网

ESP8266采集多个传感器数据通过WIFI上传到本地数据库(风速、风向、CO、颗粒物)相关推荐

  1. Arduio ESP8266将DHT11温湿度传感器数据在网页上显示

    Arduio ESP8266将DHT11温湿度传感器数据在网页上显示

  2. ROS节点获取TIA_go机器人传感器数据,并上传到指定服务器做深度学习处理

    Brief 正如标题所言,该小项目包括三部分,如下 ROS节点获取机器人数据 socket和服务器数据传输,包括了数据上传和获取 服务器深度学习处理数据 1 ROS节点获取机器人数据 1.1 数据结构 ...

  3. 使用Python采集京东商品详情数据,并上传到拼多多商城中

    采集场景 打开京东商品详情页(实例网址:https://item.jd.com/100016944073.html ),采集点击不同的参数(颜色.版本等)后得到的数据(商品编号.价格.主图链接等字段会 ...

  4. 解析微波辐射计数据,并上传到mysql数据库(pandas应用及mysql操作)

    创建mysql数据库,从微波辐射计数据文件_lv2中提取,廓线数据,积分数据,云底高度及雨状态,并上传数据到数据库, lv2文件格式说明 csv文件件,逗豆分隔,前20行为数据说明,数据从22行开始, ...

  5. ESP8266 读取多个传感器数据(风速、风向、颗粒物、CO)

    文章目录 1.ESP8266开发板资源 2.Arduino编程 1.准备工作 2.读取多个串口数据 1.定义软串口 2.涉及传感器简介 3.集成代码(注释详细) 4.Arduino 串口监视器 1.E ...

  6. 使用STM32F103采集Si7021温湿度传感器数据

    使用STM32F103采集Si7021温湿度传感器数据 2019.06.13 更新 最近弄了个GitHub仓库,想要下载源码但又不想弄积分的朋友可以直接到我的GitHub上克隆 https://git ...

  7. 用Mixly ESP8266 ESP32本地局域网/在线OTA无线wifi上传方法

    Arduino ESP32 ESP8266 远程无线上传 下载 Mixly 齐护机器人 局域网OTA ESP8266 ESP32本地局域网及在线OTA无线wifi上传方法 方法1:在线升级方法 1-1 ...

  8. stm32心率监测系统(心率监测,wifi上传,APP显示,上位机显示)

    一.硬件材料清单: 1.STM32核心板 2.OLED显示屏 3.心率传感器 4.ESP8266 二.实现的功能 1:STM32采集心率传感器数据 2:OLED实时显示心率数据和心率曲线 3:wifi ...

  9. 水质监测,stm32水质监测,tds检测,水温检测,ph检测,wifi上传,远程控制

    水质监测,stm32水质监测,tds检测,水温检测,ph检测,wifi上传,远程控制 基于stm32 水质检测 tds检测 水温检测 ph检测 OLED显示 c#上位机数据显示存储 一.硬件材料清单: ...

最新文章

  1. Vue.js 源码目录设计(二)
  2. Android项目中使用激光推送时在模拟器上运行时报Fatal signal 11的解决
  3. 私聊模式的设计与实现
  4. mysql dba系统学习(16)mysql的mysqldump备份
  5. 基于@RabbitListener声明LazyQueue
  6. esper_Twitter4j和Esper:在Twitter上跟踪用户情绪
  7. Spring-framework应用程序启动loadtime源码分析笔记(二)——@Transactional
  8. 基于海思开发板的屏幕截图程序(二)
  9. jq ajax提交评论,织梦评论怎么改成自己的jq ajax评论
  10. 结合Composer 新版本PHP的开发方式
  11. python操作注册表能干啥_转 python操作注册表模块_winreg
  12. HDU 3339 In Action(最短路+背包)题解
  13. 大巧不工 JGraph简介和使用技巧(转)
  14. 一棵叫默克尔的神奇之树
  15. 两个字母组成的拼音,域名注册备用
  16. mysql关于case when的用法举例
  17. 供给云AI群助手解析社群私域运营核心方法论
  18. 【云栖大会】基因行业陷入“怪圈”,数据存储成本竟然超过检测成本
  19. 计算二叉树的第k层中所有叶子结点个数
  20. [一天一项目]120+项目构思

热门文章

  1. 如何安装迅雷套件实现远程下载
  2. html5在线音乐列表播放器,简洁的html5 mp3列表音乐播放器代码
  3. 基于协作搜索算法的函数寻优及工程优化
  4. fpga 实现阵列信号处理
  5. 【Swift初见】Swift字典
  6. 我的团长我的团第七集
  7. 使用DrawIcon绘制图标时大小
  8. Linux之日志管理——16
  9. csv格式转换成excel(CSV格式转换成dat文件出现乱码)
  10. Matlab-图像直方图函数imhist详解