第一课:课程导论与硬件准备
各位同学,欢迎来到《设备联网灯光系统》的第一课。
我是你们这门课的主讲。做了十几年嵌入式开发,从最早的8位单片机一路折腾到现在的ESP32,踩过的坑确实不少。今天咱们要聊的,是整个课程的地基——认识联网灯光系统的架构,把核心硬件摸清楚,再把开发环境搭起来。
说白了,这一课就是“认家伙、搭台子”。台子搭不好,后面唱戏肯定跑调。我见过太多新手,代码写得挺溜,结果硬件选型就翻车了,最后灯不亮、WiFi连不上,查半天发现是电源没选对。嗯,咱们尽量避免这种尴尬。
1.1 联网灯光系统长什么样?
先别急着写代码。咱们先想想,一套能手机控制的智能灯,到底由哪几块组成?
我个人习惯把系统拆成三层:
- 控制层:就是那个“大脑”。咱们用ESP32,它负责接收手机指令、处理逻辑、输出控制信号。
- 执行层:负责干活的。PWM调光模块控制亮度,继电器控制开关。说白了,大脑下命令,它们动手。
- 负载层:就是灯本身。可以是LED灯带、灯泡,甚至是大功率射灯。
你想想看,手机发一条“亮度调到50%”的指令,经过WiFi传到ESP32,ESP32再通过PWM信号告诉调光模块“把电压砍一半”,灯就暗下来了。整个过程其实就这么简单。
核心要点:联网灯光系统的本质,就是“网络通信 + 控制逻辑 + 功率驱动”。别被各种高大上的名词吓到,拆开看就这三样。
1.2 核心硬件逐个看
咱们这门课用的硬件,都是我反复验证过的。不是最贵的,但绝对是最稳的。
ESP32:这颗芯片凭什么这么火?
ESP32,说白了就是一颗带WiFi和蓝牙的MCU。双核240MHz,性能比当年的奔腾MMX还猛。我最早用ESP8266做项目,那家伙只有一个核心,跑TCP/IP协议栈就占了大半资源。到了ESP32,终于可以一边联网一边干正事了。
我在项目中遇到过一件事:客户要求同时控制32路灯光,还要实时上报状态。用ESP32,双核分工,一个核跑通信,一个核跑控制逻辑,稳得很。要是换成普通单片机,早死机了。
选型建议:买ESP32开发板时,注意选带USB转串口芯片的(比如CP2102或CH340)。别买那种纯模组,新手焊起来很痛苦。我吃过这个亏。
PWM调光模块:亮度是怎么变的?
调光,其实就是快速开关灯。人眼有视觉暂留效应,开关频率够快(比如1kHz以上),你就感觉不到闪烁,只看到亮度变化。
PWM(脉冲宽度调制)就是干这个的。占空比越高,灯越亮。占空比0%,全灭;占空比100%,全亮。
咱们用的PWM调光模块,一般是基于MOSFET的。ESP32输出3.3V的PWM信号,驱动MOSFET去控制12V或24V的灯带。这里有个坑:ESP32的GPIO驱动能力很弱,不能直接接大功率灯带。必须经过驱动模块,否则芯片会烧。我刚开始做的时候,就因为这个烧过两块ESP32,心疼啊。
继电器:开关的物理实现
继电器就是电磁开关。小电流控制大电流,ESP32的GPIO输出一个低电平信号,继电器线圈通电,触点吸合,220V的灯就亮了。
注意:继电器有机械寿命。频繁开关(比如每秒一次),几个月就坏了。所以咱们在场景联动里,一般用PWM调光做渐变,用继电器做总开关。各司其职。
| 硬件 | 作用 | 关键参数 | 避坑点 |
|---|---|---|---|
| ESP32 | 主控、联网 | 双核240MHz,WiFi/BT | 供电要稳,3.3V |
| PWM模块 | 调光 | 频率1kHz以上,MOSFET驱动 | 不能直接接大功率 |
| 继电器 | 开关 | 触点电流10A以上 | 有机械寿命,别频繁开关 |
1.3 搭建开发环境
硬件到手了,接下来就是让电脑能和ESP32说话。咱们提供两条路:Arduino IDE 和 MicroPython。我个人建议:新手用Arduino IDE,老手随意。
Arduino IDE 环境搭建
这个最简单。去官网下载Arduino IDE,安装后打开,在“文件-首选项”里添加ESP32开发板地址:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
然后去“工具-开发板-开发板管理器”,搜索ESP32,安装。等几分钟,搞定。
我曾经帮一个学员远程调试,他卡在这一步整整两小时。后来发现是网络问题,换了手机热点就好了。嗯,如果你也卡住,试试换网络。
MicroPython 环境搭建
MicroPython的好处是,你可以直接在ESP32上跑Python脚本。调试起来特别快。
步骤:
- 下载Thonny IDE(推荐)或uPyCraft。
- 下载MicroPython固件(.bin文件),去官网找ESP32对应的版本。
- 用esptool.py把固件烧录到ESP32:
esptool.py --chip esp32 --port COM3 erase_flash
esptool.py --chip esp32 --port COM3 write_flash -z 0x1000 esp32-xxx.bin
注意:COM口要选对。Windows下在设备管理器里看,Mac/Linux下用ls /dev/tty*查看。
重要警告:烧录固件时,ESP32的GPIO0必须接地(按住BOOT键)。否则会提示连接失败。我第一次用MicroPython时,忘了这一步,折腾了半小时。记住了啊。
验证环境是否正常
环境搭好后,写个最简单的代码测试一下:
// Arduino IDE 版本
void setup() {
Serial.begin(115200);
pinMode(2, OUTPUT);
}
void loop() {
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(2, LOW);
delay(1000);
}
上传后,如果ESP32板载的LED(GPIO2)一秒闪一次,恭喜你,环境搭好了。
1.4 第一课的总结
这一课咱们干了三件事:
- 搞清楚了联网灯光系统的三层架构
- 认识了ESP32、PWM模块、继电器这三个核心硬件
- 把Arduino IDE和MicroPython环境搭起来了
下一课,咱们就要开始真正的调光了。我会带着你从最简单的PWM输出开始,一步步让灯亮起来、暗下去。到时候你会发现,其实控制灯光,比控制你家的电视遥控器还简单。
好了,先去把环境搭好。有问题随时在群里问。咱们下节课见。
课后作业:用Arduino IDE或MicroPython,让ESP32板载LED以2Hz频率闪烁。拍照发群里打卡。