雨滴探测传感器检测下雨并预警实验

#实验目的:通过雨滴探测传感器探测到雨滴并超过阈值后,触发继电器进而触发七彩LED灯闪烁预警提示。
#接线效果如图
接线示例
#其他说明
1、继电器触发七彩LED接线以及操作参考文章:http://www.shumeijiang.com/2019/11/23/继电器实验/
2、雨滴探测模块接线以及操作参考文章:http://www.shumeijiang.com/2019/12/21/雨滴探测传感器/
#实验代码
代码示例

#!/usr/bin/env python
#coding:utf-8

'''
from JiuJiang
树莓酱的操作实例
https:://www.suhmeijiang.com
'''

import RPi.GPIO as GPIO  ##引入GPIO模块
import time              ##引入time库
import smbus             ##引入控制总线

ledPin = 17              ##继电器控制口
GPIO.setmode(GPIO.BCM)   ##此处采用的BCM编码 因为T型扩展板也是BCM编码 方便统一
GPIO.setup(ledPin, GPIO.OUT) ##设置BCM编码下指定引脚为输出状态

address = 0x48       ##雨滴传感器地址
A0 = 0x40            ##使用的端口地址
bus = smbus.SMBus(1) ##开启总线
threshold = 150      ##雨量触发预警的阈值 可自定义

try:
    while True:
        bus.write_byte(address, A0)       ##设置获取传感器哪个端口数
        value = bus.read_byte(address)    ##读取指定端口数据
        print ("雨量值:%1.3f " %(value))  ##输出检测值

        ##检测是否触发预警
        if value >= threshold:      ##检测是否触发预警
            GPIO.output(ledPin, GPIO.LOW)   ##没有触发预警则让继电器处于闭合状态
            continue
        else:
            print "开灯"   ##触发预警 亮灯闪烁
            GPIO.output(ledPin, GPIO.HIGH)  ##高电平开灯
            time.sleep(3)  ##预警持续时间

        time.sleep(1)   ##检测频率

except KeyboardInterrupt:
    pass

GPIO.cleanup()
#实验效果
1、执行代码 Python jiujiang.py;
2、可见屏幕输出255数值(根据探测板情况而定);
3、将水滴滴入探测板,会发现屏幕输出不同的雨滴值,如果雨滴值小于阈值,会听见咔的一声,继电器闭合通电,七彩LED灯开始闪烁。
4、预警闪烁持续3秒钟,然后继续监测;如果发现雨滴值大于阈值,则继电器关闭,LED灯预警熄灭。
#视频效果如下:

雨滴探测传感器实验

#实验目的:通过水滴打湿传感器检测板,从而得到传感器发出探测到雨滴的指令消息。由于我们使用的是模拟信号,因此可看到随着雨量的变化而出现数值的变化。
#接线效果如图
接线示例
#其他说明
1、实验采用I2C协议,树莓派默认是关闭的因此需打开。可参考:http://www.shumeijiang.com/2019/12/08/基于命令行打开i2c协议支持/
2、I2C查看当前已挂载设备地址命令:

i2cdetect -r -y 1
#实验代码
代码示例

#!/usr/bin/env python
#coding:utf-8

'''
from JiuJiang
树莓酱的操作实例
http:://www.suhmeijiang.com
'''

import RPi.GPIO as GPIO  ##引入GPIO模块
import time              ##引入time库
import smbus             ##引入控制总线

GPIO.setmode(GPIO.BCM)   ##此处采用的BCM编码 因为T型扩展板也是BCM编码 方便统一

address = 0x48   ##传感器地址
A0 = 0x40        ##使用的端口地址
bus = smbus.SMBus(1)   ##开启总线

try:
    while True:
        bus.write_byte(address, A0)      ##设置获取传感器哪个端口数据
        value = bus.read_byte(address)   ##读取指定端口的数据
        print ("雨量值:%1.3f " %(value))  ##范围为0~255
        ##print ("雨量值:%1.3f " %(value*3.3/255))  ##转换为电压输出 如果是5V需要将3.3替换为5
        time.sleep(1)    ##探测频率

except KeyboardInterrupt:
    pass
#实验效果
1、执行代码 Python jiujiang.py;
2、当检测板没有雨滴时,输出255(如果上次有实验,寄存器有数据会输出上一次实验数据)。
3、然后将水滴滴入检测板,可见数值随着水滴面积增大而数值逐渐变小。
4、根据数值变化(或者转换为电压也可)可预警雨量变化。
5、Ctrl+C停止检测。
#视频效果如下: