国民技术
直播中

架构师李肯

12年用户 368经验值
擅长:嵌入式技术
私信 关注

【国民技术N32项目移植】基于N32G4FR和小度音响的智能家庭中枢控制系统

【国民技术N32项目移植】基于N32G4FR和小度音响的智能家庭中枢控制系统

概要

本文给大家介绍一个基于N32G4FR和小度音响的智能家庭中枢控制系统项目,该项目是博主架构师李肯参加由国民技术与电子发烧友联合举办的N32 MCU移植挑战赛的参赛项目,旨在解决智能家庭中的中枢控制问题,希望能给大家带来帮助和启发。

1 前言

如今,智能化的设备慢慢走进了千家万户,大大提升了人民生活的智能化,但是随之而来的是各种智能设备无法互联互通,形成了一片片信息孤岛,这就迫切需要一个中枢控制系统来接管这些零散的智能设备。

众观市场上的各种智能音响,小度音响凭借其优异的市场表现,占据了很大一块市场份额,使得“小度小度,现在几度”成为了家庭中很常见的交互问候语。

有这么一个设想,如果能把零散的智能设备,通过某种智能的方式接入一个中枢控制系统,而这个系统与小度音响直接打通,这样跟小度直接对话就能操作这些智能设备,这应该是一件很有市场前景的事,而本项目就是着力于实现这样的一个解决方案。

2 项目简介

2.1 项目名称

基于N32G4FR和小度音响的智能家庭中枢控制系统

2.2 设计思路

本项目主要使用N32G4FR作为端侧的核心控制器,外加一个传感器器件、控制器件,实现与云端互通;同时集成对接小度智能音响,实现通过语音调度和控制家庭环境是智能设备。这里的智能设备包含有智能灯、智能空调、温湿度传感器等等。

2.3 主要解决的问题

家庭中的智能设备越来越多,一个集中式的智能家庭中枢控制系统迫在眉睫,旨在解决所有智能设备的调度和控制问题,为智能生活提供便利。

2.4 项目创新点

主要是设备端各项传感器器件和控制器件的集成,以及与小度音响的直连互通。

2.5 N32移植的初衷

本项目初期是想在ESP32上实现的,后来看到本开源大赛,想着把此方案移植过来,也借此机会再次学习学习国民技术的N32系列芯片。

3 系统架构介绍

3.1 系统核心架构图

整个系统的核心架构图如下所示:

xiaodu-smart

从上面这个核心架构图中,我们可以看到整个IoT系统组成,包括智能设备终端侧、巴法云物联网平台、小度云平台、小度音箱等等。下面就整个系统的几大重要组件,我会一一进行简要讲解。

3.2 终端侧

终端侧主要承载的是对巴法云平台的对接,接收云平台下发的控制指令,同时做一些边缘侧的应用逻辑处理,还需要具备对外网络的通讯能力,保持与巴法云平台的MQTT长链接。

终端侧包括的核心组件有:国民技术的N32G4FR,搭载的是国产实时操作系统 RT-Thread,同时外设板载有 ESP8266 Wi-Fi通讯模组、红外发射器、继电器(GPIO模拟)等等。

终端侧不仅包含设备硬件,还需要对应的固件软件,两者相辅相成,共同完成终端侧的功能逻辑。

image-20230301003910336

3.3 后端侧

后端侧,其实没有真正的开发工作,仅仅是登录巴法云平台后台,配置MQTT板块,然后生成【智能空调】和【智能灯】两个设备,以便于终端侧和小度音响识别。

image-20230301004806833

3.4 移动端

这里说的移动端,特指小度APP;其实这里面也没有开发工作,当你的小度APP账号登录之后,它有一个操作步骤可以加入基于巴法云平台的【智能设备】,按照说明添加成功后,就可以在小度APP上看到巴法云平台对应的设备列表了。

**详细的绑定操作步骤,见 此文的第二部分 **。

image-20230301004858379

4 系统设计说明

4.1 硬件部分

  • MCU主控:国民技术的N32G4FR主控

