赞
踩
目录
项目成品图片:
哔哩哔哩视频链接:
(资料分享见文末)
基于STM32的智能家居安防系统
功能如下:
- int main(void)
- {
- HAL_Init();
- SystemClock_Config();
- HAL_Delay(90);
- MX_GPIO_Init();
- MX_USART1_UART_Init();//串口1初始化
- OLED_Init();//oled初始化
- OLED_Clear(); //清屏
- DHT_Init();
- ds1302_init();//RTC初始化
- DS1302_WriteTime();
- buzz_init();//蜂鸣器
- ir_init();//火焰
- mq2_init();//煤气
- butt_init();//按键
- fan_init();//风扇
- for(int i=0;i<10;i++)
- {
- LEDON;
- HAL_Delay(100);
- LEDOFF;
- delay_us(1000);
- }
- showbegin();//开机动画
- delay_us(10);
- while (1)
- {
- if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0) == 0 || HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1) == 0 || HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_15) == 1)//进入警报模式
- {
- if(jingbflag)
- {
- jingbao =1;//警报开启
- if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0) == 0)//火灾警报
- {
- huo = 22;//火焰状态着火
- HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_SET);
- OLED_Clear();
- OLED_ShowCHinese(47,0,10);
- OLED_ShowCHinese(64,0,11);
- OLED_ShowCHinese(0,2,21);
- OLED_ShowCHinese(17,2,22);
- OLED_ShowCHinese(34,2,23);
- showhuo();//显示火灾图片
- }
- else//火焰状态正常
- {
- huo = 11;
- }
- if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1) == 0)//煤气报警
- {
- mei = 22;
- HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_SET);
- HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_SET);
- OLED_Clear();
- OLED_ShowCHinese(24,0,10);//显示文字
- OLED_ShowCHinese(41,0,11);
- OLED_ShowCHinese(0,2,49);
- OLED_ShowCHinese(17,2,50);//
- OLED_ShowCHinese(34,2,51);//
- OLED_ShowCHinese(51,2,52);//
- showmei();//显示泄漏图片
- }
- else
- {
- mei = 11;
- }
- if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_15) == 1)//防盗警报
- {
- ren =22;
- HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_SET);
- OLED_Clear();
- OLED_ShowCHinese(24,0,10);
- OLED_ShowCHinese(41,0,11);//显示汉字
- OLED_ShowCHinese(0,2,12);
- OLED_ShowCHinese(17,2,13);//
- OLED_ShowCHinese(34,2,14);//
- OLED_ShowCHinese(51,2,15);//
- showman();//显示防盗图片
- }
- else
- {
- ren =11;
- }
- }
- }
- else//正常模式
- {
- huo = 11;
- mei = 11;
- ren = 11;
- if(jingbao == 1)
- {
- OLED_Clear();
- jingbao = 0;//警报解除
- }
- HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_RESET);
- HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_RESET);
- DHT_ReadData();
- OLED_ShowCHinese(0,6,7);//显示温度汉字
- OLED_ShowCHinese(15,6,8);
- OLED_ShowChar(28,6,':');
- OLED_ShowCHinese(68,6,9);//显示湿度汉字
- OLED_ShowCHinese(83,6,8);
- OLED_ShowChar(96,6,':');
- OLED_ShowNum(35,6,DHT_data[2],2,16);//显示温度数值
- OLED_ShowCHinese(50,6,48);
- OLED_ShowChar(57,6,'C');
- OLED_ShowNum(104,6,DHT_data[0],2,16);//显示湿度数值
- OLED_ShowChar(121,6,'%');
- showtime();
- }
- int num = search(rxdata,18,'Z');
- if(num!=-1)
- {
- rxok = 1;
- int begin = 0;
- for(int i=0;i<18;i++)
- {
- if(num<18)
- {
- rx_normal_data[i]=rxdata[num++];
- }
- else
- {
- rx_normal_data[i]=rxdata[begin++];
- }
- }
- }
- sprintf(senddata,"%d-%d-%d-%d-%d",DHT_data[2],DHT_data[0],huo,mei,ren);//将温度数值。湿度数值。火灾状态、煤气、防盗、整合到数组
- AL_UART_Transmit_IT(&huart1,"AT+CIPSEND=0,14\r\n",sizeof("AT+CIPSEND=0,14\r\n"));//发送初始化
- HAL_Delay(300);
- HAL_UART_Transmit_IT(&huart1,senddata,14);//启动发送向手机发送数据
- HAL_Delay(500);
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。