cszzlsw 发表于 2024-10-31 21:14

【2024DigiKey创意大赛】基于AIOT的智能家居设备开发,作品提交贴

本帖最后由 cszzlsw 于 2024-10-31 21:17 编辑

<h1 contenteditable="false" data-block-type="text" data-node-type="block" id="_a568ssgm">&nbsp;</h1>

<p style="text-align: center;"><span style="font-size:18px;"><strong>【2024DigiKey创意大赛】基于AIOT的智能家居设备开发</strong></span></p>

<p style="text-align: right;"><span style="font-size:18px;"><strong>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 作者:cszzlsw</strong></span></p>

<p align="center">&nbsp;</p>

<p align="right">&nbsp;</p>

<p><b>一、作品简介</b><br />
本项目为基于AIOT的智能家居设备开发,其中系统一个主控板为RaspberryPi5,作为整个系统的网关,同时兼具家用智能门锁的用途,支持用语音指令开门。</p>

<p>ESP32-S3-DEVKITC-1-N8R8作为智能灯光,门锁设备的主控,充当家用电器的角色,可以接收树莓派主控发出的命令,达到开门和开灯的效果。</p>

<p>本作品发布前有两篇文档在本站,可移步观看:</p>

<p><a href="https://bbs.eeworld.com.cn/thread-1294391-1-1.html" target="_blank">https://bbs.eeworld.com.cn/thread-1294391-1-1.html</a>&nbsp;&nbsp;<a href="https://bbs.eeworld.com.cn/thread-1294391-1-1.html" target="_blank">【2024 DigiKey创意大赛】1.树莓派5驱动ILI9488图像显示</a></p>

<p><a href="https://bbs.eeworld.com.cn/thread-1296597-1-1.html" target="_blank">https://bbs.eeworld.com.cn/thread-1296597-1-1.html</a>&nbsp;&nbsp;<a href="https://bbs.eeworld.com.cn/thread-1296597-1-1.html" target="_blank">【2024 DigiKey创意大赛】第二弹,树莓派驱动6+1micArray的LED灯</a></p>

<p>智能语音网关产品设备展示:</p>

<p> &nbsp;</p>

<p>智能家居门锁设备展示:</p>

<p> &nbsp;</p>

<p>该产品所使用的物料如下:</p>

