概括
本文向您介绍一个基于小度音响的智能家居中控系统项目。 该项目是博主架构师李肯参加国民科技与电子爱好者联合举办的N32 MCU移植挑战赛的参赛作品。 旨在解决智能化问题,希望能给大家关于家庭中控问题带来帮助和启发。
1 简介
如今,智能设备已经慢慢走进千家万户,极大地提高了人们生活的智能化程度。 但随之而来的是各种智能设备之间无法相互通信,形成信息孤岛,这是迫切需要的。 中央控制系统接管这些分散的智能设备。
在市面上的各类智能音箱中,小度音箱凭借出色的市场表现占据了较大的市场份额,让“小度小度,现在多少度”成为了家庭中非常常见的互动问候语。
有这样一个想法,如果分散的智能设备可以通过某种智能的方式连接到一个中央控制系统,并且这个系统直接连接到小度音响,这样你就可以通过直接与小度对话来操作这些智能设备,这样就可以了应该是一个很有市场前景的东西,本项目就是致力于实现这样一个解决方案。
2 项目简介
2.1 项目名称
基于禾小都音响的智能家居中央控制系统
2.2 设计思路
本项目主要采用核心控制器作为端侧,加上传感器设备和控制设备来实现与云端的互操作。 同时集成对接小度智能音箱,实现作为智能设备对家庭环境的语音调度和控制。 这里的智能设备包括智能灯、智能空调、温湿度传感器等。
2.3 解决的主要问题
家庭中的智能设备越来越多,集中式的智能家居中控系统迫在眉睫,旨在解决所有智能设备的调度和控制问题,为智能生活提供便利。
2.4 项目创新点
主要是设备侧各种传感器设备和控制设备的集成,以及与小度音频的直接连接和互通。
2.5 N32移植的初衷
在这个项目之初,我想在ESP32上实现它。 后来看到这个开源竞赛,就想到了移植这个方案。 我也借此机会再次了解了国技的N32系列芯片。
3 系统架构介绍
3.1 系统核心架构图
整个系统的核心架构图如下:
从上面的核心架构图我们可以看到整个物联网系统的构成,包括智能设备终端侧、巴法云物联网平台、小度云平台、小度音箱等。下面是整个系统的几个重要组成部分,我将一一简单解释一下。
3.2 终端侧
终端侧主要承载与Baffa云平台的连接,接收云平台下发的控制指令,在边缘侧做一些应用逻辑处理。 它还需要具有与外部网络通信的能力以及与Baffa云平台维护MQTT的能力。 长链接。
终端侧包含的核心部件为:国技,搭载国产实时操作系统RT-,外围板配备Wi-Fi通讯模块、红外发射器、继电器(GPIO模拟)等。
终端侧不仅包括设备硬件,还需要相应的固件软件。 两者相辅相成,共同完成终端侧的功能逻辑。
3.3 后端侧
在后端方面,实际上并没有真正的开发工作。 只需登录巴法云平台后端,配置MQTT模块,然后生成【智能空调】和【智能灯】两个设备,方便终端侧和小度音响识别。
3.4 移动终端
这里所说的移动端特指小度APP; 事实上,这里并没有开发工作。 使用小度APP账号登录后,有一个基于巴法云平台添加【智能设备】的操作步骤。 按照提示添加成功后,您可以在小度APP上看到巴法云平台对应的设备列表。
详细的绑定操作步骤请参见本文第二部分。
4 系统设计说明
4.1 硬件部分
MCU主控:民族技术主控
这个芯片的整体资源还是比较丰富的。 它是一个系列(指纹专用),采用32位Arm-M4F内核,内置10余种密码算法硬件加速引擎,集成大容量加密Flash存储器,支持指纹信息的安全存储。 ,支持市场主流的半导体指纹和光学指纹传感器,集成多达18个数字通信接口和4个模拟接口。
其具体接口资源如下所示:
在我的项目中,我主要使用了以下外围资源:
UART1:RT-的终端调试串口;
UART2:用于连接串口WI-Fi模块,实现网络通信能力;
UART4:用于连接红外收发器,本项目主要使用其红外发射功能; 红外发射主要用于控制外部空调;
GPIO:PB4用于显示系统工作状态,PA8用于控制智能灯开关。
以下是我的物理连接图:
无线网络模块:
这次比赛我用的是我常用的Wi-Fi通讯模块,非常方便。 借助RT-的软件包,我无需编写任何代码即可实现网络功能。 当然,串行通信仍然需要配置,但是不用了,谢谢,只需代码即可。
我用来构建 Wi-Fi 芯片的模块 ESP-12F 是由 开发的。 该模块的核心处理器在更小的封装中集成了业界领先的L106超低功耗32位微型MCU。 ,采用16位精简模式,主频支持80MHz和,支持RTOS,集成Wi-Fi MAC/ BB/RF/PA/LNA,板载天线。
红外编解码模块(YS-IRTM)
该模块集成了以下几个部分:
可以使用单片机的串口来连接,非常方便。
GPIO控制:
目前这部分的接入采用GPIO进行模拟。 没有实际接触到继电器,但可以完全实现其工作原理。
其中PB4用作系统工作状态指示灯,PA8用于控制智能灯开关。
4.2 软件部分
整个软件部分的开发主要是终端固件的开发,主要包括四个部分:原始BSP、RT-实时操作系统、相关配置代码使能、个性化应用逻辑代码。
原BSP基本不变,经过原厂商及相关开发者的适配; 这里的修改不包括通用RT操作系统的代码,直接复用现有代码。 这里使用的版本是4.1.1。
相关的AT和网络组件代码也都是现成的。 启用配置后就可以直接使用音箱接口fr,非常方便。
除了AT相关的软件包代码之外,我还使用了paho-mqtt软件包。 该软件包主要封装了MQTT协议的实现技术细节,并向应用层开放了一些灵活易用的API,方便MQTT的提供。 通讯能力。
还有一个cJSON软件包,这里也使用它。 用于解析和封装一些上下行数据包。 主要原因是需要解析一些与云平台接口的数据协议,这就要求终端能够解析JSON数据。 能力。
那么这里我们重点关注应用逻辑代码:主要包括红外收发器的控制、GPIO控制等,而这些控制信号的输入来自于Baffa云平台的下发,以及Baffa云平台的联动传递来自用户对小度音频的语音控制输入。
以下是终端软件应用逻辑部分的层次图:
在:
Wi-Fi线程:由于RT-中的AT组件开启后默认运行,目前没有更好的方法来感知应用层网络能力的建立,所以这里新建一个线程用于实际-时间检查。 网络通讯能力; 当网络通信能力建立后,通过信号量通知其他模块。
智能家居MQTT线程:主要负责与巴法云物联网平台连接。 它使用MQTT通信协议。 其运行依赖于基础网络能力的建立; 当它与Bfa云物联网平台建立联系时,可以接收来自平台的控制指令,例如打开和关闭空调或照明;
红外接收处理线程:该线程主要用于接收外部标准NEC红外信号。 这个功能在本项目中暂时没有实际使用。 仅用于学习几个红外遥控器的按键值;
系统运行显示线程:该线程不参与太多的应用逻辑。 它只是每秒闪烁一次运行指示灯,表明系统正在运行。
上述各个线程各司其职,相互补充,共同完成智能家居中控系统的逻辑功能。
下图是项目中的代码结构。 里面的代码结构和上面的代码逻辑图是一致的。
5 项目实施过程
1)熟悉国技N32系列MCU的基本开发信息
这一步主要是熟悉开发板的基础资源,对外设等信息有一定的概念,以方便后续的开发和调试。 同时,还需要安装一些相关的官方软件,并熟练使用配置工具和下载工具。
文章最后附上了我当时参考的几个教程。 基本上按照上面的步骤我就可以很快的完成初步的操作了。
这其实就是诱捕的开始。 详细内容请参考下面各种陷印总结。 只有完成了第一步的捕获,才能逐步开展后续的研发活动。
2)移植RT操作系统
这次比赛,其实并没有要求移植RT-。 其实,我们要感谢RT-官方和社区伙伴。 事实上,他们已经完成了基本的移植。 他们只需要根据自己的开发板资源进行调整即可。 只需轻轻一按。
有了以上的坑经验,就可以直接启动RT-的DEMO教程,快速开始运行操作系统了。 一切都会回到熟悉的地方,开发进度也会再次加快。
以下是基于RT操作系统的编程。
3)配置RT-的软件包
由于我使用的是RT-开发环境,它本身就有集成的配置界面,所以我可以直接在上面进行各种配置。 再次需要抱怨的是,配置完成后生成相应文件太慢了。
在这个项目中,我使用了paho-matt软件包、AT-软件包、CJSON软件包; 它确实大大加快了我的项目开发速度。
4)配置Baffa云物联网平台
我参考此连接小度语音和小度音箱控制,打造自己的定制产品,实现与小度音箱的绑定。
基本上,完成以上四个步骤后,终端就可以顺利连接到巴法云物联网平台了,而且这段时间基本上是零代码,这一切都得益于RT-灵活的代码配置工具,非常值得称赞。
5)调试外设驱动
这里的主要目的是调试各种驱动接口,包括红外发射器的UART接口和灯光开关的GPIO控制。
在调试过程中,一般一次做一个模块,避免模块的直接干扰,可以有效加快开发速度。
需要注意的是,N32系列BSP在适配RT-时使用的是V1版本的串口驱动,所以在使用串口接口时一定要记得使用V1接口。
各个功能模块完成后,将它们连接在一起并运行,确保没有问题。
6)全功能自检
到这一步,基本功能开发已经完成。 需要将终端设备的功能与云端能力进行联动进行调试。 比如控制小度音箱的语音输入,看看Baffa云平台是否可以推送相应的控制消息。 同时检查终端是否能够合理处理控制消息,例如控制空调开关或照明开关。
7) 准备结案材料
项目结束时需要准备各种收尾材料,包括项目稳定性、演示视频、各种实物图片等。
6 项目效果展示
6.1 功能说明
在本项目中,实现了以下功能:
在巴法云后台配置智能设备:智能空调、智能灯,并可在小度APP中查看设备状态;
基于终端,实现智能家居中央控制系统的功能;
通过与小度音响进行语音对话,如【打开空调】或【关闭空调】,可以发出控制指令,终端通过红外发射器控制空调开关;
通过与小度音频进行语音对话,如【开灯】或【关灯】,可以发出控制指令。 终端通过GPIO(模拟真实场景的智能灯)控制LED。
打通本地空调状态和智能灯状态与布法罗云、小度平台的对接,实现实时控制联动。
6.2 图片显示
以下是该项目的部分图片:
固件正常识别并烧录成功
调试固件DEMO时,RT-已上电hello wolrd
查看并确认UART4的真实引脚排列
小度APP用户界面
通过巴法云添加的智能设备在小度APP上的展示
红外线控制灯具(模拟家用空调)
6.3 视频显示
视频基本演示了通过小度音箱输入控制指令来达到控制终端设备(空调或者智能灯)的目的。
6.4 代码开源
本条目的源代码已在这里完全开源
应用部分的代码位于:n32-iot--smart-home/tree//
你也可以和我讨论一下项目的源码。
7 项目评审
项目虽然完成了,但有些事情还是需要回顾和总结。
7.1 项目的缺陷
这方面的东西还是蛮多的,所以特地发了一个帖子来总结一下,在这里参与一下:
7.2 项目带来的启示
多关注同一厂家同系列不同型号之间的差异,比较异同,便于灵活选型。 有时固件程序甚至可以通用;
巴法云与小度音频的对接只是其功能之一。 它还可以连接天猫精灵、小爱同学、Alexa、音频等,可以说,一旦熟练了,也许就能开发出更智能的产品创意。 大边框;
项目中遇到问题只是抱怨是没有用的。 最好自己想办法解决。 例如,如果不清楚下载方法,请多尝试几次并掌握。 如果你在各种开发环境下都搞不清楚,那就试着想想最初发生了什么。 对于开发者来说,或许可以找到一个办法; 例如,抱怨很多工具很难使用,但这是外部因素,你必须适应它,否则你可能无法完成任务;
接触多个物联网云平台将有助于拓宽您的技术视野,甚至可能有助于和改进您的基本工作。
8 谢谢
本次比赛基本是独立完成的。 我没有向太多朋友寻求技术建议。 下载FTP数据时,向群友求助。 感谢他提供了FTP工具,帮助我获得了第一手的官方信息。 权威的信息也加速了我的入行工程。 我想再次表达我的谢意。
9 参考链接
还没有评论,来说两句吧...