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口是常事。
我的标准做法:
- 所有外部信号进来,先过电平转换或光耦隔离。尤其是制氧机里有高压放电(比如臭氧发生器),不隔离的话,一个浪涌就能把ESP32打报废。
- 模拟信号要加RC滤波。传感器输出的模拟电压通常有噪声,加一个10kΩ电阻+100nF电容的低通滤波,效果立竿见影。
- I2C要加上拉电阻。这个老生常谈了,但我见过太多人忘记加,导致通信不稳定。一般4.7kΩ,3.3V供电。
- PWM输出要加缓冲。ESP32的GPIO驱动能力有限,直接驱动大负载会拉低电压。加一个74HC245或者三极管驱动。
总结一下:选型不是越贵越好,也不是越便宜越好。ESP8266适合纯WiFi上报的简单场景,ESP32适合需要蓝牙+WiFi+本地处理的复杂场景。传感器优先选I2C接口,执行器注意驱动能力和隔离。接口电路多花10块钱,能省掉后面100个小时的调试时间。这个账,你算得明白。