联网与 IoT
WiFi/蓝牙 · MQTT · 云平台 · 进阶通信
- 01 为什么产品固件离不开 RTOS
你在 L1/L2 把所有事都堆进一个 while(1) 里跑,灯一闪、传感器一读、网一连就开始互相堵——一个 delay 卡住,全盘卡住。这篇不写复杂代码,只把"为什么真正的产品固件都跑在 RTOS 上"这个心智模型给你建起来:每件事一个任务、调度器分时间片,看起来"同时"在跑。ESP-IDF 里 FreeRTOS 本就内置,连你写的 app_main 都是个任务。
- 02 FreeRTOS 任务:让硬件同时做好几件事
从 L1 的 while(1) 单线跑,跨到 ESP-IDF 真正的多任务。本篇用一段闪灯 + 心跳日志双任务的可跑代码,把 xTaskCreate 的栈、优先级、任务函数为何必须死循环讲透——这是后面所有联网、传感器并发跑得起来的地基。
- 03 FreeRTOS 队列:任务之间怎么安全传数据
上一篇两个任务各跑各的了,但它们怎么把数据递给对方?本篇用一段"传感器生产者 + 上报消费者"的可跑代码,把 xQueueCreate / xQueueSend / xQueueReceive 的值拷贝、timeout、队列满空行为讲透,还带上 ISR 里专用的 xQueueSendFromISR——这是多任务真正用得起来的那块拼图。
- 04 FreeRTOS 同步原语:互斥锁、信号量、事件组
上一篇你用队列把数据从一个任务安全送到另一个任务。但有些场景不是"传数据"——是几个任务抢用同一根 I2C 总线、一个串口、一份全局状态。直接抢会乱套。本篇用一段"两个任务争用共享计数器"的可跑代码,先演示不加锁的竞态乱象,再用互斥锁修好,并把二值信号量、事件组(含 WiFi 篇那个 WIFI_CONNECTED_BIT)讲透。
- 05 软定时器与延时:vTaskDelayUntil 和 xTimer 怎么选
vTaskDelay 做周期任务会越走越偏——这篇讲透它和 vTaskDelayUntil 的漂移差异,再用一段软定时器每秒回调的可跑 demo,把 xTimerCreate 的 one-shot/auto-reload、回调绝不能阻塞这个夺命坑讲明白。要精确周期采样的活,看完你就知道该用哪个。
- 06 看门狗与异常恢复:产品不死机的底线
设备死在客户家里,没人会帮你按复位键——它得自己爬起来。本篇用一段把任务挂上任务看门狗 TWDT 的可跑代码,演示"正常喂狗 vs 故意卡住触发复位",把 esp_task_wdt_init/add/reset、为什么忙等会触发看门狗、Guru Meditation Error 怎么读、esp_restart 怎么主动重启讲透——这是固件从"能跑"到"能在没人管的地方一直跑"的分水岭。
- 07 栈与内存:栈溢出排查、堆碎片与内存监控
上一篇你知道了任务栈"单位是字、给小了会溢出",这篇把它讲到能落地。教你用 uxTaskGetStackHighWaterMark 把每个任务的栈"调到刚好+余量",用 esp_get_free_heap_size 和 heap_caps_get_largest_free_block 盯住堆——区分内存泄漏和堆碎片,外加一段会当场把栈撑爆的 demo,让你亲眼认得栈溢出的样子。
- 08 用 AI 读懂与调试 RTOS 代码:把崩溃现场喂对,它才查得准
死锁、优先级反转、栈溢出、竞态——RTOS 的 bug 症状最隐蔽、最难复现。这一篇教你把 idf.py monitor 的 Guru Meditation、espcoredump 解析的崩溃现场、任务列表喂对给 AI,用四套 prompt 模板让它帮你定位,再讲怎么核对它的产出别让它瞎加锁、乱开栈。
- 09 让 ESP32-S3 连上 WiFi
ESP32-S3 比单纯跑裸机香的最大理由,就是自带 WiFi。但 ESP-IDF 的联网是「事件驱动」的——不是 Arduino 那种 while 轮询。本篇用一套标准 wifi_init_sta() 骨架,把事件循环、回调、事件组讲透,这是你硬件从"玩具"变"联网产品"的分水岭。
- 10 让 ESP32-S3 当个网页服务器:手机网页控硬件
不写 App、不接云,ESP32-S3 自己开个网页,手机连同一个 WiFi 就能开关灯。ESP-IDF 用的是 esp_http_server(httpd),后台任务驱动、不用 loop 轮询——这是局域网控制最快的入门方式,我们把它从头讲透。
- 11 用 BLE 让手机直连你的 ESP32-S3
不想搭服务器、不想连路由器,只想用手机直接连上 ESP32-S3 看数据、改设置?这一节用 ESP-IDF 的 NimBLE 把它做成一个 BLE 外设——nRF Connect 扫到、连上、读写、收通知。BLE 栈样板多,本篇给主干骨架并诚实标注以官方示例为准。
- 12 HTTP 请求:用 esp_http_client 把数据上传到云
ESP32-S3 联网后第一件能干的正事:用 ESP-IDF 自带的 esp_http_client 发 GET/POST,把传感器读数 POST 到云端。讲透事件回调收 body、cJSON 解析、状态码与故障排查,给可跑代码。
- 13 MQTT 上云:为什么 IoT 都爱用它
几乎所有物联网项目都在用 MQTT。它就像设备之间的"群聊"——谁发消息、谁关心就收。本篇用 ESP-IDF 内置的 esp-mqtt 把原理讲透,再做一个能远程收发、断线自愈的设备。
- 14 用 AI 搭一套 MQTT 收发:能跑的 ESP-IDF 工作流
MQTT 原理懂了,自己写 esp-mqtt 却总连不上 Broker?这一篇教你怎么给 AI 喂上下文,让它产出能直接 idf.py flash 的 ESP-IDF 事件驱动收发代码,再用 MQTTX 验证、用 idf.py monitor 日志让 AI 帮你 debug。
- 15 最快上云:用巴法云让设备联网看数据、远程控
不想自己买服务器、搞域名、写后端,几分钟就让 ESP32-S3 上云?巴法云本质就是个带鉴权的 MQTT Broker,用 ESP-IDF 内置的 esp-mqtt 改两个字段就连上。手机随时看数据、点按钮远程控灯,还能接微信通知和小爱同学。
- 16 Home Assistant + ESP32:做真正属于自己的智能家居
把自制的 ESP32 设备接进 Home Assistant,和米家、HomeKit 同台联动。本节用 ESPHome 写几行 YAML 就接入,再讲 MQTT 路线与本地 vs 云的取舍。
- 17 自建 MQTT Broker:让数据不再寄人篱下
不想被第三方平台限连接数、不想数据走别人服务器、想要局域网零延迟?用 Docker 十分钟跑起自己的 MQTT Broker,让 ESP32 连进来,数据全在你手里。
- 18 手机远程控制你的设备
出门在外,怎么用手机控制家里的 ESP32-S3?难点在 NAT,设备藏在内网公网够不着。讲清三条出路,再用 ESP-IDF 内置的 esp-mqtt 做一个手机在 4G 下就能点亮家里灯、还能实时看到设备真实状态的完整方案。
- 19 OTA 空中升级:不拔线给 ESP32-S3 远程刷固件
设备装进墙里、出货到客户家,固件还得改怎么办?OTA 让你通过 WiFi 远程更新 ESP32-S3 固件。ESP-IDF 用 esp_https_ota 一把梭、esp_ota_ops 细粒度边下边写,外加 factory/ota_0/ota_1 双分区 A/B 回滚——升级失败也不变砖。给可跑代码。
- 20 配网:让用户自己给设备设 WiFi
真实产品不能把 WiFi 账号密码写死在固件里——换个网就得重刷。这一节用 ESP-IDF 的 esp_smartconfig 实现一键配网:手机 App 把凭据广播给设备,设备嗅探解码后落进 wifi_config 自动联网。
- 21 NTP 时间同步与定时任务
ESP32-S3 没有带电池的实时时钟,一断电就不知道几点了。这一节用 ESP-IDF 的 esp_netif_sntp 让它联网后从 NTP 服务器秒级校准到准确本地时间,再用标准 C 的 localtime_r/strftime 取时间,做"每天 8 点开灯"这类定时任务。
- 22 低功耗与深度睡眠:电池供电必修
电池供电的 ESP32-S3 一天就没电?学会 esp_deep_sleep 把平均电流压到 μA 级,让温湿度计、传感器节点靠两节电池跑几个月。含定时唤醒、ext1 引脚唤醒完整 ESP-IDF 代码、RTC_DATA_ATTR 跨睡眠保值、唤醒原因判断与续航估算。
- 23 WebSocket 实时双向通信:让网页和 ESP32-S3 互相推消息
HTTP 一问一答做不了实时仪表盘,轮询又费电费流量。WebSocket 在浏览器和 ESP32-S3 之间保持一条长连接,双向随时推、延迟低。本篇用 esp_http_server 内置的 WS 支持给完整可跑代码,讲清它和 HTTP 轮询、MQTT 的取舍。
- 24 ESP-NOW:让两块 ESP32-S3 不经路由器直接对话
ESP-NOW 是乐鑫私有的轻量无线协议,不连路由器、两块 ESP32-S3 上电就能互发数据,延迟毫秒级、距离远、省电。本篇用 ESP-IDF 5.x 的 esp_now API 带可跑代码做无线遥控。
- 25 数据上报与可视化:图表与仪表盘
传感器读数光在串口刷屏没意义,要存下来、画成曲线、做成仪表盘才能看出趋势。讲清四条可视化路线,再用 ESP32-S3 + esp_http_server 提供 /data JSON 接口、前端 Chart.js 拉取刷新,做一个能看实时温湿度曲线的网页。
- 26 通信安全:给联网设备穿上衣服
联网设备裸奔很危险——数据明文跑、谁都能控。讲清新手最该做的几件安全事和优先级,再用 ESP-IDF 给 esp-mqtt 加上 mqtts、给 esp_http_client 加上 https,配 CA 证书完成 TLS 验证。
- 27 网关与多设备组网:从一个设备到一屋子
项目从一块板子变成一屋子设备,就得有"组网"和"网关"的思路。讲清网关是什么、几种拓扑怎么选,再用 ESP-NOW 节点 + ESP32-S3 网关 + esp-mqtt 搭一套完整能上云的传感网。