提示:记录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 );
}
}
}