第二章:硬件平台选型
做物联网节点开发,第一步就是选硬件。这步走对了,后面就顺了。走错了?嗯,我见过不少项目因为选型失误,最后推倒重来。
今天咱们聊聊主控芯片、LoRa模块和传感器的选型。这三样东西,说白了就是节点的「大脑」、「嘴巴」和「眼睛」。
2.1 主控芯片选型:STM32 vs ESP32
我个人习惯,选主控先看功耗和接口。农业节点往往丢在田里几个月,换电池?那可不是闹着玩的。
STM32L系列,我推荐它做主力。为什么?
- 功耗极低:休眠电流能做到1μA以下。我在项目中做过测试,一节18650电池,15分钟上报一次数据,能撑半年以上。
- 外设丰富:ADC、I2C、SPI、UART,该有的都有。接传感器基本不用愁。
- 生态成熟:HAL库、LL库,文档齐全。遇到问题,网上随便一搜就有答案。
那ESP32呢?它也有自己的优势。
- 自带Wi-Fi和蓝牙:如果你需要本地调试或者临时用手机连一下,ESP32确实方便。
- 价格便宜:比STM32L系列便宜不少。
- 算力强:双核240MHz,跑点轻量级算法没问题。
但说实话,做纯LoRa节点,我建议还是用STM32。ESP32的休眠功耗偏高,大概在10μA左右。你想想看,同样一节电池,ESP32可能只能撑两个月,STM32能撑半年。这笔账,算得过来。
我的建议:
- 追求超低功耗、长期运行 → STM32L051 或 STM32L072
- 需要本地Wi-Fi调试、功能复杂 → ESP32
- 预算敏感、功耗要求不高 → ESP32
小技巧:我习惯在STM32上预留一个UART口,用来接ESP32做调试网关。这样平时节点低功耗运行,调试时插上ESP32就能看日志,两全其美。
2.2 LoRa模块选型:SX1278
LoRa模块,市面上最成熟的就是SX1278。说实话,我做了五六年LoRa项目,90%都在用这颗芯片。
SX1278的核心参数:
| 参数 | 值 |
|---|---|
| 工作频段 | 410-525 MHz |
| 最大发射功率 | +20 dBm (100mW) |
| 接收灵敏度 | -148 dBm |
| 调制方式 | LoRa / FSK / OOK |
| 接口 | SPI |
| 工作电压 | 1.8V - 3.7V |
为什么选它?
- 距离远:开阔地实测,5公里没问题。我在农田里测过,有次在玉米地里,2公里信号依然稳定。
- 穿透力强:SX1278的扩频技术,说白了就是抗干扰能力强。大棚里金属架多,普通无线模块经常掉线,SX1278基本没出过问题。
- 功耗可控:休眠时电流不到1μA,发射时也就120mA左右。配合STM32的休眠,整体功耗非常理想。
注意:市面上有很多SX1278的模块,比如E32-900T20D、Ra-01等。我建议买带屏蔽罩的版本。曾经有一次,我在项目里用了不带屏蔽的模块,结果旁边有个电机一启动,数据全乱套了。嗯,从那以后我再也不敢省这个钱了。
2.3 传感器选型
农业监测,核心就三个参数:温湿度、土壤湿度、光照。选对了传感器,数据才靠谱。
2.3.1 温湿度传感器:SHT30
温湿度传感器,我推荐SHT30。为什么不是DHT11?你想想看,DHT11精度±5%RH,测出来的数据你敢信吗?
- 精度高:湿度±2%RH,温度±0.2°C。农业监测完全够用。
- 接口简单:I2C,两根线搞定。
- 功耗低:测量时1.5mA,休眠时0.2μA。
避坑指南:我曾经把SHT30直接暴露在大棚里,结果水汽凝结,数据直接飘了。后来加了个防水透气膜,问题解决。记住,传感器要加防护,但别影响通风。
2.3.2 土壤湿度传感器:电容式
土壤湿度传感器,市面上分两种:电阻式和电容式。
电阻式:便宜,但容易腐蚀。我见过一个项目,用了三个月,探头就锈断了。
电容式:贵一点,但耐用。推荐SKU:SEN0193或者YL-69的电容版。
- 输出方式:模拟电压,接STM32的ADC即可。
- 测量范围:0-100% RH(相对湿度)。
- 寿命:正常使用2-3年没问题。
我的经验:电容式传感器受温度影响较大。我习惯在代码里做温度补偿,公式很简单:
// 温度补偿示例
float compensate_soil_moisture(float raw_adc, float temp) {
float moisture = raw_adc * 100.0 / 4095.0;
// 每升高1°C,补偿-0.5%
moisture -= (temp - 25.0) * 0.5;
return moisture;
}
2.3.3 光照传感器:BH1750
光照传感器,我推荐BH1750。它是个数字光照计,直接输出lux值,不用自己算。
- 测量范围:1-65535 lux。从阴天到烈日都能测。
- 接口:I2C,和SHT30共用总线。
- 精度:±1 lux(低光下),高光下也够用。
为什么不用光敏电阻?说白了,光敏电阻输出的是模拟值,你得自己标定。而且温度漂移大,测出来的数据不够准。BH1750内部有校准,拿来就用,省心。
小技巧:BH1750有个「连续高分辨率模式」,我一般用这个。它每120ms更新一次数据,功耗也不高。如果节点休眠时间长,可以改成「一次测量模式」,测完就睡。
2.4 选型总结
好了,咱们把选型结果整理一下:
| 组件 | 推荐型号 | 核心理由 |
|---|---|---|
| 主控芯片 | STM32L051 / STM32L072 | 超低功耗,外设丰富 |
| LoRa模块 | SX1278 (带屏蔽罩) | 距离远,抗干扰强 |
| 温湿度传感器 | SHT30 | 精度高,功耗低 |
| 土壤湿度传感器 | 电容式 (SEN0193) | 耐用,不易腐蚀 |
| 光照传感器 | BH1750 | 数字输出,精度高 |
这套组合,我在三个农业项目里验证过。一个在大棚,一个在果园,还有一个在稻田。最长的已经跑了两年多,没出过硬件故障。嗯,选型这步走稳了,后面就踏实了。
下一章,咱们开始画原理图。到时候我会把每个引脚的连接方式讲清楚,包括怎么处理电源、怎么加保护电路。到时候见。