本项目是一款智能化衣橱,衣橱依靠屏幕显示和控制,能够语音控制衣橱门的开关和衣橱内灯光的开关。此嵌入式系统基于瑞赛的RA6M5微控制器,集成了温湿度传感器,舵机,语音模块,W800 WiFi模块等。通过无线传输,数据可以远程发送到云平台以及我们自己制作的QT界面上,并且可以在QT界面上查看天气情况,从而决定今天的穿搭。在软件方面,我们开发了一个基于FreeRTOS的任务调度系统,确保系统的实时性。最后,此项目实现了智能化控制和检测,实时检测衣橱温湿度情况,樟脑丸是否充足,门和灯光是否关闭,烘干和紫外消毒是否仍在执行,并且检测数据后可以实现开启风扇通风,提醒补充樟脑丸等,最终实现了物联网(IOT)的结果。

1.1 项目背景

随着物联网技术的快速发展,智能化设备具有越来越大的发展前景,且人们对于简单方便的设备需求也越来越大。本项目旨在使用RA6M5微控制器实现一个智能控制和检测的智能衣橱,该系统能够实时检测衣橱内温湿度,樟脑丸是否充足,以及能够智能化根据屏幕或语音控制来实现开门关门,烘干和紫外灯的开关,以及衣橱内部灯光的开关等,最终将相关数据传送到服务器。我们选择此项目的原因,正是为了实现一个物联化,互联化的设备,响应当今智能发展的趋势。

1.2 项目目标

1 设计一个稳定的嵌入式系统,读取多个传感器的数据并且能同时控制多个传感器。

2 在项目中嵌入FreeRTOS实时操作系统,实现多任务处理,使得传感器读取数据的同时不会影响主程序的运行,确保系统的实时性和高效。

3 制作一个简洁明了的屏幕界面,使得查看数据和信息更加方便,以及制作一个QT界面,能够显示衣橱的基本信息以及采集到的数据,并且QT可以设置连接MQTT以及查看天气情况。

4 通过W800将数据传输到自己构建的服务端,提供直观的数据展示和保存数据。

1.3 技术路线

1 使用瑞赛的RA6M5微控制器为系统的核心处理单元(主控),因其高性能和低功耗特性。

2 集成多种传感器,温湿度传感器获取衣橱的温湿度情况,风扇根据衣橱内温湿度情况来决定是否开启风扇进行除湿降温,红外传感器检测樟脑丸数量是否充足。

3 使用GPIO驱动烘干灯,紫外灯,照明灯,风扇。

4 使用屏幕显示,和语音控制。

5 利用pwm技术控制舵机来实现开门关门和衣杆的伸出和收回。

6 使用Wi-Fi模块(W800)实现无线传输到服务器,最后由QT读取服务器数据。

7 QT显示基础信息和天气。

8 自制系统板的拓展板,使得系统接线看上去更加简洁也更安全。

1.4 成果

1 RA6M5拓展板测试没有问题,并且使用继电器作为开关,增加安全性。

2 QT测试无误,且能连接MQTT保存数据,通过http协议实时获取天气信息。

3 3d打印结构以及型材结构稳定靠谱,接线使用铜线,数据传输正常且安全。

4 系统能够实现屏幕控制,舵机控制,风扇控制的目标要实现的功能,且通过W800连接MQTT,并且QT界面可以显示开发板传过来的数据,实现物联网功能。

1.5 未来工作

1 增加更多传感器,实现更全面的衣橱检测,使得使用者更舒心和使用方便。

2 优化算法,提高系统的实时性,减小延迟,增加灵敏度。

3 完善系统,使得系统能长时间安全得进行。

4 加强和网络的联系,减小与网络传输的延迟。

2.1 硬件设计

2.1.1 转接板原理图设计

