5.[STM32]动动小手,自己制作做一个自动浇花系统吧

0前言

🚀
作者简介:大家好啊,我叫DW,每天分享一些嵌入式知识,期待和大家一起进步!
🉑🉑
系列专栏:STM32
👀👀👀
小实验简介:利用土壤湿度传感器测量土壤湿度,介于阈值之间或者大于阈值水泵关闭,小于设定阈值水泵开启且蜂鸣器报警提醒主人浇水,土壤湿度、水泵状态、阈值会在LCD12864上打印
⬇️⬇️⬇️⬇️
本月目标:希望可以拥有100个粉丝,嘻嘻,互关一起进步吧!
🎁🎁🎁🎁🎁
真心话:伟大的作品,不是靠力量而是靠坚持才完成的。

在这里插入图片描述

1 土壤湿度传感器简介

本实验用的传感器是YL-69湿度传感器,四线制,中间两根线需要手动连接。
通过电位器调节响应阈值,湿度低于设定阈值,DO输出高电平;湿度低于设定阈值,DO输出低电平。
在这里插入图片描述

1.1 功能介绍

(1)传感器用于土壤湿度检测;
(2)电压比较器采用LM393芯片;
(3)顺时针调节LM393,反向输入端输入电压越高,低湿度环境下,模块输出低电平,模块灯亮;
(4)逆时针调节LM393,反向输入电压越低,高湿度环境下,模块输出低电平,模块灯亮;
(5)模拟输出端D0与STM32输出口直接相连,单片机来检测输出的电平,以此触发水泵的工作状态;
(6)模拟量输出端AO和AD模块相连,借助AD转换,获得当前环境下土壤湿度更精确的值;

1.2 湿度检测原理

在这里插入图片描述
电路图解析🍫🍫

(1) 其中两个电阻作为LM393的正向输入端,下电阻为土壤湿度传感器,土壤湿度传感器就是两个电极,当电极之间有土壤连接时,可以 等效为一个电阻,土壤湿度增加,电阻值增加。
(2)土壤干燥时,电极的等效电阻很大,AO处电压升高,达到一定程度后,同相电压大于反相电压,LM393输出高电平,开关指示灭;
(3)土壤湿润时,电极的等效电阻很小,AO处电压下降,达到一定程度后,同相电压小于反相电压,LM393输出低电平,开关指示亮;
(4)反向端的VR1用于调节该端口的电压,此电压为电压比较器输入阈值翻转电压;

1.3 硬件连接

在这里插入图片描述

1.4 部分源码解析

本 系 统 的 土 壤 湿 度 采 样 模 块 使 用ADC1的通 道 0进 行 AD 转 换。
当土壤湿度传感 器 空 置 时,测得的采样值为4095,当 其 完
全浸没在水中时,采样值为1468,因 此 根 据 公 式:土 壤 湿
度 = (4095- 采 样 值)×100/ 4095 可 以 得 到 土 壤
湿度值,因此编写湿度转换函数如下:

CurrentHumidity = (int)((4095 - nADCValue) * 100.0 / 4095);	//土壤湿度转换函数	

2 水泵和继电器简介

本实验选择3V水泵,通过继电器控制水泵的开启和关闭。

在这里插入图片描述

2.1 原理图解析

该原理图主要由光耦电阻TLP181、三极管S8550A、稳压管、继电器SRD-05VDC组成。

(1)当RELAY为高电平时,TLP181内的二极管不发光,右边的光敏三极管电阻很大,4引脚输出高电平,PNP三极管截止,此时电磁铁断电,继电器COM与CLOSE引脚相连,J60端子没有电压输出,此时负载不工作;
(2)当RELAY为低电平时,TLP181内的二极管发光,右边的光敏三极管接收到后电阻变得很小,4引脚输出低电平,PNP三极管管导通,此时电磁铁通电,继电器COM与OPEN引脚相连,J60端有电压输出,此时负载工作;

2.1.1接线情况

(1)水泵负极接图中J61的GND,水泵正极接图中J60的Output;
(2)J60的Input和J60的VCC_5V用杜邦线连接。

2.1.2 部分函数

当open=1,水泵开启; 当open=0,水泵关闭;

void Relay_Control(u8 open){

	if(open)
	{
		GPIO_ResetBits(Relay_PROT,Relay);//打开
	}
	else    
	{
		GPIO_SetBits(Relay_PROT,Relay);//关闭
	}
}

3 C语言补充

格式化字符串操作函数,使用前需要定义一个字符数组。

int sprintf(char *buf,const char*format,...);
//输出到buf指令的内存区域

利用这个函数,我们可以动态的把数据打印到LCD屏幕上

//液晶屏显示格式化输出	

__align(4) u8 dtLCDBuf[16];   							//LCD缓存器		
			
