ESP32教程系列
1 - 认识ESP32
2 - Arduino IDE安装&配置
3 - 基本操作
4 - WiFi配网
5 - WebServer①
6 - Web Server②控制输出
7 - Web Server③ HTML&CSS基础
8 - Web Server④ 在Arduinio中添加HTML&CSS
9 - 异步网页服务器 Asynchronous Web Server(DHT11)
10 - OTA ESP32无线升级,告别数据线
ESP32实战系列
WiFi遥控小车
ESP32 Homekit系列
Homekit & Homespan介绍
点亮一颗LED
调节LED亮度
通过ESP32与HomeSpan库实现智能灯光接入苹果生态
一、前言
智能家居的核心在于设备间的互联与自动化,而苹果的HomeKit平台以其高安全性、本地化运行和Siri语音控制的优势,成为iOS用户的首选。通过ESP32开发板和开源库HomeSpan,开发者无需依赖昂贵的认证硬件,即可低成本打造兼容HomeKit的智能设备。本教程将详细指导如何利用ESP32实现基础智能灯控制,涵盖硬件搭建、代码编写到HomeKit配对的完整流程,并融入实际调试经验与扩展思路
二、 项目准备
硬件
- 核心控制:ESP32开发板(如NodeMCU-32S或ESP32-WROOM)
- 照明组件:LED灯(普通或RGB)、220Ω限流电阻
- 连接工具:杜邦线、面包板(可选)
- 电源:USB数据线或5V电源适配器
软件
安装HomeSpan库
若Arduino库管理器无HomeSpan 2.1.1版本,需科学上网在库文件环境中安装或手动安装。
手动安装方法:
- 从GitHub下载HomeSpan 2.1.1源码。
- 解压后复制至Arduino库目录(通常为 Documents/Arduino/libraries)。
- 重启Arduino IDE,验证是否在 文件 > 示例 中看到“HomeSpan”示例
三、 电路接线
四、代码
#include "HomeSpan.h" // 引入 HomeSpan 库
#define LED_PIN 25 // 定义 LED 连接的 GPIO 引脚(内置 LED 通常在 GPIO 2)
struct LEDController : Service::LightBulb { // 定义一个自定义灯泡服务类
SpanCharacteristic *power; // 定义开关状态的特性
int ledPin;
LEDController(int pin) : Service::LightBulb() { // 构造函数
power = new Characteristic::On(); // 初始化开关特性
ledPin = pin; // 设置 LED 引脚
pinMode(ledPin, OUTPUT); // 配置引脚为输出模式
digitalWrite(ledPin, LOW); // 默认关闭 LED
}
boolean update() override { // 当 HomeKit 更新特性时调用
digitalWrite(ledPin, power->getNewVal()); // 根据新值控制 LED
return true; // 更新成功
}
};
void setup() {
Serial.begin(115200); // 初始化串口,波特率为 115200
delay(1000); // 短暂延迟以确保串口初始化完成
Serial.println("\nHomeSpan Setup: Starting...");
homeSpan.setLogLevel(0); // 设置日志级别为 0,减少日志输出
homeSpan.begin(Category::Lighting, "ESP32 LED"); // 初始化 HomeSpan,设备类别为“照明”
homeSpan.setPairingCode("15975326"); //配对码根据自己喜好设置,不可过于简单,如12345678
// 创建一个 HomeKit 配件
new SpanAccessory();
new Service::AccessoryInformation(); // 配件信息服务
new Characteristic::Name("ESP32 LED"); // 配件名称
new Characteristic::Manufacturer("+大钱硬件"); // 制造商
new Characteristic::SerialNumber("HS-001"); // 序列号
new Characteristic::Model("LED Controller"); // 型号
new Characteristic::FirmwareRevision("2.1.1"); // 固件版本
new Characteristic::Identify(); // 识别功能
// 添加自定义灯泡服务
new LEDController(LED_PIN);
Serial.println("设置完成。如果还未配置WiFi,请进行配置。");
Serial.println("打开串口监视器并输入 'W' 来设置WiFi凭证,或者连接到 'HomeSpan-Setup' 接入点。");
}
void loop() {
homeSpan.poll(); // 处理 HomeSpan 的循环任务
}
五、配网
配网方式请参考ESP32教程系列。
此处说明另一种配网方式。
Homespan支持在串口中输入大写字母W进行配网。配过一次之后,会进行记忆,下次不用再配。通过串口配网的方式,比较适合个人DIY。
输入W并回车,会出现下面内容
根据个人的WIFI名称,进行复制后再输入在对话空中,并回车,会提示输入密码,同样在对话框中输入密码后,回车即可进行配网。
配网成功后的界面状态如下。
显示这种状态则说明ESP32准备好可以配对了。
六、家庭App端的操作 - 添加配件
按下面顺序操作,即可添加配件。
到此,就添加配件成功了。
七、效果验证
以上就是简单的Homekit的点亮LED的教程。
※关注微信公众号:[+大钱硬件],获取源码,Homespan库文件