4、无线通信技术选型:LoRa vs Zigbee vs BLE
做温室监测,第一个要拍板的事就是:用哪种无线技术?
说实话,这个问题我当年也纠结了很久。温室里环境复杂,有金属骨架、有水汽、有植物遮挡。选错了,后期改都改不了。我个人习惯是先把几个主流方案拉出来遛一遛。
4.1 三大技术对比:LoRa、Zigbee、BLE
先看一张对比表,心里有个底:
| 参数 | LoRa | Zigbee | BLE |
|---|---|---|---|
| 工作频段 | Sub-1GHz(如433/868/915MHz) | 2.4GHz | 2.4GHz |
| 通信距离(空旷) | 2-15km | 10-100m | 10-50m |
| 穿墙能力 | 强 | 一般 | 弱 |
| 峰值速率 | 0.3-50kbps | 250kbps | 1-2Mbps |
| 节点功耗(休眠) | ~1μA | ~3μA | ~1μA |
| 网络拓扑 | 星型 | Mesh | 星型/广播 |
| 典型成本(模块) | 15-30元 | 10-20元 | 5-15元 |
你想想看,温室大棚少说几百平米,大的上千平米。用BLE?手机连蓝牙都断断续续的。Zigbee虽然能Mesh组网,但每个节点都要参与路由转发,功耗就上去了。
我的结论:温室监测,LoRa是首选。距离远、穿墙好、功耗低。说白了,它就是为这种场景设计的。
4.2 LoRa模块选型:为什么是SX1278?
LoRa芯片方案其实不多。主流就两家:Semtech的SX127x系列和SX126x系列。我为什么推荐SX1278?
原因有三:
- 成熟稳定:SX1278是市面上最成熟的LoRa芯片。资料多、坑少。我在项目中用过不下500片,基本没出过硬件问题。
- 灵敏度高:接收灵敏度可达-148dBm。什么概念?比Zigbee好20dB以上。温室里那些传感器藏在角落、被叶子挡住,照样能收到。
- 性价比:模块价格已经降到15元左右。相比SX126x便宜一半,性能完全够用。
选型小技巧:买模块时注意看天线接口。我建议选IPEX座子的,方便外接天线。温室里金属结构多,板载陶瓷天线效果会打折扣。
4.3 通信协议栈选择:从裸驱动到LoRaWAN
芯片选好了,接下来是软件层面的选择。这里有几个层次:
4.3.1 裸驱动 + 自定义协议
最底层的方式。直接用SPI操作SX1278寄存器,自己定义帧格式、重传机制、地址分配。
我曾经在一个小项目中这么干过。优点是灵活、代码量小。缺点是...太累了。你要处理丢包、冲突、重传,还要考虑不同节点的时序同步。搞了两个月,最后发现还不如用现成的。
// 裸驱动示例:发送一帧数据
void LoRa_Send(uint8_t *data, uint8_t len) {
LoRa_WriteReg(REG_FIFO, data, len);
LoRa_WriteReg(REG_OPMODE, MODE_TX);
while((LoRa_ReadReg(REG_IRQFLAGS) & IRQ_TX_DONE) == 0);
LoRa_WriteReg(REG_IRQFLAGS, IRQ_TX_DONE);
}
4.3.2 使用AT指令模块
很多LoRa模块(如E32系列)内置了协议栈,你只需要通过串口发AT指令就行。
这种方式上手快,适合快速验证。但有个问题:你没法精细控制功耗。模块内部怎么休眠、怎么唤醒,你管不了。对于电池供电的节点来说,这很要命。
4.3.3 LoRaWAN协议栈
这是最推荐的方式。LoRaWAN定义了完整的网络架构:终端节点、网关、网络服务器。
它的好处很明显:
- 标准化:不同厂家的设备可以互通
- 省心:自适应速率、确认重传、信道管理都帮你做好了
- 低功耗:Class A模式下,节点大部分时间在休眠,电池能用好几年
注意:LoRaWAN需要网关。如果温室里只有几个节点,专门配个网关可能不划算。这种情况下,可以考虑用LoRa私有协议,或者用ESP32+SX1278做简易网关。
4.4 我的最终方案
说了这么多,直接给结论吧:
- 芯片:SX1278,频率选433MHz(国内免授权频段,穿透性好)
- 协议:LoRaWAN Class A,使用开源库如Arduino-LMIC或MCCI LoRaWAN
- 模块:选带IPEX座子的成品模块,比如Ra-01或E22-400M系列
嗯,这里要注意一点:433MHz天线不能随便买。温室里湿度大,天线接头容易生锈。我建议用镀金IPEX座子,外加防水胶带缠一下。别问我怎么知道的...拆了三次网关才发现的。
下一章我们聊聊传感器选型。温度湿度光照CO2,到底哪些必须测?哪些可以省?到时候细说。