本设计的思路是打造一种可以快速扩展的LoRaWAN节点硬件平台。它应该满足以下一些特性:

节点部分由以下三部分组成:
样品外壳为3D打印的版本,3D打印文件:https://share.weiyun.com/0mGK1ZuR
主板上的主要芯片如下表所示:
芯片 | 功能概述 |
|---|---|
ESP32 | MCU,提供运算、程序运行、LoRaWAN协议运行等功能的同时,WiFI可用作OTA升级 |
W25Q64 | FLASH芯片,用于存储固件 |
SX1278 | 提供LoRa射频功能 |
CP2102 | USB转UART芯片,为产品提供刷新固件、二次开发、人机交互等功能 |
CE6260 | LDO芯片,为系统提供稳定的电压 |
在主板的背面,留有一组侧向开口的双排母座,其中UART、I2C、ADC、GPIO等资源,可以满足各种常规传感器和执行器的通信和驱动需求。同时ADC还用于监控电池电压,并将该数据作为变量传送到云端。

主板原理图:
为了方便扩展,所有的传感器都具有统一的接口尺寸和引脚顺序,可以接插在主板底部的母座上,方便更换和扩展。本文档中,我们以HDC1080温湿度传感器为例。通信为I2C总线,我们将通过它读取室内温度和湿度。
传感器原理图:
网关采用Heltec Automation HT-M00双通道网关,这是一款定位为室内使用的低成本网关,基于ESP32和SX1276,具有两个LoRa信号调制/解调通道,通过Wi-Fi接入腾讯云。

打开https://console.cloud.tencent.com/iotexplorer网址并新建一个项目,进入项目后依次选择“网络管理 --> LoRa网关管理 --> 添加网关”,填入网关的基本信息和地址信息并“确定添加”。


在HT-M00的配置页面,除了网关需要连接的Wi-Fi信息,还要填入腾讯云的服务器地址(loragw.things.qcloud.com)。更多关于HT-M00双通道网关的配置方式,请参阅HT-M00的相关文档。

若一切正常,将可以在“用户网关”标签下看到网关“在线”的状态。至此,网关注册完成。

打开“开发产品 --> 新建产品”,根据实际情况填写“产品名称”。通信方式选择“LoRaWAN”,其他保持默认即可。

进入刚刚新建产品,选择新建功能。在本文所涉的操作中,我们需要监控“温度”、“湿度”、“电池电压”三个变量。所以笔者新建了三个功能:

在“设备开发”的“上行数据解析”部分,填入解码脚本并提交。
function tofloat32(a1,a2,a3,a4){
var s=(a1&0xff)>>7;
var E=(a1<<1&0xff)|a2>>7;
var M0=(a2&0x7f)<<16|a3<<8|a4;
var M=1;
for(var i=0;i<23;i++)
{
if(M0>>i&0x01==1)
{
M=M+Math.pow(2,i-23);
}
}
var result=Math.pow(-1,s)*M*Math.pow(2,E-127);
return result;
}
function RawToProtocol(fPort, bytes) {
var data = {
"method": "report",
"clientToken" : new Date(),
"params" : {}
};
data.params.Temp = tofloat32(bytes[3],bytes[2],bytes[1],bytes[0]);
data.params.RH = tofloat32(bytes[7],bytes[6],bytes[5],bytes[4]);
data.params.Battery = bytes[8]<<8|bytes[9];
return data;
}在“设备调试”中添加一个新设备,“保存”之后,注册节点完成。

节点采用Arduino开发环境,因为Arduino是基于C++的开发平台,开发人员无需对硬件底层的寄存器进行配置,配合海量Arduino标准库,极易上手,能大幅降低开发难度,有助于想法更快的验证和落地。
开发环境的安装包含以下两步,依次执行:
将传感器与主板连接好后,参照HDC1080传感器 + LoRaWAN这一例程。以下三个地方需要根据实际情况进行修改:



经过以上的配置,若一切正常,节点会将传感器数据通过LoRaWAN协议发送到HT-M00网关发送到腾讯云。我们可以通过“在线调试”看到来自节点的上行数据,在属性测试中也能看到解析好的数据。

在腾讯云的“交互开发”中,简单配置一个“面板界面”,再通过“腾讯连连”小程序扫二维码,就能在小程序中看到相应的数据了。

Enjoy :)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。