使用Arduino Nano驱动Lora模块
为什么选用Lora
射频通信芯片有很多种,但是一般在同样功耗下,距离没有Lora远;同等范围下,没有Lora节能。
Lora通信只适用于低速率,高延时的场合,与WiFi正好相反。
考虑在野外,没有移动通信网络覆盖的环境下,收集传感器数据,适合使用。
在设密度大,使用移动通信网络成本过高,使用Lora来统一收集数据,例如远程抄表。
Lora作为物联网的一种通信技术选型,正好是移动通信网络,WiFi的补充。
完整项目
我使用一个Arduino Nano 来驱动Lora模块,另外加了一个BMP085(I2C接口)气压传感器,一个光敏电阻,一个按钮。
使用PlantformIO平台开发。(比Arduino IDE好用很多)
实现功能有:
参考arduino-LoRa双向通行的自有简单协议;
获取传感器的温度,气压数据,光亮度;
获取供电电池电压;
定时通过Lora发送数据,按键强制发送一条数据;
使用链表缓存需要发送的内容,避免频繁发送时候影响数据接收;
接收Lora数据:
指令led点亮灯2秒;
指令ping,返回pong;
Lora模块
串口模块
SPI接口模块
一般串口模块连接相对简单,与其他无线模块AT指令不同(例如:蓝牙模块、GPRS模块),还需要对GPIO口连接控制引脚完成状态配置操作,我