基于STM32的(NB-IOT(BC26))温湿度监测系统
闲来无事,用手头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)。
指令 | 返回 | 说明 |
---|---|---|
AT | OK | 模块正常,可正常实现收发 |
AT+CIMI | 460043331505555 | 查询是否有卡 |
AT+CSQ | 1~31 | 信号强度 |
AT+CGATT? | +CGATT: 1 | 查询网络注册情况 |
AT+CGPADDR=1 | +CGPADDR: 1,10.68.55.555 | 查询是否分配IP地址 |
AT+QMTCFG=“aliauth”,0,“a1Xi4HdV4gd”,“mz4001”,“c538f1eb6deb2020c83579bac4444405” | OK | 配置 MQTT 可选参数 |
AT+QMTOPEN=0,“iot-as-mqtt.cn-shanghai.aliyuncs.com”,1883 | +QMTOPEN: 0,0 | 打开 MQTT 客户端网络 |
AT+QMTCONN=0,“test21115” | +QMTCONN: 0,0,0 | 连接客户端至 MQTT 服务器 |
AT+QMTPUB=0,0,0,0,"/sys/a1Xi4HdVogd/mzh001/thing/event/property/post","{“id”:“26”,“version”:“1.0”,“params”:{“Temperature”:{“value”:32}},“method”:“thing.event.property.post”}" | +QMTPUB: 0,0,0 | 发布消息 |
接着用串口助手发送这些指令进行调试。
说明:
- 数据5要结合你的阿里云物联平台中的7的三个码
ProductKey
、DeviceName
和DeviceSecret
。 - 数据6要结合阿里云地址和端口,一般设置这个就可以。
- 数据7是登陆请求,这个名字一般没什么要求,只要不重复即可。
- 数据8要注意中间那个地址就是阿里云物联网平台8中那个属性上报的topic地址。后边的params要结合json数据格式以及阿里云物联网平台9中的标识符,数据要注意阿里云物联网平台9中的数据格式。
- 最后返回
+QMTPUB: 0,0,0
表示发送成