【RT-Thread软件包应用作品】+温湿度控制系统
[复制链接]
基于RT-THREAD系统的智能家庭温湿度控制系统
- 项目来源
东北的冬天寒冷而干燥,孩子晚上学习和睡觉的时候会因为环境太干燥或太冷而不适,严重的时候,一觉醒来嗓子都沙哑了,鼻子里面都有血嘎巴。本地的老手段是在孩子卧室里面放一盆水,改善屋内湿度,但是效果明显不好,基于以上的情况,设计了一个孩子卧室内的小型智能温湿度控制器,让室内温度和湿度适宜。
- 项目概述
这个项目基于W601开发板和板载传感器完成室内温湿度采集,通过构建无线网络MQTT消息服务器,完成采集数据和控制命令传递,采用其它支持MQTT的硬件完成温度和湿度设备控制。
网络架构图如下:
项目网络架构图
- 温湿度采集器 (RT-THREAD+软件包(aht10,easyflash,fal,nettuils,mqtt))
以W601开发板及板载温湿度传感器为基础硬件,RT-THREAD实时IOT操作系统为基础软件。基于wifi网络和MQTT消息协议完成数据采集和传递。
- 温湿度执行器
以ESP32开发板为硬件基础,基于wifi网络和MQTT消息协议完成数据解析和控制执行。
- MQTT消息服务器
以Raspberry Pi Zero W为硬件基础,运行开源eclipse mosquitto broker消息服务器。
- 环境温湿度控制器
通过windows应用程序,使用开源paho MQTT的client库,基于wifi网络和MQTT消息协议获取传感器数据,通过一定的判断逻辑,发送控制命令。
- 项目实现
- 温湿度采集器
- 硬件原理
温湿度采集器是基于正点原子W601评估板,采用板载的温湿度传感器AHT10,I2C总线获取数据,数据精度0.1度温度或0.1%湿度。
- 开发环境建立
参见帖子《https://bbs.eeworld.com.cn/thread-1098918-1-1.html》中关于采用env+arm-gcc建立开发环境部分。
- 软件原理
软件设计基于RT-THREAD实时IOT操作系统,利用线程技术实现,MQTT信息获取,MQTT信息发送,传感器信息采集。软件设计主要流程见下图描述。
当wifi完成连接建立后,自动调用MQTT启动函数,完成一个MQTT客户端的建立和初始化工作,同时会创建一个接收线程,用来接收来自MQTT分发的消息数据 。同时程序会创建一个数据发送线程,用来将温湿度数值发送到MQTT消息服务器。为了保证消息传递的实时性,数据发送采用变化阈值和定时发送相结合的方式,保证数据变化较大时数据可以立刻更新,如果数据长期维持或变化较小,也可以采用定时的方式保证数据刷新。
程序启动后,建立温湿度传感器获取线程,程序首先寻找和打开温湿度传感器设备,采用定时方式读取温湿度传感器的数值。
- 温湿度执行器
- 硬件原理
采用bpi:uno32基于ESP32,具有板载WiFi功能,兼容Arduino UnoR3的引脚输出。
- 软件原理
采用Arduino开发环境,使用EspMQTTClient库,接收来自消息服务期的两条命令,分别为/mqtt/02/R1和/mqtt/02/R2两个主题的控制命令,其中/mqtt/02/R1用来控制一对继电器接点,启动加热器;/mqtt/02/R2用来控制另一对继电器接点,启动加湿器。这里为了表征简单,用led指示灯代替继电器接点的输出,其中加热器接点输出用绿灯表示,加湿器接点输出用红灯表示。
Bpi:uno32同时定时发送一条消息,/mqtt/02/S1表征自己的在线状态,供控制器检查使用。
- MQTT消息服务器
- 硬件原理
采用树梅派成熟开源硬件Raspberry Pi Zero W。
基本参数描述:
- Broadcom BCM2835
1GHz ARM11内核
- 512MB 内存
- 802.11 b/g/n WiFi无线网卡
- 低功耗蓝牙4.1 (BLE)
- Micro SD 卡插槽
- Mini-HDMI接口 (可输出1080p60视频)
- Micro-USB供电接口
- Micro-USB OTG通信接口
- 40PIN GPIO接口焊盘 (兼容A+/B+/2代B/3代B)
- CSI摄像头接口
- 复合视频接口焊盘
- 复位接口接口焊盘
- 尺寸:65mm x 30mm x 5mm
选择树梅派ZeroW的目的:
从基本参数性能上看,它的性能不是超级强悍,但是它集成WiFi,512M的内存,加上1GHz的主频完全可以满足MQTT消息服务器的数据处理需求。
- 软件基础
采用官方最新的2019-09-26-raspbian-buster-lite系统,没有图形界面,因为我们完全不需要。系统中集成了树梅派的gcc编译器,后面会用到。
- MQTT服务器建立
架设MQTT服务器的软件很多,选择Eclipse Mosquitto broker是因为他的系统比较简单,容易架设,不需要系统的性能多么强大,更主要的是部署简单。
Eclipse Mosquitto服务器是开源软件broker,可以直接从网站克隆或下载最新的代码。
地址: https://mosquitto.org/download/
下载当前版本: mosquitto-1.6.7.tar.gz
安装必要的库: sudo apt-get install build-essential python quilt libwrap0-dev libssl-dev devscripts python-setuptools
编译: make
不出什么意外可以编译通过的,如果编译中提示缺少库,可以直接安装。
最后一个帮助文件生成总是提示有问题,不过这个不影响程序运行。
编译通过后,执行文件叫做mosquitto。如果我们希望调试设备连接和数据交互,可以采用-v参数;如果希望以服务的形式运行,可以使用-d参数。
- 温湿度控制器
温湿度控制器采用labview+开源的lv-mqtt库完成。
- 主画面
软件分为左右两个部分,左侧为消息服务器连接基本信息,和程序控制按键;右侧为实现控制功能的主要显示和输入部分。其中温度和湿度分别采用两个指针表,黑色指针为当前环境温湿度只是,红色指针为阈值设置。如果当前环境温湿度低于设定值,温湿度越线指示灯亮,同时会给执行器发送相应的启动加热器或启动加湿器的控制命令。
温湿度阈值可以通过温度定值和湿度定值完成设定。
- 软件处理流程
温度获取和判断
湿度获取和判断
反初始化并退出系统
- 项目总结
本项目已MQTT消息服务为基础,采用RT-THREAD实时IOT操作系统,结合W601开发板板载传感器完成温湿度,并利用自身集成的WiFi接入局域网,将传感器数据共享到消息服务期。利用开源的硬件和开源软件假设MQTT消息服务器和执行器,采用labview实现界面友好的控制器。
本系统实现了基本数据采集,转发共享,解析判断,控制执行的各个环节,完成了设定的主题。
5. 视频展示
优酷视频: https://v.youku.com/v_show/id_XNDQ1OTQxNDA0MA==.html?spm=a2h3j.8428770.3416059.1
由于时间原因,系统还存在缺陷,不过基本功能和架构都已经可用。
源码:
采集器W610源码
w601采集器.rar
(6.87 MB, 下载次数: 34)
执行器源码
bpi.ino
(3.23 KB, 下载次数: 7)
控制器源码
温湿度控制器.rar
(1 MB, 下载次数: 25)
此内容由EEWORLD论坛网友我爱下载原创,如需转载或用于商业用途需征得作者同意并注明出处
|