硬件平台选型:主控芯片对比、传感器选型与电源模块设计

做智能照明系统,第一步就是选主控。这就像盖房子打地基,选错了后面全得推倒重来。我这些年折腾过不少方案,今天就把ESP32、STM32、Arduino这三家的底细给你掰扯清楚。

主控芯片三巨头对比

先看一张对比表,心里有个底:

特性 ESP32 STM32 Arduino (Uno/Nano)
核心架构 Xtensa LX6 双核 ARM Cortex-M 系列 ATmega328P (8位AVR)
主频 240MHz 72MHz~480MHz 16MHz
WiFi/蓝牙 内置双模 需外挂模块 需外挂模块
RAM 520KB SRAM 20KB~1MB 2KB
Flash 4MB~16MB 64KB~2MB 32KB
ADC精度 12位 12位/16位 10位
开发难度 中等 较高
典型价格 15~30元 10~80元 20~40元

ESP32——我个人最推荐做智能照明的主控。为什么?它自带WiFi和蓝牙,省掉一个通信模块的钱和空间。240MHz双核跑起来,同时处理PWM调光和MQTT协议栈,一点不卡。我在一个酒店项目里用过ESP32控制200路灯光,稳得很。

STM32——如果你要做工业级产品,比如楼宇照明系统,那STM32是首选。它的定时器资源丰富,做高精度PWM调光(16位分辨率)很轻松。但要注意,STM32本身没有无线功能,你得外接ESP8266或蓝牙模块。嗯,这会让BOM成本上去不少。

Arduino——说实话,Arduino更适合原型验证。它的ATmega328P只有2KB RAM,跑个稍微复杂的调光算法就捉襟见肘了。我刚开始学嵌入式时就用Arduino,但做产品?还是算了。

我的建议:个人项目或小批量产品,无脑选ESP32。工业级大批量,选STM32。教学演示,Arduino够用。

传感器选型:光敏、人体红外、温湿度

智能照明要感知环境,传感器就是它的眼睛和皮肤。选错了,灯该亮时不亮,不该亮时瞎亮。

光敏传感器

用来检测环境亮度,自动调节灯光。常见的有两种:

  • 光敏电阻 (LDR):便宜,几毛钱一个。但线性度差,响应慢。我踩过坑——用LDR做调光,阴天和傍晚的亮度值几乎一样,根本区分不开。
  • 数字光强传感器 (BH1750):I2C接口,直接输出lux值。精度高,范围0~65535 lux。我建议用这个,贵不了几块钱,但省心太多。

避坑指南:我曾经把LDR装在灯罩旁边,结果灯一开,传感器检测到亮度高,又把灯调暗了——死循环!记住,光敏传感器要远离光源,或者加遮光罩。

人体红外传感器 (PIR)

用来检测是否有人,实现人来灯亮、人走灯灭。HC-SR501是经典款,但要注意:

  • 它的检测范围是扇形,安装高度2.5米左右效果最好
  • 有个延时调节旋钮,我一般调到10秒,避免频繁触发
  • 灵敏度旋钮别拧到底,否则猫狗路过也会开灯

更高级的方案是用毫米波雷达传感器(如LD2410),能检测微动和静止人体。不过价格贵一些,看预算选吧。

温湿度传感器

智能照明里,温湿度主要用来做联动——比如夏天温度高时,灯光色温调冷一点。DHT11和DHT22是入门选择:

  • DHT11:精度±2°C,±5%RH,采样周期1秒。够用,但别指望它多准。
  • DHT22:精度±0.5°C,±2%RH,采样周期2秒。我项目里都用这个。

如果要求更高,上SHT30或BME280,I2C接口,精度和稳定性都好很多。

电源模块设计

电源是智能照明最容易出问题的地方。你想想看,灯控板装在吊顶里,坏了拆都难拆。所以电源设计一定要稳。

供电方案选择

方案 输入 输出 适用场景
阻容降压 220V AC 5V/3.3V 低成本、小电流(<100mA)
非隔离降压 (BUCK) 220V AC 3.3V/5V 智能灯泡、灯带控制器
隔离反激 (Flyback) 220V AC 3.3V/5V 需要安全隔离的场景
DC-DC降压 12V/24V DC 3.3V/5V 已有低压供电的系统

我个人习惯用非隔离BUCK方案,比如HLK-PM01模块,220V转5V,体积小,效率高。但要注意——非隔离意味着整个电路板都带电!外壳必须做绝缘处理。我在一个原型机上没注意,手摸到GND被电了一下,麻得很。

警告:如果产品要通过3C或CE认证,必须用隔离电源。非隔离方案只适合自己DIY或内部项目。

电源设计要点

  • 滤波电容要足:ESP32启动瞬间电流能到500mA,我一般用100μF电解+0.1μF瓷片并联。
  • 注意压降:如果传感器和主控共用3.3V,长导线会有压降。我遇到过PIR传感器因为电压低于3.0V而误触发。
  • 加TVS管:电源入口加一个SMBJ5.0A,防浪涌。这玩意儿便宜,但能救你一命。

功耗估算

一个典型的智能照明节点:

  • ESP32:工作电流80mA,深度睡眠10μA
  • PIR传感器:工作电流50μA
  • BH1750:工作电流120μA
  • DHT22:工作电流1.5mA(测量时)

总功耗大约100mA左右。如果用阻容降压,100mA已经是极限了,所以还是老老实实上BUCK吧。

我的经验:设计电源时留出30%余量。比如计算需要100mA,就按130mA设计。别问我为什么——有一次我算得刚刚好,结果加了个LED指示灯,系统就重启了。

好了,硬件平台选型这块就聊到这儿。下一章我们开始画原理图,把ESP32、传感器和电源模块连起来。到时候我会把每个引脚的连接细节都讲清楚,包括那些容易踩的坑。