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开发板(如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”示例
二、 电路接线
三、代码
/*
*Arduino IDE 2.3.4
*ESP32 Board 3.1.1
*HomeSpan 2.1.1
*Partition scheme Minimal SPIFFs(菜单栏的 工具>Partition Scheme
*芯片:ESP32-C3
*作者:+大钱硬件
*/
#include "HomeSpan.h" // 引入 HomeSpan 库
#define LED_PIN 8 // 定义 LED 连接的 GPIO 引脚(内置 LED 通常在 GPIO 2)
struct LEDController : Service::LightBulb { // 定义一个自定义灯泡服务类
SpanCharacteristic *power; // 定义开关状态的特性
SpanCharacteristic *brightness; // 定义亮度特性
int ledPin;
LEDController(int pin)
: Service::LightBulb() { // 构造函数
power = new Characteristic::On(); // 初始化开关特性
brightness = new Characteristic::Brightness(50); // 初始化亮度特性,默认亮度为 50%
ledPin = pin; // 设置 LED 引脚
pinMode(ledPin, OUTPUT); // 配置引脚为输出模式
digitalWrite(ledPin, LOW); // 默认关闭 LED
}
boolean update() override { // 当 HomeKit 更新特性时调用
int brightnessValue = brightness->getNewVal(); // 获取亮度值
int pwmValue = map(brightnessValue, 0, 100, 0, 255);// 将亮度值映射到 0-255 范围(因为 analogWrite 接受 0-255 的值)
analogWrite(ledPin, pwmValue); //设置 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");
// 创建一个 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 的循环任务
}
四、家庭App端的操作
由于上一个教程已添加过配件,所以此次不用重复添加。
逐渐调整滑动条,可以看到蓝色LED灯在逐步变亮。
※关注公众号,获取源码,Homespan库文件