第二章:硬件平台选型

做物联网节点开发,第一步就是选硬件。这步走对了,后面就顺了。走错了?嗯,我见过不少项目因为选型失误,最后推倒重来。

今天咱们聊聊主控芯片、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能撑半年。这笔账,算得过来。

我的建议

  • 追求超低功耗、长期运行 → STM32L051STM32L072
  • 需要本地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 数字输出,精度高

这套组合,我在三个农业项目里验证过。一个在大棚,一个在果园,还有一个在稻田。最长的已经跑了两年多,没出过硬件故障。嗯,选型这步走稳了,后面就踏实了。

下一章,咱们开始画原理图。到时候我会把每个引脚的连接方式讲清楚,包括怎么处理电源、怎么加保护电路。到时候见。