当前位置: 首页 > news >正文

土壤湿度传感器详解(STM32)

目录

一、介绍

二、传感器原理

1.原理图

2.引脚描述

三、程序设计

main.c文件

TS.h文件

TS.c文件

四、实验效果 

五、资料获取

项目分享


一、介绍

        传感器适用于土壤的湿度检测,模块中蓝色的电位器是用于土壤湿度的阈值调节,数字量输出DO可以与单片机直接相连,通过单片机来检测高低电平,由此来检测土壤湿度。模拟量输出AO可以和AD模块相连,通过AD转换,可以获得土壤湿度更精确的数值;

以下是土壤湿度传感器的参数:

工作电压

3.3~5V

阈值调节

电位器调节

尺寸

14mm×32mm

输出方式

模拟量(AO)与数字量(DO

比较器

LM393

哔哩哔哩视频链接:

土壤湿度传感器详解(STM32)

(资料分享见文末) 

二、传感器原理

1.原理图

2.引脚描述

引脚名称

描述

VCC

供给电压3~5V

GND

地线

DO

开关信号

AO

模拟信号

三、程序设计

1.使用STM32F103C8T6读取土壤湿度传感器采集的数据,通过串口发送至电脑

2.将读取得到的数据同时在OLED上显示

土壤湿度(AO

PA0

OLED_SCL

PB11

OLED_SDA

PB10

串口

串口1

main.c文件

#include "stm32f10x.h"
#include "led.h"
#include "usart.h"
#include "delay.h"
#include "oled.h"
#include "TS.h"
#include "adcx.h"/*****************辰哥单片机设计******************STM32* 项目			:	土壤湿度传感器实验                     * 版本			: V1.0* 日期			: 2024.8.12* MCU			:	STM32F103C8T6* 接口			:	参看TS.h							* BILIBILI	:	辰哥单片机设计* CSDN			:	辰哥单片机设计* 作者			:	辰哥 **********************BEGIN***********************/u16 value;int main(void)
{ SystemInit();//配置系统时钟为72M	delay_init(72);LED_Init();LED_On();TS_Init();USART1_Config();//串口初始化OLED_Init();printf("Start \n");delay_ms(1000);OLED_Clear();//显示“土壤湿度:”OLED_ShowChinese(0,0,8,16,1);OLED_ShowChinese(16,0,9,16,1);OLED_ShowChinese(32,0,10,16,1);OLED_ShowChinese(48,0,11,16,1);OLED_ShowChar(64,0,':',16,1);while (1){LED_Toggle();value = TS_GetData();printf("土壤湿度: %d\r\n",value);OLED_ShowNum(80,0,value,2,16,1);delay_ms(200);}
}

TS.h文件

#ifndef __TS_H
#define	__TS_H
#include "stm32f10x.h"
#include "adcx.h"
#include "delay.h"
#include "math.h"/*****************辰哥单片机设计******************STM32* 文件			:	土壤湿度传感器h文件                   * 版本			: V1.0* 日期			: 2024.8.12* MCU			:	STM32F103C8T6* 接口			:	见代码							* BILIBILI	:	辰哥单片机设计* CSDN			:	辰哥单片机设计* 作者			:	辰哥**********************BEGIN***********************/#define TS_READ_TIMES	10  //土壤湿度ADC循环读取次数/***************根据自己需求更改****************/
// TS GPIO宏定义#define		TS_GPIO_CLK								RCC_APB2Periph_GPIOA
#define 	TS_GPIO_PORT							GPIOA
#define 	TS_GPIO_PIN								GPIO_Pin_0
#define   ADC_CHANNEL               ADC_Channel_0	// ADC 通道宏定义/*********************END**********************/void TS_Init(void);
uint16_t TS_GetData(void);#endif /* __ADC_H */

TS.c文件

#include "TS.h"/*****************辰哥单片机设计******************STM32* 文件			:	土壤湿度传感器c文件                   * 版本			: V1.0* 日期			: 2024.8.12* MCU			:	STM32F103C8T6* 接口			:	见代码							* BILIBILI	:	辰哥单片机设计* CSDN			:	辰哥单片机设计* 作者			:	辰哥**********************BEGIN***********************/void TS_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd (TS_GPIO_CLK, ENABLE );	// 打开 ADC IO端口时钟GPIO_InitStructure.GPIO_Pin = TS_GPIO_PIN;					// 配置 ADC IO 引脚模式GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;		// 设置为模拟输入GPIO_Init(TS_GPIO_PORT, &GPIO_InitStructure);				// 初始化 ADC IOADCx_Init();
}uint16_t TS_ADC_Read(void)
{//设置指定ADC的规则组通道,采样时间return ADC_GetValue(ADC_CHANNEL, ADC_SampleTime_55Cycles5);
}uint16_t TS_GetData(void)
{uint32_t  tempData = 0;for (uint8_t i = 0; i < TS_READ_TIMES; i++){tempData += TS_ADC_Read();delay_ms(5);}tempData /= TS_READ_TIMES;return 100 - (float)tempData/40.96;
}

四、实验效果 

五、资料获取

项目分享


http://www.mrgr.cn/news/17658.html

相关文章:

  • 旅行商问题及其解决方法
  • 这才是老板喜欢的数据分析简历
  • 数据权限的设计与实现系列5——前端筛选器组件Everright-filter介绍
  • HTB-Three(云服务)
  • 气膜体育馆:学校体育设施的全新选择—轻空间
  • 时序数据库荣登巅峰,被央视报道了!
  • 用EM算法估计GMM参数的实现
  • 已上岸|这才是老板喜欢的财务会计简历
  • STM32 Debug卡死在BKPT 0xAB
  • Python OpenCV 入门指南
  • 结束Linux特定端口上的进程,超级实用!
  • IDEA提示:java: 常量字符串过长
  • 金九银十来了,你的简历写好了么
  • js基础速成-字符串方法
  • JVM 内存参数
  • 模型 RULER情绪管理
  • 小琳Python课堂:Python性能测试利器:`timeit`和`memory_profiler`模块的使用与实践
  • MySQL——事务与存储过程(三)存储过程的使用(1)调用存储过程
  • SDIO驱动开发
  • 动手学深度学习(pytorch)学习记录23-图像卷积[学习记录]