<table style="border-collapse:collapse; border:none">
        <tbody>
                <tr>
                        <td style="border-bottom:1px solid #b9bfc8; background-color:#8db3e2; border-top:1px solid #b9bfc8; border-right:1px solid #b9bfc8; border-left:1px solid #b9bfc8" valign="center">
                        <p>物料名称</p>
                        </td>
                        <td style="border-bottom:1px solid #b9bfc8; background-color:#8db3e2; border-top:1px solid #b9bfc8; border-right:1px solid #b9bfc8; border-left:none" valign="center">
                        <p>型号</p>
                        </td>
                        <td style="border-bottom:1px solid #b9bfc8; background-color:#8db3e2; border-top:1px solid #b9bfc8; border-right:1px solid #b9bfc8; border-left:none" valign="center">
                        <p>功能</p>
                        </td>
                        <td style="border-bottom:1px solid #b9bfc8; background-color:#8db3e2; border-top:1px solid #b9bfc8; border-right:1px solid #b9bfc8; border-left:none" valign="center">
                        <p>备注</p>
                        </td>
                </tr>
                <tr>
                        <td style="border-bottom:1px solid #b9bfc8; border-top:none; border-right:1px solid #b9bfc8; border-left:1px solid #b9bfc8" valign="center">
                        <p>树莓派5</p>
                        </td>
                        <td style="border-bottom:1px solid #b9bfc8; border-top:none; border-right:1px solid #b9bfc8; border-left:none" valign="center">
                        <p>Raspberry Pi 5</p>
                        </td>
                        <td style="border-bottom:1px solid #b9bfc8; border-top:none; border-right:1px solid #b9bfc8; border-left:none" valign="center">
                        <p>智能网关,智能语音识别主控</p>
                        </td>
                        <td style="border-bottom:1px solid #b9bfc8; border-top:none; border-right:1px solid #b9bfc8; border-left:none" valign="center">
                        <p>&nbsp;</p>
                        </td>
                </tr>
                <tr>
                        <td style="border-bottom:1px solid #b9bfc8; border-top:none; border-right:1px solid #b9bfc8; border-left:1px solid #b9bfc8" valign="center">
                        <p>MicArray</p>
                        </td>
                        <td style="border-bottom:1px solid #b9bfc8; border-top:none; border-right:1px solid #b9bfc8; border-left:none" valign="center">
                        <p>Sipeed 6+1 MicArray</p>
                        </td>
                        <td style="border-bottom:1px solid #b9bfc8; border-top:none; border-right:1px solid #b9bfc8; border-left:none" valign="center">
                        <p>麦克风阵列</p>
                        </td>
                        <td style="border-bottom:1px solid #b9bfc8; border-top:none; border-right:1px solid #b9bfc8; border-left:none" valign="center">
                        <p>收集声音,酷炫彩灯</p>
                        </td>
                </tr>
                <tr>
                        <td style="border-bottom:1px solid #b9bfc8; border-top:none; border-right:1px solid #b9bfc8; border-left:1px solid #b9bfc8" valign="center">
                        <p>音频模块</p>
                        </td>
                        <td style="border-bottom:1px solid #b9bfc8; border-top:none; border-right:1px solid #b9bfc8; border-left:none" valign="center">
                        <p>WM8960 Audio HAT</p>
                        </td>
                        <td style="border-bottom:1px solid #b9bfc8; border-top:none; border-right:1px solid #b9bfc8; border-left:none" valign="center">
                        <p>音频编解码</p>
                        </td>
                        <td style="border-bottom:1px solid #b9bfc8; border-top:none; border-right:1px solid #b9bfc8; border-left:none" valign="center">
                        <p>负责声音收集以及语音播放</p>
                        </td>
                </tr>
                <tr>
                        <td style="border-bottom:1px solid #b9bfc8; border-top:none; border-right:1px solid #b9bfc8; border-left:1px solid #b9bfc8" valign="center">
                        <p>ESP32模组</p>
                        </td>
                        <td style="border-bottom:1px solid #b9bfc8; border-top:none; border-right:1px solid #b9bfc8; border-left:none" valign="center">
                        <p>ESP32-S3-WROOM-1</p>
                        </td>
                        <td style="border-bottom:1px solid #b9bfc8; border-top:none; border-right:1px solid #b9bfc8; border-left:none" valign="center">
                        <p>智能家电设备主控</p>
                        </td>
                        <td style="border-bottom:1px solid #b9bfc8; border-top:none; border-right:1px solid #b9bfc8; border-left:none" valign="center">
                        <p>主控带一颗SK型号的RGB灯光,可实现彩灯效果</p>
                        </td>
                </tr>
                <tr>
                        <td style="border-bottom:1px solid #b9bfc8; border-top:none; border-right:1px solid #b9bfc8; border-left:1px solid #b9bfc8" valign="center">
                        <p>OLED显示屏</p>
                        </td>
                        <td style="border-bottom:1px solid #b9bfc8; border-top:none; border-right:1px solid #b9bfc8; border-left:none" valign="center">
                        <p>SSD1306</p>
                        </td>
                        <td style="border-bottom:1px solid #b9bfc8; border-top:none; border-right:1px solid #b9bfc8; border-left:none" valign="center">
                        <p>显示设备的名称和时间等信息</p>
                        </td>
                        <td style="border-bottom:1px solid #b9bfc8; border-top:none; border-right:1px solid #b9bfc8; border-left:none" valign="center">
                        <p>&nbsp;</p>
                        </td>
                </tr>
                <tr>
                        <td style="border-bottom:1px solid #b9bfc8; border-top:none; border-right:1px solid #b9bfc8; border-left:1px solid #b9bfc8" valign="center">
                        <p>门锁舵机</p>
                        </td>
                        <td style="border-bottom:1px solid #b9bfc8; border-top:none; border-right:1px solid #b9bfc8; border-left:none" valign="center">
                        <p>SG90</p>
                        </td>
                        <td style="border-bottom:1px solid #b9bfc8; border-top:none; border-right:1px solid #b9bfc8; border-left:none" valign="center">
                        <p>调整舵机转向角实现开关门的效果</p>
                        </td>
                        <td style="border-bottom:1px solid #b9bfc8; border-top:none; border-right:1px solid #b9bfc8; border-left:none" valign="center">
                        <p>&nbsp;</p>
                        </td>
                </tr>
                <tr>
                        <td style="border-bottom:1px solid #b9bfc8; border-top:none; border-right:1px solid #b9bfc8; border-left:1px solid #b9bfc8" valign="center">
                        <p>蜂鸣器</p>
                        </td>
                        <td style="border-bottom:1px solid #b9bfc8; border-top:none; border-right:1px solid #b9bfc8; border-left:none" valign="center">
                        <p>MH-FDM</p>
                        </td>
                        <td style="border-bottom:1px solid #b9bfc8; border-top:none; border-right:1px solid #b9bfc8; border-left:none" valign="center">
                        <p>发出音乐,提醒已开锁或关锁</p>
                        </td>
                        <td style="border-bottom:1px solid #b9bfc8; border-top:none; border-right:1px solid #b9bfc8; border-left:none" valign="center">
                        <p>&nbsp;</p>
                        </td>
                </tr>
        </tbody>
