跳至内容
返回

HomeKit ESP32 Control Light

发布于:  at  01:03 上午

快把你家的灯接入HomeKit吧其一(LED篇)

由于我住的地方没有床头没有灯的开关,每次都得下床才可以关灯。碰巧上次多买了一块ESP32,再碰巧的是大黄猫不久前给我发了个通过HomeKit控制他家ESP8266的视频。于是就有了这篇文章。 目标很明确,那就是ESP32接入HomeKit然后通过Siri控制我的开关。

准备工作 *

环境 环境 环境,配置好环境才可以开始工作,本质上最繁琐的还是配置环境。

我使用的操作系统是Windows 10 18363.719

但是真正的开发环境是位于Windows Subsystem for Linux上的Ubuntu 18.04 LTS(该操作系统可以到Windows 10自带的MicroSoft Store上进行下载) 没错,我套了一层娃。

0x01 下载esp-homekit-demo

https://github.com/maximkulkin/esp-homekit-demo.git

打开终端,进入你喜欢的文件夹,使用命令

git clone https://github.com/maximkulkin/esp-homekit-demo.git

下载esp-homekit-demo clone_repo

0x02 下载esp32开发环境

cd到~并使用mkdir创建esp文件夹并cd进入 mkdir_enter 这里是由于我已经创建过了这个文件了,所以创建失败

下载esp-idf

git clone --recursive https://github.com/espressif/esp-idf.git

0x03 设置工具

执行命令,整个过程都是自动的,缺少的依赖工具也会自动下载,可能最大的阻碍来自网络,所以可以考虑使用代理。

cd ~/esp/esp-idf
./install.sh

该过程很耗时,请耐心等待。

0x04 设置环境变量

执行命令

. $HOME/esp/esp-idf/export.sh

现在一切就绪,让我们使用一个LED来进行开发环境验证以及练手吧。Here we go.

点亮你的LED

0x01 初始化并同步项目

回到esp-homekit-demo文件夹,并使用命令

git submodule update --init --recursive

0x02 配置wifi

在esp-homekit-demo文件夹下,有一个wifi.h.sample文件,内容为

##define WIFI_SSID "mywifi"
##define WIFI_PASSWORD "mypassword"

将其中的mywifi替换成目标Wi-Fi的SSID,mypassword替换为目标Wi-Fi的密码。 然后将文件重命名为wifi.h

0x04 挂载设备到子系统上

由于Ubuntu只是我们的子系统,所以它并不能直接检测到插在电脑上的ESP32,需要将其挂载到子系统上才可以检测到。别担心,操作很简单,只需复制命令即可。 首先要做的是把你的ESP32插在主机上,然后到Windows的设备管理器中查看端口号,这里以我的电脑为例子 check_com_port 可以看到我的ESP32是在COM3口上的,所以在终端里面执行命令

sudo chmod 666 /dev/ttyS3
stty -F /dev/ttyS3 -a
stty -F /dev/ttyS3 sane 115200

这样,我的ESP32就接入了子系统的ttyS3接口上

0x03 配置开发板相关参数

在终端里,回到之前的esp-homekit-demo文件夹,并使用命令

make -C examples/esp32/led menuconfig

选择Serial flasher config,并将端口号改为ttyS3 enter_serial_config select_port 使用esc退出并保存

0x04 编译工程

使用命令

make -C examples/esp32/led all

该过程也很耗时,还请耐心等待。 当出现 build_done 说明构建顺利完成

0x05 烧录程序

为了防止之前烧录的程序产生影响,所以在每次烧录之前需要擦除flash

使用命令

make -C examples/esp32/led erase_flash

当出现Serial port /dev/ttyS3

Connecting…

时候可能需要按住ESP32板子上的boot键几秒然后松手才可以正常清除和烧录

执行烧录命令

make -C examples/esp32/led flash

同样可能需要按下boot键几秒

0x06接入外设查看效果

LED的demo工程里面,启用的GPIO为2号,所以我们需要将LED接入2号引脚。 由于我手上没有单独的LED,所以使用一块LED灯板进行演示。 2号引脚接在LED的正极,LED的负极接在GND上。

打开你的iPhone,然后启动”家庭”,点击添加配件,选择我没有或无法扫描代码。 此时可以在附近的配件里面查看到Sample LED,选中它。虽然会提示未认证的配件,但是不用理会,电机仍然添加。然后输入代码11111111。稍等片刻即可添加成功。 现在就可以对着手机说”嘿,Siri,开灯”或者”嘿,Siri, 关灯”。 turn_off turn_on

下期预告:快把你家的灯接入HomeKit吧其二(舵机篇)

参考资料: 在Win10的Linux子系统下搭建ESP32的开发环境

ESP-IDF 编程指南

Espressif IoT Development Framework

Build instructions ESP32


在以下平台分享此文章: