基于 LoRa 的电子围栏方案设计需要围绕牲畜的地理位置信息和温度信息以及周边牲畜所处的环境的湿度信息进行监控和处理。按照模块的划分思路来分,该方案主要包括信息采集部分的电子围栏定位器终端,物联网网关通信部分的电子围栏通信中继网关、云平台后台显示监控部分的电子围栏服务平台以及电子围栏可视化应用。
(1)电子围栏定位器终端:电子围栏定位器终端主要由单片机,温湿度传感器,GPS 定位传感器,LoRa 通信模块组成,电子围栏定位器终端主要采集牲畜的地理位置信息、温度信息以及湿度信息,并将采集的数据通过 LoRa 模块发送到电子围栏通信中继网关。
(2)电子围栏通信中继网关:电子围栏通信中继网关主要由单片机,LoRa 通信模块以及 WiFi 无线通信模块组成,电子围栏通信中继网关主要接收电子围栏定位器终端采集到的数据,并通过 WiFi 模块发送到电子围栏服务平台。
(3)电子围栏服务平台:电子围栏服务平台是基于阿里云平台开发的,用于电子围栏定位器终端上传的数据的分析处理,并在平台上划分围栏。
(4)电子围栏可视化应用:电子围栏可视化应用是 Web。Web 是利用可视化开发来显示牲畜的地理位置信息以及牲畜的温度信息和牲畜所在的周边环境的湿度信息,以供牧民使用。当牲畜的活动范围超过指定的范围时,Web 可视化界面显示报警信息。
模块 | 型号 |
主控模块 | STM32F103C8T6 |
GPS定位模块 | L76-K GPS |
通信模块 | LoRa DRF1665 |
温湿度数据采集模块 | DHT11 |
WiFi模块 | ESP-01S WiFi |
电子围栏定位器终端与各模块的主要连线
电子围栏通信中继网关与各模块的主要连线
电子围栏定位器终端大体的程序流程实现如图,首先需要进行 STM32 器件的 GPIO 口以及串口的初始化。其中串口初始化主要包括串口 1、串口 2 以及串口 3的初始化。再进行 LoRa 模块、DHT11 温湿度传感器模块以及 GPS 模块的初始化。电子围栏定位器终端的 LoRa 模块开启了透明传输的模式。如果 LoRa 开启了透明传输模式,程序进入死循环,将采集温湿度的信息以及牲畜的地理位置信息,进行数据的打包,打包好的数据发送给电子围栏定位器终端的 LoRa 模块,LoRa 模块再向电子围栏通信中继网关的 LoRa 模块发送数据。
4.1.1温湿度数据采集流程
4.1.2定位器终端定位数据采集流程
由于 L76-K GPS 模块读取的经纬度数据是国际经纬度 WGS-84 坐标的标准,要是需要在我国地图上能够正确的显示经纬度坐标,则需要进行经纬度坐标标准的转换。我国使用的经纬度坐标标准是GCJ-02,这有利于地理位置的加密,而且在百度地图上,百度地图对经纬度数据进行了 BD-09 的二次加密。在本次设计中为了确保经纬度数据能够正确的在地图上地位,需要将经纬度的 WGS-84的坐标标准转换成 GCJ-02 坐标标准,再将转换好的数据打包好给 LoRa DRF1665 模块进行数据的传输。
4.1.3LoRa模块之间的通信配置
电子围栏定位器终端与电子围栏通信中继网关是通过 LoRa 进行无线通信的,电子围栏定位器终端和电子围栏通信中继网关都需要配置相同的 LoRa 模块。通过这两个相同的模块进行数据的传输,则需要在软件上配置他们的 PAN ID、频率以及信道的参数。本次设计采用 LoRa 透明传输的方式进行数据集的发送与接收。 在本次设计中电子围栏定位器终端是从模块,电子围栏通信中继网关是指主模块。透明传输时,主模块发送的数据,所有的从模块都可以接收到,从模块发送的数据,只有主模块才能接收到。
对电子围栏定位器终端以及电子围栏通信中继网关的 LoRa 通信模块进行了参数的配置,配置传输模式为透明传输,频道在 30,PAN ID 为 A201,波特率为 115200,LoRa 参数为 Lora10。将这两个 LoRa 模块通过串口连接到电脑,测试他们数据的收发状态。
电子围栏定位器终端的 LoRa 模块向电子围栏通信中继网关的LoRa 模块发送信号,电子围栏通信中继网关的 LoRa 模块能够正确的接收到数据,说明这两个 LoRa 模块能够正常的进行信。
电子围栏通信中继网关大体的程序设计流程如图 4.6 所示。电子围栏通信中继网关先对主控模块 GPIO 以及串口进行初始化,再对 LoRa 模块以及 ESP8266 WiFi 模块初始化,LoRa 模块一直监听电子围栏定位器终端传过来的经纬度数据以及温度和湿度的数据,当 LoRa 模块能够正确的接收经纬度数据和温度数据以及湿度数据时,WiFi 模块连接可上网路由器,通过 WiFi 模块将牲畜的经纬度数据以及温度数据和湿度数据上传到电子围栏服务平台。
4.2.1电子围栏通信中继网关向云端发送数据流程
电子围栏通信中继网关与阿里云平台是通过 ESP8266 WiFi 模块进行通信的。ESP8266 WiFi 模块作为客户端先与可上网路由器(热点),通过 TCP 协议进行连接,在 TCP 协议的基础上通MQTT 协议让电子围栏通信中继网关与阿里云互相通信,并且进行数据的传输。
WiFi 模块的工作流程如上图所示,先要对 WiFi 模块进行初始化,判断是否连接上可上网的路由器,如果没连接上会一直等待连接。连接可上网路由器成功后,判断是否连接上阿里云,连接成功则可以向阿里云发送数据。如果没连接成功则一直等待连接。
WiFi 模块连接可上网路由器是通过 AT 指令控制的,首先设置 WiFi 模块的工作模式为 STA 模式,WiFi 模块作为站点连接可上网路由器或者 WiFi 热点,然后重启模块,生效工作模式,通过手机热点的账号和密码连接上可上网路由器后,通过可上网路由器将数据传送到云平台。
电子围栏通信中继网关使用 WiFi 模块将数据上报给阿里云平台,需要在阿里云平台里找到相关设备的三元组信息,结合三元组的信息,电子围栏通信中继网关的主控模块通过 AT 指令控制 WiFi 模块与阿里云对应的设备相连。
WiFi 模块连接阿里云的工作流程如上图所示,首先使用 AT 指令控制 WiFi 模块连接阿里云设备的用户名和用户密码,然后进行连接设备的客户端 ID,紧接着连接阿里云设备的服务器名称和端口号。
在单片机处编写 AT 指令,通过串口打印,查看 WiFi 模块是否能够在单片机处和阿里云相连通。通过程序的编写,在串口打印出WiFi 模块与阿里云能互相通信的信息。打印出的信息如下图所示,表示 WiFi 模块已经成功的与阿里云连接。
4.3.1云平台接收数据流程
首先需要注册阿里云账号,并且登录阿里云平台,在阿里云平台里面搜索物联网平台并登录物联网平台,进入物联网控制台后,选择公共实例并且进入公共实例。在公共实例里面创建产品,在新建的产品里面增添设备,添加设备成功后,可以查看新添加的设备的三元组信息(Product Key、Device Name、Device Secret)。WiFi模块就是需要利用三元组的信息与阿里云平台的设备进行数据的传输。通过电子围栏定位器终端采集的数据上传到云端(电子围栏服务平台)称为发布信息,云端(电子围栏服务平台)下发的数据称为订阅。发布消息的上报格式可以利用阿里云的在线调试工具进行数据格式的调整,调整成适合云平台发布的数据格式,所以电子围栏电位器终端采集的数据需要被写入合适云平台发布的 json 数据格式。
本次设计需要上传的数据有地理位置信息以及温湿度信息,这些数据通过 MQTT协议上传到云端后,云平台设备该如何识别出不同类型的数据呢?阿里云提供的设备里都有设备的物模型数据,每个物模型的功能都有它唯一的标识符,通过标识符,我们就可以将相对应的数据上传到指定的物模型中了。电子围栏通信中继网关上传的经纬度信息对应的物模型就是地理位置,温度信息对应的物模型就是温度,湿度信息对应的物模型就是湿度。
4.3.2业务逻辑设计
阿里云物联网平台的可视化开发提供了业务逻辑的功能,要在 Web 可视化开发的应用地图组件里划分并显示围栏,需要地图组件与地理空间结合起来,通过业务逻辑实现文字推送的报警方式。
空间触发是关联着地理空间的区域划分的范围,如果设备超出所划分的地理空间范围,则触发空间触发,空间触发的消息就会经过应用推送的方式显示在 Web 上。
4.3.3可视化应用设计
阿里云平台能够正确接收到数据之后,通过 IoT Studio 进行阿里云 Web 端的设计。阿里云服务器提供了网页端和移动端可视化界面的开发,我们可以在阿里云服务器里创建 Web 应用,并且关联我们之前创建的产品。Web 可视化开发里面提供了很多的组件,其中有地图、仪表盘以及实时数据曲线图等。利用这一些组件,将温湿度和 地理位置信息的数据源导入进去,这样就可以通过可视化来观看牲畜的地理位置以及温度和湿度的信息了。Web 设计页面如下图所示:
两个实时的曲线图可以观看温度和湿度最近一段时间的数据变化情况,仪表盘可以显示当前的温湿度,地图可以观看牲畜当前所处的位置以及围栏的划分范围。当前的设备状态是通过业务逻辑的判断进行文字推送出来,如果有牲畜超出围栏的范围,则显示“警告,超出范围”的提示。在默认的情况下,也就是在围栏内的时候,文字显示“在范围内”的提示。由于每一次的位置更新都需要刷新地图,所以刷新位置的按钮是为了更新牲畜位置而设计的。点击地图上的图标也可以显示设备的其他属性信息,效果如下图所示。
4.3.4云平台功能测试
将电子围栏定位器终端以及电子围栏通信中继网关进行上电,电子围栏定位器终端采集数据发送到电子围栏通信中继网关,网关接收数据上传到云平台。通过物联网平台的在线调试,查看实时日志,自动刷新日志,可以看到电子围栏通信中继网关实时上传的经纬度以及温湿度的数据。
实时日志的物模型显示“true”,则表示云端能够正确的接收到电子围栏通信中继网关上传的经纬度以及温湿度的信息,从实时日志中,还可以读取出经纬度的标识符以及温湿度的标识符,通过标识符,云端能够正确的将数据存入设备的不同属性的物模型中。下图所示的就是对应设备不同属性物模型的后台数据显示。
通过查看设备物模型的运行状态数据能够实时的更新,地理位置数据和温湿度的数据不断变换,我们可以看出,云端接收数据是成功了。
4.3.5电子围栏报警推送测试
将电子围栏定位器终端以及电子围栏通信中继网关上电,上电后可以通过 Web 观看牲畜的地理位置信息、温度信息以及湿度信息。当牲畜所处的范围是在地图上显示的蓝色区域,也就是围栏的时候,当前设备状态就会提示为在范围内,当牲畜的位置不在围栏内时,当前设备状态就会提示警告,超出范围的字样。
超出范围的时候,触发了空间触发,通过业务逻辑的监控日志可以查看空间是否触发,空间触发成功后,可查看应用推送是否触发成功。
由上图业务逻辑日志可知,当牲畜的位置信息不在围栏内时,业务逻辑空间触发,随即触发应用推送,触发后的信息经过应用推送,推送到 Web 可视化界面的当前设备状态的文字中。在业务逻辑日志中查找有无错误的日志,如果没有错误的日志,说明报警信息推送成功了。
【补充】
后面新增了一个钉钉报警,具体的操作步骤可以查阅阿里云平台的开发手册。