如图1所示,我们提前绘制开发板的转接板,转接板使用端口连线,不同于开发板使用排针连线,端口连线更加稳定也能减少布线的复杂程度,增加系统的安全性。且风扇和灯管使用继电器控制,使得驱动设备更加安全。

图1 RA6M5转接板原理图

2.1.2 转接PCB设计

如图2所示,设计转接板PCB,采用排母和开发板进行连接,且摆放规整,这样也是方便接线,且直观看上去也美观整齐。PCB电源布线宽度采用0.5mm,比信号线布线要粗,增加电流承受量,防止电流过大损坏开发板。并添加合适丝印,添加美观程度和方便开发者查看器件放置方法。

图2 RA6M5转接PCB

2.1.3 RA6M5开发板硬件使用

此项目中主要使用到的硬件有串口屏,语音模块,风扇,DHT11,红外模块,灯带,舵机,W800等。

1 串口屏

对于屏幕的选择,我们选择的是淘晶驰串口屏。显示界面如图3,图4所示,主要是显示衣柜内部的实时数据,包括温度,湿度,杀菌,烘干,通风,樟脑丸,光照等,还具有控制衣柜开关门和衣杆位置的改变的功能。使用串口屏的原因是,此项目不需要过快的刷屏速度,且串口屏制作UI简单且美观。当然使用过程中也有遇到过问题,比如:(1)串口下载工程慢,解决办法:更改串口下载波特率,可调节到921600。(2)USB-TTLL模块给串口屏发数据没有作用,解决办法:每发送一个字符串都要在后面加上”0xff0xff0xff”的帧尾。

图3 串口屏显示界面一

                                                        图4 串口屏显示界面2

2 语音模块

依靠幻尔家的语音模块来实现开关门,取衣服和收衣服的功能,模拟智能家具中的智能语音控制。如图5所示,是语音模块依靠拼音识别模式来识别语音内容,从而完成响应控制的源代码。

图5 语音模块代码

3 风扇和烘干灯等模块

我们使用继电器控制,而不是直接使用GPIO驱动,使用继电器来控制开关,更加安全可靠。源代码如图6所示

·

图6 风扇和烘干灯等控制源代码

4 红外模块

我们通过检测单片机接红外模块的引脚的高低电平,来判断樟脑丸的量是否充足,若是不充足,可以及时补充,如图7所示,为判断红外是否检测到,再将检测结果传给一个定义好的字符串,之后把该字符串传给MQTT或串口屏。

图7 红外模块代码

5 舵机

舵机使用RA6M5复用PWM引脚控制,PWM控制舵机的原理为:设置PWM复用引脚输出的高电平时间来控制舵机角度,实现开门,关门,取衣服,收衣服等功能,如图8所示为PWM初始化。

图8 舵机代码

6 DHT11

单片机读取DHT11的温湿度数据,以此来判断判断衣橱内环境的干湿程度,若是过于干燥可以开启风扇通风,若是过于潮湿可以开启烘干减少水分。如图9所示,为单片机读取DHT11的具体函数。

图9 DHT11代码

7 W800

如图10所示,为W800进行初始化,先连接WiFi,再连接IP,以及各种模式的初始化。最后实现连接服务器来连接MQTT,并订阅主题。

图10 DHT11代码1

W800使用过程中也遇到过如下问题,例如:

  1. W800无法通过TCP协议连接服务器 解决办法:经查阅W800只有串口1才可以进行网络通信,串口0不能进行。
  2. 连接MQTT时发送的数据不对? 解决办法:使用库函数的发送函数时,应当是输入字符的首地址,而不是字符,经改正已可以发送正确(这点与STM32库函数有所不同)。
  3. W800连接WIFI老是连接不上?解决办法:原因是在连接WiFi时应当适当的延时,来保证连接的稳定性。

2.1.4 衣橱整体框架设计

1 模块固定依靠3D打印,放弃胶布等方式,而是采用结构固定,使得系统更加牢固稳定。且3D打印皆由对内成员自己绘制并打印,大多数采用绿色材料打印。

