低功耗节点实验箱#
本教程所描述的iot实验系统包含如下几个部分,基本涵盖了iot领域的主要技术内容。
节点设备
ESP-WROVER-KIT
B-L475-IOT01A
LoRa网关
iot平台
涉及到的主要Iot技术包含:
感知层:涉及温度,湿度,3轴磁力计,3D加速度计,3D陀螺仪,数字气压计,浓度时间和姿势检测,手势识别,运动检测等十余种传感器数据采集
识别层:NFC
网络层:WiFi,Bluetooth,BLE,lora,nb-iot,
平台:emqx,chirpstack,TTN,thingsboard。
支持接入协议:mqtt,coap,http
实验系统的架构如下图所示:
1 节点设备-实验箱#
节点设备由两个MCU为主线,分别包含其各自的外围设备,具体包括如下几个部分。
B-L475E-IOT01A
MUC |
STM32BL475E |
板载 |
---|---|---|
Bluetooth |
SPBTLE-RF |
板载 |
WiFi |
INVENTEK |
板载 |
NFC |
M24SR |
板载 |
microphone |
MP34DT01 |
板载 |
sensors |
若干 |
板载 |
接口 |
arduino,PMOD,micro usb |
板载 |
debuge |
ST Link |
板载 |
LoRA |
RAK3172 |
外置,UART |
IDE |
STM32CUBE, Keil,IAR,Arm Mbed |
ESP-WROVER-KIT
MCU |
ESP32 |
板载 |
---|---|---|
Bluetooth |
on chip |
板载 |
WiFi |
on chip |
板载 |
SD卡 |
板载 |
|
摄像头 |
外置 |
|
LCD |
3.2“ SPI |
板载 |
接口 |
micro usb, |
板载 |
JTAG |
JTAG PROG |
板载 |
LoRA |
RAK3172 |
外置 |
节点设备概念图如下:
1.1 ESP-WROVER-KIT#
ESP-WROVER-KIT 是 乐鑫的一款基于 ESP32 芯片的开发板。ESP-WROVER-KIT 开发板已集成了如下组件:
ESP32-WROVER-E 模组
LCD 屏
microSD 卡槽
双USB, 一个用于通信,一个用于debug
内置调试器
实物图:
布局
功能框图
电路原理图:
功能说明请参见官方网页
开发环境
官方环境:eclipse based ide
VS Code + esp-idf plugin
VS Code + platformio
Clion
1.2 B-L475E-IOT01A#
描述
B-L475E-IOT01A物联网节点探索套件允许用户开发与云服务器直接连接的应用程序。
该探索套件利用低功耗通信、多路传感和基于Arm® Cortex® -M4内核的STM32L4系列功能,支持广泛的应用。 它可支持Arduino Uno V3和PMOD连接,借助大量可选的专用附加板,能够实现无限扩展功能。
所有功能
超低功耗STM32L4系列MCU基于Arm® Cortex®-M4内核,具有1 MB的Flash存储器和128 KB的RAM,并采用LQFP100封装
64 Mbit的Quad-SPI(Macronix)闪存
Bluetooth® V4.1模块(SPBTLE-RF)
Sub-GHz(868 MHz或915 MHz)低功耗可编程RF模块(SPSGRF-868或SPSGRF-915)
符合802.11 b/g/n规范的Wi-Fi®模块来自Inventek Systems(ISM43362-M3G-L44)
基于M24SR及其印刷NFC天线的动态NFC标签
2个全向数字麦克风(MP34DT01)
用于相对湿度和温度测量的电容式数字传感器(HTS221)
高性能3轴磁力计(LIS3MDL)
3D加速度计和3D陀螺仪(LSM6DSL)
260-1260 hPa绝对数字输出气压计(LPS22HB)
渡越时间和姿势检测传感器(VL53L0X)
2个按钮(用户和复位按钮)
带有Micro-AB连接器的USB OTG FS
扩展连接器:
Arduino™ Uno V3
PMOD
灵活的电源选项:
ST LINK USB VBUS或外部电源
具有USB重新枚举功能的板上ST-LINK/V2-1调试器/编程器:大容量存储器、虚拟COM端口和调试端口
作为STM32Cube MCU软件包的一部分,提供全面的免费软件HAL库(包括大量示例)
支持广泛的集成开发环境(IDE),包括IAR™、Keil®、基于GCC的IDE、Arm® Mbed Enabled™
Arm® Mbed™在线工具(参见http://mbed.org)
开发板结构框图
开发板布局
**正面布局**
背部布局
开发环境
STM32CUBE IDE
keil
IAR
STM32CUBEMX+Clion
开发者技术手册
um2153-discovery-kit-for-iot-node-multichannel-communication-with-stm32l4-stmicroelectronics.pdf
1.3 LoRa节点-RAK3172#
模块概述
RAK3172模块集成了STM32WLE5CC MCU芯片,是一款低功耗、远距离、易用、小巧的无线数据应用LoRa®收发模块。该模块遵循LoRaWAN® 1.0.3协议,支持Class A、Class B、Class C三种工作模式,易于连接到不同的LoRaWAN服务器平台,如TTN、Chirpstack、Activity、腾讯云等等。该模块还支持LoRa® P2P(点对点)通信,可帮助用户快速实现自己的远距离LoRa®网络。
用户可通过UART接口使用AT命令来配置模式和控制模块工作。RAK3172特别适合需要低功耗、电池供电的各种应用。
电路板图
系统框图
RAK3172模块的内部组成和主要外部接口如下图所示。
产品特性
集成STM32WLE5CC芯片
遵循LoRaWAN® 1.0.3协议
支持的频段:EU433、CN470、IN865、EU868、AU915、US915、KR920、RU864、AS923-1/2/3/4
LoRaWAN激活模式:OTAA、ABP
支持LoRa® P2P(点对点)通信
具有简单易用的AT命令功能
支持通过UART接口发送AT命令
使用优化过的天线,通信距离可超过15 km
CPU核:ARM 32-bit Cortex-M4
内置带ECC的256 KB闪存
64 KB RAM
超低功耗,睡眠模式下功耗低至1.69 μA
温度范围:-40 °C ~ +85 °C
供电电压:2.0 V ~ 3.6 V
引脚定义
与MCU的连接
1.4 NB-IOT节点#
待更新
2 LoRaWAN网关#
LoRaWAN®是一种低功耗广域(LPWA)网络协议,旨在以无线方式将电池操作的“things”连接到区域、国家或全球网络中的互联网,致力于解决关键的物联网(IoT)要求,如双向通信、端到端安全、移动性和本地化服务。
lora网关包含硬件部分和软件支持。硬件部分包括LoRA Wan 集中器与宿主机,软件运行在宿主机上。
LoraWan集中器
Raspberry Pi 4B+
chirpstack
相关规范与国际组织
2.1 LoraWan集中器:RAK2287#
概述
RAK2287是一款LPWAN集中器模块,易于集成到现有的路由器或其它网络设备中,为其添加LPWAN网关功能。主要功能特点如下。
基于Semtech SX1302
支持SPI接口,具有Mini PCI-e标准插槽的嵌入式平台
集成了ZOE-M8Q GPS芯片
提供多达10条可编程并行解调路径
中等干扰环境下,每平方公里最多可覆盖500个节点
特性
基于Mini PCI-e外形尺寸而设计,带散热片。
SX1302基带处理器,实现了8 x 8通道LoRa数据包检测器,8 x SF5-SF12 LoRa解调器,8 x SF5- SF10 LoRa解调器,一个125/250/500 kHz高速LoRa解调器和一个(G)FSK解调器。
Mini PCI-e接口,电压为3.3 V
兼容Mini PCI-e类型的3G/LTE卡
发射功率最大可达27 dBm,接收灵敏度低至-139 dBm@SF12,带宽125 kHz
支持最新的LoRaWAN 1.0.3协议
支持全球免许可证频段:EU868, CN470, US915, AS923, AU915, KR920, IN865, AS920
支持SPI接口
内置ZOE-M8Q GPS模块
电路板
RAK2287主电路板
系统框图
RAK2287板卡配备了一个SX1302芯片和两个SX1250。第一个芯片用于射频信号,是设备的核心。后者提供了相关的LoRa调制解调器和处理功能。该模块实现了符合PCI Express Mini Card要求的附加信号调整电路,并且提供了一个UFL连接器,可用于集成外部天线。
RAK2287系统框图
引脚定义
原理图
更多内容请参考数据手册
2.2 宿主机:Raspberry Pi 4B+#
技术参数
Broadcom BCM2711, Quad core Cortex-A72 (ARM v8) 64-bit SoC @ 1.5GHz
1GB, 2GB, 4GB or 8GB LPDDR4-3200 SDRAM (depending on model)
2.4 GHz and 5.0 GHz IEEE 802.11ac wireless, Bluetooth 5.0, BLE
Gigabit Ethernet
2 USB 3.0 ports; 2 USB 2.0 ports.
Raspberry Pi standard 40 pin GPIO header (fully backwards compatible with previous boards)
2 × micro-HDMI ports (up to 4kp60 supported)
2-lane MIPI DSI display port
2-lane MIPI CSI camera port
4-pole stereo audio and composite video port
H.265 (4kp60 decode), H264 (1080p60 decode, 1080p30 encode)
OpenGL ES 3.1, Vulkan 1.0
Micro-SD card slot for loading operating system and data storage
5V DC via USB-C connector (minimum 3A*)
5V DC via GPIO header (minimum 3A*)
Power over Ethernet (PoE) enabled (requires separate PoE HAT)
Operating temperature: 0 – 50 degrees C ambient
产品图
RaspberryPi 40 PIN 接口定义
1.2.2 LoraWan 软件:ChripStack#
ChirpStack是一个开源的LoRaWAN网络服务器。主要功能包括:
可用于设置私有或公共LoRaWAN网络。
ChirpStack提供了一个Web界面,用于管理网关、设备和租户,
与主要云提供商、数据库和通常用于处理设备数据的服务进行数据集成。
ChirpStack提供了一个基于gRPC的API,可用于集成或扩展ChirpStack。
ChirpStack架构
ChirpStack包含如下几个主要部分
chirpstack gateway bridge:处理与网关集中器之间的通信
chirpstack network server
chirpstack application server
chirpstack 部署如图所示:
3 IoT 平台#
本项目的IoT云平台集成了众多优秀的开源项目,经过优化,整合了各自的优点,主要包括如下三个开源项目:
ChirpStack
ThingsBoard
EMQX
本项目中平台功能以ThingsBoard为核心,以EMQX取代其他两个项目的内置的MQTT Broker,ChirpStack则主要用于来自LoRaWAN的信息。平台结构如下图:
3.1 ThingsBoard#
ThingsBoard是一个开源物联网平台,可以快速开发、管理和扩展物联网项目。他可以提供开箱即用的物联网云或本地解决方案,为物联网应用程序启用服务器端基础设施。我们的平台构建于其之上,并对其中mqtt的海量并发进行了优化。
特点
配置设备、资产和客户,并定义它们之间的关系。
从设备和资产收集数据并使之可视化。
分析传入的遥测数据和警报触发信息。
使用远程过程调用(RPC)控制设备。
根据设备的生命周期事件、REST API事件、RPC请求等构建工作流程。
提供响应敏捷的动态仪表板,向客户展示设备或资产遥测信息。
使用自定义的规则链实现特定功能。
与其他iot平台或系统集成。
平台总体框架如下图所示:
系统实际使用架构包含两种模式,整体模式架构和基于微服务的架构。
1 整体模式架构
在整体模式下,所有ThingsBoard组件都在单个Java虚拟机(JVM)中启动,并共享相同的操作系统资源。由于ThingsBoard是用Java编写的,整体架构的明显优势是最大限度地减少了运行ThingsBoard所需的内存。这样就可以在受限环境中使用256或512 MB的RAM启动和运行ThingsBoard进程。但他也有明显的缺点,如果某个组建的消息过载,例如MQTT传输,它也可能影响其他组件。例如,如果ThingsBoard进程的操作系统限制为4096文件描述符,则无法同时从设备和websocket用户会话中打开超过4096个MQTT会话。
整体模式架构如下图所示:
架构个组件描述请参见官方说明。
2 微服务架构
ThingsBoard v2.2,该平台支持微服务部署模式。微服务选项更适合高可用性和可扩展的场景。
其具体架构如下图所示:
3 iot gateway
ThingsBoard 支持的iot协议有mqtt, coap以及http, 对于其他协议,可以采用iot gateway 组件来实现。
iot gateway框架如图所示:
3.2 ChirpStack#
如上所述,本项目中,chirpstack的部署在两个物理位置,gateway bridge 在lora网关中部署,而iot 平台中,则部署chirpstack network server以及 application server。
chirpstack network server 作为mqtt客户端,用MQTT Broker 发布和订阅消息。本项目中由emqx取代了原来项目中的默认MQTT Broker Mosquito。
application server将遥测数据以及交换信息于Thethingsboard集成。
3.3 EMQX#
EMQX 是一款大规模可弹性伸缩的云原生分布式物联网 MQTT 消息服务器。
目前emqx已经成为全球最具扩展性,github上活跃度最高的 MQTT 消息服务器,EMQX 提供了高效可靠海量物联网设备连接,能够高性能实时移动与处理消息和事件流数据,可快速构建关键业务的物联网平台与应用。
优势
开放源码:基于 Apache 2.0 许可证完全开源,自 2013 年起 200+ 开源版本迭代。
MQTT 5.0:100% 支持 MQTT 5.0 和 3.x 协议标准,更好的伸缩性、安全性和可靠性。
海量连接:单节点支持 500 万 MQTT 设备连接,集群可扩展至 1 亿并发 MQTT 连接。
高性能:单节点支持每秒实时接收、移动、处理与分发数百万条的 MQTT 消息。
低时延:基于 Erlang/OTP 软实时的运行时系统设计,消息分发与投递时延低于 1 毫秒。
高可用:采用 Masterless 的大规模分布式集群架构,实现系统高可用和水平扩展。
用法
本项目中emqx作为唯一开放的mqtt代理服务。与平台外部直接连接,而在平台内部,对于chirpstack network server,直接连接。而对于the things network,由于tb有自己的mqtt broker,因此需要使用emqx的mqtt桥接功能,具体如下所示:
1 入方向
2 出方向