</table>

<p>&nbsp;</p>

<p><b>二、系统框图</b><br />
<b>该系统对应的功能流程图如下:</b></p>

<p> &nbsp;</p>

<p>各元器件最终组成的产品场景及工作逻辑如下图:</p>

<p> &nbsp;</p>

<p><b>三、各部分功能说明</b></p>

<p>本产品分为智能网关部分和智能门锁灯光部分</p>

<ol>
        <li>智能网关的代码架构</li>
</ol>

<p>智能网关代码采用python编写,整体为了更高的效率和灵活性,全部采用多线程模型,将每个环节的工作任务抽象成对应的线程,然后线程之前用消息队列和事件的方式来进行数据的传递和多线程的线程同步.</p>

<p align="center"> &nbsp;</p>

<p align="center">&nbsp;</p>

<p>采用这种架构的好处是比较灵活,可以通过事件和队列实现整体线程的运行把控,比如语音听写之后,发现是智能家居指令的话,直接往语音tts队列发送数据即可,相比传统的单线程瀑布式流程更加方便.劣势的地方在于线程比较多的话,对于线程的时序把控需要非常精细,因为讯飞的tts语音听写采用的webSocket的方式,要求在有消息时再建立连接,如果连接上之后10s没有数据传输会被强制断开,所以实现webSocket的按需创建也是比较关键的.</p>

<ol start="2">
        <li>智能门锁的代码架构</li>
</ol>

<p>智能门锁主要管理网络,屏幕以及开关锁就开关灯,采用MicroPython的方式编写代码,整体流程如下:</p>

<p align="center"> &nbsp;</p>

<p>智能门锁的程序相对简单,采用MicroPython对于开发项目也有一定的优势,包括代码简单,开发迅速,调试也方便,不需要不停地去烧录系统然后查看日志,同时MicroPython也有相当多的第三方驱动库可以使用。同时MicroPython还有可移植性好的特性,可以很方便的将程序迁移到其他的开发板上去。</p>

<p><b>硬件连接方式:</b></p>

<ol>
        <li>关连接线示意图:</li>
</ol>

<p align="center"> &nbsp;</p>

<p>RPI5是整体系统的主控,连接WM8960扩展HAT可以完成语音的录音以及播放,基于树莓派而设计的音频模块,采用WM8960低功耗立体声编解码器,通过I2C接口控制,I2S接口传输音频。板载标准3.5mm耳机接口,可通过外接耳机播放音乐,同时也可通过双通道喇叭接口外接喇叭播放。板子左右两边有一个高质量MEMS硅麦克风,可以立体声录音。</p>

