铁熊玩创客 | 学会掌控板 + Siri 语音控制,只要半小时!
话不多说,先上效果演示视频:
https://www.bilibili.com/video/av63856715/
# 前言 #
前段时间,我在公众号上面发了一篇文章:掌控板 V1.1 语音识别初体验
在这篇文章中,我使用了还处于测试阶段的掌控板 V1.1 写了一篇语音识别的教程。好多老师看了后,都迫不及待想要玩一下掌控板语音识别功能,但无奈掌控板目前在售的最新版本(V1.0.1)还不支持这个功能,只能作罢。而且从我测试的结果来看,目前掌控板语音识别效果不是很理想。
于是我就想,还有没有其他方案可以做到语音识别呢?
看着手里的 iPhone,是时候轮到人工智障 Siri 上场了!
https://pic.superbed.cn/item/5d56349b451253d1789d119f.png
可是怎么做才可以让 Siri 完成智能家居的控制呢?可能很多人会说,加一个 Raspberry Pi (树莓派),在上面运行 Home Assistant 框架,变成智能家居网关,然后再用掌控板(ESP32)做外设,就可以实现了 DIY 的 Siri 语音控制智能家居方案了。
的确,我们可以用这种方法去实现很复杂的智能家居控制系统,而且我之前就利用过 Home Assistant 框架、树莓派和 ESP8266 做过智能家居系统,具体教程可以查看:
[*]Hey Siri,打开 HAY 旋转灯:https://mc.dfrobot.com.cn/thread-26865-1-1.html
[*]Hey Siri,请告诉我传感器数据:https://mc.dfrobot.com.cn/thread-28859-1-1.html
以下是这个方案的演示视频:
https://player.bilibili.com/player.html?aid=14986294&cid=24412760&page=1
https://player.bilibili.com/player.html?aid=15639935&cid=25445688&page=1
既然掌控板的主控芯片是 ESP32,而 ESP32 又是 ESP8266 的升级版,那么 ESP32 当然也同样可以接入 Home Assistant 系统。随着时间的推移,Home Assistant 系统也有了很多升级,功能也越来越全面,大家可以自行去尝试学习下这种方法。
Home Assistant 虽然是一个很强大的框架,但是如果我们只是做一些简单的灯光控制,而且还要用到树莓派,未免有点大材小用了。
所以这篇教程用的却是另一种方法,我们让掌控板或 ESP32 不用树莓派就可以直连 IPhone 上的 Siri。
https://pic.superbed.cn/item/5d563474451253d1789d0ae1.jpg
具体怎么做呢?请继续往下看。
重要的事情说三遍:
以下教程基于 Windows 系统!
以下教程基于 Windows 系统!
以下教程基于 Windows 系统!
如果你用的是 Linux 系统……你都用 Linux 系统了,这还难得倒你么?
如果你用的是 macOS 系统……土豪,你不需要折腾,直接买买买那些支持 Siri 的设备就行!
# 准备工作 #
如果你是高手,可以直接看这里:快速入门——ESP-IDF 编程指南:https://docs.espressif.com/projects/esp-idf/zh_CN/stable/get-started/index.html
> ESP-IDF 是 Espressif IoT Development Framework 的缩写,是乐鑫 ESP32 开发的一套框架,乐鑫所研发的软件开发环境 ESP-IDF 能够帮助用户快速开发物联网 (IoT) 应用,满足用户对于 Wi-Fi、蓝牙、低功耗等性能的需求。框架里面包含很多例程,是入门和进阶ESP32的优秀参考。
如果你只想看精简版的,请继续往下看。你需要准备:
[*]文本编辑器:编写 C 语言程序,例如 VS Code、Eclipse、Notepad++等;
[*]掌控板或其他 ESP32 开发板;
[*]Git:用于后续安装 ESP32 编译工具链、ESP-IDF 以及示例代码;
[*]工具链:用于编译下载调试 ESP32 程序;
[*]ESP-IDF:包含 ESP32 API 和用于操作工具链的脚本;
[*]ESP HomeKit Demo 程序:包含苹果智能家居 HomeKit 的 API 框架和适用于 ESP 系列芯片的例程 。
## 安装 Git 环境
首先你需要安装 Git 环境。Git 是做什么的呢?说的简单点,就是快速从 GitHub 下载代码的工具。安装方案很简单,从 Git 官网(https://git-scm.com/)下载最新的安装包,然后双击打开 exe 安装文件,一路 Next 就行。
https://pic.superbed.cn/item/5d562cc9451253d1789cadc0.png
## 设置 ESP32 工具链
快速设置的方法是从 dl.espressif.com 下载集成在一起的工具链和 MSYS2 压缩文件。下载链接为:
https://dl.espressif.com/dl/esp32_win32_msys2_environment_and_toolchain-20181001.zip
将 zip 压缩文件解压到 `C:\` (或其它路径,我边边是 `D:\esp`),它会使用预先准备的环境创建一个 `msys32` 目录,如下图所示:
https://pic.superbed.cn/item/5d563471451253d1789d0a0d.png
然后打开 `D:\esp\msys32\mingw32.exe` 程序,这将会打开一个 MSYS2 的终端窗口,该窗口的环境是一个 bash shell。后面会多次用到这个程序,请一定要记住!后面会多次用到这个程序,请一定要记住!后面会多次用到这个程序,请一定要记住!
https://pic.superbed.cn/item/5d563482451253d1789d0d7a.png
运行如下命令,创建一个 `esp` 目录作为开发掌控板(ESP32) 应用的默认地址:
mkdir -p ~/esp
输入 `cd ~/esp` 就进入到新创建的目录。如果没有错误信息出现则表明此步骤已完成。
cd ~/esp
https://pic.superbed.cn/item/5d56346c451253d1789d0906.png
请不要关闭这个窗口,后续步骤将会使用这个窗口来为掌控板(ESP32)设置开发环境。
## 下载 ESP-IDF 框架
工具链安装完后,你还需要 ESP32 相关的 API 库。API 库在 (https://github.com/espressif/esp-idf) 中。
继续在 MSYS2 的终端窗口中输入以下命令,使用 `git clone` 命令克隆(下载) ESP-IDF 远程仓库:
cd D:\esp
git clone -b v3.2.2 --recursive https://github.com/espressif/esp-idf.git
该命令首先切换到 `D:\esp` 目录下,然后将 ESP-IDF 被下载到 `D:\esp` 目录下。
> `git clone` 命令的 `-b v3.2.2` 选项告诉 git 从 ESP-IDF 仓库中克隆与此版本的文档对应的分支版本,目前最新的稳定版本为 `v3.2.2`。
下载需要一段时间,请耐心等待。我这边大概下载了 20 分钟。
接着开始设置 ESP-IDF 路径。工具链程序使用环境变量 `IDF_PATH` 来访问 ESP-IDF。这个变量应该设置在你的 PC 中,否则工程将不能编译。用户配置文件脚本存放在 `D:/esp/msys32/etc/profile.d/` 目录中。每次打开 MSYS2 窗口时,系统都执行这些脚本。
在 `D:/esp/msys32/etc/profile.d/` 目录下创建一个新的脚本文件。将其命名为 `export_idf_path.sh`。
https://pic.superbed.cn/item/5d562cc9451253d1789cadaf.png
然后确定 ESP-IDF 目录的路径,也就是我们刚才安装 ESP-IDF 的路径,此处为 `D:\esp\esp-idf`。在 `export_idf_path.sh` 脚本中加入 `export` 命令:
export IDF_PATH="D:/esp/esp-idf"
https://pic.superbed.cn/item/5d56346d451253d1789d092e.png
然后保存并关闭该文件即可。
至此 ESP-IDF 所有准备工作就完成了。
## 下载 ESP HomeKit Demo 程序
ESP HomeKit Demo 程序是 GitHub 上的一位大神开源的,原地址为:https://github.com/maximkulkin/esp-homekit-demo
但是上面的教程写的比较简单,所以我就做了一下搬运。
https://pic.superbed.cn/item/5d563480451253d1789d0d10.png
还记得前文在 MSYS2 的终端窗口下创建了一个 `~\esp` 路径么?这个路径是一个相对路径,它是相对 `msys2` 目录而言的,这个目录的具体位置为:`D:\esp\msys32\home\ironpanda\esp` ,其中 `ironpanda` 是我的电脑用户名,每个人电脑用户名不一样。
https://pic.superbed.cn/item/5d56346e451253d1789d0955.png
我们将把 ESP HomeKit Demo 例程下载到 `~\esp` 这个目录中,在 MSYS2 的终端窗口运行一下命令:
cd ~/esp
git clone https://github.com/maximkulkin/esp-homekit-demo.git
cd esp-homekit-demo
git submodule update --init --recursive
然后进入 `esp-homekit-demo` 目录,复制一份 `wifi.h.sample` 文件,并将其修改为 `wifi.h` 文件。这个文件主要用于设置掌控板联网时的 WiFi 账号密码。
https://pic.superbed.cn/item/5d562cc9451253d1789cadb4.png
打开 `wifi.h` 文件,修改为你自己的 WiFi 账号密码,如下图所示:
https://pic.superbed.cn/item/5d563470451253d1789d09e2.png
至此,所有的准备工作都完成了,下面正式开始烧写程序。
# 快速入门:第一个掌控板 Siri 项目 #
在快速入门的第一个项目中,我们主要希望实现 Siri 可以控制掌控板上外接的 LED 灯模块。
## 硬件连接
这里我通过掌控扩展板连接外部的 LED 灯模块,扩展板随便选,可以用 DF 出的扩展板,也可以用掌控宝,此处绘制电路图时使用了 DF 出品的扩展板,如下图所示,我们将 LED 模块连接到扩展板的 P13 引脚。
https://pic.superbed.cn/item/5d563486451253d1789d0e0b.png
## 修改例程
在刚刚下载的 `esp-homekit-demo` 文件夹下,有一个 `examples` 文件,里面提供了非常多的可以与苹果 Homekit 交互的案例(也就是可以用 Siri 控制),我们在里面找到 `esp32` 文件夹,这个文件夹里面提供了 ESP32 相关的例程,可以适用于掌控板。
https://pic.superbed.cn/item/5d56347f451253d1789d0cdd.png
我们打开 `esp32` 文件夹,注意到里面的 `led` 文件了么?这篇教程,我就将教大家上传这个程序,实现 Siri 控制 LED 灯亮灭的程序。当然学会这个后,控制家里的电灯也是一样的道理,加个继电器开关即可。
https://pic.superbed.cn/item/5d56346b451253d1789d08c6.png
我们进入这个文件夹,找到 `led.c` 文件,这里面编写的就是主要程序,用你熟练的文本编辑器或 IDE 打开它。具体的程序原理,这篇文章暂时就不讲了,涉及到比较多的内容,后面有时间慢慢讲,我们主要关注下面几个地方。
第一个地方是连接 LED 的 GPIO 引脚设置。注意这里是 GPIO 引脚编号,而不是掌控板上的 Px 引脚编号。
https://pic.superbed.cn/item/5d562cca451253d1789cae2b.png
由于我们前面电路连接的是掌控板 P13 引脚,查看掌控板 ESP32 的引脚定义,发现 P13 对应的 GPIO 编号是 IO18,所以修改程序中的 `led_gpio = 18`。
https://pic.superbed.cn/item/5d563488451253d1789d0e9b.png
然后再来看一下设备设置信息。如下图所示,其中 1 和 2 是用于设置 HomeKit 外设参数的,包括名字、厂商、序列号、型号、固件号等,可以不用修改。3 是用来设置**配对密码**的,待会要将这个外设加入 iPhone 的“家庭”软件时会用到, **请记住配对密码**!这两个地方修改完之后,程序就完成了。
https://pic.superbed.cn/item/5d56348d451253d1789d0f55.png
下面我们将进入程序编译以及上传环节。
## 上传程序
**先用 USB 线将掌控板连上电脑**,然后打开 MSYS2 的终端窗口,还记得在哪里打开么?忘了的话,往前翻一下。然后切换到 `esp-homekit-demo` 路径下
cd ~/esp/esp-homekit-demo/
https://pic.superbed.cn/item/5d5634a1451253d1789d124d.png
然后输入以下命令,并回车。`menuconfig` 命令主要用于对项目程序进行编译和上传设置:
make -C examples/esp32/led menuconfig
https://pic.superbed.cn/item/5d563469451253d1789d084c.png
输入上述命令后,会弹出 `menuconfig` 配置界面。
> menuconfig 使用技巧:
>
> - 使用 up & down 组合键在菜单中上下移动
> - 使用 Enter 键进入一个子菜单,Escape 键退出子菜单或退出整个菜单
> - 输入 `?` 查看帮助信息,Enter 键退出帮助屏幕
> - 使用空格键或 `Y` 和 `N` 键来使能 (Yes) 和禁止 (No) 带有复选框 “``” 的配置项
> - 当光标在某个配置项上面高亮时,输入 `?` 可以直接查看该项的帮助信息
> - 输入 `/` 搜索配置项
我们主要修改其中的 `Serial flasher config` ,也就是上传程序的串口参数,如下图所示:
https://pic.superbed.cn/item/5d56346e451253d1789d0980.png
https://pic.superbed.cn/item/5d562cc9451253d1789cadac.png
将其中的 `Default serial port` 修改为掌控板连接电脑的端口号,如下图所示,然后保存退出即可。
https://pic.superbed.cn/item/5d56346b451253d1789d0892.png
然后继续在 MSYS2 的终端窗口输入以下命令,对程序进行编译:
make -C examples/esp32/led all
https://pic.superbed.cn/item/5d563472451253d1789d0a4f.png
这个过程时间比较长,约 2 分钟左右,请耐心等待。编译完成后,如果程序没有错误,就会出现类似下图界面:
https://pic.superbed.cn/item/5d563472451253d1789d0a98.png
接着擦除掌控板上原来已有的程序:
make -C examples/esp32/led erase_flash
https://pic.superbed.cn/item/5d56347e451253d1789d0cbb.png
**擦除程序过程中,出现 Connecting…… 时,注意要按一下掌控板上的 A 键 1 秒左右**。
https://pic.superbed.cn/item/5d56347c451253d1789d0c20.png
擦除完成后,如下图所示:
https://pic.superbed.cn/item/5d563472451253d1789d0a98.png
接着正式开始上传刚刚修改的 led 程序,继续输入以下命令:
make -C examples/esp32/led flash
https://pic.superbed.cn/item/5d563477451253d1789d0b60.png
**上传程序过程中,出现 Connecting…… 时,同样也要按一下掌控板上的 A 键 1 秒左右**。
https://pic.superbed.cn/item/5d563476451253d1789d0b32.png
上传完成后,你的程序就已经在掌控板里面了。在 MSYS2 的终端窗口输入以下命令:
make -C examples/esp32/led monitor
这个命令可以让我们类似串口助手一样,查看相应的调试信息,如下图所示:
https://pic.superbed.cn/item/5d56347b451253d1789d0bf2.png
接下来就可以掏出你的 iPhone 或 iPad 进行配对啦。
# 配对 iPhone #
首先找到 iPhone 上自带的**家庭 App**,我的手机系统是英文,可能显示稍有不同,大家对照图片即可。
https://pic.superbed.cn/item/5d563490451253d1789d0fe0.jpg
打开**家庭 App**,这是苹果生态系统里的智能家具控制程序,可以用 Siri 去控制接入其中的设备、查看传感器信息等。可以在家庭 App 主页上看到,我已经接入了一个 LED 灯(红灯)设备,下面我将教你如何接入另一个设备。
https://pic.superbed.cn/item/5d562cca451253d1789cae22.png
点击 App 右上角的 “**+**” 号,在弹出的选择按钮中选择 Add Accessory。
https://pic.superbed.cn/item/5d563496451253d1789d109b.jpg
点击箭头所指处,选择使用配对密码进行配对。
https://pic.superbed.cn/item/5d562cca451253d1789cadd7.jpg
可以看到有一个 LED-XXXX 的设备等待我们连接,点击选择:
https://pic.superbed.cn/item/5d563487451253d1789d0e4f.png
接下来会弹出警告提醒,不用管它,点击 Add Anyway,然后输入配对密码。还记得配对密码吗?忘了的话,回到程序中看看。
https://pic.superbed.cn/item/5d562cc9451253d1789cadd0.png
输入配对密码之后,系统就会提示你设备添加成功。
https://pic.superbed.cn/item/5d562cc9451253d1789cadc6.png
https://pic.superbed.cn/item/5d563489451253d1789d0ede.png
为了方便记忆,我们可以修改设备默认的名字和所在房间的名称,比如我将 LED 名称修改为“蓝灯”,房间名称修改为“掌控板”。
https://pic.superbed.cn/item/5d562cc9451253d1789cadbd.png
回到家庭 App 主页面,看到刚刚添加的“蓝灯”了么?
https://pic.superbed.cn/item/5d562cca451253d1789cae0f.png
# Hey Siri #
接下来就尽情用 Siri 玩耍吧!
Siri 是支持自然语言识别的,如果你像我一样添加了多个设备,比如两盏灯,你就可以用语音命令控制两盏灯同时打开或关闭。比如:
- Hey Siri,打开所有灯;
- Hey Siri,关闭掌控板;
- Hey Siri,打开红灯。
https://pic.superbed.cn/item/5d56349a451253d1789d1159.png
搞定!
# 广告时间 #
最后再打个小广告:欢迎关注我的个人公众号“铁熊玩创客”,不 kan 定 xin 期 qing 更新创客制作、技术教程以及一些胡言乱语。
# 往期作品 #
## 创客技巧
- 创客项目缺少高颜值电路图?看这里就对了:https://mc.dfrobot.com.cn/thread-289862-1-1.html
- 小白也能学会的激光切割创意盒子设计方法:https://mc.dfrobot.com.cn/thread-276550-1-1.html
## 桌面机器人
- 桌面萌宠 Pando,这个机器人靠卖萌为生好多年:https://mc.dfrobot.com.cn/thread-35162-1-1.html
- 桌面萌宠 Pandy,谁说智能车不能卖萌:https://mc.dfrobot.com.cn/thread-36721-1-1.html
- 吃货战车:谁说泡面只能用来填肚子:https://mc.dfrobot.com.cn/thread-34679-1-1.html
- 纯野生黑科技,分分钟教你自制最skr全向麦熊小车:https://mc.dfrobot.com.cn/thread-268968-1-1.html- 不会垃圾分类?教你制作一个瓦力机器人来帮你:https://mc.dfrobot.com.cn/thread-296340-1-1.html
## 智能家居
- Hey Siri, 打开 HAY 旋转灯:https://mc.dfrobot.com.cn/thread-26865-1-1.html
- Hey Siri,请告诉我传感器数据:https://mc.dfrobot.com.cn/thread-28859-1-1.html
## 创意生活
- HAY,你好 ── DIY HAY旋转灯:https://mc.dfrobot.com.cn/thread-26212-1-1.html
- DIY 你的专属酷炫照片投影灯:https://mc.dfrobot.com.cn/thread-26900-1-1.html
- 好色灯:你们吸猫,我吸色:https://mc.dfrobot.com.cn/thread-34483-1-1.html
- DIY 你的专属酷炫照片投影灯:https://mc.dfrobot.com.cn/thread-26900-1-1.html
- 没有什么问题是猜拳不能解决的:https://mc.dfrobot.com.cn/thread-38060-1-1.html
- 律动头饰皇冠:每个女孩心中都有一个公主梦:https://mc.dfrobot.com.cn/thread-267927-1-1.html
## 学生作品
- 陈朔:戒烟帽:https://mc.dfrobot.com.cn/thread-280204-1-1.html
- 梁立昊:体感骑行安全帽:https://mc.dfrobot.com.cn/thread-280093-1-1.html
## HCRbot 机器人(SLAM)
- HCRbot 系列 1──HCRbot 机器人简介:https://mc.dfrobot.com.cn/thread-26938-1-1.html
- HCRbot 系列 2──HCRbot 硬件介绍与设置:https://mc.dfrobot.com.cn/thread-26939-1-1.html
- HCRbot 系列 3──HCRbot 上位机 PC 端软件设置:https://mc.dfrobot.com.cn/thread-26975-1-1.html
- HCRbot 系列 4──HCRbot下位机设置(树莓派版):https://mc.dfrobot.com.cn/thread-27020-1-1.html
- HCRbot 系列 5──HCRbot下位机设置(Odroid XU4版):https://mc.dfrobot.com.cn/thread-27161-1-1.html
- HCRbot 系列 6──HCRbot 底层驱动 OpenCR 设置:https://mc.dfrobot.com.cn/thread-27296-1-1.html
- HCRbot 系列 7──启动 HCRbot 机器人:https://mc.dfrobot.com.cn/thread-28248-1-1.html
- HCRbot 系列 8──远程控制 HCRbot 机器人:https://mc.dfrobot.com.cn/thread-29354-1-1.html
- HCRbot 系列 9──控制 HCRbot 机器人绘制平面地图(SLAM):https://mc.dfrobot.com.cn/thread-29936-1-1.html
## 掌控板
- 让掌控板像 Mixly 串口监视器一样绘图:https://mc.dfrobot.com.cn/thread-288929-1-1.html- 掌控超声波传感器?可能没你想的那么简单:https://mc.dfrobot.com.cn/thread-296500-1-1.html- 首发测评 | 掌控板 V1.1 测试版语音识别初体验:https://mc.dfrobot.com.cn/thread-296662-1-1.html
每次的排版都特别整齐哈哈哈哈哈 markdown的排版果然666,但是图片咋解决?社区和公众号的图片不能互相调用,还是要手动链接? digi_cow 发表于 2019-8-20 10:45
markdown的排版果然666,但是图片咋解决?社区和公众号的图片不能互相调用,还是要手动链接? ...
用markdown写文档的时候,用第三方图床,比如七牛云、SM.MS图床、聚合图床等。写完之后,在支持markdown的地方直接粘贴就好,每个平台会自动从图床链接下载,然后把图片上传到自己的平台。然后在不同的平台排版时,稍微做一些小调整就行。
我一般都是在本地写好markdown文件,然后就可以在DF社区、微信、知乎、CSDN、简书等平台上粘贴了。不然每个平台都排版一遍,会累死的。 KIKIYA 发表于 2019-8-20 10:10
每次的排版都特别整齐哈哈哈哈哈
因为我用了markdown哈哈哈,稍微调整一下就好了 看上去好头疼。今天我试着用百度的语音助手写个开关灯的程序。折腾了半天放弃了。目前好像底层的代码没写好,抛出异常我没法解决。期待大神 铁熊精品{:5_171:} 汤果 发表于 2019-8-20 15:38
看上去好头疼。今天我试着用百度的语音助手写个开关灯的程序。折腾了半天放弃了。目前好像底层的代码没写好 ...
我之前试过百度的语音识别,其实就是根据它的API去POST一堆参数就可以了。但是卡在base64那里了。micropython的base64好像有点问题 铁熊 发表于 2019-8-20 11:16
用markdown写文档的时候,用第三方图床,比如七牛云、SM.MS图床、聚合图床等。写完之后,在支持markdown ...
学到手艺了,谢谢! 请问一下,为什么会出现这个样子呢?
确实精品 阿凌 发表于 2019-8-24 01:56
请问一下,为什么会出现这个样子呢?
因为是从github下载的,所以很有可能是网络原因 挺好玩的 挺好玩的
挺好玩的
厉害了,我的耗
建议楼主把公众号的二维码贴出来,这样大家加的几率会更大。 展翼骐骥 发表于 2019-8-30 11:54
建议楼主把公众号的二维码贴出来,这样大家加的几率会更大。
感谢提醒,遗漏了 厉害得不行了 学习学习。 # make -C examples/esp32/led menuconfig
make: 进入目录“/home/Administrator/esp/esp-homekit-demo/examples/esp32/led”
Makefile:9: /make/project.mk: No such file or directory
make: *** 没有规则可制作目标“/make/project.mk”。 停止。
make: 离开目录“/home/Administrator/esp/esp-homekit-demo/examples/esp32/led”
请问这个是怎么回事
页:
[1]
2