sprintf((char *)dtLCDBuf,"土壤湿度:%02d %%",CurrentHumidity);
LCD12864_Display(0,0,dtLCDBuf);
			
sprintf((char *)dtLCDBuf,"阈值:%02d--%02d",LowLimit,UpperLimit);
LCD12864_Display(1,0,dtLCDBuf);	
			
sprintf((char *)dtLCDBuf,"水泵状态: %s",Switch == 1?"开启":"关闭");						
LCD12864_Display(2,0,dtLCDBuf);
	
sprintf((char *)dtLCDBuf,"给个点赞和关注吧");						
LCD12864_Display(3,0,dtLCDBuf);

4 实验现象

(1)把土壤湿度传感器放入水中,看到LCD屏幕上显示湿度,此时水泵处于关闭状态;
(2)把土壤湿度传感器拿出水面,看到LCD屏幕上显示湿度,此时水泵处于开启状态,并且蜂鸣器报警。
关于LCD12864显示的请看:在LCD12864上显示属于你的文字

土壤湿度传感器置于空气中,我们可以看到LCD显示土壤湿度为0,此时水泵处于开启状态。

在这里插入图片描述

土壤湿度传感器置于水中,我们可以看到LCD显示土壤湿度为45%,此时水泵处于关闭状态。

在这里插入图片描述

5 结语

📚一点一滴,一步一个脚印,慢慢来,比较快。
🍒好了,今天的分享就到这里了,你的点赞是我的动力,对你有帮助的话可以点个赞👍👍👍哦,有写得不好的欢迎指正,欢迎留言。
源码已上传到我的资源,需要自提。

在这里插入图片描述

  • 28
    点赞
  • 164
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
### 回答1: ROS.stm32运动底盘源码是机器人底盘软件的一个开源项目,主要运用在ROS系统中,可以为机器人提供基础的运动控制功能。 ROS.stm32运动底盘源码设计精良,采用了ST公司出产的STM32单片机作为控制核心,通过多种传感器的数据反馈,可以对机器人的运动方向、速度等进行精准控制。此外,软件还采用了PID控制算法,优化了底盘机器人的运动状态,使其能够平稳行驶,提高了机器人的控制精度和稳定性。 该源码同时还拥有完善的文档,有利于用户按照自身需求进行代码定制,高度灵活,可根据实际需求改变机器人底盘的运动方式,从而满足不同场景对底盘机器人的控制需求。 总之,ROS.stm32运动底盘源码是一款功能强大、可扩展性强、灵活性高的开源底盘控制软件,对底盘机器人的运动控制提供了高效、稳定的支持,是机器人爱好者和开发者的必备利器。 ### 回答2: ROS是指机器人操作系统,用于控制和操作机器人系统,ROS.stm32是基于STM32单片机的运动底盘源码。这份源码为机器人运动底盘提供了良好的控制和监控系统。其核心部分包含两个部分:1.底盘控制模块;2.传感器模块。底盘控制模块接收运动底盘的指令和参数,然后将其转换为底盘运动控制信号,控制运动器件的运动方向和速度。传感器模块则负责监控运动底盘的状态,并将当前状态传回控制模块以便于调整底盘的运动参数,从而更好的控制运动底盘。 该源码和ROS系统相互配合使用,能够实现机器人自动化的控制和监测。同时,该源码可用于多种不同类型的机器人,为机器人的开发提供了便利。ROS.stm32是开源软件,可在GitHub上免费获取。该软件还在持续更新和完善中,支持多种操作系统和硬件平台,可以对机器人底盘的运动进行细致的控制和监测。本源码是机器人运动底盘的重要组成部分,对于实现机器人系统的高效控制和监测发挥了重要作用。 ### 回答3: ros.stm32是一款ROS小车底盘,它基于STM32单片机实现。ROS(Robot Operating System)是一个开源的机器人操作系统,提供了一系列的工具、库和软件框架,用于编写机器人软件和控制系统。 而ros.stm32运动底盘源码则是底盘的控制程序源代码,它由STM32控制器进行处理。该源码实现了ros控制命令的解析和执行,底盘的运动控制和状态反馈等功能。 源码中包含了一些重要的模块,如ROS串口通信模块、PID控制算法模块和底盘驱动模块等。ROS串口通信模块用于解析ROS控制命令,并将控制指令转换为底盘的运动控制参数。PID控制算法模块用于计算底盘运动的PID控制参数,以确保底盘在运动过程中能够保持稳定运行。底盘驱动模块则是底盘的关键驱动程序,它能够通过PWM信号控制底盘电机转速,实现底盘的运动控制。 总之,ros.stm32运动底盘源码为机器人开发者提供了一个完整的机器人底盘控制方案,具有很高的可扩展性和可定制性,可以满足不同机器人项目的需求,是机器人开发的重要工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

依点_DW

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值