0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

低功耗4G模组Air780E快速入门:通过MQTT连接实现远程控制

合宙LuatOS 来源:合宙LuatOS 作者:合宙LuatOS 2024-10-11 14:01 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

今天我们学习Air780E快速入门之通过MQTT连接实现远程控制,伙伴们,学起来!

一、修改代码

1.1 准备工具

Air780E开发板

Air780E开发板设计资料

LuatOS-Air780E使用MQTT远程控制程序源码demo

API使用说明

mqtt测试工具

本demo中使用的测试工具是MQTTX,下载链接如下:MQTTX:全功能 MQTT 客户端工具

下载后的安装程序:

图片

双击后点击下一步安装就可以了

图片

1.2 程序详解

1.2.1 概念 首先我们先来了解一些mqtt的基本原理。订阅者订阅了一个主题后,能够接收到对这个主题发布的消息。基本原理如下图:

图片

本源码程序demo实现流程图如下:

图片

关于sys.subscribe()和mqtt_client:subscribe()的区别:sys.subscribe()是luatOS内部的订阅,接收sys.public()发布的消息,而mqtt_client:subscribe()订阅的是mqtt服务器发布消息,接收来自mqtt_client:public()发布的消息。

1.2.2 程序分步详解

第一步:等待联网

sys.waitUntil("IP_READY")

第二步:获取本设备的id,本demo中用来给MQTT服务器创建主题时当做Client ID号。因为MQTT服务器创建时的Client ID必须是唯一的,设备id也是唯一的,所以正好可以拿来使用。

-- 获取设备的imei号

local device_id = mcu.unique_id():toHex()

-- 下面的是mqtt的参数均可自行修改

client_id = device_id

--发布消息的主题内容

pub_topic = "/luatos/pub/" .. device_id

--要订阅的主题内容

sub_topic = "/luatos/sub/" .. device_id

第三步:创建一个mqtt实例,用来进行mqtt连接、订阅、发布消息等操作。

--提前定义的参数,用来创建mqtt实例,根据自己的服务器修改以下参数

local mqtt_host = "lbsmqtt.airm2m.com"

local mqtt_port = 1884

local mqtt_isssl = false

local mqttc = nil

--[[

@param1 适配器序号,不填会选择平台自带的



   @param2 服务器地址,域名或ip都可



   @param3 端口@param4 是否为ssl加密连接



   @param5 是否为ipv6

]]

mqttc = mqtt.create(nil, mqtt_host, mqtt_port, mqtt_isssl, ca_file)

第四步:配置连接mqtt服务器的参数,有mqtt设置的Client ID,账号,密码等。

local client_id = "mqttx_b55c41b7"

local user_name = "user"

local password = "password"

--[[配置mqtt连接服务器的参数

@param1 设备id



   @param2 账号[可选]



   @param3 密码[可选]



   @param4 清除session,默认true[可选]

]]

mqttc:auth(client_id,user_name,password) -- client_id必填,其余选填

第五步:设置mqtt掉线自动重连机制

--[[

@param1 是否自动重连



   @param2 自动重连机制,单位ms

]]

mqttc:autoreconn(true, 3000) -- 自动重连机制

第六步:在mqtt的事件回调函数中编写逻辑

--[[mqtt事件回调函数,其中事件包括

conack:连接成功事件。



  recv:接收服务器下发数据的事件



  sent:发送完成事件



  disconnect:断开连接事件



   ]]

--[[回调函数参数:

@param1 mqtt的句柄



   @param2 事件



   @param3 传入的数据

]]

mqttc:on(function(mqtt_client, event, data, payload)

-- 用户自定义代码



   log.info("mqtt", "event", event, mqtt_client, data, payload)



   if event == "conack" then



       -- 触发mqtt连接服务器成功事件,



       -- 在luat内部发布一条消息。



       sys.publish("mqtt_conack")



       --订阅一个mqtt主题



       mqtt_client:subscribe(sub_topic)--单主题订阅



       -- mqtt_client:subscribe({[topic1]=1,[topic2]=1,[topic3]=1})--多主题订阅



   elseif event == "recv" then



       --触发接收数据事件



       log.info("mqtt", "downlink", "topic", data, "payload", payload)



   elseif event == "sent" then



       --触发发送数据事件



   end

end)

第七步:连接mqtt服务器

mqttc:connect()