2 衣橱整体依靠型材,型材允许进行模块化设计,可以根据需要快速组装和拆卸,使用在项目中使用,既方便了项目框架的完成也提高了项目的稳定性。

2.2 软件设计

2.2.1 流程图

程序设计主要划分为四个任务,功能主要有控制和显示两大功能,具体程序流程图如图12所示。

图12 程序流程图

2.2.2 代码摘录

1 FreeRTOS

不同于裸机开发,我们这个项目中使用了FreeRTOS操作系统,首先选择操作系统的原因,是因为实时操作系统的使用可以增加系统的实时性,且数据采集更快。如图13所示,是创建任务的代码。

图13 FreeRTOS创建任务代码

我们一共创建了四个任务,第一个任务是LED任务,用来检测程序是否正常运行,如果程序卡死,则LED灯不会正常闪烁;第二个任务是DHT11和红外检测任务,单独放一个任务是为了代码运行期间一直检测,防止被其他操作打断;第三个任务是串口任务,主要是串口屏和W800的串口发送;第四个任务是语音模块任务,一直检测语音模块是否有数据接收。这四个任务相互独立又各自抢占,提高了项目的实时性和稳定性。

在使用FreeRTOS的过程中也遇到问题如下:(1)任务切换错误,程序卡死。解决办法:重新分配任务优先级以及改变不同任务间的阻塞时间。

2 QT

自己设计QT界面,用于远程显示衣橱相关数据,实现物联网的过程。

首先进行了MQTT界面的制作,因为该任务的核心是从mqtt服务器获得传感器的数据。mqtt采用的是官方提供的基于mqtt的封装,在使用mqtt库时需要安装perl,安装完perl后自动写入环境变量,再次编译(Release模式)QtMqtt源码,编译完成后就可以将mqtt部署到自己的项目之中了。其中有mqtt的命名空间“QMqtt”:其中包含整个Qt MQTT模块中使用的其他标识符。主要的是QMqttClient类:它表示与mqtt代理通信的中央访问,实现了订阅主题和发布接收消息的功能,对获取到的消息进行了处理。MQTT连接界面如图13所示。

图13 FreeRTOS创建任务代码

        绘制了实时天气系统,如图14所示,在该界面设置了鼠标右键点击事件,和窗口左移移动事件,使得操作更加便捷,该界面中设置了实时时间,天气污染指数,风力,风向等等功能,在绘制曲线的时候安装了事件过滤器。

图14 天气显示界面

在初始化城市数据中读取解析了一个jiso文件,将数据存到map中,然后在map中通过城市名称找对应编码。构造函数中关联服务器数据代码如图15所示。

图15 关联服务器数据代码

具体通过http协议实时获取天气信息,在更新ui界面时调用updata函数,不然会一直显示温度曲线0,在更新ui函数中因为调用eventFilter函数,请求函数继续执行,eventFilter函数体如图16所示。

图16 eventFilter函数

在主界面中处有两个按键可以选择衣柜的数据和后台信息,如图17所示。

                                                                 图17 初始界面

选择data后,则可以进入传感器数据显示界面,如图18所示。

                                                         图18 QT显示数据界面

QT使用过程中遇到的问题及解决办法:(1)qt在主项目中调用子项目时,在调用子项目中时主项目需要添加子项目的库(2)在调用子窗口时,在new的时候不要加this。

  1. 作品测试与分析

3.1测试环境

3.1.1 硬件环境 

1 RA6M5的接口和外围设备皆正常工作,且按照需要进行初始化和运用。

2 电源使用12V电池接稳压模块,稳压到5V供给开发板,再由开发板稳压到3.3V供开发板使用,这样既保证了电源的安全性也保证了系统能长时间运行。

3 烧录使用DAP烧录,DAP烧录速度快且能实现自动复位和调试。

3.1.2 软件环境

