ESP32 Homekit实战 - 点亮一颗LED

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”示例

三、 电路接线

参考ESP32教程(基于Arduino IDE)3-基本操作

四、代码

#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库文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值