这块芯片整体的资源还是比较丰富的,它是N32G4FR系列(指纹专用型),采用32 bit Arm® Cortex®-M4F内核,内置10余种密码算法硬件加速引擎,集成大容 量加密Flash存储器,支持指纹信息安全存储,支持市场主流半导体指纹及光学传指纹感器,集成多达18个数字 通讯接口及4个模拟接口。

它的具体接口资源展示如下:

image.png

在我的项目中,我主要使用它的以下几个外设资源:

1)UART1:RT-Thread的终端调试串口;

2)UART2:用于连接串口WI-Fi模块ESP8266,实现网络通讯能力;

3)UART4:用于连接红外收发器,本次项目中主要使用其红外发射功能;红外发射主要用于控制外部的空调;

4)GPIO:PB4用作系统工作状态显示灯,PA8用于控制智能灯开关。

以下是我的实物连接示意图:

image-20230301003621010

  • Wi-Fi模组:ESP8266

本次参赛,我采用了我惯用的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,板载天线。

ESP8266

  • 红外编解码模块(YS-IRTM)

本模块集成了以下几部分:

红外发射头:用于发射红外信号, 波长为940nm 38k NEC编码信号的发射;

红外接收头:用于接收 NEC 红外信号, 进而单片机进行分析解码操作;

红外头扩展: 该接口为红外发射头的扩展, 可以连接多个红外发射头( 常称红外发射模块) , 用于安放到不同的位置实现多方位控制;

UART 单片机串口通信接口:该端口为单片机串口( TTL) , 作为与外界单片机的通信桥梁, 其默认设置的波特率为9600bps;

使用单片机的串口就可以与之对接,非常的方便。

image-20230227131316920

  • GPIO控制

目前这一块的接入,采用的是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的控制等,而这些控制信号的输入,都是来源于巴法云平台的下发,而巴法云平台的联动下发则来源于用户对小度音响的语音控制输入。

以下是终端软件应用逻辑部分的层次图:

image-20230301005527023

其中:

Wi-Fi线程 :由于在RT-Thread中AT组件是开启后,默认就跑起来了,而在应用层暂时没有一个比较好的方式感知网络能力的建立,所以这里新建了一个线程,用于实时检查网络通讯能力;当网络通讯能力已建立时,通过信号量的方式,通知其他模块。

Smart Home MQTT线程 :主要负责跟巴法云物联网平台进行对接,采用的MQTT通讯协议,它的运行,依赖于基础网络能力的建立;当它与巴法云物联网平台建立联系时,它就可以接收平台的控制指令下发,比如开关空调或开关照明灯等;

红外接收处理线程 :该线程主要用于接收外部的标准NEC红外信号,此功能本项目暂时未实际使用,仅用于学习若干红外遥控器的键值;

系统运行展示线程 :此线程并没有参与过多的应用逻辑,仅仅是每一秒钟闪烁一下运行指示灯,表示系统正在运行中。

以上各个线程各司其职,相辅相成,共同完成智能家庭中枢控制系统的逻辑功能。

下面展示的是工程项目中的代码结构,里面的代码结构一本与上面的代码逻辑示意图保持一致。

image-20230301005833093

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灵活的代码配置工具,非常地赞。

image-20230301011746641

5)调试外设驱动

这里主要是调试各种驱动接口,包括红外发射器的UART接口、照明灯开关的GPIO控制。

在调试过程中,一般一个个模块来,避免模块直接的干扰,这样可以有效地加快开发速度。

需要注意的是,N32系列的BSP在适配RT-Thread的时候,采用的都是V1版本的串口驱动,所以大家在使用串口接口的时候,一定要记得使用V1接口。

等到各个功能模块完成后,统一串起来跑一跑,确保没有问题。

6)全功能自测

到了这一步,基本功能开发就已经完成了,需要将终端设备的功能与云端能力联系起来调试,比如对小度音箱进行控制语音输入,看一下巴法云平台能否推送对应的控制消息下来,同时看下终端能否对控制消息进行合理的处理,比如控制空调开关或者控制照明开关等。

