结合 ShineBlink 和 机智云 开发者即使不懂嵌入式物联网开发、云和App开发,也能很快实现一款包含硬件、云和App的物联网智能硬件。
本章实现了一款DTU数传设备,能够将工业中常用的485总线数据通过4G通讯和机智云进行透传,下图为功能框图:
名称 | 推荐购买源 | 资料下载 |
---|---|---|
通用版机智云 App | 免费 | 下载地址 |
ShineBlink 万能物联网开发板 | 淘宝搜索”ShineBlink“店铺有售 | shineblink.com |
带机智云GAgent固件的ML302 4G通讯模块 | 淘宝搜索”ShineBlink“店铺有售,购买链接:https://item.taobao.com/item.htm?ft=t&id=657692493882 | |
TD321D485模块 | 金升阳官网或淘宝店有售 | https://www.mornsun.cn/ |
黑色底板 | 该底板只是为了省掉接杜邦线,让外观好看一些,不是必需品,开发者如果没有可以用杜邦线来替代。如果仍想获取该底板,有如下两种方式:(1)通过右边提供的PCB工程资料自己打样PCB制作即可(2)通过联系微信号"shine_blink"免费获取空板PCB自己焊接也可(如果还有的话) | 底板PCB工程下载地址 |
--使能485模块发送
function M485SendEn()
LIB_GpioWrite("D7",0)
end
--使能485模块接收
function M485RecvEn()
LIB_GpioWrite("D7",1)
end
--使能USB print打印功能
LIB_UsbConfig("CDC")--非必需代码,仅仅调试用
--配置D9端口为普通输出(开发板上的LED2灯和D9端口是固定连接的)
LIB_GpioOutputConfig("D9","STANDARD")--非必需代码,仅仅调试用,用来指示485接收状态
LIB_GpioWrite("D9", 1)
--机智云平台为每个产品类别分配的唯一PK和PS,一定要改成您自己的PK和PS
PK = "6ff8b78de15443a5b08d7cc4baa0d9c0"
PS = "a90595052d1346a385ea359c7afd994c"
--初始化4G模块
LIB_Giz4GConfig(PK,PS,100,120,"UART0","D5","HIGH","D6","HIGH")
--485模块接收发送控制
LIB_GpioOutputConfig("D7","STANDARD")
--配置Uart1串口波特率为9600
LIB_Uart1Config("BAUDRATE_9600")
M485RecvEn()--485模块平时都保持接收状态
--开启看门狗增加系统健壮性
--时间可以设置成"0.1S","1S","10S","30S","120S"
LIB_WatchDogConfig("1S")
--包计数器,用来保证需要发送给云的数据的第一个字节和上一个包的第一个字节不同
pkg_cnt = 0
--开始大循环
while(GC(1) == true)
do
--喂狗
LIB_WatchDogFeed()
--查询是否从机智云收到数据,个数不会超过64个
--如果收到就将数据通过485模块发出去
flag,cloud_data = LIB_RecvFromGizCloud("RawData")
if flag == 1 then --此时获取到一个包含64字节元素的table(数组)
M485SendEn()
LIB_GpioToggle("D9")--非必需代码
LIB_Uart1BlockSend(cloud_data)
M485RecvEn()
end
--查询是否从485模块接收到数据
--如果收到就通过透传通道"RawData"转发给机智云
flag,m485data = LIB_Uart1Recv()
if flag == 1 then
LIB_GpioToggle("D9")--非必需代码
pkg_cnt = pkg_cnt + 1
if #m485data <= 63 then
--发送给机智云的每包数据即使内容相同,第一个字节也不要相同
table.insert(m485data, 1, pkg_cnt&0x000000ff)--在数据包头部插入一个元素
LIB_SendToGizCloud("RawData",m485data)
else
print("Data package over size")
end
end
end
上面代码中出现的"LIB_"开头的库函数的详细介绍可以在shineblink.com网站上的API文档中查询。
通过《4G设备接入机智云教程》我们可以很快掌握机智云的接入流程,并使用现成的通用版机智云App即可很快的实现手机App远程访问我们的开发板。缺点就是通用版App的UI页面看起来不够专业。