好久没玩树莓派了,今天上手来做一个实验
文章目录
- 1.实验器材
- 2.实验原理
-
- 2.1基本说明
- 2.2电路图
- 2.3接线图
- 3.代码效果
-
- 3.1代码示例
- 3.2运行效果
- 结语
1.实验器材
2.实验原理
2.1基本说明
雨滴传感器的控制模块有四个输出,其中VCC连接到5V电源,模块GND引脚接地。DO将引脚连接到微控制器的数字引脚进行数字输出,也可以使用模拟引脚。要使用模拟输出,可以使用A0引脚连接到微控制器ADC引脚。
,用雨滴传感器检测降雨量,转换控制器检测到的信号。然后根据这些信号自动设置雨刮器的间隔,以便于控制雨刮器的电机;,自动检测驾驶环境,调整照明模式,提高恶劣环境下的驾驶安全性;,检查是否下雨,如果检测到雨滴,天窗会自动关闭。
传感器模块包括电位计,LM393比较器,LED,电容器和电阻器。雨板模块由铜轨组成,铜轨用作可变电阻。其阻力随雨板上的湿度而变化。
2.2电路图
2.3接线图
树莓派 | T型转接板 | PCF8591 |
---|---|---|
SDA | SDA | SDA |
SCL | SCL | SCL |
5V | 5V | VCC |
GND | GND | GND |
LM393模块 | T型转接板 | PCF8591 |
---|---|---|
DO | GPIO 17 | * |
AO | * | AIN 0 |
VCC | 3.3V | * |
GND | GND | * |
在连接LM393和雨滴传感器时,雨滴传感器上没有明确标明正负极,但在管脚下方用小点标记(负极无白点)
这个实验需要很多线,注意不要错。所有跳线帽在接线时都需要拔出
3.代码效果
3.1代码示例
因为需要使用,因此需要引用头文件<pcf8591.h>
/// #include <stdio.h> #include <wiringPi.h> #include <pcf8591.h> #include <math.h> #define makerobo_PCF 120 // 基础管脚120 #define makerobo_DOpin 0 // 雨滴传感器管脚 ///打印雨滴传感器提示信息 void makerobo_Print(int x) {
switch(x) {
case 1: /san> printf("\n************************\n" ); printf( "* makerobo Not Raining *\n" ); printf( "************************\n\n"); break; case 0: //有雨滴 printf("\n**********************\n" ); printf( "* makerobo Raining!! *\n" ); printf( "**********************\n\n"); break; default: //打印数据错误 printf("\n**********************\n" ); printf( "* Print value error. *\n" ); printf( "**********************\n\n"); break; } } int main() {
int makerobo_analogVal; // 定义模拟量存储变量 int makerobo_tmp, makerobo_status;// 定义状态信息 //初始化连接失败时,将消息打印到屏幕 if(wiringPiSetup() == -1){
printf("setup wiringPi failed !"); return 1; } //在基本引脚120上设置pcf8591,地址0x48 pcf8591Setup(makerobo_PCF, 0x48); //设置雨滴传感器管脚为输入模式 pinMode(makerobo_DOpin, INPUT); //默认状态值设置为0 makerobo_status = 0; //无限循环 while(1) {
makerobo_analogVal = analogRead(makerobo_PCF + 0); //获取AIN0上的值 printf("%d\n", makerobo_analogVal); //打印出该值 makerobo_tmp = digitalRead(makerobo_DOpin); //读取数字IO口电平,读取数字雨滴传感器DO端口 if (makerobo_tmp != makerobo_status) //状态发生改变 {
makerobo_Print(makerobo_tmp); //打印出雨滴传感器检测信息 makerobo_status = makerobo_tmp; //状态值重新赋值 } delay (200); //延时200ms } return 0; }
注意:其实是LM393和雨滴感应模块的集合体,所以代码注释中说的设置管脚为input模式,实际上设置的是LM393模块的管脚(毕竟只有它连上了T型转接板)
本次博客的代码和之前的实验很相似,其中PCF8591在上篇实验12博客中已经有过讲解,所以在这里就不bb啦
3.2运行效果
当你把湿纸巾印在雨滴传感器上,屏幕上会打印出makerobo Raining!!
,数值会随着雨滴量的大小变化(我这里测试的是,水多的时候打印的值小)但最后会趋于稳定,打印128
如果没有水,屏幕上打印makerobo Not Raining
,数值打印255
在LM393模块上有两个LED指示灯,在传感器探测到水后,DO-LED
会亮起
如果你的DO-LED
没有亮起,可以通过该传感器上蓝色的模块,用十字螺丝调节LM393模块的灵敏度(这个蓝色模块调节的是电阻)
结语
有了这个东西,你可以把雨滴传感器丢到窗台上,在不在家的时候,就可以运行代码,看看家里有无下雨了(毕竟时候工作上学的地方和家里隔了十几公里,天气就可能完全不同)
配合cpolar实现内网穿透,效果更佳哦😀
不过知道自己家下雨了,被子还没收,是不是徒增焦虑?