第一课:课程导论与硬件准备

各位同学,欢迎来到《设备联网灯光系统》的第一课。

我是你们这门课的主讲。做了十几年嵌入式开发,从最早的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脚本。调试起来特别快。

步骤:

  1. 下载Thonny IDE(推荐)或uPyCraft。
  2. 下载MicroPython固件(.bin文件),去官网找ESP32对应的版本。
  3. 用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频率闪烁。拍照发群里打卡。