<p>麦克风阵列模块是 Sipeed 基于 MSM261S4030H0 数字麦克风芯片设计的,模块声音识别灵敏度、信噪比高,由沿板的六个麦克风和一个中心的麦克风组成,阵列板上的 12 颗 LED 可以用来可视化识别声源方位,基于&nbsp;GCC-PHAT&nbsp;算法实现声源定位、语音识别、波束成形等需求场合。</p>

<p>完成接线之后,可以点亮阵列的灯光:</p>

<p align="center"> &nbsp;</p>

<p>&nbsp;</p>

<p>智能家居设备产品硬件连接示意:</p>

<p> &nbsp;</p>

<p>ESP32-S3-DevKitC-1是一款入门级开发板,搭载Wi-Fi+Bluetooth&reg; LE模组,板上模组的大部分管脚均已引出至开发板两侧排针,开发人员可根据实际需求,轻松通过跳线连接多种外围设备,也可将开发板插在面包板上使用。</p>

<ol>
        <li>关于ssd1306的OLED屏幕:</li>
</ol>

<p>ssd1306的参数如下:</p>

<p align="center"> &nbsp;</p>

<ol start="2">
        <li>关于舵机:</li>
</ol>

<p>在机器人机电控制系统中,舵机控制效果是性能的重要影响因素。舵机可以在微机电系统和航模中作为基本的输出执行机构,其简单的控制和输出使得单片机系统非常容易与之接口。舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。其工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为 20ms,宽度为 1.5ms 的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为 0,电机停止转动。</p>

<p align="center"> &nbsp;</p>

<ol start="3">
        <li>关于蜂鸣器,无源蜂鸣器特点:</li>
</ol>

<ol start="12" style="list-style-type:lower-alpha">
        <li value="50">无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。</li>
        <li value="50">声音频率可控,可以做出&ldquo;多来米发索拉西的效果。必须用2K~5K的方波去驱动它3在一些特例中,可以和LED复用一个控制口</li>
</ol>

<p>&nbsp;</p>

<p><b>四、作品源码</b></p>

<p><b>源码已上传到下载中心:<a href="https://download.eeworld.com.cn/detail/cszzlsw/634858" target="_blank">https://download.eeworld.com.cn/detail/cszzlsw/634858</a></b></p>

<p> &nbsp;</p>

<p><b>源码说明:</b></p>

<p>smartAI.py和xfcommon.py为树莓派的代码</p>

<p>其他为ESP32的MicroPython代码</p>

<p>&nbsp;</p>

<p><b>五、</b><b>作品功能演示视频</b></p>

<p>以下为我的作品演示:</p>

<p><iframe allowfullscreen="true" frameborder="0" height="450" src="https://training.eeworld.com.cn/shareOpenCourseAPI?isauto=true&amp;lessonid=41498" style="background:#eee;margin-bottom:10px;" width="700"></iframe><br />
&nbsp;</p>

<p><b>六、项目总结</b></p>

<p>非常感谢主办方提供参加活动的机会,通过本次活动,学习了树莓派的一些操作和音视频的操作方式,特别是掌握了录音和播放录音的方式,以及如果通过讯飞开发平台进行语音听写,语音转写以及调用讯飞星火大模型的方式。同时ESP32-S3也为智能家居小家电产品提供了产品开发思路,学习了如何烧录MicroPython系统,以及使用MicroPython方式开发产品固件。</p>

<p>本次实验由于时间仓促,尚未解决以下几个问题:1.树莓派产品的功能界面显示 2.讯飞语音系统的语音唤醒功能 3.ESP32门锁增加输入密码的功能。希望在以后能够有多的时间完善以上几个问题。</p>

<p><b>七、其他</b></p>

<p><b>附件为word版文档:</b></p>

<div></div>

wangerxian 发表于 2024-10-31 23:07

你这一套流程还挺复杂的,厉害~
页: [1]
查看完整版本: 【2024DigiKey创意大赛】基于AIOT的智能家居设备开发,作品提交贴