首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【腾讯连连IoT开发大赛】灵活多变的LoRaWAN通信节点方案

【腾讯连连IoT开发大赛】灵活多变的LoRaWAN通信节点方案

原创
作者头像
用户5803919
修改2021-01-11 09:13:04
修改2021-01-11 09:13:04
2.2K2
举报
文章被收录于专栏:腾讯云IoT腾讯云IoT

目录

  • 引言
  • 硬件实施
    • 外壳
    • 主板
    • 功能单元
  • 设备注册
    • 注册网关
    • 注册节点
    • 配置节点
  • 验证通信

引言

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

  • 支持标准LoRaWAN通信协议,能接入各网关生产厂家不同种类的网关;
  • 硬件上模块化设计,接口标准化,用户可以通过更换传感器、控制器的种类,实现不同的功能;比如:
    • 配合PIR传感器或毫米波模块,它可以用于室内安防、防盗报警;
    • 接入温湿度、VOC、空气质量等传感器,它可以用于室内环境监控;
    • 接入RGB灯带,可以成为氛围灯控制器。
  • 开源、简单、易上手。本产品的定位是一款应用级的终端产品,考虑到现今物联网的主要用户是青中年人群,如果“硬件组装 --> 程序下载 --> 安装部署”这一流程可以由爸爸妈妈带着家里小宝贝一起参与,这样能增加产品的亲和力,提升家的温度。
成品效果图
成品效果图

节点部分由以下三部分组成:

  • 外壳 -- 提供一个漂亮的外观和基础的防护;
  • 主板 -- 主板上具有MCU、LoRa、按键、指示灯等功能单元,提供计算、协议解析、通信、交互等功能;
    • 主板具有统一的尺寸,应对不同应用场景可能对MCU性能的需求;
    • 主板上在统一位置预留标准化的接口,方便接插不同的传感器或执行器;
    • 预留编程接口,并支持Arduino、Python等通用、强大的编程语言,用户可以进行二次开发。
  • 功能单元 -- 具有统一的接口,可以根据实际需求在种类繁多的传感器、执行器中选择,并方便更换。

硬件实施

外壳

样品外壳为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还用于监控电池电压,并将该数据作为变量传送到云端。

红框内为功能单元扩展坞,具有统一的接口尺寸和引脚定义,可用于接不同的传感器或执行器。
红框内为功能单元扩展坞,具有统一的接口尺寸和引脚定义,可用于接不同的传感器或执行器。

主板原理图:

MainBoard_V0.1.PDF

功能单元

为了方便扩展,所有的传感器都具有统一的接口尺寸和引脚顺序,可以接插在主板底部的母座上,方便更换和扩展。本文档中,我们以HDC1080温湿度传感器为例。通信为I2C总线,我们将通过它读取室内温度和湿度。

传感器原理图:

HDC1080.pdf

设备注册

注册网关

网关采用Heltec Automation HT-M00双通道网关,这是一款定位为室内使用的低成本网关,基于ESP32和SX1276,具有两个LoRa信号调制/解调通道,通过Wi-Fi接入腾讯云。

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

image.png
image.png
注意“GateWayID”,必须与腾讯云上"GwEUI"的内容相对应,这是网关是否能成功注册的关键。
注意“GateWayID”,必须与腾讯云上"GwEUI"的内容相对应,这是网关是否能成功注册的关键。

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

配置完成之后,点击Submit重启生效。
配置完成之后,点击Submit重启生效。

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

注册节点

新建产品

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

image.png
image.png

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

数据解析

在“设备开发”的“上行数据解析”部分,填入解码脚本并提交。

代码语言:txt
复制
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;
}

添加设备

在“设备调试”中添加一个新设备,“保存”之后,注册节点完成。

DevEUI和AppKey必须与LoRaWAN节点的信息相对应
DevEUI和AppKey必须与LoRaWAN节点的信息相对应

配置节点

节点采用Arduino开发环境,因为Arduino是基于C++的开发平台,开发人员无需对硬件底层的寄存器进行配置,配合海量Arduino标准库,极易上手,能大幅降低开发难度,有助于想法更快的验证和落地。

开发环境的安装包含以下两步,依次执行:

  1. 参照此文档,安装ESP32 Arduino开发环境
  2. 安装Heltec ESP32 LoRaWAN例程库

修改节点代码

将传感器与主板连接好后,参照HDC1080传感器 + LoRaWAN这一例程。以下三个地方需要根据实际情况进行修改:

  • Arduino菜单中,工作频段设置为CN470;
  • DevEUI和AppKey,必须与腾讯云上节点的信息一致;
  • 因为我们实验中使用的网关是双通道网关,信道掩码必须改成网关对应的通道。

验证通信

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

腾讯云的在线调试功能
腾讯云的在线调试功能

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

腾讯连连中查看传感器数据
腾讯连连中查看传感器数据

Enjoy :)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 引言
  • 硬件实施
    • 外壳
    • 主板
    • 功能单元
  • 设备注册
    • 注册网关
    • 注册节点
      • 新建产品
      • 数据解析
      • 添加设备
    • 配置节点
      • 修改节点代码
  • 验证通信
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档