树莓派如何与物联网平台交互(搭建一个树莓派网关)(一)
一、功能描述
树莓派网关采集485温湿度传感器以及485门磁开关状态数据上报到涂鸦云平台;同时收到云端的指令,树莓派网关处理之后,控制继电器动作,同时继电器返回当前的状态给云端。
树莓派与涂鸦云平台交互代码:demo1下载地址
树莓派与485子设备通信代码: demo2下载地址
二、硬件准备
树莓派(Pi4B)
树莓派有两个串口可以使用,一个是硬件串口(/dev/ttyAMA0),另一个是mini串口(/dev/ttyS0)。硬件串口有单独的波特率时钟源,性能好,稳定性强;mini串口功能简单,稳定性较差,波特率由CPU内核时钟提供,受内核时钟影响。树莓派(3/4代)板载蓝牙模块,默认的硬件串口是分配给蓝牙模块使用的,而性能较差的mini串口是分配给GPIO串口 TXD0、RXD0。
在默认状态下,serial0(就是GPIO14,GPIO15)是映射到ttyS0的(就是mini串口:/dev/ttyS0),ttyS0的特点是其工作时钟来自于CPU,CPU的时钟呢又是从600MHZ到1.5Ghz动态变化的,所以这个串口经常会因为时钟频率发生变化而发生错误,因此下面我没有用此串口和子设备通信。serial1(跟板载蓝牙相连)映射到ttyAMA0,ttyAMA0是硬件串口,它的时钟频不受CPU影响,因此下面树莓派和子设备通信采用了硬件串口(ttyAMA0)。
通过配置交换映射关系,把硬件串口ttyAMA0映射到(GPIO14,GPIO15)上。
最终映射结果可以通过执行命令:ls -l /dev来查看,发现串口 ttyAMA0设备节点以及ttyS0设备节点已经交换。
2. 485转TTL模块
DIR这个管脚控制485转TTL模块发送与接收的,当DIR高电平的时候为发送模式,当DIR为低电平的时候为接收模式。
3. 路由器(可选)
树莓派可以连接路由器,也可以连接手机WIFI热点,打开SSH服务。(具体可以参照下面所述登陆树莓派的方法)
4. 继电器模块(485通信)
5. 温湿度传感器(485通信)
6. 门磁开关(485通信)
Modbus-Rtu 9600
7. 电源设备(使用树莓派配置的电源插座即可)
三、硬件连接
四、登陆树莓派
如果没有了屏幕,就必须通过网络来登录和控制树莓派电脑,因此必须要有网络支持。我们可以通过手机开WiFi热点,然后修改树莓派的配置文件来连接手机网络,并且打开SSH服务(笔记本电脑也要连接手机的WiFi热点)或者把树莓派通过网线连接到路由器,电脑连接路由器的无线网,使得树莓派和电脑在一个局域网内,并且打开SSH服务。下面分享两种基于SSH网络登陆树莓派的方式。
1、利用路由器搭建局域网登陆树莓派
(1)用路由器搭建局域网,电脑无线或有线方式连接路由器,树莓派用网线连接路由器。一般来说,Raspberry会配置为DHCP,自动获取IP。
(2)登陆路由器,查看Raspberry的IP地址,在电脑的CMD下ping该IP地址,能够ping通。
(3)在SSH客户端输入该IP和端口号22,登陆Raspberry,输入用户名和密码即可。
2、电脑无线端口共享给有线端口登陆树莓派
当没有路由器或者已连接但无法知道树莓派的确切IP怎么办,可以通过电脑的双网卡进行分配。一般来说,现在的电脑都支持双网卡,一个有线一个无线,那么可以直接将网线把电脑网口和树莓派网口连接起来,配置电脑的无线接口共享给有线网卡,并对有线网卡进行网络共享。前提是需要设置有线网卡的IPV4为DHCP模式。具体步骤如下:
(1)打开“网络和Internet”选项->更改适配器选项->WLAN属性->共享->允许其他用户通过此计算机的Internet连接来连接->选择有线网卡。( 手机开WIFI热点连接时,选择以太网。)
(2)设置有线网卡IPv4自动获取IP
(3)cmd 输入arp -a 查看以192.168.137.1 为网关的列表中出现的树莓派端口,通过插拔网线的方式,看多了哪一个IP,那个就是树莓派的IP。
(4)启用ssh,端口22, 访问ip为192.168.137.239
(5)连接SSH,输入用户名和密码即可。
五、产品创建
需要在涂鸦 IoT 开发平台创建产品,获取授权信息,然后将产品和授权相关信息写入到代码中,实现接入涂鸦云,详细步骤如下:
1、网关设备的创建
登录涂鸦 IoT 工作台后,单击创建产品并选择行业解决方案>智慧工业>工业网关品类。
选择TuyaLink自定义方案,输入产品名称,设备类型选择网关设备,数据协议选择涂鸦标准协议,通讯协议选择以太网,点击创建产品。
在功能定义界面,单击添加功能并填写相关参数,完成产品功能定义。(根据要实现的设备功能,创建好DP功能点)
在设备开发界面,选择并下载 SDK 方案,单击下一步进入激活信息获取页面。
涂鸦提供免费的授权码供测试使用,您可以免费领取 2 个激活码,领取成功后,点击注册设备,即完成设备注册,设备相应信息会显示在下方
将注册的设备信息,填写到examples/data_model_basic_demo/data_model_basic_demo.c
文件中,编译并运行 Demo 即可连接涂鸦云,关于编译的具体流程,请参考下文编译执行章节内容。
改之前:const char productId[] = "3jbcpefnn1jxxxxx";const char deviceId[] = "6ced2aa564727c01xxxxx";const char deviceSecret[] = "ac5d367db39xxxxx";改之后:const char productId[] = "t1tlm6p13aoxxxxx";const char deviceId[] = "6cf918e90b12f7b1fxxxxx";const char deviceSecret[] = "a5f23a3fb34xxxxx";注意:根据自己创建的网关产品PID,设备ID,设备密钥进行更改。
2、485子设备的创建
子设备的创建同上,只有操作到如下图的步骤时,按照下图圈出来的更改即可。
子设备创建完成后如下图,在网关设备创建的时候,DP点已经创建,这里不需要再创建。