一起玩转树莓派(13)——雨滴检测传感器

简介:     在本系列的前几篇博客中,我们有进行过温度传感器和光强传感器的实验。通过这些传感器,加上简单的编程技术,我们很容易获取这些环境数据。通过各种丰富的传感器,用树莓派可以非常容易的打造一款”简易气象站“。对于一个小型的气象站来说,除了需要收集温度和光照强度数据外,当前的天气状况也是必不可少的。本篇博客,我们将通过雨滴检测传感器实验来获取雨势信息。

一起玩转树莓派(13)——雨滴检测传感器

    在本系列的前几篇博客中,我们有进行过温度传感器和光强传感器的实验。通过这些传感器,加上简单的编程技术,我们很容易获取这些环境数据。通过各种丰富的传感器,用树莓派可以非常容易的打造一款”简易气象站“。对于一个小型的气象站来说,除了需要收集温度和光照强度数据外,当前的天气状况也是必不可少的。本篇博客,我们将通过雨滴检测传感器实验来获取雨势信息。

一、雨滴检测传感器

    本次实验使用的雨滴检测传感器模块如下图所示:

可以看到,此元件组由一个检测板和控制模块组成,两部分分开连接,便于将检测板放置到合适的检测位置,且检测板面积大,易于进行雨滴检测。

此传感器模块工作电路图如下所示:

在使用时,先将检测板的两个引脚与模块的只有两个引脚一侧的引脚相连(可以将检测板理解为两根不想交的导线,有雨水落下时,导线会联通)。

    观察控制模块,可以看到其上封装了两个LED,其中一个LED是电源指示灯,当接通电源后会发光,另一个LED是信号灯,没有雨水的时候信号灯不亮,检测板上有雨水的时候信号灯亮。在检测是否下雨时,可以将检测板倾斜放置,有雨水流过即可改变电平信号的输出。控制模块中还自带一个调节电阻,调节此电阻可以设置传感器的灵敏度。控制模块的另一侧有4个引脚,分别为AO,DO,GND和VCC。其中,AO为模拟信号输出,可以通过这个引脚输出的信号来判断雨量的大小。DO引脚为数字信号输出,可以用这个引脚输出的信号判断检测板上是否有雨水,没有水滴时此引脚输出高电平,有水滴时此引脚输出低电平。

二、实验连线与编码

    本次实验,我们将使用GPIO引脚直接获取雨滴检测模块的数字信号,并通过PCF8591来读取雨滴检测模块的模拟信号。首先,连线如下:

PCF8591与树莓派连接:

PCF8591 树莓派
SDA SDA
SCL SCL
VCC 5V电源
GND GND

雨滴检测模块:

雨滴检测模块 树莓派 PCF8591
VCC 5V  
GND GND  
AO   AIN0
DO GPIO17(BCM编码)  

完成了基础的连线,我们就可以开始编码工作了。关于PCF8591的使用,我们之前的博客有过详细的介绍,但是如果每次使用到数模转换时,都编写一遍PCF8591的控制代码会非常的麻烦,而且这也不是我们要核心关注的功能点,对于本实验来说,我们更多需要关注的是如何处理雨滴检测模块的数据,而不是DA转换相关逻辑,因此我们可以编写一套通用的PCF8591驱动代码,之后再使用到有模拟信号输出的元件时,直接使用此驱动即可。

    需要注意,要使用PCF8591,不要忘记打开树莓派的I2C接口,接线完成后,使用如下指令可以查看设备地址:

sudo i2cdetect -y 1

完整代码如下:

#coding:utf-8
import smbus   #在程序中导入“smbus”模块
# /dev/i2c-1
bus = smbus.SMBus(1)  #创建一个smbus实例

# 初始化驱动模块 定义PCF元件地址
def init(addr):
    global address
    address = addr

# 读取某个通道的数据
def read(chn):
    global address
    if chn == 0:
        #发送一个控制字节到设备 表示要读取AIN0通道的数据
        bus.write_byte(address,0x40)   
    if chn == 1:
        #发送一个控制字节到设备 表示要读取AIN1通道的数据
        bus.write_byte(address,0x41)
    if chn == 2:
        #发送一个控制字节到设备 表示要读取AIN2通道的数据
        bus.write_byte(address,0x42)
    if chn == 3:
        #发送一个控制字节到设备 表示要读取AIN3通道的数据
        bus.write_byte(address,0x43)
    bus.read_byte(address)         # 空读一次,消费掉无效数据
    return bus.read_byte(address)  # 返回某通道输入的模拟值A/D转换后的数字值

