查看: 1495|回复: 0

ATOM DTU简介与示例

[复制链接]

该用户从未签到

发表于 2021-7-15 14:52 | 显示全部楼层 |阅读模式
本帖最后由 M5Stack官方 于 2021-7-15 15:39 编辑

今天为大家介绍一下我们的AtomDTU系列,也就是我们物联网应用中常用到的数据传输单元,我们这款产品最大的特点就是可编程以及可扩展性。

图1 ATOM DTU

图1 ATOM DTU


【ATOM DTU系列介绍】
目前DTU系列有两个版本,第一个是公网的NB IoT(Narrowband Internet of Things)版本(http://docs.m5stack.com/zh_CN/atom/atom_dtu_nb),以及自主建网的LoRaWAN版本(http://docs.m5stack.com/zh_CN/atom/atom_dtu_lorawan470)。用户可以根据自身案例的特点选择,比如单一的连接且运营商信号覆盖ok的情况下,用nbiot是比较划算的,但如果多节点少数据,而且运营商信号不太好,就更建议用lorawan的版本。
图片 19.png 图片 21.png
今天我们以NB IoT这款来为大家介绍。

【DTU NB 实物介绍】
首先来看一下现在的这款ATOM DTU NB-IoT,可以看出它是以ATOM Lite为主机,模块正面贴了标注相关信息的贴纸。
左侧这边有一个SIM卡插槽,在我们的产品套件里会默认配送一张三年的流量卡。
图片 29.png
在顶部,这里有一个SMA天线接口,用于连接NBIoT的天线,还有一个红色的4 Pin grove接口,我们默认为I2C总线接口,可以连接相应的拓展单元,比如温湿度传感器之类的。


图片 31.png
底部这里可以看到,ATOM Lite主机自带的一个TypeC接口和一个自定义的Grove 4 Pin接口,在下方还有一个4pin的插座,我们称之为POWER485,它除了485通信总线外还有两pin端口用来供电,兼容9到24v输入,因为在dtu内部集成了DCDC的5V降压。
图片 36.png
在背面是整个DTU的固定部分,整个卡扣是用来夹在电箱导轨上的,我们也可以用上下这这两个螺丝孔,把dtu固定在墙面上。中间这里是一个M12的开孔位,也可以用来做一些结构的扩展应用。

1626330905(1).jpg


【配置连接】
使用固件烧录软件M5Burner(下载地址:https://docs.m5stack.com/en/download)将主机ATOM Lite配置为WiFi模式(Internet Mode)。
photo 1.png

图片 41.png
然后浏览器进入UIFlow在线开发页面(地址:https://flow.m5stack.com/),点击左下角的API Key进入Setting页面并填入设备的密钥等信息使设备与UIFlow平台连接。
photo 2.png
我们可以从Base分类中找到DTU系列模块的相关程序块。这里分别有NB系列和LoRa的三种系列。点开NB系列,我们可以看到这里有对DTU NB模块操作的程序块,可以使用CoAP、MQTT、NB-IoT以及Modbus RTU这四种常见的方式去进行通信开发。我们可以根据自己实际使用的设备的协议类型选择对应分类的程序块进行开发。
图片 44.png

【示例介绍】
1.基础功能:移动网络通信】
首先,作为一款数据传输单元,他最基本的功能就是进行数据的通信。我们可以使用设备卡槽里的流量卡提供的蜂窝网络进行NB IoT通信。
设置通信前,需要先初始化设备。从NB-IoT中分别拉取初始化DTU设备、复位模块、检查模块状态和设置回显模式这4个程序块。
将初始化和复位放在Setup下。
为了验证设备状态,这里还需要从循环里拉取一个重复执行的程序块,再从逻辑里拉取非程序块。这样能保证程序仅有模块状态正常后再接着往下运行。
然后,同样的方式放置设置回显模式的程序块,我们可以根据自己的需求设置数据是否回显,我这里选择OFF,不回显数据。

图片 51.png
这样设备初始化就完成了。想要使用MQTT协议进行通信,需要服务器的支持。对于服务器,有很多的第三方服务器平台可以选择。
从MQTT分类下拉取第一个程序块,在一个行的MQTT connect server后面填入服务器地址,然后端口号port填入1883,剩下的客户端id、用户名等可以随意填写。现在这个程序块就可以连接到第一行地址对应的服务器的1883端口,可以从此端口接收数据或发送信息。 图片 52.png

在MQTT协议中,有“订阅”与“发布”两个环节,分别对应接收和发送数据。
通过订阅一个主题,我们就能对这个主题开启监听,每当主题有新内容发布,就能够接收到发布的内容。在UIFlow中,订阅对应的就是这两个程序块。我们可以通过第一个程序块订阅一个主题。而第二个程序块可以回调主题发布的信息,将主题和内容分别存放在变量nb_topic和nb_msg中,并在收到订阅主题发布信息后,运行块内程序。

图片 7.png
而上述的“订阅”过程反过来,就是“发布”,我们可以使用这个程序块发布一个主题,并能在payload后填写要发布的内容。这样订阅这个主题的设备就能够接收到这个内容。
图片 8.png

【可通信】
现在我们来通过“订阅”和“发布”跟设备打个招呼吧。
先使用MQTT调试软件(可自行下载第三方调试软件),通过填入相同的服务器地址,连接到同一个的服务器。然后,发布一个主题,比如DTU_TEST,用于跟这个DTU设备交互。

图片 53.png 图片 54.png
然后,回到UIFlow这边,通过订阅主题的程序块,订阅刚刚发布的那个主题DTU_TEST。再使用这个监听主题的程序块,实时监听订阅的主题。我们可以根据不同的消息指令,做对应的回应。
比如,想要在接收到Open或Close后,点亮或熄灭Lite上面的LED灯,并做出回应。

接收到消息后,将消息与Open和Close这两个字符串进行比对,如果确认是Open或Close,那么就开灯或关灯。
然后,为了做出回应,就需要用到发布功能,对同样的主题发布要回应的消息。这样能够在收到开关灯指令后,做出回应。
好了,以上的程序能够实现最基本的通信功能,我们推送到设备上看一下实际效果。
图片 56.png
向主题DTU-TEST里发布开灯的指令,然后LED灯亮绿色,并且这边也收到已经打开LED的回应。发布Close指令,LED熄灭,接收到已关闭回应。基本通信功能已实现。
图片 59.png 1626331368(1).jpg

【可拓展开发】
除了最基本的通信之外,我们还可以结合拓展模块进行拓展开发。比如使用之前介绍过的环境传感器ENV 2进行拓展。

1626331574(1).jpg
ENV 2模块可以连接在Lite上面的拓展接口上,也可以连接在DTU的接口上,连接好后,需要在这里更改使用的端口号。
图片 17.png
通过下面这个程序,我们可以在接收到温度查询命令Temp后,回应ENV 2检测的温度。
图片 61.png
发布Temp温度查询指令,然后,我们就能够收到DTU传回来的温度信息。
图片 63.png

【可对数据进行处理编程】
除此之外,我们还能够连接多个模块进行编程开发。比如我们在这个基础上再连接一个485继电器,控制白炽灯的开与关。实现一个小型的高温预警模块,在温度大于30℃时,点亮警示灯,并会向服务器发送高温预警。
连接好485设备后,推送这个的程序至ATOM Lite。
1626331596(1).jpg 图片 64.png


向设备发送温度查询命令,可以看到现在温度是低于30摄氏度,所以灯是熄灭状态。 图片 66.png
然后,我们手动加热温度传感器,现在灯被点亮了,并且服务器也接收到了大于30℃的预警。
1626331810(1).jpg
通过这个程序,我们实现了ATOM DTU NB通过移动网络连接到服务器端,在服务器发送命令后能做出动作和回应。并且DTU NB还对温度进行实时检测,在大于30℃后,会向服务区端发出预警,同时还将闭合485继电器点亮警示灯。
视频链接

抖音地址
Bilibili地址


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

Arduino数字与字母字体应该如何设置?
Arduino数字与字母字体应
尝试用Arduino uno 做了个小工具,用来控制电脑水冷的运行。 洞洞板已经测试成功,完
WEMOS LOLIN32Lite(ESP32v1.0.0Rev1)入手+引脚图
WEMOS LOLIN32Lite(ESP32v
突发奇想做个精致的蓝牙遥控平衡小车(大学时做过一次,比较笨,用洞洞板焊电路做的比
【Arduino】168种传感器模块系列实验(129)---BH1750光照传感器
【Arduino】168种传感器模
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
16度双足机器人舵机驱动板pca9685连接舵机,舵机没反应
16度双足机器人舵机驱动板
各位同为arduino爱好者的大佬们大家好!想请教一下大家有关舵机驱动板pca9685
pca9685+arduino驱动舵机失败
pca9685+arduino驱动舵机
我网上别人的代码,编译通过且上传,但舵机不转,怎么解决?Arduino uno使用PCA9685模
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表