RT-Thread开源作品秀基于STM32F407与RT-Thread的智能水培系统

Posted RT-Thread物联网操作系统

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RT-Thread开源作品秀基于STM32F407与RT-Thread的智能水培系统相关的知识,希望对你有一定的参考价值。

开源地址:https://gitee.com/li-yutan/rtt.git

本产品着眼于城市家用的智能水培领域,是现代家庭园艺的一部分,随着人们生活水平质量的提高,对绿色健康生活方式的重视,原来越多的人开始关 注家庭园艺,愿意通过在家种植花卉,多肉等观赏植物或蔬菜类作物,特别 是今年疫情期间造成的出行不便问题,让更多人倾向于尝试在家中种植,方便收获纯绿色无污染的蔬菜。我们设计的这一款智能水培机是一个物联网智 能终端,通过云平台的辅助降低家用水培的门槛,兼顾灵活性和自动化,方便省时的让用户收获到家庭水培的乐趣。

可以在 APP 端一键自动进行植物的种植并全程监测,也支持用户通过硬件按钮 或 APP 端手动对设备进行控制,探索属于自己的种植习惯,方式并可以通过 云平台,存储自己的种植规程并分享,也可以直接应用别人的规程数据完成 数据的快速共享。

开发环境

硬件:STM32F407ZGT6

RT-Thread版本:RTT Nano

开发工具及版本:KEIL 5

RT-Thread使用情况概述

本项目采用RTT nano版,对各任务(传感器数据获取,LORA收发,WIFI模块收发即与云平台的通信,各控制功能任务)封装成独立的线程,所用的RTT 内核主要为控制线程间同步的信号量与事件集,以控制部分的打氧功能为例,该功能需要输入参数为云平台通过WIFI通信部分线程传来的打氧时间与打氧间隔2个参数。因此采用一个多个事件的唤醒事件集来实现该线程所对应的的控制功能的触发。该方法同样适合需要参数输入的营养液控制,光照控制,加湿等。同时项目也采取信号量协助线程间同步。主要用于WIFI通信收发(tx,rx)间的同步。此外,还采用的中断的方式相应开发板的按键触发,用于通过按键切换主机与从机模式。

硬件框架

主控芯片与 RT-Thread

本项目采用的芯片为 stm32F407ZGT6,使用 HAL 库编写,搭载 RT-Thread nano 嵌 入式实时操作系统。有效而可靠的保证了系统运行并行性和效率,采用事件集 event,信号量 semaphore 等实现线程之间的同步协调以及通信,充分发挥实时操 作系统与 stm32F407 的优势。在芯片的资源利用上,采用了 IO 高低电平输出控 制继电器,PWM 输出控制电机驱动 L298N 模块,串口 2 通过 AT 指令控制 WIFI 模块通信.

传感层搭建

作为一个有关植物种植的智慧物联网终端,基于环境监测,报警系统的需要,整 个项目配备丰富完善的传感层,具体使用到的传感器如下。1. 水温监测:采用 ds18b20 模块,单总线输出,由 IO 口按照工作时序读取数据。2. 空气(环境)温度,湿度监测:采用 DHT11 模块,单总线输出,采用 stm32 单片机 IO 口按照规定时序读出数据。3. EC 值检测,采用模拟量输出的 EC 值变送器,经过 stm32 ADC 模块转换后变 为具体数值。4. PH 值检测,同样采用模拟量输出的,经过 stm32 ADC 模块转化为具体数值。5. 光敏模块,水位模块与浊度模块。三者均采用数字开关量输出,其中光敏, 浊度模块默认输出高电平,测量量到达阈值后输出低电平。水位模块反之。2.2控制部分搭建。

为了按照规程要求,实现远程水培的自动与手动控制,具体使用的执行器如下。1,光照部分。采用 12V LED 三色灯带,有红,蓝,白三色 ,由 stm32 GPIO 输 出高低电平进行控制。2,加湿和打氧部分。出于对湿度控制和保证植物水面以上湿润的要求,采用 24 伏供电,塑料加湿片的浸入式加湿器来控制。同样为了保证营养液含氧量。打氧 氧泵采用 12V 供电。3,电机控制,营养液控制。营养液控制采用 12V 蠕动泵和小型水泵。分别对 EC 值,PH 值两大溶液参数进行控制。对于 EC 值,通过蠕动泵泵入调制好的营养 液的方式来增加溶液 EC 只,通过两只中等功率,12V 供电水泵来同步换水,抽 出营养液,并注入等量清水。PH 值则直接采用两只蠕动泵加入酸液碱液控制。两个营养液参数均采取位式调发,小步长,长滞回来应对营养液参数变化的较长 滞回时间。其中 PH 由与调节中涉及化学变化调解初期会有较大浮动,整体调解 时间在 30—40 分钟左右,由于水培的种植周期长达几个月且自动模式下只需要 两次营养液调整,其他均为范围维持,因此该调节时间可以接受。

通信部分 

通信部分采用 ESP8266-01 模块和 MQTT 指令,MQTT 是一种轻量级高效的,适 用于物联网通信协议,设备侧向平台侧上传传感器数据,报警值,设备状态等, 同时从云平台获取来自 APP 客户端的指令。同时为了减小下发指令数目减少遗 漏,在指令端自拟协议打包下发,确保设备高效稳定的通信。

软件框架说明

整体代码分为三大部分,控制,传感与通信。将WIFI通信,LORA串口三通信,控制部分(光照,打氧,营养液控制等,用到的嵌入式技术为PWM波的输出和IO口继电器控制),传感器获取部分(ADC模拟量输出获取,单总线获取等)的任务各自包装成线程处理。各线程独立运行,并合理调用保持正确的线程间同步与通信。

具体而言,代码功能的执行顺序如下:

 

对于主机模式,从云端即APP处通过WIFI 8266模块来获取控制指令指导控制,其中加湿打氧通过设计的外部参数控制(加湿时间,加湿间隔,打氧时间,打氧间隔)。营养液通过设定的目标EC,PH值以及PH,EC传感器检测到的实时数据来控制,光照部分控制的主要依据是DS1302实时时钟模块提供的年月日参数,已实现不同生长周期的判断。主机模式在接收指令并进行控制外,同时通过LORA多点通信模块转发指令数据,以广播的形式向各个从机发送。在按下开发板上按键后。切换为从机模式,此时关闭WIFI发送以及WIFI接收,改为通过LORA串口3接收主机发来的信号。因此可实现一主多从,动一发牵全身的效果。因此扩大了种植量。

软件模块说明

通信部分:通过ESP8266 AT指令连接云平台,进行数据的收发。

各传感器部分,其中EC,PH采用ADC进行模拟量的转换,温度和温湿度采取单总线的方式,统一传到结构体中上传。

结合DS1302的 时间判断部分,包括昼夜判断,生长周期判断等。

基于事件集的光照控制。

作品展示

你可以添加微信17775982065为好友,注明:公司+姓名,拉进 RT-Thread 官方微信交流群!

???????????? 点击阅读原文进入官网

以上是关于RT-Thread开源作品秀基于STM32F407与RT-Thread的智能水培系统的主要内容,如果未能解决你的问题,请参考以下文章

stm32f407执行rt-thread堆初始化HardFalt rt_system_heap_init

stm32f407执行rt-thread堆初始化HardFalt rt_system_heap_init

RT-Thread 开源作品秀小型蚯蚓养殖监控系统

移植 LVGL STM32F407VGT6 8bit FSMC TFT-LCD

STM32F4 HAL库开发 -- 再识

stm32f407v与stm32f407zg的区别