STM32单片机+雨滴传感器+OLED屏幕+蜂鸣器报警+雨滴数据发送到串口调试助手+源代码

目录

一、雨滴传感器介绍

二、雨滴传感器接线说明

三、测试说明、雨滴传感器驱动代码

四、串口调试助手把采集的雨滴数据发送出来 

五、串口调试助手软件下载 

六、源代码

七、雨滴传感器原理图资料


一、雨滴传感器介绍

        为确保自适应天气控制策略执行的准确性,加设雨滴传感器来辅助判断天气情况。该传感器用于雨雪天气状况的监测,可转成数字信号或模拟信号输出。传感器采用高品质FR-04双面材料,采用镀镍处理表面,具有对抗氧化,导电性,及寿命方面更优越的性能。如图所示。    

        该传感器具有数字开关量输出(0和1)和模拟量AO电压输出两种输出形式。     接上5V电源,电源灯亮,感应板上没有水滴时,DO输出为高电平,开关指示灯灭;滴上一滴水,DO输出为低电平,开关指示灯亮;刷掉上面的水滴后又恢复,输出高电平状态。AO模拟输出,可以连接单片机的AD口检测滴在上面的雨量大小。DO TTL数字输出也可以连接单片机检测是否有雨。

        雨滴传感器基本上是一块板,上面以线形形式涂覆镍。它基于抵抗原理。雨水传感器模块允许通过模拟输出引脚测量湿度,当湿度阈值超过时,它可以提供数字输出。

        该模块基于LM393运算放大器。它包括电子模块和“收集”雨滴的印刷电路板。当雨滴积聚在电路板上时,它们会形成并联电阻路径,该路径可通过运算放大器进行测量。

        传感器是一个电阻偶极子,在潮湿时显示较小的电阻,而在干燥时显示较大的电阻。当船上没有雨滴时,它会增加电阻,因此我们根据V = IR获得高电压。当出现雨滴时,它会降低电阻,因为水是电的导体,并且水的存在使镍线并联连接,因此降低了电阻并降低了其两端的电压降。

二、雨滴传感器接线说明

VCC(+):电源正极接口,外接电源3 ~ 5V电源正极,接单片机的5v或者3v引脚

GND(-):电源负极接口,外接电源负极或地线GND,接单片机的GND

   AO         :模拟信号输出口,接单片机的PA1采集引脚

三、测试说明、雨滴传感器驱动代码

编译环境:keil5

测试单片机: STM32F103C8T6

功能:功能1:设定雨滴阈值,超过阈值触发蜂鸣器报警

           功能2:发送雨滴数据串到口调试助手上进行显示

RAINDROP.c文件编写雨滴传感器驱动代码如下:

#include "RAINDROP.h"
#include "Delay.h"	
 //初始化ADC															   
void  RAINDROP_Adc_Init(void)
{ 	
	ADC_InitTypeDef ADC_InitStructure; 
	GPIO_InitTypeDef GPIO_InitStructure;

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1, ENABLE );	  //使能ADC1通道时钟
 

	RCC_ADCCLKConfig(RCC_PCLK2_Div6);   //设置ADC分频因子6 72M/6=12,ADC最大时间不能超过14M

	//PA0 作为模拟通道输入引脚                         
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;		//模拟输入引脚
	GPIO_Init(GPIOA, &GPIO_InitStructure);	

	ADC_DeInit(ADC1);  //复位ADC1 

	ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;	//ADC工作模式:ADC1和ADC2工作在独立模式
	ADC_InitStructure.ADC_ScanConvMode = DISABLE;	//模数转换工作在单通道模式
	ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;	//模数转换工作在单次转换模式
	ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;	//转换由软件而不是外部触发启动
	ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;	//ADC数据右对齐
	ADC_InitStructure.ADC_NbrOfChannel = 1;	//顺序进行规则转换的ADC通道的数目
	ADC_Init(ADC1, &ADC_InitStructure);	//根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器   

	ADC_Cmd(ADC1, ENABLE);	//使能指定的ADC1
	
	ADC_ResetCalibration(ADC1);	//使能复位校准  
	 
	while(ADC_GetResetCalibrationStatus(ADC1));	//等待复位校准结束
	
	ADC_StartCalibration(ADC1);	 //开启AD校准
 
	while(ADC_GetCalibrationStatus(ADC1));	 //等待校准结束
 
//	ADC_SoftwareStartConvCmd(ADC1, ENABLE);		//使能指定的ADC1的软件转换启动功能

}				  
//获得ADC值
//ch:通道值 0~3
u16 Get_Adc(u8 ch)   
{
  	//设置指定ADC的规则组通道,一个序列,采样时间
	ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );	//ADC1,ADC通道,采样时间为239.5周期	  			    
  
	ADC_SoftwareStartConvCmd(ADC1, ENABLE);		//使能指定的ADC1的软件转换启动功能	
	 
	while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束

	return ADC_GetConversionValue(ADC1);	//返回最近一次ADC1规则组的转换结果
}

