低功耗节点实验箱#

本教程所描述的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

  • 内置调试器

实物图:

Untitled

Untitled

Untitled

布局

Untitled

功能框图

Untitled

电路原理图:

ESP-WROVER-KIT_V4_1-3.pdf

功能说明请参见官方网页

开发环境

  • 官方环境: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

开发板结构框图

Untitled

开发板布局

**正面布局**

背部布局

开发环境

  • 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特别适合需要低功耗、电池供电的各种应用。

电路板图

Untitled

系统框图

RAK3172模块的内部组成和主要外部接口如下图所示。

Untitled

产品特性

  • 集成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

引脚定义

Untitled

与MCU的连接

Untitled

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主电路板

系统框图

RAK2287板卡配备了一个SX1302芯片和两个SX1250。第一个芯片用于射频信号,是设备的核心。后者提供了相关的LoRa调制解调器和处理功能。该模块实现了符合PCI Express Mini Card要求的附加信号调整电路,并且提供了一个UFL连接器,可用于集成外部天线。

RAK2287系统框图

RAK2287系统框图

引脚定义

Untitled

原理图

原理图

更多内容请参考数据手册

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

产品图

树莓派4

RaspberryPi 40 PIN 接口定义

树莓派4引脚定义

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 部署如图所示:

chirpstack 架构

3 IoT 平台#

本项目的IoT云平台集成了众多优秀的开源项目,经过优化,整合了各自的优点,主要包括如下三个开源项目:

  • ChirpStack

  • ThingsBoard

  • EMQX

本项目中平台功能以ThingsBoard为核心,以EMQX取代其他两个项目的内置的MQTT Broker,ChirpStack则主要用于来自LoRaWAN的信息。平台结构如下图:

IoT 平台结构

3.1 ThingsBoard#

ThingsBoard是一个开源物联网平台,可以快速开发、管理和扩展物联网项目。他可以提供开箱即用的物联网云或本地解决方案,为物联网应用程序启用服务器端基础设施。我们的平台构建于其之上,并对其中mqtt的海量并发进行了优化。

特点

  • 配置设备、资产和客户,并定义它们之间的关系。

  • 从设备和资产收集数据并使之可视化。

  • 分析传入的遥测数据和警报触发信息。

  • 使用远程过程调用(RPC)控制设备。

  • 根据设备的生命周期事件、REST API事件、RPC请求等构建工作流程。

  • 提供响应敏捷的动态仪表板,向客户展示设备或资产遥测信息。

  • 使用自定义的规则链实现特定功能。

  • 与其他iot平台或系统集成。

平台总体框架如下图所示:

Untitled

系统实际使用架构包含两种模式,整体模式架构和基于微服务的架构。

1 整体模式架构

整体模式下,所有ThingsBoard组件都在单个Java虚拟机(JVM)中启动,并共享相同的操作系统资源。由于ThingsBoard是用Java编写的,整体架构的明显优势是最大限度地减少了运行ThingsBoard所需的内存。这样就可以在受限环境中使用256或512 MB的RAM启动和运行ThingsBoard进程。但他也有明显的缺点,如果某个组建的消息过载,例如MQTT传输,它也可能影响其他组件。例如,如果ThingsBoard进程的操作系统限制为4096文件描述符,则无法同时从设备和websocket用户会话中打开超过4096个MQTT会话。

整体模式架构如下图所示:

Untitled

架构个组件描述请参见官方说明

2 微服务架构

ThingsBoard v2.2,该平台支持微服务部署模式。微服务选项更适合高可用性和可扩展的场景。

其具体架构如下图所示:

Untitled

3 iot gateway

ThingsBoard 支持的iot协议有mqtt, coap以及http, 对于其他协议,可以采用iot gateway 组件来实现。

iot gateway框架如图所示:

python-gateway-animd-ff.svg

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 入方向

Untitled

2 出方向

Untitled