闲来无事,用手头STM32做个项目。
成品功能:STM32采集温度、湿度数据,显示在屏幕上,通过NB-IOT(BC26)模块连接阿里云物联网平台接受数据并实时监控。
材料
STM32ZET6开发板(战舰V3)
TFT显示屏(战舰有我用的2.7寸的)
NB-IOT(BC26)模块
DHT11温湿度模块
杜邦线
用keil5进行开发
开始制作。
制作过程
首先从板子测温湿度开始
DHT11温湿度模块
原子哥有DHT11例程,所以直接在此基础上进行开发
下载上之后这是效果。
阿里云物联网平台
先到阿里云物联网平台注册一个设备。
进入阿里云官网搜索物联网平台,现在可以免费注册一个。
点击设备接入服务

在这里插入图片描述
点击创建产品

在这里插入图片描述
联网方式要选择蜂窝(4G)网络

在这里插入图片描述
点击添加设备输入设备名称

在这里插入图片描述
选中该设备之后,点击查看DeviceSecret码

在这里插入图片描述
记录这三个码后边有用

在这里插入图片描述
在设备中查看要发布信息的地址(下边的属性上报)

在这里插入图片描述
查看信息的标识符,既传送信息的头部

在这里插入图片描述
阿里云物联网平台接受的是json格式,所以数据发送的格式为:
AT+QMTPUB=0,0,0,0,'/sys/a1Xi4HdVogd/mzh001/thing/event/property/post','
{'id':'26','version':'1.0','params': { 'CurrentTemperature':{'value':32},'GeoLocation':{'E':123,'W':234} }, 'method':'thing.event.property.post'}'
NB-IOT(BC26)模块
先用USB转TTL,用串口助手,用AT指令进行调整
这是用到的AT指令

在这里插入图片描述
硬件连接:BC26的VIN接TTL的5V,BC26的GND接TTL的地,BC26的RX接TTL的TX,BC26的TX接TTL的RX,跳线帽短接BC26的PWR和3.3V
注意地和电千万不能接错,会烧坏器件!!!
接好后插电脑上,连接串口助手(我用原子哥的XCOME)。

接着用串口助手发送这些指令进行调试。

在这里插入图片描述

在这里插入图片描述
说明:
数据5要结合你的阿里云物联平台中的7的三个码ProductKey、DeviceName和DeviceSecret。
数据6要结合阿里云地址和端口,一般设置这个就可以。
数据7是登陆请求,这个名字一般没什么要求,只要不重复即可。
数据8要注意中间那个地址就是阿里云物联网平台8中那个属性上报的topic地址。后边的params要结合json数据格式以及阿里云物联网平台9中的标识符,数据要注意阿里云物联网平台9中的数据格式。
最后返回+QMTPUB: 0,0,0表示发送成功。
到阿里云物联网平台查看数据。点击设备点击查看,点击物联网数据,可以打开实时更新。

在这里插入图片描述
数据出现问题,可以到日志中查看问题原因。