def write(val):
    global address
    temp = val
    temp = int(temp) 
    # 进行写数据操作
    bus.write_byte_data(address, 0x40, temp) 

实现水滴检测的代码如下:

#coding:utf-8
import pcf8591 as PCF
import RPi.GPIO as GPIO
import time

DO = 11
# 设置使用的引脚编码模式
GPIO.setmode(GPIO.BOARD)
GPIO.setup(DO, GPIO.IN)
PCF.init(0x48)
while True:
    print('------------分割线-------------')
    rainDO = GPIO.input(DO)
    print('是否检测到水滴:%s'%('否' if rainDO else '是'))
    # 读取AIN0的模拟数据
    rainAO = PCF.read(0) 
    print('雨水程度%d'%(255 - rainAO))
    time.sleep(2)

在树莓派上运行上面程序,即可检测水滴情况。

专注技术,懂的热爱,愿意分享,做个朋友
目录
相关文章
|
C# 开发者
C# 7.0 中的元组:多值返回与结构化数据的便捷之道
【1月更文挑战第7天】C# 7.0 引入了元组作为一等公民,为开发者提供了一种方便的方式来返回多个值和处理结构化数据。元组不仅使方法能够返回多个不同类型的值,还通过语义化的命名提高了代码的可读性和可维护性。本文将探讨C# 7.0中元组的概念、特性、用法以及它们如何提升编程效率和代码质量。
|
传感器
STM32F407软件模拟I2C实现MPU6050通讯(CUBEIDE)(下)
STM32F407软件模拟I2C实现MPU6050通讯(CUBEIDE)(下)
1278 0
|
PHP 数据库 数据安全/隐私保护
|
传感器 机器学习/深度学习 人工智能
苏黎世理工最新!maplab2.0:模块化的多模态建图定位框架
将多传感器模态和深度学习集成到同时定位和mapping(SLAM)系统中是当前研究的重要领域。多模态是在具有挑战性的环境中实现鲁棒性和具有不同传感器设置的异构多机器人系统的互操作性的一块垫脚石。借助maplab 2.0,这个多功能的开源平台,可帮助开发、测试新模块和功能,并将其集成到一个成熟的SLAM系统中。
苏黎世理工最新!maplab2.0:模块化的多模态建图定位框架
|
9月前
|
域名解析 数据安全/隐私保护 开发者
站长实战指南:从域名注册到备案,国内建站必知事项
本文详细介绍了域名注册、备案及解析的全流程,涵盖国内服务商(如阿里云、腾讯云)的域名选购、实名认证、费用参考及避坑建议。同时解析了域名备案的具体步骤与注意事项,并对比了备案与免备案域名的优劣势。针对不同需求,提供了大陆备案和香港/海外免备案的选择方案。最后提醒政策风险,建议企业优先备案,个人开发者根据业务场景灵活选择,确保网站合法合规运行。
2031 3
|
传感器 存储 Java
一起玩转树莓派(17)——BMP180数字压力传感器应用
BMP180是一款高级的温度气压传感器,通过测量的气压值也可以计算出当前海拔高度。其压力测量范围为300-1100hPa,对应的海拔高度为正9000m-负500m。工作电压在1.8V到3.6V之间。体积小,精度高,采用I2C接口,使用非常方便。BMP180传感器在GPS导航,天气检测,海拔测量和垂直方向速度检测等方面有广泛的应用。本实验,我们尝试使用树莓派的I2C接口来读取BMP180的温度和气压值,并进行海拔高度的计算。
18352 0
|
网络安全 Windows
查看SSH配置文件
查看SSH配置文件
1510 1
|
人工智能
最近很火的人工智能ChatGPT可以实现“ 连续对话”机制
这篇文章介绍了人工智能ChatGPT实现连续对话机制的方法,包括如何通过传递特定的参数如conversation_id来保持对话的连续性。
最近很火的人工智能ChatGPT可以实现“ 连续对话”机制
|
监控 应用服务中间件 网络安全
FastAPI部署大揭秘!如何从代码到云端,让你的Web应用华丽变身生产环境之星?
【8月更文挑战第31天】FastAPI是一款基于Python 3.6+异步特性的高性能Web框架,深受开发者喜爱。本文详细介绍了将FastAPI应用部署到生产环境的过程,包括准备应用、使用Uvicorn测试、配置Gunicorn和Nginx、设置反向代理及监控日志等关键步骤。通过这些步骤,确保应用安全高效地运行在生产环境中,实现高性能与高可扩展性。
1815 0
IAR for STM8下载、安装、注册
IAR for STM8下载、安装、注册
2399 0