2. 硬件平台选型:主流WiFi模组(ESP32/ESP8266)介绍、蓝牙模组选型、传感器与执行器接口

好,咱们进入实战的第二关——选型。说白了,做物联网项目,硬件选型就是打地基。地基没打好,后面协议写得再漂亮,数据也上不了云。今天我就把我在制氧机项目里摸爬滚打的经验,掰开了揉碎了讲给你听。

2.1 主流WiFi模组:ESP32 vs ESP8266

先聊聊WiFi模组。目前市面上,乐鑫的ESP系列几乎是嵌入式WiFi的标配。我个人习惯把ESP8266和ESP32看作「入门级」和「进阶级」的两兄弟。

2.1.1 ESP8266:性价比之王

ESP8266,老将了。2014年那会儿刚出来,价格低到令人发指,直接把WiFi模块从几十块打到了几块钱。我在2016年做智能插座时第一次用它,当时惊为天人。

核心参数:

  • CPU:Tensilica L106 32位处理器,主频80MHz(可超频到160MHz)
  • RAM:约50KB可用(用户程序)
  • Flash:通常2MB~4MB
  • WiFi:802.11 b/g/n,仅支持2.4GHz
  • GPIO:最多17个,但很多复用

适用场景:数据量小、逻辑简单的传感器上报。比如制氧机只需要定时上传压力、流量、温度三个参数,ESP8266完全够用。

避坑指南:我曾经在一个项目中,用ESP8266同时跑WiFi和MQTT,结果发现内存不够,程序频繁重启。后来排查发现是JSON解析库占用了太多堆栈。解决办法:改用cJSON的流式解析,或者直接上ESP32。记住,ESP8266的RAM是硬伤,别让它干重活。

2.1.2 ESP32:全能选手

ESP32是ESP8266的全面升级版。2016年发布,集成了蓝牙和WiFi,双核处理器,性能强了不止一个档次。我现在做新项目,只要预算允许,首选ESP32。

核心参数:

  • CPU:双核Tensilica LX6,主频240MHz
  • RAM:520KB SRAM + 4MB PSRAM(部分型号)
  • Flash:通常4MB~16MB
  • WiFi:802.11 b/g/n,2.4GHz
  • 蓝牙:经典蓝牙BR/EDR + BLE 4.2
  • 外设:2个I2C、3个SPI、2个I2S、16通道ADC、2个DAC

我的建议:如果你要做带屏幕显示、语音提示、或者需要本地处理复杂逻辑的制氧机,直接选ESP32。比如制氧机需要实时显示氧浓度曲线,还要通过蓝牙连接手机APP,ESP32的蓝牙双模功能就派上用场了。

为什么我推荐ESP32?你想想看,一个芯片搞定WiFi和蓝牙,省掉一个蓝牙模块的钱,还省了PCB面积和调试时间。我在一个医疗级制氧机项目里,用ESP32同时跑WiFi上传数据到阿里云,又跑BLE连接手机做本地调试,稳得很。

2.2 蓝牙模组选型

蓝牙这块,咱们主要关注BLE(低功耗蓝牙)。制氧机通常需要和手机APP通信,或者和血氧仪、流量计等外设配对。

主流方案对比:

方案 芯片/模组 优势 劣势 适用场景
集成方案 ESP32(内置BLE) 成本低、开发简单、WiFi+BLE一体 功耗相对较高 需要同时联网和蓝牙通信
独立BLE模组 Nordic nRF52832/nRF52840 超低功耗、性能强、生态好 需要额外MCU配合,成本高 电池供电、长时间待机
国产BLE模组 泰凌微TLSR8258、博通BK3432 价格低、供货稳定 文档和社区支持较弱 成本敏感的大批量产品

我个人习惯:如果制氧机是插电使用的(大部分都是),功耗不是首要考虑因素,直接用ESP32的BLE功能最省事。如果是便携式制氧机,需要纽扣电池供电几个月,那就老老实实上Nordic nRF52系列。

