2024年寒假练 - 基于XIAO ESP32S3 Sense 开发板的宠物位置识别以及语音行为纠正系统
该项目使用了XIAO ESP32S3 Sense 开发板,实现了宠物位置识别以及语音行为纠正系统的设计,它的主要功能为:使用Edge Implues框架完成了宠物位置识别,输出的指示信息通过Home Assitant 平台进行收集测和处理,如果宠物运动到危险区域,发出语音指示纠正宠物行为。。
标签
嵌入式系统
tinySDR
更新2024-04-03
67

基于XIAO ESP32S3 Sense 开发板宠物位置识别以及语音行为纠正系统


1 项目简介


本项目是参加2024寒假在家一起练的项目。本次项目比较开放,可以基于多个框架完成设计。综合各个方面因素,我决定选用Edge Impluse框架,完成宠物识别以及位置检测。并通过Home Assitant 智能家居框架,将宠物位置信息传递进Home Assitant内触发自动化指令。最终控制另一个基于ESP32S3的无线音箱进行语音信息的播放。

本项目主要完成以下功能:

a)根据整体设计,完成整体系统设计。完成硬件对应电缆的连接。

b)使用Edge Impluse完成宠物特征提取、图像识别检测框架建立、位置信息转换到GPIO电平输出。

c)使用Home Assitant框架,接收ESP32-C3 开发版本的电平信息。发送话音到ESP32-S3 无线音箱。并编制自动化脚本,完成自动语音播放。

 

2 整体设计思路


整体上根据设计要求,需要完成宠物位置识别,并发出语音指令引导其动作的功能。其中需要使用XIAO ESP32S3 Sense 开发板作为数据处理单元,完成宠物图像识别、位置检测、检测结果输出功能。使用一片ESP32C3 开发板模块完成GPIO电平信息传输。使用一片ESP32S3 开发板完成无线音箱,并在Home Assitant 框架内实现信息的集中、处理、并完成自动化触发任务,最终实现了一个能够检测宠物位置、发出语音指令对宠物的行为进行纠正的系统。下图为最终实现的使用效果。

图1


2.1 硬件部分简介

根据寒假一起练项目此项目的硬件,使用了一片XIAO ESP32S3 Sense 开发板,使用Edge Impluse框架,完成宠物识别以及位置检测。检测结果通过两个GPIO输出至ESP32C3 开发板,完成GPIO电平信息传输。使用一片ESP32S3 开发板完成无线音箱。

下图为实现的硬件框架图


图2


基本上整个项目中硬件相关的地方并不多,这里针对本项目进行的两项有修改的地方截图说明如下:

图3

这里从XIAO开发板引出了四根电缆焊接到ESP32C3开发板上。分别是电源、地、Land区域指示、Water区域指示四根信号。这里使用XIAO开发板的GPIO 8/9 两个端口。对应的,ESP32C3里面使用了GPIO 4/5 。这些信息需要记录下来,接下来在对应的程序编写环节需要使用到。

图4

这里使用杜邦线,连接MAX98357功放板,和一只喇叭。完成了一个可以被Home Assistant识别的媒体播放设备。


3. 软件分模块详细介绍


软件部分主要使用Edge Impluse框架,完成宠物识别以及位置检测。并通过Home Assitant 智能家居框架,将宠物位置信息传递并触发自动化指令。最终控制另一个基于ESP32S3的无线音箱进行语音信息的播放。下面针对两部分分别进行详细叙述。


3.1 基于Edge Implues 的图像识别框架建立与使用简述

   根据项目设计需求,软件需要使用Edge Implues 框架完成图像识别功能。此框架是一个嵌入式AI框架,可以运行在多种嵌入式CPU平台上面,其中包括本项目用到的ESP32-S3处理器。通过注册网站,可以基本按照以下顺序完成宠物图像识别的任务,下面详细描述。

首先需要准备需要识别的宠物(这里采用了一个青蛙小玩具代替)的若干不同角度、不同大小的图片库。并将图片库按照80%/20%的比例分为训练组、测试组。本例子使用35张左右作为训练图片,10张作为测试组。一开始时候使用了猴子、青蛙两个小玩具,后期使用的时候发现猴子玩具的识别率比较低。就只留下青蛙作为待识别对象。

