本帖最后由 ZCZ 于 2020-7-17 17:01 编辑
基于Arduino使用土壤湿度检测模块
土壤湿度检测模块
这是一个简易的水分传感器可用于检测土壤的水分,当土壤缺水时,传感器输出值将减小,反之将增大,使用这个传感器制作一款自动浇花装置,当您长时间不在家或过了浇水的时间,它可以感测到您的植物是否已经渴了,防止植物枯萎了才知道是缺水造成的,配合Arduino控制器让您的植物更舒适,花园更智能。
模拟量和开关量
传感器的模拟量和开关量,不论输入还是输出,一个参数要么是模拟量,要么是开关量。 模拟量-- 控制系统量的大小是一个在一定范围内变化的连续数值,比如温度,压力等等,这些都是模拟量;模拟量传感器发出的是连续信号,用电压,电流,电阻等表示被测参数的大小。 开关量--该物理量只有两种状态,如开关的导通和断开的状态,继电器的闭合和打开,电磁阀通和断等等。
(土壤湿度检测模块)
产品特点
1、采用土壤传感器做土壤湿度的检测,尺寸60*20MM,表面采用镀镍处理,有加宽的感应面积,可以提高导电性能,防止接触土壤容易生锈的问题,延长使用寿命。 2、可以宽范围控制土壤的湿度,通过电位器调节控制相应阀值,湿度低于设定值时,D0输出高电平,模块提示灯灭;高于设定值时,D0输出低电平,模块提示灯亮。 3、比较器采用LM393芯片,工作稳定 4、工作电压:3.3V-5V 5、设有固定螺栓孔,方便安装 6、小板PCB尺寸:32*14mm
使用说明
1、传感器使用与土壤的湿度检测连接 2、模块中蓝色的电位器用于土壤湿度的阀值调节,顺时针调节控制的湿度会越大,逆时针越小 3、数字量输出D0可以与单片机直接相连,通过单片机来检测高低电平,由此来检测土壤湿度 4、小板模拟量输出A0可以和AD模块相连,通过AD转换,可以获得土壤湿度更精确的数值
接线说明(4线制)
1、VCC:外接3.3V-5V 2、GND:外接GND 3、D0:小板数字量输出接口(0和1) 4、A0:小板电压模拟量输出
(传感器与土壤的湿度检测相连) 工作原理
土壤湿度传感器是判断土壤中水分含量的多少来判定土壤的湿度大小,当土壤湿度传感器探头悬空时,三极管基极处于开路状态,三极管截止输出为0;当插入土壤中时由于土壤中水分含量不同,土壤的电阻值就不同,三极管的基极就提供了大小变化的导通电流,三极管集电极到发射极的导通电流受到基极控制,经过发射极的下拉电阻后转换成电压。
基础案例
一、使用开关量D0输出检测土壤湿度,当湿度较大时无源蜂鸣器发出声音
接线方式 Arduino Nano <------> 土壤湿度检测模块 5V <------> VCC GND <------> GND D6 <------> D0 Arduino Nano <------> 无源蜂鸣器 3V3 <------> VCC GND <------> GND D7 <------> IO (无源蜂鸣器模块)
无源内部不带震荡源,所以如果用直流信号无法令其鸣叫,必须用2k-5k的方法去驱动它,声音频率可控制,可以做出哆瑞咪发嗦啦西的效果。
串口监视器查看湿度情况
Mixly图形化编程程序
(图形化程序)
土壤湿度较小时,打开串口监视器查看
(串口数值显示)
土壤湿度较大时,打开串口监视器查看
(串口数值显示)
程序实现代码
- void setup(){
- Serial.begin(9600);
- pinMode(6, INPUT);
- }
- void loop(){
- Serial.println(digitalRead(6));
- delay(1000);
- }
复制代码
二、使用模拟量A0输出检测土壤湿度,当湿度较大时无源蜂鸣器发出声音 接线方式
Arduino Nano <------> 土壤湿度检测模块 3V3/5V <------> VCC GND <------> GND A3 <------> A0
Arduino Nano <------> 无源蜂鸣器 3V3 <------> VCC GND <------> GND D7 <------> IO
串口监视器查看湿度情况
Mixly图形化编程程序
(图形化程序) 土壤湿度干燥时,打开串口监视器查看
(串口数值显示) 土壤湿度较大时,打开串口监视器查看
(串口数值显示)程序实现代码 - void setup(){
- Serial.begin(9600);
- pinMode(6, INPUT);
- }
- void loop(){
- Serial.println(digitalRead(6));
- delay(1000);
- }
复制代码
Mixly图形化编程程序-----当湿度较大时无源蜂鸣器发出声音
(图形化程序) 程序实现代码
- void setup(){
- pinMode(7, OUTPUT);
- }
- void loop(){
- if (analogRead(A3) < 600) {
- tone(7,131);
- } else {
- noTone(7);
- }
- }
复制代码
|