关键点:蓝牙模组选型时,一定要关注「蓝牙协议栈的稳定性」。我曾经用某款国产BLE芯片,发现它在高干扰环境下频繁断连,后来换用Nordic才解决。嗯,这里要注意,蓝牙的射频性能直接决定了用户体验。

2.3 传感器与执行器接口

制氧机需要采集哪些数据?说白了就三类:气体参数(氧浓度、流量、压力)、环境参数(温度、湿度)、设备状态(风扇转速、阀门位置)。

2.3.1 常用传感器选型

氧浓度传感器:

  • 电化学式:精度高(±1%),寿命1-2年,需要定期校准。我常用的是SST的O2传感器,输出0-1V模拟电压。
  • 超声波式:寿命长,但成本高,适合高端医用制氧机。
  • 氧化锆式:响应快,但需要高温工作,功耗大。

流量传感器:

  • 热式质量流量计:精度高,响应快,输出I2C或模拟信号。我用过Sensirion的SFM3000系列,直接I2C读取,非常方便。
  • 差压式:成本低,但需要额外计算,适合低成本方案。

压力传感器:

  • MEMS压阻式:便宜、体积小,输出模拟电压。比如NXP的MPXV系列,直接接ADC即可。
  • 数字式:比如Bosch的BMP280,I2C/SPI接口,自带温度补偿。

接口选择技巧:我建议优先选I2C接口的传感器。为什么?因为I2C只需要两根线(SDA、SCL),可以挂多个传感器,而且ESP32的I2C驱动非常成熟。我在一个项目里挂了4个I2C传感器,代码几乎没改,直接复用。

2.3.2 执行器接口

制氧机的执行器主要包括:电磁阀、比例阀、风扇、加热器。

执行器类型 控制方式 接口 注意事项
电磁阀(开关型) GPIO + 继电器/MOS管 数字IO 注意驱动电流,需要续流二极管
比例阀(调节型) PWM GPIO(PWM输出) 频率通常1kHz~10kHz,需要RC滤波或驱动芯片
直流风扇 PWM + 测速 GPIO + 中断输入 测速信号需要上拉电阻
加热器 GPIO + 固态继电器 数字IO 需要过零检测,避免EMI干扰

血的教训:我曾经在比例阀驱动上翻过车。直接用ESP32的GPIO输出PWM驱动比例阀,结果发现阀门抖动严重。后来查资料才知道,比例阀需要PWM频率在5kHz以上,而且最好加一级RC滤波变成模拟电压再驱动。从那以后,我所有比例阀驱动都加上了RC滤波电路。

2.3.3 接口电路设计要点

嗯,这里要重点说一下接口电路。很多新手直接拿MCU的GPIO去驱动外部设备,结果烧IO口是常事。

我的标准做法:

  1. 所有外部信号进来,先过电平转换或光耦隔离。尤其是制氧机里有高压放电(比如臭氧发生器),不隔离的话,一个浪涌就能把ESP32打报废。
  2. 模拟信号要加RC滤波。传感器输出的模拟电压通常有噪声,加一个10kΩ电阻+100nF电容的低通滤波,效果立竿见影。
  3. I2C要加上拉电阻。这个老生常谈了,但我见过太多人忘记加,导致通信不稳定。一般4.7kΩ,3.3V供电。
  4. PWM输出要加缓冲。ESP32的GPIO驱动能力有限,直接驱动大负载会拉低电压。加一个74HC245或者三极管驱动。

总结一下:选型不是越贵越好,也不是越便宜越好。ESP8266适合纯WiFi上报的简单场景,ESP32适合需要蓝牙+WiFi+本地处理的复杂场景。传感器优先选I2C接口,执行器注意驱动能力和隔离。接口电路多花10块钱,能省掉后面100个小时的调试时间。这个账,你算得明白。