2★☆STM32的智能浇水补光系统√☆★
Posted 行走的皮卡丘
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2★☆STM32的智能浇水补光系统√☆★相关的知识,希望对你有一定的参考价值。
2、★☆STM32的智能浇水补光系统√👈💚☆★
Introduction
Today, with the rapid development of science and technology, people are constantly deepening the use of electricity in order to replace manpower to complete those tedious and repetitive tasks. As a result, artificial intelligence and automation control have become a major issue that cannot be ignored. Embedded systems have emerged at the historic moment. With their advantages of small size, strong functions, low cost, and wide range of applications, they quickly replace traditional control systems. In order to better learn the embedded system, pay equal attention to theory and practice, and combine the characteristics of the current agricultural trend towards large-scale planting, this article uses STM32 to design an intelligent watering and lighting system. The STM32 microcontroller in this design uses a 5V power supply, and uses a humidity sensor module to control whether watering is enabled or not and display the humidity and watering status on the OLED screen; use a photosensitive module to control the on and off status of the LED lights.
引言
科技发展日新月异的今天,人们正不断加深对电力的使用,以期替代人力去完成那些繁琐重复的工作。于是,人工智能与自动化控制成为一个不可不提的重大课题,嵌入式应运而生,以其体积小、功能强、成本低、应用面广等优点,迅速取代传统控制系统。为了更好地学习嵌入式,理论与实践并重,结合现下农业趋向大规模种植的特点,本文用STM32设计了一个智能浇水补光系统。本次设计的STM32单片机引用5V电源供电,并利用湿度传感模块,控制浇水的启用与否并在OLED屏幕上显示湿度与浇水状态;利用光敏模块控制LED灯的明灭状态。
1、系统概述
1.1、设计任务
用STM32设计一个智能浇水补光系统。
1.2、设计要求
-
(1)能够根据当前检测到的湿度高低控制浇水与否;
-
(2)将湿度与浇水模块工作与否的状态显示在屏幕上;
-
(3)检测当前光线情况,控制LED灯亮灭,在光线不足时补光。
2 方案设计与论证
2.1、芯片选择方案
STM32F4芯片是ST(意大利半导体)公司开发的一种高性能微控制器。CORTEXT-M4内核的性能非常高,并且比以前的F1系列具有更高的运行速度。
2.2、 系统概述:
本设计是一个具有自动浇水与补光的智能控制系统,利用STM32单片机外接电源,并搭载湿度检测模块、光敏模块、电机驱动模块、OLED显示模块:检测并将当前湿度值在OLED屏幕上显示,若湿度低于设定值则启动电机驱动开始浇水,反之不启动或停止浇水,同时在屏幕上提示是否处于浇水状态;检测当前亮度,若低于设定值则打开LED灯,反之熄灭。本设计所实现功能为农业带来了极大便利,省去了繁琐重复的工作,大大节省了人力与时间,对水电资源也有更科学精准的把控,减少了资源的浪费。
2.3设计要求:
-
① 利用stm32组成一个浇水系统。
-
② 按照所需湿度与光强度控制浇水与灯光
-
③ 湿度低于设定值启动浇水,到达设定值则停止
-
④ 光强度低于设定值则LED灯亮,反之灯灭
-
⑤ 能在OLED屏幕上显示湿度与浇水与否
2.4、系统总体设计思路
-
(1)设计能正常工作的一个单片机最小硬件系统,外围电路包括湿度检测模块、光 敏模块、OLED显示模块、电源、水泵;
-
(2)进行软件设计,预先设定湿度、光强度阈值;
-
(3)设计执行机制,实现自动浇水、补光功能;
-
(4)将湿度值显示在OLED屏幕上。
2.5、各功能模块程序实现原理分析
本设计大致分为六个模块:湿度检测模块、光 敏模块、OLED显示模块、电源、水泵
2.5.1、 湿度检测模块
-
a.该模块适用于土壤的湿度检测。
-
b.蓝色电位器在模块可以调节土壤湿度阈值。当顺时针旋转时,湿度阈值越大,湿度阈值越小,逆时针旋转时的湿度阈值越小。
-
c.模拟量输出 D0可以与继电器相连,直接控制继电器的转动。
-
d.模拟量输出AO可以和STM32的ADC转换接口相连,通过ADC转换,获得具体的土壤湿度数值。
2.5.2、L298N电机驱动
-
a.L298N外接12V的电源给驱动电路供电,同时还能输出5V的电压给开发板供电。
-
b.使能通道A和通道B,能够分别使能输出A和输出B。
-
c.逻辑控制输入电路,能够控制电机的正反转和停止。
该驱动器可以使能2个电机,ENA,ENB使能两个输出端口,设置IN1和IN2的电位能够控制电机转向。
2.5.3、OLED模块
该屏幕中使用的SSD1306是由IC驱动的,因为它具有内部升压功能,因此在设计时不需要设计升压电路。不过,采用外部升压也一样没问题,具体操作是检查技术手册。SSD1306把屏幕分为8个页面,每个页面包含128个字节,总共是128×64分辨率。在OLED屏上显示当前的湿度,如果收到到浇水命令,会显示相关的提示。
2.5.4、光敏电阻模块:
光敏电阻传感器是应用光敏元件,将周围的光信号根据某种形式转换为电信号传感器。它的敏感波长接近可见光的波长,它包括红外波长和紫外波长,因此它可以检测日光。
当光线很强时,电阻很小,没有光。电阻非常大,光越强,电阻越小,没有光照,电阻会恢复以前的电阻。
-
a.光敏电阻用来检测光照强度。
-
b.当周围光线未达到设定阈值时,DO端口将输出高电平;当环境光亮度超过阈值时,DO端将输出低电平。
-
c.AO输出端可以连接STM32芯片,利用芯片检测高低电平,检测亮度的变化。
-
d.DO输出可以直接连接到继电器模块,从而形成一个光控制开关。
2.5.5、水泵
电机接口两端接L298N的B通道两个接口,实现抽水和浇水功能。
6电源
12V外接电源连接电机驱动并提供5V电源为STM32单片机供电。
3、 STM32性能介绍及硬件设计
3.1、 STM32单片机性能介绍
STM32F4开发板选择的是 STM32F407VET6作为MCU内核,该芯片在STM32F407里面配置已经是很强大的了,以下是芯片的资源:
名称:STM32F707VET6
内核:Cortex-M4-32-bit RISC
存储资源:512KB闪存 192+4KB SRAM
工作频率:168MHz
工作电压:1.8-3.6V
资源:
-
3个SPI
-
2个全双工I2S
-
5个USART串口
-
3个IIC
-
1个FSMC
-
1个SDIO
-
2个CAN
-
1个USB2.0接口
-
1个10/100M以太网MAC控制器
-
1个摄像头接口
-
3个12位ADC
-
2个12位DAC
附带配件:
-
SD卡板载
-
CR1220RTC电池
-
NRF2401无线通信接口
-
W25Q16数据存储
-
支持MSC液晶接口
原理图:
STM32VET6组成电路:
STM32主要由系统时钟电路,JPAG/SWD调试接口,复位电路和启动方式电路组成。
3.1.1、系统时钟电路
系统时钟电路,在系统时钟中,选用8MHz晶体振荡器达到168MHz。
3.1.2、JPAG/SWD调试接口
调试接口的主要目的是使目标文件烧写到芯片上执行。
3.2、智能浇水补光系统硬件设计
该程序所需要的湿度检测模块原理图,光敏模块原理图以及OLED原理图依次如下图所示:
图3.2-1 L298N原理图
图3.2-2OLED原理图
4、 系统程序
4.1、主程序设计如下
主程序流程设计图如下图:
图4.1主程序流程设计图
如图4.1所示主程序开始初始化后,若湿度低于设定值则启动电机驱动开始浇水,反之不启动或停止浇水,同时在屏幕上提示是否处于浇水状态;检测当前亮度,若低于设定值则打开LED灯,反之熄灭。继而循环并再次执行主程序。
4.2 主程序内容
#include <stdio.h>
#include <string.h>
#include "stm32f4xx.h"
#include "usart.h"
#include "adc.h"
#include "l298n.h"
#include "oled.h"
#include "led.h"
#include "delay.h"
#include "sys.h"
#define START_SET 10 //设定浇水阈值
#define STOP_SET 40 //设定停止浇水阈值
char humiBuff[32]; //保存湿度数据
int humidity = 0; //湿度
//主函数
int main(void)
{
float adc_vol = 0; //定义ADC采集的数值
//初始化OLED
OLED_Init();
OLED_Clear();//清除屏幕
//光敏电阻模块初始化
led_light_init();
//adc初始化,用于YL69采集数据
adc_init();
//配置电机转动的使能引脚
Car_init();
while (1)
{
OLED_ShowString(0,0,(u8 *)"Welcome to use",32);
ADC_SoftwareStartConv(ADC1);//启动ADC转换
//等待转换结束
while(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC)==RESET);
//获取结果值
adc_vol = ADC_GetConversionValue(ADC1);
//将结果转换为电压值
adc_vol = (float)adc_vol*3.3/4095;
//换算对应湿度值
humidity = 100 - get_YL_value_percent(adc_vol);
printf("\\r\\n µçѹ = %f £¥V \\r\\n",adc_vol);
printf("\\r\\n ʪ¶È = %d £¥RH \\r\\n",humidity);
//´打包湿度数据
sprintf(humiBuff,"Now the humidity is %d RH",humidity);
//显示湿度
OLED_ShowString(0,0,(u8 *)"Welcome to use",32);
OLED_ShowString(0,2,(u8 *)humiBuff,32);
//光线不足时,进行补光
if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9) == 1)
{
PAout(6) = 0; //´打开两盏灯
PAout(7) = 0;
}
else if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9) == 0)
{
PAout(6) = 1;
PAout(7) = 1;
}
//根据湿度判断是否要浇水
if((humidity > 0)&&(humidity < START_SET)) //开启电机
{
//运行电机 PDout(11) = 0;
PDout(12) = 1;
OLED_ShowString(0,6,(u8 *)"Now is watertime",16);
}
else if(humidity > STOP_SET)
{
//停止电机
PDout(11) = 0;
PDout(12) = 0;
OLED_ShowString(0,6,(u8 *)" ",16);
}
}
5、调试及分析
5.1、系统调试
由于本系统分为几个模块:湿度检测模块、光敏模块、电机驱动模块、OLED显示模块,所以采取了先分模块调试,后整体测试的方法。
5.2、调试现象及分析
调试时发现OLED屏幕始终显示湿度为75或76度,电机驱动也并未开启,于是判断湿度测试计坏了,后经检查电路发现湿度检测模块AO口与单片机PA3接线松动,也提示着我要细心。
5.3测试结果
此系统的效果很好,能实现设计要求和目的所规定的内容,下面是结果图:
以上是关于2★☆STM32的智能浇水补光系统√☆★的主要内容,如果未能解决你的问题,请参考以下文章
基于STM32的智能温室控制系统仿真电路设计(温控补光)-基于STM32的智能蓝牙温控风扇控制系统设计-基于STM32的无线蓝牙心电监护仪系统设计毕设课设分享
基于STM32的智能温室控制系统仿真电路设计(温控补光)-设计资料