在这里插入图片描述
设备物联网模型中出现我们上传的数据就表示成功了。
这样USB转TTL单独调试就成功了。
接下来将这些放到板子中实现自动化。
板载上传数据
移植墨子号STM32F103RC的例程
首先在DHT11例程的基础上,将printf函数改为串口2,方便连接。初始化串口2。
//重定义fputc函数int fputc(int ch, FILE *f){
while((USART2->SR&0X40)==0);//串口2输出,循环发送直到发送完毕
USART2->DR = (u8) ch;
return ch;}移植BC26初始化以及连接函数。
void OPEN_BC26(void){
char *strx;
printf('ATrn');
delay_ms(300);
strx=strstr((const char*)USART_RX_BUF,(const char*)'OK');//返回OK
printf('ATrn');
delay_ms(300);
strx=strstr((const char*)USART_RX_BUF,(const char*)'OK');//返回OK
if(strx==NULL)
{
delay_ms(300);
delay_ms(300);
delay_ms(300);
delay_ms(300);
}
printf('ATrn');
delay_ms(300);
strx=strstr((const char*)USART_RX_BUF,(const char*)'OK');//返回OK
printf('ATE0&Wrn'); //关闭回显
delay_ms(300);
LED0=0;
printf('AT+QMTDISC=0rn');//关闭连接
delay_ms(300);
printf('AT+QMTCLOSE=0rn');
delay_ms(300); }3.main()函数中初始化
OPEN_BC26();//对BC26开机 BC26_Init();//对BC26初始化 MQTT_Init();//连接阿里云
板子串口返回+QMTOPEN: 0,0表示连接成功。
将需要传送的值通过aliyunMQTT_PUBdata(temp,humi);函数发送到MTQQ准备函数中。
接收之后通过
//访问阿里云需要提交的数据
u8 Mqttaliyun_Savedata_tm(u8 *t_payload,u8 temp,u8 humi)
{
char json[]='{'id':'26','version':'1.0','params':{'CurrentTemperature':{'value':%d},'CurrentHumidity':{'value':%d}},'method':'thing.event.property.post'}';
char t_json[200];
unsigned short json_len;
sprintf(t_json, json, temp, humi);
json_len = strlen(t_json)/sizeof(char);
memcpy(t_payload, t_json, json_len);
return json_len;
}
函数包装成需要提交的数据JSON格式。
发送数据并查看返回值
void aliyunMQTT_PUBdata(u8 temp,u8 humi)
{
u8 t_payload[200],len,t_payload_1[200],len_1;;
printf('AT+QMTPUB=0,0,0,0,%srn',PubTopic);//发布主题
delay_ms(300);
len=Mqttaliyun_Savedata_tm(t_payload,temp,humi);
t_payload[len]=0;
printf('%s',t_payload);
while((USART2->SR&0X40)==0){}//循环发送知道发送完毕
USART2->DR = (u8) 0x1A;
delay_ms(100);
strx=strstr((const char*)RxBuffer,(const char*)'+QMTPUB: 0,0,0');//看下返回状态
while(strx==NULL)
{
strx=strstr((const char*)RxBuffer,(const char*)'+QMTPUB: 0,0,0');//看下返回状态
}
Clear_Buffer();
}
查看串口助手返回
+QMTPUB: 0,0,0
:0.0},'HoldingTemperature':13,'Diu':0},'method':'thing.event.property.post'}
OK这个表示成功。到阿里云物联网平台查看设备。打开设备实时更新,可以看到数据更新正常。

上一篇:STM32通过rosserial接入ROS通讯开发
下一篇:STM32裸机编程 - HAL库
推荐阅读最新更新时间:2026-03-25 10:32
- 用于 7VIN 至 16VIN、1.5V 和 1.2V 输出的 LTM4628EV DC/DC 模块稳压器的典型应用电路
- 使用 Analog Devices 的 LTC3728LIGN 的参考设计
- DER-406 - 适用于 A19 灯的 5.76 W 高 PF 非隔离降压-升压型 TRIAC 调光 LED 驱动器
- ADR5045B 5V 输出精密微功率并联模式电压基准的典型应用
- LT3970EDDB-3.42 2.5V 降压转换器的典型应用
- MC78M08BDTG 8V 电流调节器的典型应用
- LT1021DCN8-5 精密电压基准的典型应用
- DER-282 - 100W, 扁平(11 mm), LLC DC-DC转换器
- REF193 低压差开尔文连接电压基准的典型应用电路
- LT3088EM 线性稳压器用于添加软启动的典型应用
- 海康机器人视觉检测方案守护光伏组件生产质量
- 艾利特CSF系列力控协作机器人来了!
- MTBF突破4万小时!这家工业级3D相机品牌产品稳定性获权威机构认可
- 英特尔创始人、“摩尔定律”提出者戈登·摩尔去世
- 本周机器人行业大事件TOP5
- 1.1__S3C2440启动过程分析
- 1.2__S3C2440时钟简介
- linux 2.6.32 在arm9(s3c2440)平台的移植2 -- Kconfig和Makefile(2)linux
- linux 2.6.32 在arm9(s3c2440)平台的移植2 -- Kconfig和Makefile(2)
- linux 2.6.32 在arm9(s3c2440)平台的移植 - LCD背光驱动

stm32驱动屏IC rm68042
STM32 PMSM FOC 简介
基于STM32G031的测试测量训练平台完成虚拟仪器实现
现代雷达系统的信号设计
BFR340T






京公网安备 11010802033920号