
简介本资源是一个基于微信小程序与ESP32硬件协同的轻量级智能家居控制系统实现方案面向嵌入式初学者、物联网爱好者及高校电子类课程实践者解决温湿度远程监测与LED设备无线控制的核心需求。压缩包共470个文件涵盖98个JavaScript逻辑文件含mqtt.min.js等通信模块、95个TypeScript类型定义、80个WXSS样式文件、74个WXML页面结构及73个JSON配置文件整体仅313KB结构清晰——pages目录组织多页面交互逻辑utils封装网络请求与数据处理dist为编译产物便于快速部署调试。已有2431人学习下载。读者可直接获取完整可运行的小程序前端代码、ESP32端通信协议对接说明隐含于JS逻辑中、DHT11数据解析与LED状态同步机制以及适配微信生态的响应式UI组件体系显著降低从硬件感知到小程序呈现的全链路开发门槛。 拿到Wechat_esp32_DHT11_LED.zip这个文件名我第一反应是这哥们把微信小程序、ESP32、DHT11 温湿度传感器和 LED 灯四个东西串在了一个项目里。项目本身不算复杂核心就一句话——手机上的微信小程序当遥控面板ESP32 作为本地服务器和控制器DHT11 负责把温湿度数据喂给 ESP32LED 灯听小程序指令亮灭。整套方案是非常典型的局域网物联网应用适合刚学嵌入式、想弄一个手机能遥控的小项目的技术玩家也适合做智能家居原型验证。这个项目我前前后后折腾了好几轮从硬件接线到小程序调试踩了不少坑。这篇文章我打算把整个项目的思路、电路设计、代码实现、排错经验一次性写清楚你拿到之后照着操作就能复现不用再去多个平台上拼凑资料。1. 项目到底做什么一套手机端遥控的温湿度监控与LED开关系统1.1 从文件名拆解项目构成Wechat_esp32_DHT11_LED.zip这个命名其实已经把项目的四个核心模块写得很明白了Wechat微信小程序负责显示数据、下发控制指令也就是用户的交互界面。esp32主控 MCU自带的 WiFi 模块让它可以连上路由器作为一个小型局域网服务器。DHT11数字温湿度传感器通过单总线协议把温湿度数据传给 ESP32。LED最直观的执行器件用 GPIO 控制亮灭模拟其他被控设备。把四个模块串起来整个系统就是ESP32 上电后连接 WiFi 并开始读取 DHT11 的数据同时启动一个 HTTP Web Server手机打开微信小程序通过局域网 IP 访问 ESP32 的接口获取当前温湿度点击界面上的开关按钮控制 LED 亮灭。1.2 这套系统能解决什么问题做这个项目最有价值的地方不是点亮一个 LED这种入门动作而是打通了一条从传感器数据读取到网络通信再到移动端交互的完整链路。具体来说它能解决几个实际问题在懒得开电脑、不想装 App 的前提下快速查看环境温湿度。微信几乎人人都有打开小程序就行不需要额外下载。验证远程控制的原理。LED 只是被控对象的代表把 LED 换成继电器、风扇、加湿器代码基本不用大改就能变成一个简易的远程控制开关。学习一个完整的物联网数据流设备端 - 网关ESP32作为局域网服务器 - 客户端微信小程序 - 用户操作 - 设备端响应。我做过几个类似项目之后最大的感受是物联网入门最大的门槛不是硬件而是把设备端和客户端之间的通信打通这件事。这个项目正好把这条链路完整走了一遍而且每段链路的代码量都不大非常适合用来建立整体认知。2. 整体设计思路为什么是微信小程序、ESP32、DHT11 和 LED2.1 技术选型的底层逻辑先说最外层的交互端也就是为什么选微信小程序。选型时的核心矛盾是App 太重网页不够方便。如果我做一个安卓 App需要额外装 APK而且 iOS 那边还得分叉如果做网页打开浏览器输 IP 其实也能用但每次都要手动输地址体验不够好。微信小程序的好处是用户不需要安装在微信里搜索或者扫码就能打开而且开发用的是 JavaScript前端同学上手很快。再说主控端为什么是 ESP32 而不是传统的 STM32 或者 Arduino Uno。原因很直接ESP32 自带 WiFi 和蓝牙芯片价格在十几二十块这个量级开发环境又成熟。STM32 做控制没问题但要联网还得外接一个 ESP8266 或 W5500复杂度一下子上去。Arduino Uno 虽然更简单但同样没有 WiFi需要插扩展板。ESP32 一颗芯片搞定主控联网省掉一个模块这是最核心的优势。传感器选 DHT11 就更务实了。DHT11 虽然精度一般温度 ±2°C湿度 ±5%RH但便宜、稳定、驱动简单单总线协议只占一个 GPIO非常适合这类入门演示项目。如果项目是长期做环境监测我会换 DHT22 或 SHT30但在这个项目里DHT11 已经能很好地把链路跑通。LED 作为执行端没有太多讲究但电路上有一个点值得展开到底是用 GPIO 直接推还是加三极管这取决于你接的 LED 功率。这个放到后面电路部分细说。2.2 系统架构与数据流转整个系统的数据流其实非常清晰我把它拆成两条链路数据上行链路DHT11 通过单总线协议把温湿度数据发送到 ESP32 的 GPIO 引脚ESP32 解析出温度和湿度数值缓存在内存变量中。当微信小程序发起 HTTP GET 请求时ESP32 把当前温湿度值拼装成 JSON 字符串返回给小程序。控制下行链路用户在微信小程序的界面上点击开灯或关灯按钮小程序向 ESP32 的/api/led/on或/api/led/off接口发送 HTTP 请求ESP32 收到请求后调用digitalWrite改变 LED 引脚的电平实现亮灭控制。这个设计的巧妙之处在于通信协议用了最基础的 HTTP没有引入额外的中间件。虽然在实际产品中为了保证远距离和稳定性很多人会选 MQTT 或走云平台阿里云 IoT、巴法云这类但在一个局域网场景中HTTP 直连是最快、最直观的方式。2.3 通信协议选型的取舍我考虑过两个替代方案一个是蓝牙 BLE另一个是通过平台中转的 MQTT。蓝牙方案的优点是不依赖路由器ESP32 开启蓝牙广播小程序用微信的低功耗蓝牙接口去连接理论上也可以做到。但我实测之后发现微信小程序的蓝牙 API 在高版本系统中权限要求比较多而且连接状态不稳定开发体验不太友好。MQTT 方案的优势是公网可用、设备不在同一局域网也能控制但需要引入 Broker 服务器还要在 ESP32 端装PubSubClient库对初学者来说环境搭建复杂度明显增加。所以最终我选的是HTTP 局域网方案。它满足了这个项目 90% 的使用场景而且调试方便——用浏览器直接访问 ESP32 的 IP就能看到接口返回的数据不需要额外抓包工具。3. 硬件准备与电路原理不要跳过的一步3.1 物料清单这个项目用到的硬件非常少我整理了一份清单部件型号/规格数量备注主控板ESP32 DevKitC V4 或同类开发板1推荐 38 引脚版本兼容性好温湿度传感器DHT11 模块1买模块版带板载电阻别买裸芯省事LED5mm 普通红光/蓝光1颜色随意电阻220Ω 或 330Ω1LED 限流电阻面包板400 孔或 830 孔1做原型够用杜邦线公对公若干建议买一排排的方便拆装手机任意安装了微信的手机1用于小程序调试路由器普通的 WiFi 路由器1手机和 ESP32 必须在同一网段这里说两个物料上的建议。第一DHT11 最好买模块版本而不是裸传感器。模块版自带上拉电阻和去耦电容直接接杜邦线就能用裸芯需要自己搭上拉 4.7kΩ 电阻接线稍有不慎就读不到数据。第二如果手头没有 220Ω 电阻330Ω、470Ω 也能将就用只是 LED 亮度会略微下降问题不大。3.2 DHT11 单总线协议与接线方法DHT11 使用的是单总线协议数据线只有一根同时负责读写双向通信。它在上电后需要等待 1~2 秒进入稳定状态然后主控可以发送起始信号开始读取。起始信号流程是主机把数据线拉低至少 18ms然后释放并拉高 20~40usDHT11 检测到这个信号后会拉低 80us 再拉高 80us 作为响应接着串行输出 40 位数据。这 40 位数据里包含了湿度整数部分、湿度小数部分、温度整数部分、温度小数部分和校验和每一位的0或1是通过高电平持续时间来区分的通常 26~28us 代表070us 左右代表1。正常开发时基本不需要自己去抠这些时序用现成的库就足够了但理解原理对排查问题很有帮助。比如遇到读出来的温度永远是 0多半是上拉电阻没接好或者数据线接触不良而不是代码逻辑的问题。DHT11 接线非常简单模块上通常有三个引脚有些是四个VCC、DATA、GND外加一个空脚 NCDHT11 引脚接 ESP32 引脚VCC3.3VDATAGPIO 4GNDGND建议 DATA 线接 GPIO 4因为 GPIO 4 在 ESP32 上是普通输入输出口没有特殊复用限制。接线时注意不要接成 5V 供电虽然 DHT11 支持 3.3~5.5V 供电范围但在同一个系统中把传感器和主控统一用 3.3V 供电逻辑电平一致更稳妥。3.3 LED 驱动电路从限流电阻到三极管LED 驱动是这个项目里最简单的部分但也是最容易出问题的地方。普通的 5mm LED 额定工作电流在 5~20 毫安正向压降约 1.8~2.2V红光ESP32 的 GPIO 引脚最高输出 3.3V。所以必须串一个限流电阻把电流控制在安全范围内。电阻取值的计算方法很简单已知 GPIO 输出高电平电压为 3.3VLED 正向压降取 2.0V限流电阻上的压降就是 3.3 - 2.0 1.3V。如果想让电流在 10mA 左右那么 R U / I 1.3V / 0.01A 130Ω。往上取标准阻值220Ω 是比较合适的此时电流约 6mA亮度已经足够而且 GPIO 负载很轻。有一个细节很多人会忽略ESP32 的 GPIO 虽然有灌电流能力但如果同时驱动好几个 LED累积电流会比较大可能影响芯片的稳定性。所以如果项目里 LED 数量多或者功率大就不建议 GPIO 直驱了可以考虑加一个 NPN 三极管开关电路或者直接用 ULN2003 这类驱动芯片。还有一点我在测试用 MOS 管驱动 LED 时踩过一个坑板子电源正负极接反把输入端的一颗 X2 安规电容给炸了所以这里特别提醒一下——无论是用三极管还是 MOS 管都要反复确认电源极性尤其是市电供电的设备接反了不是烧电容就是烧后级成本虽然不高但折腾起来很浪费时间。3.4 ESP32 引脚分配与避坑ESP32 的引脚虽然多但并不是所有引脚都能随便用。在这个项目里我建议这样分配功能引脚说明DHT11 数据GPIO 4普通输入无特殊复用LED 控制GPIO 2ESP32 板载 LED 通常也接在这个引脚上串口调试GPIO 1 (TX) / GPIO 3 (RX)用于打印日志烧录固件时需要占用需要避开的引脚包括GPIO 6~11连接了外部 SPI Flash不能当普通 IO 用接了外部电路会导致启动失败。GPIO 0烧录 BTNBOOT 按键信号平时可以用但下载程序时会拉低接了外设可能引起干扰。GPIO 12~15本身是 JTAG 相关引脚GPIO 12 默认是 strapping pin上电时电平状态影响芯片工作模式建议避开或加下拉电阻。如果你用的是 38 引脚的标准开发板遵循我上面这张表的引脚分配基本上不会踩到什么坑。接线完成后上电看板载 LED 是否闪烁、DHT11 模块电源指示灯是否亮起硬件层面基本就过关了。4. 开发环境搭建Arduino IDE 和微信开发者工具并不复杂4.1 在 Arduino IDE 上配置 ESP32离线包方案ESP32 最常用的开发环境是 Arduino IDE配合官方的 esp32 核心包使用。但很多新手卡在第一步Arduino IDE 的 Boards Manager 添加 ESP32 时网络经常不稳定下载慢到怀疑人生。解决办法是直接用离线安装包。目前常用的是 3.3.10 这个版本整体流程是下载 Arduino IDE建议 2.x 版本界面更现代性能也更好。下载 esp32-3.3.10 离线安装包解压后放到 Arduino IDE 的hardware目录下路径一般是C:\Users\你的用户名\Documents\Arduino\hardware\espressif\esp32。如果之前没有hardware目录自己新建一个即可。重启 Arduino IDE在开发板列表里就能看到 esp32 系列的板卡。注意版本对应关系Arduino IDE 2.x 和 1.8.x 对核心包的存放位置略有不同。IDE 2.x 统一定位在 Arduino 用户数据目录下不需要像老版本那样手动指定路径。装好之后建议测试一下选择开发板ESP32 Dev Module编译一个空工程如果能通过编译说明环境正常。4.2 微信小程序开发者工具的准备微信小程序开发需要在电脑上安装官方微信开发者工具。这个工具本身没有太多坑但有两个点值得注意建议先申请一个小程序测试号在开发过程中使用测试号不会受到太多权限限制。首次创建项目时模板选空白目录或完整 Demo都行关键是 AppID 可以选测试号无需企业账号也能跑通。如果在本地开发时想直接用局域网 IP 访问 ESP32要在微信开发者工具的右上角详情设置里勾选不校验合法域名、web-view业务域名、TLS 版本以及 HTTPS 证书这一项。否则小程序默认要求wx.request的 URL 必须是 HTTPS 合法域名本地 HTTP 会被直接拦截跳红色警告。4.3 需要安装的核心库ESP32 端代码里最核心的库有两个DHT sensor libraryAdafruit 维护的 DHT 系列库支持 DHT11/DHT21/DHT22安装非常方便在库管理器里搜索DHT即可同时会自动附带安装Adafruit Unified Sensor库这两个是配套的不要跳过。WebServer这是 Arduino 内置库不需要单独安装直接在代码里#include WebServer.h就能用。微信小程序端不需要额外安装第三方库官方自带的wx.request接口就足够实现 HTTP 请求。5. 核心代码实现从 ESP32 到微信小程序5.1 ESP32 端代码HTTP 服务器 传感器读取 LED 控制ESP32 端完整代码我直接贴出来你可以根据自己需求做调整#include WiFi.h #include WebServer.h #include DHT.h #define DHTPIN 4 #define DHTTYPE DHT11 #define LED_PIN 2 const char* ssid your_wifi_ssid; const char* password your_wifi_password; DHT dht(DHTPIN, DHTTYPE); WebServer server(80); bool ledState false; void sendJSON(String json) { server.send(200, application/json, json); } void handleGetData() { float h dht.readHumidity(); float t dht.readTemperature(); if (isnan(h) || isnan(t)) { sendJSON({\error\:\DHT read failed\}); return; } String json {; json \temperature\: String(t, 1) ,; json \humidity\: String(h, 1); json }; sendJSON(json); } void handleLedOn() { digitalWrite(LED_PIN, HIGH); ledState true; sendJSON({\state\:true}); } void handleLedOff() { digitalWrite(LED_PIN, LOW); ledState false; sendJSON({\state\:false}); } void handleLedStatus() { String json {\state\:; json ledState ? true : false; json }; sendJSON(json); } void setup() { Serial.begin(115200); pinMode(LED_PIN, OUTPUT); digitalWrite(LED_PIN, LOW); dht.begin(); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); Serial.print(Connecting to WiFi); while (WiFi.status() ! WL_CONNECTED) { delay(500); Serial.print(.); } Serial.println(); Serial.print(IP address: ); Serial.println(WiFi.localIP()); server.on(/api/data, handleGetData); server.on(/api/led/on, handleLedOn); server.on(/api/led/off, handleLedOff); server.on(/api/led/status, handleLedStatus); server.begin(); Serial.println(HTTP server started); } void loop() { server.handleClient(); }代码逻辑很简单setup()里初始化串口、LED 引脚、DHT11 传感器和 WiFi然后注册四个路由handleGetData()读取温湿度并返回 JSONhandleLedOn/Off通过digitalWrite控制 LEDloop()里只需要调用server.handleClient()就可以处理所有进来的 HTTP 请求。这里有一个经验想多说一句dht.readTemperature()和dht.readHumidity()如果你连续调用过快中间没有间隔DHT11 会因为内部采样机制出现返回NAN的情况。DHT11 的采样周期大约是 1 秒也就是说两次读取至少要间隔 1 秒钟。官方库内部已经做了一些延时但如果你的程序在循环里短间隔调用还是要注意。在这个代码里数据读取是由 HTTP 请求触发的请求频率通常不会超过 1Hz所以问题不大。烧录之前记得在 Arduino IDE 工具栏里选择ESP32 Dev Module并把 Upload Speed 设为 115200。tools菜单里的Port要选择 ESP32 对应的串口Windows 下通常是 COM 口Mac/Linux 下是/dev/cu.usbserial-xxxx这样的设备。5.2 微信小程序端代码数据展示 指令下发小程序端我做成一个极简页面顶部显示温湿度中间显示 LED 的当前状态底部是一个开关灯按钮整体结构清晰// pages/index.js Page({ data: { temperature: --, humidity: --, ledState: false, loading: false, baseUrl: http://192.168.1.100 // 改成你的 ESP32 的 IP }, onLoad() { this.getData(); this.getLedStatus(); }, getData() { wx.request({ url: this.data.baseUrl /api/data, timeout: 3000, success: (res) { const data res.data || {}; this.setData({ temperature: data.temperature ! undefined ? data.temperature.toFixed(1) : --, humidity: data.humidity ! undefined ? data.humidity.toFixed(1) : -- }); }, fail: () { wx.showToast({ title: 连接失败, icon: none }); } }); }, getLedStatus() { wx.request({ url: this.data.baseUrl /api/led/status, success: (res) { if (res.data typeof res.data.state boolean) { this.setData({ ledState: res.data.state }); } } }); }, toggleLed() { if (this.data.loading) return; this.setData({ loading: true }); const action this.data.ledState ? off : on; wx.request({ url: this.data.baseUrl /api/led/ action, timeout: 3000, success: (res) { if (res.data res.data.state ! undefined) { this.setData({ ledState: res.data.state }); } }, fail: () { wx.showToast({ title: 操作失败, icon: none }); }, complete: () { this.setData({ loading: false }); } }); } });对应页面的 WXML 结构大体如下view classcontainer view classcard text classlabel当前温度/text text classvalue{{temperature}}°C/text /view view classcard text classlabel当前湿度/text text classvalue{{humidity}}%RH/text /view view classcard text classlabelLED 状态/text text classvalue{{ledState ? 已开启 : 已关闭}}/text /view button bindtaptoggleLed disabled{{loading}} {{ledState ? 关闭 LED : 开启 LED}} /button button bindtapgetData stylemargin-top: 20rpx;刷新数据/button /view在小程序开发工具里记得把baseUrl改成你自己 ESP32 实际打印出来的 IP 地址。IP 查看方法有两个第一ESP32 上电后会在串口监视器里打印IP address: 192.168.1.100第二可以在路由器后台查看设备列表找到espressif开头的设备。5.3 联调流程与验证方法把两端代码都准备好之后整个联调流程大概是这样的给 ESP32 烧录代码打开串口监视器等待它连上 WiFi 并打印 IP。在电脑浏览器中直接访问http://ESP32-IP/api/data如果返回类似{temperature:25.3,humidity:60.2}的 JSON说明 ESP32 端正常。在微信开发者工具里打开小程序项目填入正确的baseUrl在模拟器中点击刷新数据看温度湿度是否显示。点击开启 LED按钮看 ESP32 板载 LED 是否点亮。注意我代码里写的 LED_PIN 是 GPIO 2也就是板载 LED这样无需外接 LED 就能先完成验证。我建议按照这个顺序一步步来不要跳步。很多人一上来直接点小程序按钮发现没响应结果排查半天发现是 ESP32 的 IP 填错了。先浏览器验证可以快速把问题定位到ESP32 端还是小程序端。6. 常见问题与排查技巧实录6.1 ESP32 编译或烧录阶段的问题编译失败最常见的原因是库没装全或开发板核心包不对。如果报错信息里有DHT.h: No such file or directory说明 DHT 库没装去库管理器搜索DHT sensor library安装即可。如果报错信息里出现很多底层头文件找不到先检查是否有选择了正确的开发板类型。烧录失败时有一个非常经典的坑串口选择正确但一直报Connecting...或者A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header。解决办法是按住 ESP32 开发板上的 BOOT 键不放然后点击 Arduino IDE 的上传按钮看到提示开始烧录时松开 BOOT 键。这是 ESP32 硬件进入下载模式的标准操作很多新手不知道这个技巧卡在这一步很久。6.2 DHT11 读值异常数据读出来永远是 0或者返回NAN、inf这是 DHT11 项目里最常遇到的问题。我的排查顺序是先检查接线VCC、DATA、GND 三根线是否插紧模块上电源指示灯是否亮。再看供电电压用万用表量一下 DHT11 的 VCC 和 GND 之间是否有 3.3V 左右电压。如果供电没问题把 DATA 线换到另一个 GPIO 引脚并同步修改代码里的DHTPIN宏定义。最后检查 DHT 库版本和初始化顺序确保dht.begin()在setup()里被调用了。另外DHT11 放在 ESP32 旁边时如果 ESP32 发热严重读出来的温度会偏高 2~3°C这是正常的物理现象不是传感器坏了。测试时可以把 DHT11 拿远一点或者用手捏住传感器看数据变化更直观地判断它是否工作正常。6.3 小程序连不上 ESP32小程序请求时报request:fail或者一直转圈大概率是下面几个原因之一手机和 ESP32 不在同一个 WiFi 网络下。这是最常见的错误ESP32 连的是 2.4G 网络手机也可能连了 5G 频段两者虽然看起来是同一个路由器但实际上是隔离的无法互相访问。没有在微信开发者工具里勾选不校验合法域名。漏掉这一步本地 HTTP 请求会被直接拦截。iOS 真机调试时需要在手机的设置 - 隐私 - 本地网络中允许微信访问本地网络否则小程序无法通过局域网访问设备的 IP。排查时可以先用电脑浏览器访问http://ESP32-IP/api/data如果浏览器也打不开那问题就在 ESP32 的 WiFi 配置先把这边修通再去看小程序。6.4 LED 不亮或误动作LED 不亮先检查接线特别是有没有把 LED 的阳极和阴极接反了。LED 长脚是阳极接 GPIO短脚是阴极接 GND接反了不会烧但也不会亮。如果代码烧进去之后 LED 上电就亮而不是默认熄灭检查两处第一setup()里要先pinMode(LED_PIN, OUTPUT)再digitalWrite(LED_PIN, LOW)第二确认没有别的库或者代码在偷偷改这个引脚的电平。比如我用过的一些板载 LED 默认就是上电常亮需要通过代码拉低。如果 LED 一接触 GPIO 就导致整个 ESP32 重启多半是电流过大了。GPIO 直推 LED 一定要串限流电阻不要裸接。我之前调试时图省事直接 GPIO 接 LED 负极LED 正极接 3.3V结果把 GPIO 的灌电流拉满ESP32 直接进入反复重启的模式最后排查了半天才反应过来说是限流电阻的问题。7. 扩展思路与个人心得7.1 项目可以怎么升级这套项目做完之后升级方向的思路其实很开阔。如果你想让 LED 变成一个真正的远程开关可以把 LED 部分换成继电器模块注意选低电平触发或者高电平触发和代码逻辑匹配就能控制家用电器。如果你想进一步丰富 UI可以在 ESP32 端用 SPIFFS 插件存放静态网页文件让 ESP32 自己提供一个 Web 控制页面浏览器直接访问就能控制不需要打开小程序。这种方式适合做产品原型演示因为不依赖微信生态。如果想把数据存下来做长期记录可以给 ESP32 加一个 SD 卡模块把温湿度数据按时间戳写入 CSV 文件或者通过 HTTP POST 把数据推送到服务器再做一个简单的仪表盘展示历史曲线。DHT11 精度有限做长期数据采集建议升级成 SHT30 这类数字传感器数据稳定性会好很多。7.2 踩过几次坑之后的体会这个项目我前前后后做了两三遍最大的体会是物联网项目的调试一定要学会分段验证。不要等到所有代码写完再统调。先单独测试 DHT11 读数再测试 LED 开关再测试 HTTP 接口最后才联调小程序。每一段都是可控的出了错也能迅速定位。如果跳过中间步骤直接一把梭出了问题你会分不清是传感器接线错了、代码逻辑错了、还是小程序配置错了。另外一个很实在的经验是把所有固定值WiFi 账号、密码、IP 地址、GPIO 引脚号都集中放在代码开头的#define或常量位置不要散落在代码各处。改起来省心也更方便给不同环境复用。小程序端也是一样baseUrl单独抽出来放常量文件里以后换设备或者换网络只改一处就行。最后想说的是微信小程序加 ESP32 这种组合虽然看起来简单但它覆盖了前端交互、嵌入式开发、网络通信三个领域的核心知识点是一个非常值得做完并理解透的小项目。你把这条链路跑通一次后面再做智能硬件相关的项目会发现很多思路都是相通的。本文还有配套的精品资源点击获取