7)准备结项资料

项目收尾的最后,需要准备各种结项资料,包括项目稳定、演示视频、各种实物图片等等。

6 项目效果显示

6.1 功能描述

本期项目中,已实现以下功能:

  • 在巴法云后台配置智能设备:智能空调和智能灯,在小度APP是可以看到设备情况;
  • 基于N32G4FR的终端,实现智能家庭中枢控制系统的功能;
  • 跟小度音响语音对话,比如【打开空调】或【关闭空调】,即可实现控制指令下发,终端通过红外发射头控制空调开关;
  • 跟小度音响语音对话,比如【打开灯】或【关闭灯】,即可实现控制指令下发,终端通过GPIO控制LED(模拟真实场景的智能灯)
  • 打通本地空调状态和智能灯状态与巴法云、小度平台的联系,实现实时控制联动。

6.2 图片展示

以下是项目的部分图片展示:

  • 固件正常被识别且烧录成功

image-20230301010251525

  • 调试固件DEMO时,RT-Thread系统上电hello wolrd

image-20230301010340071

  • 查看并确认UART4的真实引脚分布

image-20230301010447238

  • 小度APP使用界面

image-20230301010625080

  • 通过巴法云添加的智能设备在小度APP的展示

image-20230301010702885

  • 一个带红外控制的灯具(模拟家庭使用的空调)

image-20230301010749344

6.3 视频展示

视频展示部分,已更新,见硬声平台, 戳这里

视频中基本演示了,通过小度音箱输入控制指令,进而达到控制终端器件(空调或智能灯)的目的。

视频可见文末展示

6.4 代码开源

**本参赛项目的源代码已全面开源在 这里 **

**其中应用部分的代码在 n32-iot-xiaodu-smart-home/tree/master/applications **

有关项目源代码的事情,也可与我讨论。

7 项目复盘

项目虽然即便完成了,但是有些东西还是需要好好复盘总结的。

7.1 项目踩的那些坑

这一块还是比较多,我特意开了一个帖子来总结,参加这里: https://bbs.elecfans.com/jishu_2337568_1_1.html

image-20230228174943664

7.2 项目带来的启发

  • 多留意一下同一厂商同一系列不同型号的型号差异,对比出异同点,方便灵活选型,甚至有些时候固件程序都是可以通用的;
  • 巴法云对接小度音响只是它其中的一个功能,它还可以对接天猫精灵、小爱同学、Amazon Alexa、Google音响等等,可以说,把它玩熟练了,智能化的产品思路可能可以有更大的边界;
  • 项目中遇到难题光吐槽是没有用的,还是自己去想办法解决;比如下载方法不清晰,就自己多摸索几遍,熟练掌握它;比如各种开发环境搞不通,尝试想想原来是怎么开发的,或许能找到方法;比如吐槽好些工具不好使,但这个是外部因素,你得去适应它,不然你可能就没法完成任务;
  • 多接触几种物联网云平台有助于开拓技术视野,说不定还能对你的本质工作开展有所帮助和提升。

8 致谢

本次大赛,基本还算是完全独立完成的,技术上没有请教太多小伙伴,就是在FTP资料下载的时候,请教了一个群友,感谢他提供的FTP工具,帮忙我得到了第一手官方权威资料,也使得我的参赛项目得以加速进行,再次表示感谢。

image-20230228174829816

9 参考链接

10 更多分享

本次项目介绍后,我还继续探索RT-Thread在各种嵌入式平台开发的可能性,并以此来要求自己输出各种关于RT-Thread、嵌入式、物联网等等热门技术话题的原创内容,欢迎大家持续关注我。

我是 架构师李肯全网同名 ), 2022年电子发烧友论坛优秀开发者、2022年RT-Thread技术社区优秀布道者、CSDN博客专家 ,欢迎大家来交流。

【国民技术N32项目移植】基于N32G4FR和小度音响的智能家庭中枢控制系统

更多回帖

发帖
×
20
完善资料,
赚取积分