u16 Get_Adc_Average(u8 ch,u8 times)
{
	u32 temp_val=0;
	u8 t;
	for(t=0;t<times;t++)
	{
		temp_val+=Get_Adc(ch);
		Delay_ms(5);
	}
	return temp_val/times;
} 

RAINDROP.h文件,对驱动函数经行了声明:  

#ifndef __RAINDROP_H
#define __RAINDROP_H	

#include "sys.h"
#include "math.h"



void RAINDROP_Adc_Init(void);
u16  Get_Adc(u8 ch); 
u16 Get_Adc_Average(u8 ch,u8 times); 

#endif 

四、串口调试助手把采集的雨滴数据发送出来 

printf("雨滴 = %d ",RAINDROP_Value);

五、串口调试助手软件下载 

串口调试助手-keil5调试工具资源-CSDN文库

六、源代码

《STM32单片机+雨滴传感器+OLED屏幕+蜂鸣器报警+雨滴数据发送到串口调试助手》源代码资源-CSDN文库

七、雨滴传感器原理图资料

雨滴传感器原理图、模块资料资源-CSDN文库

  • 12
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 雨滴传感器是一种常见的气象传感器,用于检测降水情况。在STM32开发板上使用雨滴传感器可以实现雨水检测。通常情况下,使用模拟引脚连接雨滴传感器,根据电阻变化判断是否有雨水降落。 以下是一份示例代码,演示如何使用STM32开发板连接雨滴传感器并读取数据。 1. 定义引脚 //定义RainPin为模拟引脚A0 #define RainPin A0 2. 初始化引脚 //初始化引脚 void setup() { pinMode(RainPin, INPUT); //将模拟引脚设置为输入模式 Serial.begin(9600); //初始化串口,波特率9600 } 3. 读取传感器数据 //读取传感器数据 void loop() { int rainValue = analogRead(RainPin); //读取传感器数据 Serial.print("Rain sensor value: "); Serial.println(rainValue); delay(1000); //延时1s } 以上代码中,analogRead()函数用于读取模拟引脚的电压值,并将其转换为数字值,该函数返回值为0到1023之间的整数,对应类比值的0到5V。Serial.print()函数用于输出文本,Serial.println()函数用于输出文本并在末尾添加回车符。delay()函数用于延时,以便反复读取传感器数据。 这是一个简单的入门示例,实际应用中需要根据实际情况调整代码以获得更精确的读数及更好的稳定性。 ### 回答2: 雨滴传感器是一种常用于测量降雨量的电子元件。雨滴传感器通过检测降雨时雨滴与传感器之间的电阻变化来计算降雨量。在使用STM32芯片编写雨滴传感器的代码时,需要先定义输入和输出管脚。常用的管脚包括PIO端口和ADC端口,具体选择哪种可以根据自己的实际需求进行选择。 在雨滴传感器的代码中,需要读取传感器的状态,判断是否有雨滴落在传感器上。如果有,则引脚之间的电阻值会发生变化,通过ADC测量电阻变化值来计算降雨量。编写代码时,需要定义ADC通道并使用定时器来触发ADC采样。还需要设置阈值来判断是否下雨,如果超过阈值,则是下雨状态。 此外,还需要注意防止代码出现死循环,否则会导致系统崩溃。在编写代码时,可以通过使用中断和延时等方法来处理各种情况。 总之,编写雨滴传感器STM32代码需要了解硬件知识和编程技巧,需要经过反复的实验和修改,才能得到一个准确、稳定的雨滴传感器。对于初学者来说,可以先学习基础的STM32编程知识,再逐步学习如何编写一个雨滴传感器的代码。 ### 回答3: 雨滴传感器是一种能够检测雨滴降落的传感器,它可以广泛应用于自动控制系统、天气预测、农业、建筑等领域。本文将针对STM32单片机进行雨滴传感器的编程设计。 首先,需要明确雨滴传感器的工作原理。雨滴传感器利用传感器板上的两个电极检测雨滴的降落,当雨滴接触电极时,电流将流过电极,导致电压变化。我们可以采用STM32的模拟输入模式将电压变化转换为数字信号,然后通过分析数字信号的大小来判断雨滴是否降落。 其次,编写STM32的程序代码。程序需要用到ADC模块、GPIO模块和TIM模块。首先,需要初始化ADC模块,选择模拟输入通道和采样时间。然后,需要配置GPIO模块,将接收到的模拟信号转换为数字信号。最后,使用TIM模块在一定时间内对数字信号进行采样,并根据采样结果判断雨滴是否降落。 需要注意的是,雨滴传感器的灵敏度和阈值可能会受到环境的影响。因此,在实际使用中,需要根据实际情况进行调整。 总之,STM32单片机可以轻松实现雨滴传感器的功能。该代码具有简单、高效、精确等优点,可以广泛应用于各种领域。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

STM32单片机定制

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

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

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

打赏作者

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

抵扣说明:

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

余额充值