【开源】智慧养殖盒子(4G_GPS)之【4G接入MQTT云服务教程】

116 阅读5分钟

功能概述:

参考本文档可实现将各种传感器、 GPS 定位信息(经度,纬度),通过 Mqtt 传输给远端的云服务器。发送的 Mqtt 消息 Json 字符串形式如下:

Json 消息包含内容如下:

Json对象描述类型单位值域
Id设备唯一标识字符串
Lo定位经度浮点数
La定位纬度浮点数
Te环境温度整数(带负数)0.1℃-400~800
Hu环境湿度整数%0-1000
Ch甲烷浓度整数LEL0-100
Nh氨气浓度整数ppm0-100
Co环境二氧化碳浓度整数ppm0-5000
Lu光照强度值整数100Lux0-2000
Ba电池电压浮点数V0~15.9

发送的 Mqtt 消息 Json 字符串形式举例如下:

--经度28.311,纬度112.892,温度26.1度,湿度%98.2,甲烷浓度60LEL,氨气浓度120ppm,钾含量1000mg/KG,二氧化碳浓度1500ppm,光照强度值123400Lux,电池电压11.8v
{"Uid":"Box01","Lo":28.311"La":112.892,"Te":261,"Hu":982,"Ch":60,"Nh":120,"Co":1500,"Lu":1234,"B":11.8}

步骤一:接线

  • 在12V DC端口上接12V电源
  • 在CH1端口上接温湿度传感器
  • 在CH2端口上接甲烷传感器
  • 在CH3端口上接氨气传感器
  • 在CH4端口上接二氧化碳传感器
  • 在CH5端口上接光照强度传感器

步骤二:拷贝代码

首先断开设备电源取出设备电路板上的TF卡,将TF插入电脑,接着将 /Code/ 文件夹中的 main.lua 代码文件拷贝覆盖至该 TF 卡。

步骤三:更新配置信息

在 TF 卡中用记事本或者其他代码文本编辑器打开 main.lua 代码文件,用户需编辑文件开头部分的 配置信息 ,替换成实际信息然后 ctrl+S 保存即可,最后给设备重新上电,如果绿灯闪烁完成说明程序更新成功,如果红灯亮起说明代码有问题,可以打开 TF 卡上的LOG.TXT文件查看报错信息(比如Lua语法错误)。需要更改的配置信息如下:

这里只需关心 Part1,Part3 参数即可,其他 Part 参数可查看代码中的注释。

----------------------配置信息开始----------------------
--Part1: 系统配置
SysMode = 1 --0:4G_TCP, 1:4G_Mqtt, 2:4G_ShineBlinkCloud
SysGpsUse = "AUTO_AGPS" --NO_GPS: 不带GPS功能, AUTO_AGPS:带GPS功能
SysWorkInterval = 60 --单位秒,系统采集传感器并发送数据的间隔周期。
--如果SysSleepEn=1,则SysWorkInterval周期间隔内会断电进入低功耗状态
SysSleepEn = 1 --0:不使用低功耗休眠 1:使用。
--SysMyID可任意设定,用作设备的唯一标识,
--也可以用LIB_GetSysUniID()函数获取的芯片唯一ID,形如"761A6617E803F78402"
SysMyID = "Box01" -- SysMyID = LIB_GetSysUniID()
--定义magic number,每次修改将触发序号计数器清零
MagicNumber = 555 --改成任意值即会触发

--Part3: MQTT参数(SysMode=1时才有用)
MqttServerAddr = "mqtt.ctwing.cn" --天翼云MQTT服务器ip地址或域名
MqttServerPort = 1883 --MQTT服务器端口号
MqttClientID = "15589964DTU01" --产品ID"15589964" + 设备编号"DTU01"
MqttUserName = "ShineBlink" --建议填写为用户自己的天翼物联网平台(AIoT)用户名
MqttPassword = "lMmugH2yURmY2uJqkNby-zQHGJ67ngjMAYR6kkGQmko" --采用的一型一密,特征串
MqttSubTopic = "device_control"--订阅用,用于接收服务器下发的数据
MqttPubTopic = "$device_send" --发布用,用于向服务器发送数据(请尽量短一些)
----------------------配置信息结束----------------------
(1)工作模式配置

[SysMode] 需设置成 1 ,表示设备以 4G_Mqtt 模式工作。

(2)GPS 功能开启

[SysGpsUse] 需设置成 "AUTO_AGPS",这样上传给服务器的 Json 信息也将包含经度(Longtitude),纬度(Latitude)。如果你所在的地方无GPS信号,建议设置成“NO_GPS”,这样可以省掉GPS搜星时间,减少设备工作时间周期和功耗。

(3)采集传输工作周期设置(休眠时长)

[SysWorkInterval] 该值设置的越大工作采样和传输间隔时间越长,这样可以减少 Sim 卡流量的消耗,同时也可以极大降低功耗,建议结合实际情况设置,单位秒。

(4)低功耗休眠功能开启

[SysSleepEn] 设置为 1 时将开启低功耗功能。当该功能开启后,设备每次采集并传输完数据后将进入休眠状态,休眠时间为 [SysWorkInterval] 秒,休眠期间设备的电流仅为 uA 级别。

(5)MQTT 服务器配置

上面Part3中的 Mqtt 参数是以接入天翼云(Ctwing)为案例填写的,用户需要根据自己所接的 Mqtt 云服务器做相应的更改。

步骤四:开始工作

上电后观察设备的 LED 指示灯状态:

白色:表明刚上电

红色:表明已检测到 Sim 卡

蓝色:表明已连上附近基站

绿色:表明已和服务器建立连接

测试方法:

如果自己没有远端 Mqtt 测试服务器,可选择天翼云(Ctwing),OneNet,阿里云等作为设备 Mqtt 接入的云,这里我们以天翼云中的 Mqtt 透传服务作为例子来演示 Mqtt 的接入,其他云的接入也就大同小异。

服务器接入实例教程请访问本地址