第八步:等待连接成功的luat内部的消息,此消息的发布在连接成功事件中

sys.waitUntil("mqtt_conack")

第九步:循环等待上报数据

while true do

-- 演示等待其他task发送过来的上报信息



   local ret, topic, data, qos = sys.waitUntil("mqtt_pub", 300000)



   if ret then



       -- 当接收到的tpoic是字符串close时,就跳出等待其他task发过来的上报消息的循环



       if topic == "close" then break end



       mqttc:publish(topic, data, qos)



   end

end

第十步:关闭mqtt连接

mqttc:close()

第十一步:定时上报数据演示

sys.taskInit(function()

sys.wait(3000)

--定义要定时上报的数据

local data = "123test,"

--发送的数据质量

local qos = 0 -- QOS0不带puback, QOS1是带puback的

while true do

sys.wait(3000)



   --如果mqttc实例存在,并且mqtt客户端就绪



   if mqttc and mqttc:ready() then



       --发布一个mqtt消息,这个消息的订阅,在mqtt服务器上,后面会介绍如何在mqtt服务器上订阅



       local pkgid = mqttc:publish(pub_topic, data .. os.date(), qos)



   end

end

end)

二、烧录代码到硬件

2.1 正确连接电脑4G模组电路板

使用带有数据通信功能的数据线,不要使用仅有充电功能的数据线;

2.2 识别4G模组的boot引脚

在下载之前,要用模组的boot引脚触发下载, 也就是说,要把4G模组的boot引脚拉到 1.8v,或者直接把boot引脚和VDD_EXT引脚相连。我们要在按下BOOT按键时让模块开机,就可以进入下载模式了。

具体到 Air780E开发板,

2.2.1 当我们模块没开机时,按着BOOT键然后长按PWR开机。

2.2.2 当我们模块开机时,按着BOOT键然后点按重启键即可。

图片

2.3 识别电脑的正确端口

判断是否进入BOOT模式:模块上电,此时在电脑的设备管理器中,查看串口设备, 会出现一个端口表示进入了boot下载模式,如下图所示:

图片

当设备管理器出现了3个连续数字的com端口,并且每个数字都大于4,这时候, 硬件连接上就绪状态,恭喜你,可以进行烧录了!

2.4 新建项目

首先,确保你的 LuaTools 的版本,上大于 2.2.13 版本的。

在 LuaTools 的左上角上有版本显示的,如图所示:

图片

LuaTools 版本没问题的话, 就点击 LuaTOols 右上角的“项目管理测试”按钮,如下图所示:

图片

这时会弹出项目管理和烧录管理的对话框,如下图:

新建一个项目

注意:这里截图使用的hello world项目的烧录教程,烧录的时候要将脚本换成本次demo的。

图片

2.5 开始烧录

选择780E板子对应的底层core和刚改的main.lua脚本文件。下载到板子中。

图片

图片

点击下载后,我们需要进入boot模式才能正常下载,在(3)(4)小节已经介绍了如何进入boot模式。

图片

三、验证功能

3.1 配置MQTTX服务器

3.1.1 打开MQTTX工具后,添加一个连接

图片

图片

3.1.2 添加一个订阅,在MQTTX工具中填写和程序中对应的连接参数:

图片

订阅成功后界面如下:

图片

3.2 订阅和发布消息

3.2.1 此时给开发板开机运行,即可看到我们之前写的自动发送测试的数据。

图片

3.2.2 MQTTX发布消息,主题是开发板订阅的主题,开发板可以接收到MQTTX发布的消息。

图片

图片

四、常见问题

Q: 模组支持MQTT最新的版本是多少?

A: 支持MQTT_V3.1、MQTT_V3.1.1版本

Q: 模组最多支持几路链接?

A: mqtt/tcp/udp的链接公用8路通道

Q: client id是否允许重复

A: client id不允许重复,要保证唯一性,如果在已经有一个该id的链接情况下,另外一个设备也用了相同的clientid接入,会把另一个在连链接挤掉。

Q: Qos0、1、2如何选择

A: 应用允许的情况下,建议使用Qos0,Qos1和Qos2会加重网络负担。

Q: 为什么mqtt ssl访问失败

A: 检查服务器是否支持模块支持的加密套件,用模块程序中的三元组和证书,在mqttx或者mqttfx客户端工具上尝试是否可以成功链接。

Q: 排查是否设备单体问题:如果同一地点,某些设备正常,某些设备异常,按照如下几种情况分析

