硬件平台选型:主控芯片、传感器与通信模块

做嵌入式气象站,第一步就是选型。说白了,就是给这个系统挑「大脑」、「五官」和「嘴巴」。

我这些年经手过不少气象站项目,从农业大棚到小型科研站都碰过。选型这事儿,真不能光看参数表。你想想看,一个传感器选错了,后面整个数据链路都得跟着改,那叫一个头疼。

好,咱们直接进入正题。

主控芯片:STM32 vs ESP32

这两款芯片,可以说是嵌入式圈子的「绝代双骄」。我个人的习惯是,先看项目需不需要联网,再决定用谁。

对比项 STM32(以F103为例) ESP32
核心架构 Cortex-M3/M4 Xtensa LX6 双核
主频 72MHz ~ 240MHz 160MHz ~ 240MHz
WiFi/蓝牙 无(需外挂模块) 内置双模蓝牙+WiFi
功耗 低(可做到uA级待机) 较高(WiFi开启时约80mA)
开发难度 中等(HAL库较复杂) 较低(Arduino生态友好)
价格(批量) ¥8 ~ ¥25 ¥12 ~ ¥30
实时性 优秀(硬件定时器精准) 良好(FreeRTOS原生支持)

我的建议:

  • 如果做有线传输低功耗电池供电的气象站,选STM32。我在一个高山气象站项目里用过STM32L0系列,一节18650电池撑了半年。
  • 如果做WiFi联网快速原型验证,选ESP32。说白了,ESP32自带WiFi,省掉一个通信模块的钱和布线麻烦。

一个小技巧:ESP32的ADC线性度不太好,测模拟传感器时容易有误差。我建议用外部ADC芯片,比如ADS1115,精度会好很多。

传感器选型:温湿度、气压、风速风向

传感器是气象站的「五官」。选错了,数据就是垃圾。嗯,这里我踩过不少坑。

温湿度传感器

市面上最常见的就两种:DHT11和SHT30。

  • DHT11:便宜(¥3左右),但精度差(±2°C,±5%RH)。适合做演示,别当真数据用。
  • SHT30:贵一点(¥8左右),精度高(±0.3°C,±2%RH)。我建议直接上这个。

我曾经在一个项目中用了DHT11,结果数据跟旁边专业气象站差了4°C。后来换成SHT30,数据就对上了。所以,别省那几块钱。

气压传感器

推荐BMP280或BME280。BME280比BMP280多了一个湿度测量功能,但价格也贵一倍。

  • BMP280:精度±1hPa,适合做高度计和气压趋势分析。
  • BME280:精度更高,还能测湿度,但功耗稍大。

我个人习惯用BMP280,因为气压数据变化慢,没必要用BME280的湿度功能——温湿度已经有SHT30了。

风速风向传感器

这部分比较特殊。市面上有机械式和超声波式两种。

  • 机械式:便宜(¥50~¥200),但容易卡死。我在一个沿海项目里,机械风速计用了三个月就锈死了。
  • 超声波式:贵(¥500+),但无机械磨损,精度高。适合长期无人值守。

如果你做的是教学或低成本项目,可以用霍尔传感器+风杯的方案。我自己做过一个,用霍尔开关测风杯转速,再用ADC读风向电位器,成本控制在¥80以内。

注意:风速风向传感器通常输出的是脉冲信号模拟电压。主控芯片需要配置外部中断或ADC来读取。ESP32的ADC线性度不好,建议用外部ADC或直接选数字输出的传感器。

通信模块选型

气象站的数据最终要传出去。怎么传?看场景。

通信方式 适用场景 优点 缺点
WiFi(ESP32内置) 室内或短距离(<100m) 免布线,直接上云 功耗高,依赖路由器
LoRa 野外、远距离(1~10km) 低功耗,穿透力强 速率低(仅几百bps)
NB-IoT 蜂窝网络覆盖区 运营商网络,稳定 需要SIM卡,有流量费
4G/5G 高速率、大带宽 速度快,实时性高 功耗高,模块贵
蓝牙 手机直连、近距离 简单,无需网关 距离短(<10m)

我的推荐:

  • 教学或室内项目:直接用ESP32的WiFi,省事。
  • 野外长期监测:LoRa + 网关。我做过一个农业气象站,用LoRa把数据传到1.5公里外的网关,再通过4G上云,效果很好。
  • 城市环境:NB-IoT,不用自己建网关,插卡就能用。

避坑指南:我曾经在LoRa项目里踩过一个坑——天线没选对。433MHz的天线长度约17cm,如果用了2.4GHz的天线,通信距离直接缩水到十分之一。所以,天线一定要匹配频率。

总结一下选型思路

说白了,选型就是三个问题:

  1. 要不要联网?要 -> ESP32;不要 -> STM32。
  2. 传感器精度够不够?温湿度用SHT30,气压用BMP280,风速风向看预算。
  3. 数据怎么传?近距离WiFi,远距离LoRa,有蜂窝信号用NB-IoT。

你想想看,把这些定下来,硬件平台就基本成型了。下一章咱们开始画原理图,到时候再细聊每个引脚的连接。