RT-Thread小型蚯蚓养殖监控系统开发与电路方案详解

9 下载量 24 浏览量 更新于2024-12-04 1 收藏 1.04MB ZIP 举报
资源摘要信息:"本文档介绍了一款基于RT-Thread小型蚯蚓养殖监控系统的设计方案,该系统旨在家庭等有限空间内实现蚯蚓的养殖,以期获得蚯蚓粪便和蚯蚓液。系统以ART-PI开发板和RT_Studio为开发环境,使用了多种传感器及硬件组件进行环境监测与控制,包括温湿度传感器、土壤湿度传感器、加速度传感器等。文章详细阐述了系统的工作原理、硬件选择、软件架构和通信协议等内容。" 1. 硬件组成及功能: - ART-Pi开发板:搭载STM32H750微控制器,是系统的主要控制单元。 - DS18B20传感器:测量土壤温度,通过GPIO模拟单总线协议读取数据。 - DHT11传感器:测量空气温湿度,通过GPIO模拟单总线协议进行数据读取。 - MPU6050传感器:监测蚯蚓的抖动密度,通过I2C或SPI协议进行数据传输。 - 土壤湿度传感器:使用ADC设备采集土壤湿度数据。 - 水泵和风扇:通过PWM设备控制,对环境变量进行调节。 2. 软件设计与架构: - RT-Thread操作系统:使用RT-Thread V 4.0.3版本,是系统运行的软件基础。 - RT-Studio开发工具:版本2.0.0,用于系统开发与调试。 - I2C框架与Sensor框架:分别用于驱动MPU6050传感器和其他基于sensor框架的传感器,提高代码可重用性。 - Webclient和pahomqtt软件包:为设备提供与HTTP Server通讯和MQTT客户端功能。 - Onenet软件包:实现在RT-Thread上连接OneNET平台,进行数据的发送与接收、设备控制等功能。 - cJSON软件包:用于解析JSON格式数据。 3. 系统工作流程: - 采集线程:多个线程周期性读取各传感器数据,并发送到消息队列sensor_msg_mq中。 - Onenet上传线程:接收消息队列中的数据,并上传至云端。 - 控制线程:根据云端下发的控制命令,通过消息邮箱与控制设备同步状态。 4. 线程与同步机制: - 信号量:实现线程同步,如mqttinit_sem用于WiFi连接同步,sensor_msg_sem_empty用于限制消息资源个数。 - 消息队列:sensor_msg_mq用于实现采集线程、控制线程和云端之间的同步。 - 互斥量:sensor_msg_mutex确保在读取DHT11时的温度和湿度数据同步发送。 5. 系统连接与远程控制: - OneNet平台:通过OneNet软件包实现设备连接,支持数据的发送接收和设备控制。 - MQTT协议:通过pahomqtt软件包,设备可以实时将数据上传至云端,也可接收云端控制命令。 6. 软件模块与线程: - 创建了2个信号量、1个消息队列、1个互斥量和7个线程,包括采集线程、处理线程等,实现了系统的高效运行。 以上内容展示了如何通过RT-Thread操作系统和一系列硬件组件构建出一个功能完备的蚯蚓养殖监控系统。该系统不仅能够实时监测养殖环境中的关键参数,还能通过网络接口实现远程监控和控制,体现了物联网技术在现代农业领域的应用潜力。
2021-04-19 上传
【RT-Thread作品秀】基于物联网云平台的智能环境监测设计作者:赵帅 概述智能环境监测系统基于 STM32H7系列芯片开发,通过光照传感器与温湿度传感器采集环境中的光照与温湿度数据,通过WIFI将系统采集到的环境数据实时的上传至物联网云平台,也可以通过PC端软件实时的监控环境数据。该系统适用于家庭、办公室、教室等场所的进行环境监控,该系统具有实时性高、功耗低,丢包率低,随时随地监控数据等特点,是一个实用的设计。 开发环境下位机:硬件:stm32f407-atk-explorer 扩展板:DHT11温湿度传感器,BH1750光照传感器,板载AP6212 WIFI模块 RT-Thread版本:RT-Thread V 4.0.3 开发工具及版本:RT-Sudio 上位机: Qt版本:Qt5 开发工具:Qt Creator4.11.0 RT-Thread使用情况概述内核部分:调度器,信号量,事件集 调度器:创建多个线程来实现不同的工作。 信号量:用来同步线程。 事件集:通知数据采集完成 组件部分:IIC框架, Sensor框架,SAL 套接字抽象层 IIC框架:驱动光照传感器,获取光照强度数据 Sensor框架:将温湿度传感器注册到sensor上。使用该框架提高了代码的复用性。 SAL套接字抽象层:该组件实现了对不同网络协议栈或网络实现接口的抽象,并对上层提供一组标准的API接口,方便网络应用的开发与稳定性。 软件包部分: cJSON:C语言实现的极简的解析 JSON 格式的软件包。 Onenet:RT-Thread 针对 OneNET 平台连接做的的适配,通过这个软件包,可以让设备在 RT-Thread 上非常方便的连接 OneNet 平台,完成数据的发送、接收、设备的注册和控制等功能。 pahomqtt,:本软件包是在 Eclipse paho-mqtt 源码包的基础上设计的一套 MQTT 客户端程序。 Webclient:提供设备与 HTTP Server 的通讯的基本功能。 硬件框架使用stm32h7做为系统主控,通过外接dht11传感器、bh1750传感器来采集外界的温湿度数据与光照强度。 使用AP6211wifi模块,实现设备的联网,以及连接云平台的功能。 软件框架说明下位机流程图: 上位机流程图: 上位机数据的获取是通过调用OneNet云平台的API接口来获取数据,因此需要使用HTTP协议。在QT中,QNetworkAccessManager类可以完成基于HTTP协议的数据传输。既可以向网络发送请求,也可以接收网络的应答。但是,具体的网络请求需要通过QNetworkRequest类实现,网络的应答通过QNetworkReply类来实现。在数据获取成功之后,通过调用QT中JSON相关的API函数,根据数据格式匹配出相应的环境数据。之后发送dataSignal()信号,执行setVallue槽函数将数据显示在用户界面上。通过定时器来定时发送get请求,实现数据实时更新的目的。流程图如下图所示。 软件模块说明art_mqtt_init_entry:初始化 mqtt,初始化成功后,释放信号量,通知ArtOneNetUploadThread线程可以向OneNet发送数据。 art_onenet_upload_entry:线程接收到事件后,将数据发送至OneNet云平台 art_dht11_read_entry:温湿度数据采集线程,采集到数据后发送事件 art_bh1750_read_entry:光照采集线程,采集到数据后发送事件 演示效果演示视频 代码地址(附件为代码地址,下载后打开可见)比赛感悟通过这次RT-Thread x STM32 全连接创意创客大赛,增加了我的实际动手能力。 在这次比赛中,通过 RT-Thread官网上的文档中心,让我学到了多线程及其调度、信号量、邮箱、消息队列、内存管理、定时器等知识点,也了解了多线程的编程技术。通过这次比赛,让我对这些知识点有了进一步的理解。 由于rt-thread提供了各种传感器相关的软件包支持,这是使我能够快速完成一个项目的重要原因。如果没有这些软件包,项目到开发将不会如此之快。感谢rt-thread社区提供的开源软件包。