提示:记录2022年4月做的毕设
前言
基于STM32的车间环境监测系统,主控使用STM32F103ZET6,在正点原子的精英板上开发(本人也在野火板子上测试成功)。
一、任务书
1.1设计(研究)目标:
以STM32单片机为核心器件,设计一个精加车间环境检测系统,通过战舰板平台利用温度湿度,振动,PM2.5等传感器和空调,通风,空气净化等设备设计一个恒温,恒湿,抗振,高度净化的精加车间环境检测系统。利用平台的远程通信功能,实现集中检测的基本功能并保证一定的检测范围及对检测对象的合理布置,还能远程传到合适的终端。形成实时数据。
设计(研究)内容及具体要求:
1.2设计(研究)内容:
1、题目的意义;
2、各种传感器及设备的一般技术和特殊技术的学习:
3、精加车间环境的技术要求;
4、总体方案的选型设计:
5、STM32单片机及其外围设备的软硬件系统的技术开发:
6、系统的调试和总体运行原理
7、其他设计内容;具体要求:
1、硬件要求1张1号以上的大图:
2、软件以流程图方式表示:
3、有调试的说明。
二、代码思路
打开定时器2,作为系统运行时间;
esp8266每1S刷新一次;
dht11每800ms刷新一次;
三、硬件
- ESP826601s
- DHT11
- OLED
- 按键
- PCF8591
- 蜂鸣器(板子自带)
- 震动传感器
四、联系我们
承接stm32单片机定做设计、嵌入式类设计定做。
咨询liaxi“2424644692”(扣扣)
五、部分代码
int main(void)
{
while(1)
{
/*****************************************************/
//以下是按键
/*****************************************************/
key=KEY_Scan(1); //得到键值
if(key)
{
switch(key)
{
case WKUP_PRES:
Set_wendu++;
break;
case KEY2_PRES:
Set_shidu++;
break;
case KEY1_PRES:
Set_PM2_5++;
break;
case KEY0_PRES:
Page++;
break;
}
}else delay_ms(10);
//阈值只能加,加到一定数值归位
if(Set_wendu>80)Set_wendu=0;
if(Set_shidu>100)Set_shidu=0;
if(Set_PM2_5>255)Set_PM2_5=0;
if(Page>2)Set_PM2_5=1;
/*****************************************************/
//以下是OLED显示
/*****************************************************/
if(Page==1)
{
OLED_Clear();
show_caption();
Show_Chinese();
OLED_ShowNum(28,3,wendu,3,16);//显示温度值
OLED_ShowNum(92,3,shidu,3,16);//显示烟雾值
OLED_ShowNum(28,6,TOUCH,3,16);//显示震动
}
else if(Page==2)
{
OLED_Clear();
show_caption();
Show_Chinese2();
OLED_ShowNum(28,3,Set_wendu,3,16);//显示温度阈值
OLED_ShowNum(92,3,Set_shidu,3,16);//显示烟雾阈值
OLED_ShowNum(92,6,Set_PM2_5,3,16);//显示pm2.5阈值
}
/*****************************************************/
//以下是读取dht11
/*****************************************************/
if(dht_flag)
{
DHT11_ReadData(&shidu,&wendu); //如果DHT11读取到数据了,那么就显示
dht_flag=0;
}
PM2_5=ADC_IN2();
if(PM2_5 > Set_PM2_5 && Page==1)
{
OLED_ShowNum(92,6,PM2_5,3,16); //显示PM2.5
sprintf(send_str4,"PM2.5: %d\r\n",PM2_5);
ESP8266_SendString( DISABLE, send_str4, strlen ( send_str4 ), ( ENUM_ID_NO_TypeDef ) 0 );
}
/*****************************************************/
//以下是调节pwm占空比
/*****************************************************/
/*
if(led0pwmval>800)led0pwmval=800;
else if(led0pwmval<0)led0pwmval=0;
TIM_SetCompare2(TIM3,led0pwmval);
*/
/*
if(dir)led0pwmval+=60;
else led0pwmval-=60;
if(led0pwmval>300)dir=0;
if(led0pwmval==0)dir=1;
*/
TIM_SetCompare2(TIM3,led0pwmval);
/*****************************************************/
//以下是震动报警
/*****************************************************/
if(TOUCH==1)
{
//LED=!LED;
OLED_ShowNum(28,6,TOUCH,3,16);//显示震动
ESP8266_SendString( DISABLE, send_str2, strlen ( send_str2 ), ( ENUM_ID_NO_TypeDef ) 0 );
delay_ms(800);
TOUCH=0;
}
/*****************************************************/
//以下是esp8266向客户机发送数据
/*****************************************************/
//sprintf(send_str2,"当前湿度:%d%%,当前温度:%d℃\r\n",shidu,wendu);
if(esp_flag==1)
{
esp_flag=0;
sprintf(send_str3,"湿度:%d 温度:%d\r\n",shidu, wendu);
ESP8266_SendString( DISABLE, send_str3, strlen ( send_str3 ), ( ENUM_ID_NO_TypeDef ) 0 );
}
}
}
void show_caption(void)
{
//车间环境监测系统
OLED_ShowCHinese(0,0,0);
OLED_ShowCHinese(16,0,1);
OLED_ShowCHinese(32,0,2);
OLED_ShowCHinese(48,0,3);
OLED_ShowCHinese(64,0,4);
OLED_ShowCHinese(80,0,5);
OLED_ShowCHinese(96,0,6);
OLED_ShowCHinese(112,0,7);
}
void Show_Chinese(void)
{
OLED_ShowString(0,3,"Tem:",16); //温度
OLED_ShowString(68,3,"Hum:",16); //湿度
OLED_ShowString(0,6,"Tou:",16); //震动
OLED_ShowString(68,6,"PM.:",16); //pm2.5
}
void Show_Chinese2(void)
{
OLED_ShowString(0,3,"Tem:",16); //温度阈值
OLED_ShowString(68,3,"Hum:",16); //湿度阈值
OLED_ShowString(68,6,"PM.:",16); //pm2.5阈值
}
六、框图等资料
链接: https://download.csdn.net/download/qq_43625266/85565468