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

一、土壤湿度传感器介绍

        土壤湿度传感器是一种用于测量土壤中水分含量的传感器,广泛应用于农业、园艺和环境监测等领域。它可以帮助用户实时监测土壤的湿度,进而决定是否需要灌溉,确保植物获得适量的水分。

土壤湿度传感器的工作原理:

        土壤湿度传感器通过测量土壤的电导率来确定其湿度。通常,湿润的土壤具有较好的导电性,而干燥的土壤则导电性较差。传感器内置的电极会在土壤中插入,通过测量电流变化来推算土壤的湿度。

主要类型:

  1. 模拟型土壤湿度传感器

    • 输出模拟信号(如0-5V),可以直接与微控制器的模拟输入接口连接。通过读取模拟信号的电压变化,计算土壤的湿度值。
    • 优点:结构简单、成本较低。
    • 缺点:需要进行模拟信号的校准,且易受外部环境干扰(如温度变化)。
  2. 数字型土壤湿度传感器

    • 输出数字信号(如高或低),通常通过比较湿度阈值来判断土壤湿度是否低于某个标准。适用于一些简单的判断应用。
    • 优点:抗干扰能力强,操作简便。
    • 缺点:不能提供具体的湿度数值,通常只能提供湿度高或低的状态。

二、土壤湿度传感器接线说明

        以下是 土壤湿度传感器 的接线说明表,详细描述了每个引脚的功能以及如何连接到控制器(如Arduino等)。

土壤湿度传感器接线说明表:

土壤湿度传感器引脚连接到说明
VCC电源引脚(5V 或 3.3V)连接至STM32单片机的电源引脚,提供电源。电压一般为5V或3.3V,具体电压请参考传感器规格。
GND地线(GND)连接至STM32单片机的地线(GND),作为电路的公共地,确保电流回流正常。
A0模拟输入引脚(如Arduino的A0)连接至STM32单片机的模拟输入引脚,传感器输出的模拟信号与土壤湿度成正比,可以读取湿度值。
D0数字输入引脚(如Arduino的D2)连接至STM32单片机的数字输入引脚,传感器输出的数字信号,用于简单的湿度检测。当湿度达到设定的阈值时,输出高电平(1)表示湿润,低电平(0)表示干燥。

三、测试说明、土壤湿度传感器驱动代码

编译环境:keil5

测试单片机: STM32F103C8T6

功能:功能1:采集土壤湿度数据在OLED屏幕上显示出来,超过阈值触发蜂鸣器报警

           功能2:把采集土壤湿度数据发送到串口调试助手上

Soil_Moisture.c文件编写土壤湿度传感器驱动代码如下:

u8 times;

void Adc_Init()
{ 
 GPIO_InitTypeDef GPIO_Initstructre;     
 ADC_InitTypeDef ADC_InitStruct;
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_ADC1,ENABLE);
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
 GPIO_Initstructre.GPIO_Mode=GPIO_Mode_AIN;//模拟输入模式
 GPIO_Initstructre.GPIO_Pin=GPIO_Pin_1;
 GPIO_Initstructre.GPIO_Speed=GPIO_Speed_50MHz;
 GPIO_Init(GPIOA,&GPIO_Initstructre);
 GPIO_SetBits(GPIOA,GPIO_Pin_1);
 
 RCC_ADCCLKConfig(RCC_PCLK2_Div6);                  //设置ADC的时钟为PCLK2的6分频
 ADC_DeInit(ADC1);                                  //复位ADC1
 ADC_InitStruct.ADC_ContinuousConvMode = DISABLE;   //配置ADC为单次转换模式
 ADC_InitStruct.ADC_DataAlign=ADC_DataAlign_Right;  //配置ADC数据右对齐
 ADC_InitStruct.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//配置ADC为软件触发转换
 ADC_InitStruct.ADC_Mode=ADC_Mode_Independent;      //工作模式,配置ADC为独立模式
 ADC_InitStruct.ADC_NbrOfChannel = 1;               //配置ADC通道数量为1
 ADC_InitStruct.ADC_ScanConvMode = DISABLE;         //配置ADC为非扫描模式
 ADC_Init(ADC1,&ADC_InitStruct);                    //初始化ADC1
 ADC_Cmd(ADC1,ENABLE);                              //使能ADC1
 ADC_ResetCalibration(ADC1);                        //重置ADC1的校准寄存器
  
 while(ADC_GetResetCalibrationStatus(ADC1));        //等待校准重置完成
 
 ADC_StartCalibration(ADC1);                        //开启ADC1的校准
                 
 while(ADC_GetCalibrationStatus(ADC1));	            //等待校准完成。
}
	  
u16 Get_Adc(u8 ch)
{
 ADC_RegularChannelConfig(ADC1,ch,1,ADC_SampleTime_239Cycles5); // 配置ADC1的规则通道,设置采样时间为239.5个时钟周期

 ADC_SoftwareStartConvCmd(ADC1,ENABLE);                         // 启动ADC1的软件转换

 while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));                  // 等待ADC转换完成

 return ADC_GetConversionValue(ADC1);                           // 返回ADC转换结果

}


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);                                                 // 延时5毫秒,等待下一次采样
  }
 return temp_val/times;                                         // 返回多次采样的平均值 稳定

}

四、串口调试助手把采集的土壤湿度数据发送出来

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

串口调试助手-keil5调试工具_stm32水位传感器资源-CSDN文库

六、源代码

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

七、土壤湿度传感器资料文档

土壤湿度传感器资料文档资源-CSDN文库

八、硬件实物接线图

土壤湿度传感器接线图资源-CSDN文库

九、原理图

土壤湿度传感器原理图.pdf资源-CSDN文库 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

嵌入式Dora

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

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

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

打赏作者

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

抵扣说明:

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

余额充值