最近把阳台养的花整理了一下,因为老是忘了给花浇水,在广东这种天气下,养的花时不时都干死了,买了点水管,搞了一个浇灌系统,目前用智能插座控制小水泵的工作,个人不太喜欢,准备用一个电磁阀来直接接自来水浇灌.
电磁阀可以直接接在阳台的出水上,考虑通过一个模块来做个开关,最好是能直接通过siri就能控制,手上刚好有闲置的esp32模块和继电器,看起来可以直接搞起来.既然材料都有了,就看看固件怎么搞.
开源试探
在github看了很多开源的esp32的homekit解决方案,我最先看到的是在Arduino下的Arduino-HomeKit-ESP,体验过程中,发现乐鑫还开源了他们的homekit方案esp-idf,那肯定要试试的.
安装准备
我都是在MacOS下操作的,其他的平台可能初始安装的软件不太一样,可以参考官方文档.
ESP-IDF使用 macOS 上默认安装的 Python 版本,我们需要安装CMake 和 Ninja 编译工具:
brew install cmake ninja dfu-util
如果遇到以下错误:xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
则必须安装 XCode 命令行工具,可运行 xcode-select --install
命令进行安装.
获取ESP-IDF代码
打开终端,切换ESP-IDF工作目录,使用 git clone 命令克隆远程仓库, 不建议直接使用master分支的代码,我使用的是v4的最新稳定版.
1 | mkdir -p ~/esp |
设置ESP-IDF
除了ESP-IDF本身,还需要安装ESP-IDF使用的各种工具,比如编译器、调试器、Python 包等.
1 | cd ~/esp/esp-idf |
通过一次性指定多个目标,可为多个目标芯片同时安装工具,如运行 ./install.sh esp32,esp32c3,esp32s3
。 通过运行 ./install.sh
或 ./install.sh all
可一次性为所有支持的目标芯片安装工具.
设置环境变量
建议在profile里面配置一个别名,方便以后用的时候可以快速开始.
复制并粘贴以下命令到 shell 配置文件中(.profile
、.bashrc
、.zprofile
等).
1 | alias get_idf='. $HOME/esp/esp-idf/export.sh' |
通过重启终端窗口或运行 source [path to profile]
,如 source ~/.bashrc
来刷新配置文件.以后可以在任何终端窗口中运行 get_idf
来设置或刷新esp-idf环境.
构建第一个Demo
ESP-IDF的Demo我就不跑了,我直接使用乐鑫的另外一个仓库esp-homekit-sdk,这也是我们最终目标.
下载代码到esp工作目录.
1 | cd ~/esp/ |
直接到sdk的examples里面,构建一个lightbulb测试.
1 | idf.py set-target <esp32/esp32s2/esp32c3> |
erase-flash
可以确保每次改动的配置都能正常应用,现在应该就能刷入刚才构建的固件了.