标题: 基于STM32的土壤湿度实时监测器的制作 附源码+原理图 [打印本页]
作者: 索局先生 时间: 2018-11-15 22:47
标题: 基于STM32的土壤湿度实时监测器的制作 附源码+原理图
本文设计的是基于单片机STM32F103CBT6的土壤湿度检测系统,主要以广泛应用的土壤湿度传感器YL-69作为温度和湿度的检测,该仪器具有测量精度较高、硬件电路简单、并能很好的进行显示,可测试不同土壤环境湿度的特点。
单片机是系统的控制核心,所以单片机的性能关系到整个系统的好坏。因此单片机的选择,对所设计系统的实现以及功能的扩展有着很大的影响。本次设计是以STM32F103CBT6单片机为核心,配合土壤湿度传感器YL-69,IIC OLED显示器以及按键和蜂鸣器组成的湿度检测系统,通过传感器检测环境中的湿度的变化,可以接收所测土壤环境的湿度信号,并对采集到的数据进行处理和传输,再通过IIC OLED显示器显示湿度,实时监控环境的湿度数据。
硬件方面:
1、系统结构框图
2、土壤湿度传感器简介:湿度的采集可以用湿度传感器来实现。将湿度传感器看作可调变阻器,当湿度传感器采集到湿度时,电阻值发生变化,湿度最小时的电阻值为 10K,湿度最大时为0.1Ω。 变化的幅度是根据湿度传感器采集到的湿度大小而定。随着电阻值的变化,电路的输出电压也跟着变化。调节电阻值的大小,可得到想要的电压,满足电路的需求。此次设计采用的是土壤湿度传感器YL-69
土壤湿度传感器原理图
3、土壤湿度传感器特性:(1) 土壤湿度传感器YL-69,表面采用镀镍处理,有加宽的感应面积,可以提高导电性能 ,防止接触土壤容易生锈的问题,延长使用寿命;(2) 采用三线制,接线简单,只需把VCC外接3.3V-5V电压,GND外接数字地,AO“小板模拟量输出接口”接到单片机即可;(3) 比较器采用LM393芯片,工作稳定。
软件方面:
1、系统软件流程框图
程序如下:- #include "delay.h"
- #include "stm32f10x.h"
- #include "OLED_I2C.h"
- #include "led.h"
- #include "usart.h"
- #include "string.h"
- #include "adc.h"
- #include "timer.h"
- #include "sys.h"
- #include "exti.h"
- #include "beep.h"
-
- float temp_avrg=0;
- int temp_LL=40;
- int shidu;
- int num;
- int num_adj=1;
- int j=0;
- int times;
- float total=0;
- void Hardware_Init(void)
- {
- Delay_Init();
-
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
-
- I2C_Configuration();
-
- OLED_Init();
-
- Led_Init();
-
- uart_init(9600);
- Adc_Init();
-
- EXTIX_Init();
-
- BEEP_Init();
- }
- void OLED_Show(void)
- {
- unsigned char i;
- extern const unsigned char BMP2[];
- OLED_CLS();
- OLED_DrawBMP(0,0,128,8,(unsigned char *)BMP2);
-
- for(i=10;i<14;i++)
- OLED_ShowCN(0,2*(i-10),i);
-
- for(i=14;i<18;i++)
- OLED_ShowCN(112,2*(i-14),i);
-
- DelayMs(2500);
- OLED_CLS();
-
- for(i=0;i<4;i++)
- OLED_ShowCN(31+i*16,1,i);
-
- for(i=18;i<21;i++)
- OLED_ShowCN(39+(i-18)*16,5,i);
-
- DelayMs(1500);
- OLED_CLS();
-
- for(i=4;i<10;i++)
- OLED_ShowCN(14+(i-4)*16,0,i);
-
- for(i=6;i<8;i++)
- OLED_ShowCN(0+(i-6)*16,3,i);
-
- OLED_ShowStr(36,4,":",1);
- OLED_ShowStr(90,4,"%",1);
-
- for(i=6;i<8;i++)
- OLED_ShowCN(0+(i-6)*16,6,i);
- for(i=21;i<23;i++)
- OLED_ShowCN(32+(i-21)*16,6,i);
-
- OLED_ShowStr(70,7,":",1);
- OLED_ShowStr(110,7,"%",1);
- OLED_ShowNum(75,7,temp_LL,1);
- int main(void)
- {
- num=50;
- Hardware_Init();
- printf("\r\n³õʼ»¯Íê³É\r\n");
- OLED_Show();
-
- while(1)
- {
- Get_Adc_Average(1,10);
- DelayMs(500);
-
- if(shidu>10000)
- shidu=10000;
-
- if(shidu<0)
- shidu=0;
-
- OLED_ShowNum(60,4,shidu%100,1);
- OLED_ShowNum(40,4,shidu/100,1);
- OLED_ShowStr(64,4,".",1);
-
- if(shidu/100<temp_LL)
- {
- BEEP=0;
- DelayMs(500);
- BEEP=1;
- DelayMs(500);
-
- }
- }
- }
- /*AD转化处理*/
- u16 Get_Adc(u8 ch)
- {
-
- ADC_RegularChannelConfig(ADC1,ch,1, ADC_SampleTime_239Cycles5);
-
- ADC_SoftwareStartConvCmd(ADC1,ENABLE);
-
- while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));
-
- return ADC_GetConversionValue(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);
- DelayMs(1);
- }
- temp_avrg=temp_val/times;
- shidu=(4092-temp_avrg)/3292*10000;
-
-
-
- return temp_avrg;
- }
复制代码
第一次发帖,多有不足,希望大家提出来和多多包涵,谢谢!
附件在一楼下载
-
-
土壤湿度传感器模块电路图.pdf
25.87 KB, 下载次数: 280, 下载积分: 黑币 -5
作者: 1002464445 时间: 2018-11-18 15:50
请问我下载了这个压缩包,用keil5 打开,里面没有东西?
作者: hhhhhh111 时间: 2018-11-20 12:47
同问,我也是,路径不对,不能用keil5打开编译
作者: hhhhhh111 时间: 2018-11-20 12:51
可否把core等文件夹也发出来,否则不能用啊
作者: hhhhhh111 时间: 2018-11-20 13:01
可不可以把整个文件夹发出来,谢谢
作者: Poker_ 时间: 2018-11-20 16:40
怎么打开什么也没有啊
作者: 51hei温文尔雅 时间: 2018-11-20 20:59
我也是这么想的 路径错误 这个东西真的不错想法也好
作者: 51hei温文尔雅 时间: 2018-11-20 21:01
那个题主的资料很好 但是一些库函数没发出来啊 我解压后发现那个文件夹里 近乎是空的
作者: cq_1120 时间: 2018-11-28 17:44
楼主,能否把整个工程都发出来 我用keil5打开后 发现好多源文件都没有
作者: 索局先生 时间: 2018-12-1 20:38
最近有点忙,现在才看到大家的评论,不好意思。整个工程文件都在这了,大家根据自己需求改吧。
-
-
土壤湿度传感器Res式1.2.rar
327.26 KB, 下载次数: 430, 下载积分: 黑币 -5
工程文件
作者: yubo2007 时间: 2018-12-2 10:22
用keil5打开后 发现好多源文件都没有
作者: lkfxy 时间: 2018-12-30 10:49
感谢分享,谢谢
作者: kxkxkxkxkxxkxkx 时间: 2019-4-19 10:55
土壤温湿度传感器
作者: 简述 时间: 2019-6-3 20:44
你好 下载下来不是测土壤温湿度的啊,能给详细讲解一下吗
作者: changheng201314 时间: 2019-7-16 15:14
棒棒的
作者: lc9099 时间: 2019-7-17 16:56
借鉴一下。。
作者: lxj22 时间: 2019-8-2 10:00
能否把整个电路发出来?
作者: 红剑琴心 时间: 2019-10-17 22:16
这个是超声波测距吧
作者: thisiswang 时间: 2019-12-15 15:08
感谢楼主的分享
作者: 多米诺骨牌 时间: 2020-4-14 11:53
感谢作者!
作者: 归刃 时间: 2022-1-11 17:42
请问(4092-temp_avrg)/3292*10000公式怎么得来的?
作者: 899 时间: 2022-4-4 20:27
同问,有理解的没
作者: cc会努力 时间: 2022-12-30 16:13
请问有没有代码包和pro工程包
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |