基于STM32的红外测距系统

提示:记录2022年4月做的毕设

前言

基于STM32的车间环境监测系统,主控使用STM32F103ZET6,在正点原子的精英板上开发。


一、任务书

1.1设计(研究)目标:

以STM32单片机为核心器件,设计一个红外测距系统,红外测距仪基于红外线的不扩散原理,在测量短距离物体时有着较高的精度,在生活中发挥着重要的作用。通过硬件和软件的设计,实现能够精准测量10~50cm物体的红外技术测距仪。

设计(研究)内容及具体要求:

1.2设计(研究)内容:
  • 题目的意义;
  • 各种传感器及设备的一般技术和特殊技术的学习:
  • 总体方案的选型设计:
  • STM32单片机及其外围设备的软硬件系统的技术开发:
  • 系统的调试和总体运行原理
  • 其他设计内容;具体要求:
  • 硬件要求1张1号以上的大图:
  • 软件以流程图方式表示:
  • 有调试的说明。

二、思路

  • 第一步红外传感器模块GP2YOA21YKOF发送红外线;
  • 第二步到达物体后反射红外线;
  • 第三步红外传感模块接收反射后的红外线;
  • 第四步传感器模块将信号发送给单片机处理模块;
  • 第五步经过模数转换将非线性的模拟信号转换为线性的数字信号;
  • 第六步由单片机处理模块发送数字信号到液晶显示模块;
  • 第七步最后结果表明在液晶显示模块LCD1602上

三、硬件

  • GP2YOA21YKOF
  • OLED
  • 按键
  • PCF8591
  • STM32F103

四、联系我

承接stm32单片机、STC系列单片机设计、嵌入式
问题联系QQ:2424644692
某宝店铺,搜:“晖亿科创”

五、代码以及框图等资料

int main(void)
{
	int distance=0,light=0;
	int shidu=0,wendu=0;
	char send_str1[200]="Infrared ranging detection system based on stm32!\r";
	char send_str2[200]=" ";
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  all_usart_init();		    // 串口初始化
  delay_init();			      // 延时初始化
	ESP8266_Init();         // 初始化WiFi模块使用的接口和外设
	Esp8266_ap();

	//LED_Init();
	
	OLED_Init();
	OLED_Clear();
 	 
	TIM2_Int_Init(999,7199);  //10Khz的计数频率,计数到1000为100ms
	
	PCF8591_Init();
  DHT11_Start();
	LIGHT_Init();
	
	show_caption();
	Show_Chinese();
	ESP8266_SendString( DISABLE, send_str1, strlen ( send_str1 ), ( ENUM_ID_NO_TypeDef ) 0 );	    
	while(1)
	{	
		/*****************************************************/
		//以下是采集模拟量
		//ADC_IN2()是采集过来的电压值,校准后给distance
		/*****************************************************/
		//distance = 70-(ADC_IN1()/3);
		//delay_ms(100);
    if(dis_flag==1)
		{
			dis_flag=0;
			distance = (170-ADC_IN2())/2;
			OLED_ShowNum(34,3,distance,3,16);
			
			light=LIGHT_IN2();		
			OLED_ShowNum(34,6,light,3,16);
		}
		
		
		
		if(dht_flag==1)
		{
			dht_flag=0;
			DHT11_ReadData(&shidu,&wendu);
			OLED_ShowNum(96,3,shidu,3,16);
			OLED_ShowNum(96,6,wendu,3,16);
		}
		
		
		
		
		/*****************************************************/
		//以下是OLED显示
		/*****************************************************/
		
		//OLED_ShowNum(34,6,distance,3,16);//
		/*****************************************************/
		//以下是ESP8266发送
		/*****************************************************/
		if(esp_flag==1)
		{
			esp_flag=0;
			sprintf(send_str2,"距离:%d CM;光照:%d;温度:%d;湿度:%d\r\n", distance, light, wendu, shidu);
	    ESP8266_SendString( DISABLE, send_str2, strlen ( send_str2 ), ( ENUM_ID_NO_TypeDef ) 0 );	    
		}   

	}
}


喜欢请点赞哦!

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值