2、开发环境搭建:Arduino IDE 配置 ESP32 环境、安装 ESP-NOW 库、第一个 Hello World 程序
好,咱们正式开始动手了。
这一章,说白了就是「磨刀不误砍柴工」。环境搭不好,后面写再多代码也是白搭。我见过太多新手卡在第一步——要么板子连不上,要么库装不上,折腾半天连个灯都点不亮。别急,跟着我的节奏来,半小时内让你跑起第一个程序。
2.1 为什么选 Arduino IDE?
你可能会问:ESP-IDF 不是官方工具吗?为什么不用它?
嗯,这里我要说句实话。ESP-IDF 功能确实强大,但它的学习曲线陡得像悬崖。我刚开始用 ESP32 时,光配置 IDF 环境就花了两天,中间还踩了无数坑。对于咱们这门课来说,Arduino IDE 完全够用,而且上手快、社区资源多。
我个人习惯是:原型验证用 Arduino IDE,产品开发才切到 ESP-IDF。你想想看,咱们现在要学的是 ESP-NOW 通信,不是学怎么配环境,对吧?
2.2 安装 Arduino IDE
第一步,去官网下载 Arduino IDE。目前最新版本是 2.x,界面比老版清爽不少。我建议直接装新版,别用 1.8.x 了——虽然稳定,但功能确实落后了。
- 打开浏览器,访问
arduino.cc,下载对应系统的安装包 - Windows 用户选 EXE 安装包,Mac 用户选 DMG,Linux 用户选 AppImage
- 安装过程一路默认就行,没什么特别要改的
2.3 配置 ESP32 开发环境
装好 Arduino IDE 后,它默认是不支持 ESP32 的。我们需要手动添加 ESP32 的板级支持包。
操作步骤:
- 打开 Arduino IDE,点击 文件 → 首选项
- 在「附加开发板管理器网址」里填入:
https://espressif.github.io/arduino-esp32/package_esp32_index.json - 点击 工具 → 开发板 → 开发板管理器
- 搜索
esp32,找到 Espressif 官方包,点击安装
这个过程大概需要 5-10 分钟,取决于你的网速。我建议用手机热点试试,有些公司网络会屏蔽 GitHub 的下载源。
避坑指南:我曾经在安装时卡在「下载失败」这一步。后来发现是公司防火墙搞的鬼。如果你也遇到这个问题,可以试试手动下载包,或者换个网络环境。
2.4 安装 ESP-NOW 库
好消息是:ESP-NOW 不需要额外安装库。它是 ESP32 原生支持的协议,Arduino 核心库已经内置了相关 API。
你只需要在代码里包含头文件:
#include <esp_now.h>
#include <WiFi.h>
就这么简单。不需要去 GitHub 上找第三方库,也不需要手动安装什么 ZIP 包。我刚开始做项目时,还傻乎乎地去搜「ESP-NOW library download」,结果发现官方早就集成好了。
WiFi.h 是必须的。因为 ESP-NOW 底层依赖 Wi-Fi 硬件,必须先初始化 Wi-Fi 才能使用 ESP-NOW。
2.5 第一个 Hello World 程序
环境搭好了,咱们来写第一个程序。别一上来就搞 ESP-NOW 通信,先让板子「开口说话」——用串口打印一句 "Hello World"。
代码很简单:
#include <Arduino.h>
void setup() {
Serial.begin(115200);
Serial.println("Hello World! ESP-NOW 课程启动!");
}
void loop() {
// 空循环,什么都不做
}
写完之后,按以下步骤操作:
- 用 USB 线把 ESP32 连到电脑
- 在 Arduino IDE 里选择开发板:工具 → 开发板 → ESP32 Dev Module
- 选择端口:工具 → 端口,找到你的 ESP32(一般是 COM3 或 /dev/ttyUSB0)
- 点击上传按钮(右箭头图标)
上传成功后,打开串口监视器(右上角放大镜图标),把波特率调到 115200。你应该能看到:
Hello World! ESP-NOW 课程启动!
如果没看到输出?别慌。检查三件事:
- 波特率是不是 115200?
- 端口选对了没有?
- 板子是不是在运行状态?(可以按一下板子上的 EN 键复位)
2.6 验证 ESP-NOW 是否可用
既然 Hello World 跑通了,咱们再进一步——验证 ESP-NOW 功能是否正常。写一个简单的初始化代码:
#include <esp_now.h>
#include <WiFi.h>
void setup() {
Serial.begin(115200);
// 设置 Wi-Fi 为 Station 模式
WiFi.mode(WIFI_STA);
// 初始化 ESP-NOW
if (esp_now_init() == ESP_OK) {
Serial.println("ESP-NOW 初始化成功!");
} else {
Serial.println("ESP-NOW 初始化失败!");
}
}
void loop() {
// 空循环
}
上传后,串口应该打印 "ESP-NOW 初始化成功!"。如果看到这个,恭喜你——环境完全 OK,可以进入下一章了。
WiFi.mode(WIFI_STA) 必须在 esp_now_init() 之前调用。这个顺序我踩过坑,顺序反了就会返回错误。
2.7 本章小结
到这,咱们完成了三件事:
- 安装了 Arduino IDE 并配置了 ESP32 环境
- 确认了 ESP-NOW 不需要额外安装库
- 跑通了第一个程序,验证了 ESP-NOW 初始化
下一章,咱们正式进入 ESP-NOW 的核心——点对点通信。你会学到如何让两块 ESP32 互相「喊话」。嗯,那才是真正好玩的地方。
delay(1000) 或者 millis() 都行。