项目使用keil进行开发,且调用FSP库,类似于STM32的正点原子hal库,FSP库也有大量的应用函数。

3.1.3 实际环境 

1 舒适的温度和湿度,确保设备的正常运行。

2 噪音控制,防止噪音过大导致语音模块识别不准确。

3 远离高频或高压设备,防止此类设备的项目测试过程的影响。

3.2 测试过程

问题1:驱动舵机时会发生重启的现象。

原因:在电机驱动时,MCU供电电流不足导致设备重启,

解决:将舵机与单片机供电分开,使MCU有足够稳定的电压。

问题2:屏幕发出指令但MCU获取不到。

原因:屏幕点击发送太快,导致MCU收到的数据错乱,

解决:屏幕发送指令后等待几毫秒

问题3:语音模块在FreeRTOS实时操作系统运行时使用不了。

原因:在产生IIC时序时,使用操作系统自带延时时,在延时的过程中会使当前任务进入阻塞列表在此期间执行的任务会运行就绪列表中的任务,导致延时的时间超出时间。使IIC时序错乱,

解决:使用了自己写的软件延时函数,使该任务一直处在运行态,无法被打断。

3.3 测试数据

在系统中,一分钟内DHT11读取到的数据如图19所示。

                                        图19 DHT11一分钟内每五秒的温湿度情况

我们测试了语音模块和串口屏在多次测试后的响应次数,如图20所示,以确定这两个模块的使用是否可靠,以保证系统的可靠性。

图20 语音模块和串口屏在多次测试后的响应次数

除了以上的数据测量外,我们也对其他数据进行了大量的测量,比如,一段时间内红外检测樟脑丸出现失误的次数,系统可以正常运行的时间,舵机多少次使用会出现一次失误等。

3.4 性能分析

1 可靠性:

系统使用6000MAh大电池,可以保证长时间上电。且连接皆采用铜线,铜线导电性好,延展性好。且前期设计时,就放弃了直接给开发板连线,而是绘制转接板,再通过转接板来连接模块。且软件设计,使用操作系统来管理程序,提高了系统的稳定性和实时性。

2 处理能力

RA6M5是32位单片机,更高的位数可以处理更复杂的任务和更大规模的数据。主频高达200MHz,2MB的代码闪存,8KB数据内存,以及512KB的SRAM。

3 响应速度

系统响应快,开发板为32位单片机且主频高,因此读取模块数据速度快,串口屏和语音模块控制稳定且响应快。

  1. 创新性说明

1 使用W800 WiFi模块连接MQTT,相较于常用的ESP8266,RA6M5板载的W800模块,性能更加强大,且它作为一款SoC芯片,其功耗管理也经过了优化。

2 W800连接MQTT后,就能往MQTT发送数据,由W800发布主题,MQTT订阅主题,之后再由QT连接MQTT,这样W800的数据就能再QT显示,而QT界面是由我们制作,这样显示的数据就直观而整洁。

3 控制采用语音模块和串口屏,不同于平常项目仅通过屏幕和按键控制,衣途智控添加了语音控制,更符合市场对语音控制设备的趋向。

4.贯彻物联网+数字经济主题,注重项目与网络的联系和通信,用户可以在MQTT服务器和QT查看项目的实际数据。

5. 总结

本项目设计了一个能够自主检测,控制且上传数据到云端的智能衣橱。在系统设计过程中,我们先经过了确定项目,选择材料,框定结构的过程,在前期准备完成后,便开始进行简单的单独调试,等各模块数据正常读取,wifi通信正常,QT显示没有误差等完成后,就开始搭建硬件,完成测试和预期结果,最终完成了最开始的项目目标。在这个项目过程中,我们花了很多心思在选题,选材上,最终衣途智控非常地契合了本次大赛主题:物联网+数字经济,实现了项目智能化,连网化。最后,希望衣途智控能在以后更加完善,更加符合智能化,物联化。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