1、ESP32与MQTT入门:物联网概述、ESP32简介、MQTT协议原理、开发环境搭建
大家好,欢迎来到这门课的第一章。
说实话,每次带新人入门物联网,我都要先问一个问题:你理解的物联网,到底是什么? 很多人觉得就是「设备连上网,手机能控制」。嗯,这话没错,但太表面了。我在做智能家居项目时,最深的体会是——物联网的核心不是「连」,而是「通」。设备之间怎么说话?数据怎么传?这才是关键。
1.1 物联网概述
物联网,英文叫 IoT(Internet of Things)。说白了,就是把物理世界里的「东西」——传感器、开关、电机、灯——都挂到互联网上。
我习惯把物联网系统拆成三层来看:
- 感知层:负责采集数据。比如温度传感器、湿度传感器、摄像头。这是物联网的「眼睛和耳朵」。
- 网络层:负责传输数据。Wi-Fi、4G/5G、LoRa、NB-IoT…… 把感知层的数据送到服务器。
- 应用层:负责处理数据并做出决策。比如云端分析温度过高,自动打开空调。
你想想看,我们这门课要做的,就是让 ESP32 扮演「感知层+网络层」的角色,把数据送到 MQTT 服务器(网络层),再由你的手机或电脑(应用层)来接收和控制。
重要概念:物联网不是「一个设备」的事,而是「端-管-云」的协作。ESP32 是「端」,MQTT 是「管」,你的应用是「云」。
1.2 ESP32简介
ESP32 是什么?它是乐鑫科技推出的一款 Wi-Fi + 蓝牙双模芯片。我最早接触它是在 2016 年,当时还在用 ESP8266,那家伙虽然便宜,但功能太单一。ESP32 一出来,我立刻觉得——这才是做物联网该用的东西。
它的核心参数,我列个表给你看:
| 参数 | 值 |
|---|---|
| 处理器 | 双核 Xtensa LX6,主频 240MHz |
| Wi-Fi | 802.11 b/g/n,2.4GHz |
| 蓝牙 | BLE 4.2 + Classic Bluetooth |
| GPIO | 34 个可编程引脚 |
| ADC | 12位,最多 18 通道 |
| 价格 | 约 15-30 元人民币(开发板) |
为什么选 ESP32?三个理由:
- 便宜:一块开发板才十几块钱,比一杯奶茶还便宜。
- 集成度高:Wi-Fi、蓝牙、ADC、PWM、I2C、SPI…… 全在一个芯片里。不用外挂模块。
- 生态好:Arduino IDE、MicroPython、ESP-IDF 都能用。社区资源极其丰富。
我的经验:如果你刚开始学,买 ESP32-DevKitC 或者 NodeMCU-32S 都行。别买太冷门的型号,不然遇到问题网上都搜不到答案。
1.3 MQTT协议原理
好,设备有了,怎么通信?
MQTT 全称是 Message Queuing Telemetry Transport,消息队列遥测传输。名字挺长,但原理很简单——发布/订阅模式。
我举个例子你就懂了。
假设你有一个微信群,群里有 10 个人。你想告诉大家「今天下雨了」。你不用挨个私聊,只需要在群里发一条消息。想收到这条消息的人,自己会看群。
MQTT 就是这样的「群」。
- Broker(代理/服务器):就是那个「群」。它负责接收消息并转发给订阅者。
- Publisher(发布者):发消息的人。比如 ESP32 发布温度数据。
- Subscriber(订阅者):收消息的人。比如你的手机 App 订阅温度数据。
- Topic(主题):消息的「标签」。比如
sensor/temperature。
MQTT 有三大特点,我特别看重:
- 轻量级:协议头最小只有 2 个字节。非常适合 ESP32 这种资源有限的设备。
- 支持 QoS(服务质量):你可以选择消息是否必须到达。QoS 0 最多发一次,丢了不管;QoS 1 至少发一次,保证到达;QoS 2 恰好发一次,最可靠但最慢。
- 支持遗嘱消息:设备突然掉线时,Broker 可以自动发一条消息通知其他设备。这个功能我在做远程监控时用过,非常实用。
注意:MQTT 默认不加密。如果你做的是商业项目,一定要用 MQTT over TLS(端口 8883)。我在一个农业大棚项目里吃过亏,数据被中间人篡改过…… 嗯,从那以后我再也不敢用明文了。
1.4 开发环境搭建(Arduino IDE + ESP32板卡支持)
理论说完了,咱们动手。
我个人习惯用 Arduino IDE 来开发 ESP32。为什么?因为简单。你不需要学复杂的 ESP-IDF 框架,几行代码就能让 LED 闪烁。
搭建步骤:
- 下载 Arduino IDE:去官网
arduino.cc下载最新版。我建议用 2.x 版本,界面更现代。 - 安装 ESP32 板卡支持:
- 打开 Arduino IDE,点击「文件」→「首选项」。
- 在「附加开发板管理器网址」里填入:
https://espressif.github.io/arduino-esp32/package_esp32_index.json - 点击「工具」→「开发板」→「开发板管理器」。
- 搜索「ESP32」,点击安装。这个过程大概需要 5-10 分钟,取决于你的网速。
- 选择开发板:安装完成后,在「工具」→「开发板」→「ESP32 Arduino」下选择你的板型。我用的是「ESP32 Dev Module」。
- 测试代码:写一个最简单的 Blink 程序,验证环境是否正常。
void setup() {
pinMode(2, OUTPUT); // ESP32 板载 LED 通常接 GPIO2
}
void loop() {
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(2, LOW);
delay(1000);
}
上传代码后,如果板子上的 LED 开始一秒一闪,恭喜你,环境搭建成功了。
避坑指南:我曾经遇到过上传失败的问题,后来发现是 USB 线的问题。有些 USB 线只能充电,不能传数据。换一根好点的数据线,问题就解决了。
小结
这一章我们讲了物联网的基本概念,认识了 ESP32 这颗强大的芯片,理解了 MQTT 的发布/订阅模型,还亲手搭建了开发环境。
下一章,我们会真正开始写代码——让 ESP32 连接 Wi-Fi,然后连上 MQTT 服务器。到时候你会看到,数据从传感器到手机,只需要几行代码。
嗯,物联网的门,已经推开了一条缝。咱们继续往前走。
公众号:蓝海资料掘金营,微信deep3321