A:

分析正常设备和异常设备的使用环境是否相同:如果不同,例如异常设备固定在钢制墙壁上,正常设备放置在桌子上,钢制墙壁可能对天线射频有干扰,将异常设备和正常设备放置在同样的使用环境中,再对比测试。如果相同,参考第2步。分析正常和异常的设备,驻留的小区是否相同:如果相同,重点排查异常设备的天线射频部分。如同不同,多测试几次,确认下,是不是在异常小区内很容易出问题,如果异常小区很容易出问题,可能就是小区拥堵造成的。

五、修改代码

在本demo中,我们实现了数据的上传和下发,你可以将温湿度数据上传到MQTT服务器,也可以用下发的数据进行控制灯的开关。

以上就是合宙Air780E快速入门之通过MQTT连接实现远程控制的所有内容,伙伴们,学会了吗?

​审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 4G
    4G
    +关注

    关注

    15

    文章

    5607

    浏览量

    123231
  • 服务器
    +关注

    关注

    13

    文章

    10093

    浏览量

    90863
  • 远程控制
    +关注

    关注

    4

    文章

    706

    浏览量

    36687
  • 低功耗
    +关注

    关注

    12

    文章

    2990

    浏览量

    106235
  • MQTT
    +关注

    关注

    5

    文章

    720

    浏览量

    24779
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    实战Air780EPM:构建4G共享网关,服务WiFi与有线设备!

    通过Air780EPM开发板,我们可以轻松实现4G网络作为数据出口,为周边的WiFi设备和以太网设备提供互联网共享,适用于移动办公、远程部署
    的头像 发表于 09-30 16:03 869次阅读
    实战<b class='flag-5'>Air780</b>EPM:构建<b class='flag-5'>4G</b>共享网关,服务WiFi与有线设备!

    E860-DTU系列4G无线对传开关:工业物联网远程同步控制的解决方案

    ​一、产品概述E860-DTU系列4G无线对传开关是亿佰特针对工业物联网远程控制需求推出的核心设备,支持1/2/4/8路开关量输入(DI)与继电器输出(DO)无线传输。其搭载高性能工业
    的头像 发表于 08-07 15:05 553次阅读
    <b class='flag-5'>E</b>860-DTU系列<b class='flag-5'>4G</b>无线对传开关:工业物联网<b class='flag-5'>远程</b>同步<b class='flag-5'>控制</b>的解决方案

    Air8101多网融合战略升级:Air780EPM模块助力4G联网落地

    应用迈向新高度。 本文将分享Air8101核心板通过外挂Air780EPM整机开发板,实现4G联网的功能示例。   一、硬件准备工作   1
    的头像 发表于 06-23 16:53 364次阅读
    <b class='flag-5'>Air</b>8101多网融合战略升级:<b class='flag-5'>Air780</b>EPM模块助力<b class='flag-5'>4G</b>联网落地

    COD监测革新!Air780EPM一站式替代STM32+4G模组的物联网方案 ~

    通过4G通信、COD数据处理与低功耗控制集成于Air780EPM芯片,本方案彻底颠覆STM32+外置
    的头像 发表于 05-21 16:51 420次阅读
    COD监测革新!<b class='flag-5'>Air780</b>EPM一站式替代STM32+<b class='flag-5'>4G</b><b class='flag-5'>模组</b>的物联网方案 ~

    大公开!用Air780EPM重构水质COD监测,替代STM32+4G模组的技术路径

    方法。 以往行业常规开发方案是STM32+4G模组组合,本次实验项目采用Air780EPM开发新方案——4G模组直接做主控,省却MCU费用,
    的头像 发表于 05-16 15:34 446次阅读
    大公开!用<b class='flag-5'>Air780</b>EPM重构水质COD监测,替代STM32+<b class='flag-5'>4G</b><b class='flag-5'>模组</b>的技术路径

    快速开发实战——4低功耗ADC接口,Air780EPM二次开发必看!

    : www.air780epm.cn Air780EPM共有4路ADC硬件通道,其通常的作用是用来测试电压数值,多用于工业控制‌、智能家居、汽车电子等。 一、ADC接口特性    ‌A
    的头像 发表于 04-01 14:56 524次阅读
    <b class='flag-5'>快速</b>开发实战——<b class='flag-5'>4</b>路<b class='flag-5'>低功耗</b>ADC接口,<b class='flag-5'>Air780</b>EPM二次开发必看!

    新手必看!4G模组Air780EPM——GPIO的设计说明

    Air780EPM的GPIO设计需兼顾硬件可靠性与软件灵活性,开发者应基于具体应用场景权衡复用功能优先级,并遵循电源管理规范以延长设备生命周期。通过模块化配置与精细化调试,可最大化释放模组性能潜力
    的头像 发表于 03-20 17:48 600次阅读
    新手必看!<b class='flag-5'>4G</b><b class='flag-5'>模组</b><b class='flag-5'>Air780</b>EPM——GPIO的设计说明

    干货预警!4G模组Air780EPM其他硬件接口

    Air780EPM 4G模组不仅凭借高速稳定的数据传输能力在智能终端、工业自动化、车载设备等领域大放异彩,更以其“全栈式”硬件接口设计,为开发者提供了近乎无限的扩展可能。 一、ADC 接口设计指导
    的头像 发表于 03-17 17:37 738次阅读
    干货预警!<b class='flag-5'>4G</b><b class='flag-5'>模组</b>:<b class='flag-5'>Air780</b>EPM其他硬件接口

    手把手教你!4G模组Air780EPM——GPIO的设计说明

    4G模组Air780EPM作为广和通推出的高性能Cat.1bis无线通信模块,凭借其低功耗、高集成度及丰富的外设接口,在工业物联网、智能终端、车载设备等领域展现出卓越的适配性。 一、概
    的头像 发表于 03-17 16:07 838次阅读
    手把手教你!<b class='flag-5'>4G</b><b class='flag-5'>模组</b><b class='flag-5'>Air780</b>EPM——GPIO的设计说明

    4G模组Air780EPM的开机启动及外围电路设计!

    本文介绍了4G模组——Air780EPM 模块开机的完整硬件设计指南,涵盖供电要求、管脚配置、电路示例及常见问题排查方法,希望能够帮助大家避免设计错误,确保模块稳定启动!常见开机电路。   这些内容
    的头像 发表于 03-07 16:06 816次阅读
    <b class='flag-5'>4G</b><b class='flag-5'>模组</b><b class='flag-5'>Air780</b>EPM的开机启动及外围电路设计!

    初学者必看!4G模组Air780EPM的开机启动及外围电路设计

    本文介绍了4G模组——Air780EPM 模块开机的完整硬件设计指南,涵盖供电要求、管脚配置、电路示例及常见问题排查方法,希望能够帮助大家避免设计错误,确保模块稳定启动!常见开机电路。   这些内容
    的头像 发表于 03-07 16:02 576次阅读
    初学者必看!<b class='flag-5'>4G</b><b class='flag-5'>模组</b><b class='flag-5'>Air780</b>EPM的开机启动及外围电路设计

    功耗表现最佳有没有?——Air780EPS

    、HTTP、WEBSOCKET、NTP等。 语音支持: Air780EPS不支持TTS语音播放,也不支持VoLTE语音通话。需要支持这两个功能的应用,推荐选择Air724UG。 功耗表现:
    的头像 发表于 01-10 15:29 898次阅读
    <b class='flag-5'>功耗</b>表现最佳有没有?——<b class='flag-5'>Air780</b>EPS

    要Open开发,又要低功耗低成本?建议等新方案

    Open开发应用需求,有没有低功耗、低成本方案? 今天我们一起来聊聊Air780EP模组。 一、Air780EP核心信息描述 运营商支持: Air7
    的头像 发表于 12-24 17:09 716次阅读
    要Open开发,又要<b class='flag-5'>低功耗</b>低成本?建议等新方案

    【正点原子STM32H7R3开发套件试用体验】4G联网工业设备控制网关

    资料,了解STM32H7R3开发套件的功能。 2. 接入Air780E实现开发板通过4G联网 3. 对接FastBee物联网平台,实现数据
    发表于 12-18 14:14

    解读Air724UG低功耗4G模组软件的语音通话!

    本篇文章以Air724UG模组为例,解读低功耗4G模组软件的语音通话,呈现实用教程供大家参考。
    的头像 发表于 12-09 09:39 2097次阅读
    解读<b class='flag-5'>Air</b>724UG<b class='flag-5'>低功耗</b><b class='flag-5'>4G</b><b class='flag-5'>模组</b>软件的语音通话!