图5

准备好之后,登录Edge Impluse网站,按照对象识别的流程完整的新建一个过程。基本的步骤分为上传待训练、待测试的图片数据集,并进行图像特征提取。提取完毕之后,使用FOMO V2.0.1进行模型训练。

图6

训练结束后,会使用测试数据集进行识别率测试。在识别率大于95之后,就可以基本认为识别正确了。此时可以点击最后的Deploy 生成源码包,合并到主程序。本项目我选择最简单的Arduino 库包进行生成。

图7

生成的库文件,已经直接包含了当前训练过的识别网络。并且提供了ESP32 Camara的 Demo程序。这里我们需要做的是在这个Demo程序的基础上,增加识别青蛙玩具frog位置的判断语句,并将其输出到Seeed XIAO ESP32开发板的引脚上面。如图6所示是判断以及管脚digitalWrite函数的执行过程。

图8

至此,Seeed XIAO ESP32-S3开发板已经能够完整的完成图像识别以及输出至GPIO 8/9 的工作。并且此部分的工作是完全离线的,全部在XIAO 开发板内完整的运行。


3.2 Home Assitant家居自动化系统的设计与实现

Home Assistant 是一款在 Python 3 上运行的家庭自动化平台。能够跟踪和控制家庭中的所有设备,并提供自动化控制平台。通常我们有多种安装的方案,我这里使用了在x86虚拟机上面直接运行一个x86 的Home Assitant OS来搭建。

本项目主要用到ESP32C3/ESP2S3两种类型的开发板,完成识别结果的传输以及语音指令的输出两个任务,那么首先需要安装的是ESPHome加载项。

图9

完成后,后续的添加操作,都是在ESPHome加载项菜单内完成进一步的增加。这里我们需要增加基于ESP32-C3的一个GPIO板以及基于ESP32S3的音频播放器板的两个模块。

图10

增加完毕模块后,首先进行程序的编写。Home Assitant中使用 yaml脚本进行描述。这里列出GPIO 部分,以及I2S 模块部分如下:

图11

图12

增加了这两个模块后,在主界面仪表板中就可以看到播放器和GPIO 传感器的状态了,并且可以看到传感器的状态,是随着宠物的位置状态进行变更了。

图13


之后需要完成的,是根据传感器“Sensor_Land/Water”的状态,设置“自动化“操作,来完成的。在收到Sensor_Land的操作之后,发出陆地的提示声音。收到Sensor_Water的状态后,发出水中的提示声音。来完成对宠物的语音指令。

图14

至此,整个系统的搭建就已经结束了,这也是我第一次接触Edge Impluse 和 Home Assitant,完成项目的中间有很多名词使用不当的地方还请大家多多见谅。


4 总结


整体上,本设计可以完成宠物位置识别,并发出语音指令引导其动作的功能。感谢Seeed Studio ,本设计使用了其 XIAO ESP32S3 Sense 开发板作为数据处理单元,完成宠物图像识别、位置检测、检测结果输出功能。使用一片ESP32C3 开发板模块完成GPIO电平信息传输。使用一片ESP32S3 开发板完成无线音箱,并在Home Assitant 框架内实现信息的集中、处理、并完成自动化触发任务,最终实现了一个能够检测宠物位置、发出语音指令对宠物的行为进行纠正的系统。

本项目同步发布于:https://www.hackster.io/tinysdr/pet-recognition-and-speech-correction-system-design-281644

感谢硬禾学堂,感谢Seeed Studio, 希望能够再有机会参加活动!

 

附件下载
ei-fmv2-arduino-1.0.1.zip
图像识别模型Arduino库
ESP32_GPIO.yaml
作为GPIO扩展模块的程序代码,用来和HomeAssitant通信
ESP32_Speaker.yaml
作为无线音频播放器的扩展模块的程序代码,用来和HomeAssitant通信
团队介绍
电子工程师,业余无线电爱好者一枚。纯属爱好~~玩
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号