ToB企服应用市场:ToB评测及商务社交产业平台
标题:
STM32+WIFI+MQTT+云Mysql数据上报并转存到云数据库
[打印本页]
作者:
慢吞云雾缓吐愁
时间:
2024-6-14 23:34
标题:
STM32+WIFI+MQTT+云Mysql数据上报并转存到云数据库
软件以及烧录文件
链接:https://pan.baidu.com/s/1Y3hiw_oVPKRTT9mtGg7WDA?pwd=mlhy
提取码:mlhy
一、ESP8266烧录MQTT固件
如ESP8266接3.3v无法正常工作则接入5V电压
GPIO0肯定要接地(接地代表烧录固件模式)
注意波特率115200
ESP8266的TX----->TTL板的RX
ESP8266的RX----->TTL板的TX
ESP8266的3V3----->TTL板的3V3/5V
ESP8266的GND-----TTL板的GND
ESP8266的GPIO0(0)-----TTL板的GND
烧录完毕后紧接测试:输入AT+GMR
烧录完毕后GPIO0口肯定要悬空,只与TLL模块连接RX、TX、GND、VCC四个口。
二、设置阿里云平台
(1)新建产品
选择自定义品类,联网方式选择WiFi,数据格式选JSON。
(2)新建立备
产品栏选我们刚刚新建的产品,设备名称由本身定义,但注意不要太过复杂,因为后续上报消息须要用到设备名称。
(3)功能定义
数据类型根据须要自定,我这边选择的是单浮点型。
(4)发布上线
注意肯定要点击发布上线。
三、ESP8266连接阿里云的准备工作
(1)复制设备证书
(2)粘贴三元组天生域名、客户id、用户名及暗码
此处大坑:地区肯定是华东2,否则后续发送下令必定出错(有感而发)
这里肯定要恣意填一下
天生前:
天生后:
(3)打开串口调试助手
依次输入以下下令:
AT+RST //ESP8266规复出厂设置
AT+CWMODE=3 //AP+Station模式
AT+CWJAP="DES","abcd1234" //对应本身的WiFi及暗码
WiFi连接成功
四、ESP8266开始连接阿里云
依次发送以下下令:
(1)设置 MQTT协议用户参数
AT+MQTTUSERCFG=0,1,"client_id","Sound_STM32&k0c49DpK2UJ","27FF93D8794315693C55A2379F7135D1B9171C35",0,0,""
成功后返回OK:
在keil软件里用的格式为:
Serial_SendString("AT+MQTTUSERCFG=0,1,"client_id","Sound_STM32&k0c49DpK2UJ","27FF93D8794315693C55A2379F7135D1B9171C35",0,0,""\r\n");
复制代码
(2)设置 MQTT 客户端的 ID
Attention:逗号前要加转义字符'\';
AT+MQTTCLIENTID=0,"2321312|securemode=3\,signmethod=hmacsha1\,timestamp=23213|"
成功后返回OK:
在keil软件里用的格式为:
Serial_SendString("AT+MQTTCLIENTID=0,"2321312|securemode=3\\,signmethod=hmacsha1\\,timestamp=23213|"\r\n");
复制代码
(3)建立 MQTT 连接
Attention:com背面的分号要去掉
AT+MQTTCONN=0,"k0c49DpK2UJ.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883,1
成功后返回OK:
在keil软件里用的格式为:
Serial_SendString("AT+MQTTCONN=0,"k0c49DpK2UJ.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883,1\r\n");
复制代码
(4)设备显示已激活
(5)单片机每次连接阿里云都必须经历这三步调,如下所示:
Attention:每条消息之间肯定要有肯定的间隔时间
五、测试
(1)订阅主题
查看主题:
(2)AT下令订阅主题
Attention:注意${deviceName}要修改成自创的设备名字,如Sound_STM32
AT+MQTTSUB=0,"/sys/k0c49DpK2UJ/Sound_STM32/thing/service/property/set",1
(3)查看是否订阅成功
Attention:订阅主题操纵只须要执行一次,后续在单片机上无需重复举行
(4)物模型举行单条消息上报测试
格式:
AT下令:
AT+MQTTPUB=0,"/sys/k0c49DpK2UJ/Sound_STM32/thing/event/property/post","{\"params\":{\"temp\":30}}",1,0
成功后返回:
查看物模型数据:
在keil软件里用的格式为:
printf("AT+MQTTPUB=0,"/sys/k0c49DpK2UJ/Sound_STM32/thing/event/property/post","{\\"params\\":{\\"temp\\":%d}}",1,0\r\n",buffer[2]-3);
复制代码
(5)扩展:物模型举行一次性上报多条消息(注:举行一次性上报的产品与设备不同于上文的产品与设备)
在keil软件里用的格式为:
const char* pubtopic="/sys/k0c491prW9f/mqtt_STM32/thing/event/property/post";
printf("AT+MQTTPUB=0,"%s","{\\"method\\":\\"thing.event.property.post\\"\\,\\"params\\":{\\"temp\\":%d.%d\\,\\"humi\\":%d.%d\\,\\"Light\\":%.1f\\}}",0,0\r\n",pubtopic,buffer[2]-3,buffer[3],buffer[0],buffer[1],100-(float)AD_GetValue(ADC_Channel_6)/4096*100);
复制代码
(6)消息下发
该功能得写好串口接收代码才能很好地运用起来。如:用来给单片机串口发ON或OFF来控制LED灯的亮灭,笔者在此就不多做演示了。
附串口接收代码:
char RECS[250];
void USART1_IRQHandler()
{
if(USART_GetITStatus(USART1,USART_IT_RXNE))
{
RECS[i++]=USART_ReceiveData(USART1);
if((RECS[i-2]=='\r')|(RECS[i-1]=='\n'))
{
RECS[i-2]='\0';
i = 0;
j = 0;
while(RECS[j++] != '\0')
{
if(RECS[j]=='L' && RECS[j+1]=='E' && RECS[j+2]=='D' && RECS[j+3]=='O'&& RECS[j+4]=='N')
{
GPIO_ResetBits(GPIOC,GPIO_Pin_13);
}
}
}
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
}
}
复制代码
六、将数据转存到阿里云数据库(Mysql)
(1)设置RDS云数据库
1、数据库地域必须与物联网平台对应。
2、登岸数据库:
第一次开通数据库须要手动重置账号与暗码,详情请各位自行百度。要牢记用户名与暗码,后续会用到。
3、新增Mysql实例以及创建表:
新增实例:
实例名称后续会用到。我这边的实例名称是mlh。
创建表:
附带一些简单的数据库查询语句:
-- 查看所有数据 -- SELECT * FROM `receive`
-- 插入数据 INSERT INTO `receive` (`temp`, `humi`, `light`) VALUES (100, 100, 100);
-- 更新指定id的数据 UPDATE `receive` SET `temp` = 15, `humi` = 25, `light` = 35 WHERE `id` = 1;
-- 新建自增id列 ALTER TABLE `receive` ADD COLUMN `id` INT AUTO_INCREMENT PRIMARY KEY FIRST;
-- 删除范围内的数据 DELETE FROM `receive` WHERE `id` BETWEEN 11 AND 400;
-- 删除所有表数据 DELETE FROM `receive`
-- 删除指定id的数据 DELETE FROM `receive` WHERE `id` = 13;
-- 获取当前最大的id值 SELECT MAX(`id`) FROM `receive`;
-- 设置自增的初始值为当前最大id值 + 1
-- ALTER TABLE `receive` AUTO_INCREMENT = 2;
-- 插入数据 INSERT INTO `receive` (`temp`, `humi`, `light`) VALUES (100, 100, 100);
-- 添加时间戳 ALTER TABLE receive ADD COLUMN timestamp_column TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
复制代码
至此云数据库设置完成。
(2)设置云产品流转
1、创建数据源
添加Topic
2、添加数据目标
名称自定
点击编辑
填入第一步我们设置好的信息,实例,数据库名称, 用户账号暗码等。
3、设置解析器
先创建解析器
关联我们刚刚设置好的数据源和数据目标
最后设置解析器脚本
我这边上传的是三个数据,每次上报数据都会举行一次数据流转,以是肯定要一次性上报三条数据,这样数据库才能正常接收,否则接收不到数据数据库则为NULL。(物模型一次性上报数据的方法上文有提及)
(3)演示效果
用SQL语句举行表查询
可以看到上报到云平台的数据被转存进数据库保持起来,并且支持数据的导入导出。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4