【国民技术N32项目移植】基于N32G4FR和小度音响的智能家庭中枢控制系统
1 前言如今,智能化的设备慢慢走进了千家万户,大大提升了人民生活的智能化,但是随之而来的是各种智能设备无法互联互通,形成了一片片信息孤岛,这就迫切需要一个中枢控制系统来接管这些零散的智能设备。 众观市场上的各种智能音响,小度音响凭借其优异的市场表现,占据了很大一块市场份额,使得“小度小度,现在几度”成为了家庭中很常见的交互问候语。 有这么一个设想,如果能把零散的智能设备,通过某种智能的方式接入一个中枢控制系统,而这个系统与小度音响直接打通,这样跟小度直接对话就能操作这些智能设备,这应该是一件很有市场前景的事,而本项目就是着力于实现这样的一个解决方案。 2 项目简介2.1 项目名称基于N32G4FR和小度音响的智能家庭中枢控制系统 2.2 设计思路本项目主要使用N32G4FR作为端侧的核心控制器,外加一个传感器器件、控制器件,实现与云端互通;同时集成对接小度智能音响,实现通过语音调度和控制家庭环境是智能设备。这里的智能设备包含有智能灯、智能空调、温湿度传感器等等。 2.3 主要解决的问题家庭中的智能设备越来越多,一个集中式的智能家庭中枢控制系统迫在眉睫,旨在解决所有智能设备的调度和控制问题,为智能生活提供便利。 2.4 项目创新点主要是设备端各项传感器器件和控制器件的集成,以及与小度音响的直连互通。 2.5 N32移植的初衷本项目初期是想在ESP32上实现的,后来看到本开源大赛,想着把此方案移植过来,也借此机会再次学习学习国民技术的N32系列芯片。 3 系统架构介绍3.1 系统核心架构图整个系统的核心架构图如下所示: 从上面这个核心架构图中,我们可以看到整个IoT系统组成,包括智能设备终端侧、巴法云物联网平台、小度云平台、小度音箱等等。下面就整个系统的几大重要组件,我会一一进行简要讲解。 3.2 终端侧终端侧主要承载的是对巴法云平台的对接,接收云平台下发的控制指令,同时做一些边缘侧的应用逻辑处理,还需要具备对外网络的通讯能力,保持与巴法云平台的MQTT长链接。 终端侧包括的核心组件有:国民技术的N32G4FR,搭载的是国产实时操作系统 RT-Thread,同时外设板载有 ESP8266 Wi-Fi通讯模组、红外发射器、继电器(GPIO模拟)等等。 终端侧不仅包含设备硬件,还需要对应的固件软件,两者相辅相成,共同完成终端侧的功能逻辑。 3.3 后端侧后端侧,其实没有真正的开发工作,仅仅是登录巴法云平台后台,配置MQTT板块,然后生成【智能空调】和【智能灯】两个设备,以便于终端侧和小度音响识别。 3.4 移动端这里说的移动端,特指小度APP;其实这里面也没有开发工作,当你的小度APP账号登录之后,它有一个操作步骤可以加入基于巴法云平台的【智能设备】,按照说明添加成功后,就可以在小度APP上看到巴法云平台对应的设备列表了。 **详细的绑定操作步骤,见 此文的第二部分 **。 4 系统设计说明4.1 硬件部分
这块芯片整体的资源还是比较丰富的,它是N32G4FR系列(指纹专用型),采用32 bit Arm® Cortex®-M4F内核,内置10余种密码算法硬件加速引擎,集成大容 量加密Flash存储器,支持指纹信息安全存储,支持市场主流半导体指纹及光学传指纹感器,集成多达18个数字 通讯接口及4个模拟接口。 它的具体接口资源展示如下: 在我的项目中,我主要使用它的以下几个外设资源: 1)UART1:RT-Thread的终端调试串口; 2)UART2:用于连接串口WI-Fi模块ESP8266,实现网络通讯能力; 3)UART4:用于连接红外收发器,本次项目中主要使用其红外发射功能;红外发射主要用于控制外部的空调; 4)GPIO:PB4用作系统工作状态显示灯,PA8用于控制智能灯开关。 以下是我的实物连接示意图:
本次参赛,我采用了我惯用的Wi-Fi通讯模组ESP8266,非常的便捷,借助RT-Thread的软件包,基本无需编写任何代码,就可以实现网络能力;当然串口通讯还是需要配置一下,只不过不用谢代码而已。 我这里使用的搭建ESP8266 Wi-Fi芯片的模组ESP-12F,它是由安信可科技开发的,该模块核心处理器 ESP8266 在较小尺寸封装中集成了 业界领先的 Tensilica L106 超低功耗 32 位微型 MCU,带有 16 位精简模式,主频支持 80 MHz 和 160 MHz,支持 RTOS,集成 Wi-Fi MAC/ BB/RF/PA/LNA,板载天线。
本模块集成了以下几部分: 红外发射头:用于发射红外信号, 波长为940nm 38k NEC编码信号的发射; 红外接收头:用于接收 NEC 红外信号, 进而单片机进行分析解码操作; 红外头扩展: 该接口为红外发射头的扩展, 可以连接多个红外发射头( 常称红外发射模块) , 用于安放到不同的位置实现多方位控制; UART 单片机串口通信接口:该端口为单片机串口( TTL) , 作为与外界单片机的通信桥梁, 其默认设置的波特率为9600bps; 使用单片机的串口就可以与之对接,非常的方便。
目前这一块的接入,采用的是GPIO做模拟,并没有实际接入继电器,但已经完全可以实现其操作原理。 其中,PB4用作系统工作状态显示灯,PA8用于控制智能灯开关。 4.2 软件部分整个软件部分的开发主要就是终端固件开发,主要包括四大部分:N32G4FR的原厂BSP、RT-Thread实时操作系统、ESP8266相关的配置代码使能、个性化的应用逻辑代码。 其中N32G4FR的原厂BSP基本不动,原厂和相关开发者已经适配好了;通用的RT-Thread操作系统的代码也不在此处的修改中,直接复用已有的代码,这里使用的版本是 4.1.1 。 ESP8266相关的AT、网络组件代码也是现成的,使能配置之后就可以直接用了,还是非常的方便。 除了AT相关的软件包代码外,我还使用了 paho-mqtt 这个软件包,这个软件包主要封装了MQTT协议的实现技术细节,开放了一些灵活好用的API给到应用层,以便于提供MQTT的通讯能力。 还有一个cJSON的软件包,这里也使用到了,它用于做一些上下行数据包的解析和封装,主要原因是需要解析一些与云平台对接的数据协议,这就要求终端必须具备解析JSON数据的能力。 所以这里重点讲一下,应用逻辑的代码:主要包括红外收发器的控制、GPIO的控制等,而这些控制信号的输入,都是来源于巴法云平台的下发,而巴法云平台的联动下发则来源于用户对小度音响的语音控制输入。 以下是终端软件应用逻辑部分的层次图: 其中: Wi-Fi线程 :由于在RT-Thread中AT组件是开启后,默认就跑起来了,而在应用层暂时没有一个比较好的方式感知网络能力的建立,所以这里新建了一个线程,用于实时检查网络通讯能力;当网络通讯能力已建立时,通过信号量的方式,通知其他模块。 Smart Home MQTT线程 :主要负责跟巴法云物联网平台进行对接,采用的MQTT通讯协议,它的运行,依赖于基础网络能力的建立;当它与巴法云物联网平台建立联系时,它就可以接收平台的控制指令下发,比如开关空调或开关照明灯等; 红外接收处理线程 :该线程主要用于接收外部的标准NEC红外信号,此功能本项目暂时未实际使用,仅用于学习若干红外遥控器的键值; 系统运行展示线程 :此线程并没有参与过多的应用逻辑,仅仅是每一秒钟闪烁一下运行指示灯,表示系统正在运行中。 以上各个线程各司其职,相辅相成,共同完成智能家庭中枢控制系统的逻辑功能。 下面展示的是工程项目中的代码结构,里面的代码结构一本与上面的代码逻辑示意图保持一致。 5 项目实施过程1)熟悉国民技术N32系列MCU的基本开发资料 这一步主要是熟悉开发板的基本资源,对外设等信息有一定的概念,以便于方便后续的开发调试;同时,还需要把相关的一些官方软件给安装好,熟练使用配置工具和下载工具。 文末有好几份我当时参考的教程,基本根据上面的步骤来,很快就可以完成初始的上手操作。 这里其实就是踩坑的开始,详细的可以参见下文对踩坑的各种总结,只有第一步踩坑踩好了,才能逐步进行下面的研发活动。 2)移植RT-Thread操作系统 本次参赛,其实并不要求去移植RT-Thread,其实也要多感谢RT-Thread官方和社区的小伙伴,其实他们都已经做好了基本的移植了,只需要对照着自己的开发板资源跳调整一下即可。 有了上面的踩坑经验,直接上手RT-Thread的DEMO教程,很快就可以把操作系统跑起来了,一切都回归到熟悉的地方,研发进度再次提速。 下面就是基于RT-Thread操作系统进行编程了。 3)配置RT-Thread的软件包 由于我是采用RT-Thread Studio开发环境,而它本身就集成了配置界面,所以我直接在上面就可以做各种配置,需要再次吐槽的就是,配置完了之后生成对应的文件,实在是太慢了。 这个项目中,我使用了paho-matt软件包、AT-device软件包、CJSON软件包;的确让我的项目开发提速了不少。 4)配置巴法云物联网平台 我是参考这个 esp8266接入小度语音,小度音箱控制 来创建自己的自定义产品的,并实现与小度音箱的绑定的。 基本上以上4步完成后,终端就可以很顺利地连上巴法云物联网平台了,而这期间基本就是零代码,全部都归功于RT-Thread灵活的代码配置工具,非常地赞。 5)调试外设驱动 这里主要是调试各种驱动接口,包括红外发射器的UART接口、照明灯开关的GPIO控制。 在调试过程中,一般一个个模块来,避免模块直接的干扰,这样可以有效地加快开发速度。 需要注意的是,N32系列的BSP在适配RT-Thread的时候,采用的都是V1版本的串口驱动,所以大家在使用串口接口的时候,一定要记得使用V1接口。 等到各个功能模块完成后,统一串起来跑一跑,确保没有问题。 6)全功能自测 到了这一步,基本功能开发就已经完成了,需要将终端设备的功能与云端能力联系起来调试,比如对小度音箱进行控制语音输入,看一下巴法云平台能否推送对应的控制消息下来,同时看下终端能否对控制消息进行合理的处理,比如控制空调开关或者控制照明开关等。 7)准备结项资料 项目收尾的最后,需要准备各种结项资料,包括项目稳定、演示视频、各种实物图片等等。 6 项目效果显示6.1 功能描述本期项目中,已实现以下功能:
6.2 图片展示以下是项目的部分图片展示:
6.3 视频展示视频展示部分,已更新,见硬声平台, 戳这里 视频中基本演示了,通过小度音箱输入控制指令,进而达到控制终端器件(空调或智能灯)的目的。 视频可见文末展示 。 6.4 代码开源**本参赛项目的源代码已全面开源在 这里 ** **其中应用部分的代码在 n32-iot-xiaodu-smart-home/tree/master/applications ** 有关项目源代码的事情,也可与我讨论。 7 项目复盘项目虽然即便完成了,但是有些东西还是需要好好复盘总结的。 7.1 项目踩的那些坑这一块还是比较多,我特意开了一个帖子来总结,参加这里: /jishu_2337568_1_1.html 7.2 项目带来的启发
8 致谢本次大赛,基本还算是完全独立完成的,技术上没有请教太多小伙伴,就是在FTP资料下载的时候,请教了一个群友,感谢他提供的FTP工具,帮忙我得到了第一手官方权威资料,也使得我的参赛项目得以加速进行,再次表示感谢。 9 参考链接
10 更多分享本次项目介绍后,我还继续探索RT-Thread在各种嵌入式平台开发的可能性,并以此来要求自己输出各种关于RT-Thread、嵌入式、物联网等等热门技术话题的原创内容,欢迎大家持续关注我。 我是 架构师李肯 ( 全网同名 ), 2022年电子发烧友开云(中国)官方优秀开发者、2022年RT-Thread技术社区优秀布道者、CSDN博客专家 ,欢迎大家来交流。 ![]() 【国民技术N32项目移植】基于N32G4FR和小度音响的智能家庭中枢控制系统 |
只有小组成员才能发言,加入小组>>
2477 浏览 0 评论
2464 浏览 0 评论
【国民技术N32项目移植】半小时移植完成SPI1驱动代码&使用W5500模块进行UDP通信,十分甚至九分好用
3162 浏览 0 评论
【国民技术N32项目移植】基于N32G4FR和小度音响的智能家庭中枢控制系统
2943 浏览 0 评论
3329 浏览 0 评论
2477浏览 0评论