该系统以STM32F401CCU6微处理器作为控制核心,选择气体烟雾传感器MQ-2、温湿度传感器DHT11、火焰传感器来检测衣柜中甲醛等不良气体烟雾的浓度、温度及湿度、火焰是否存在,将上述检测值显示在衣柜OLED屏幕中,并通过ESP8266物联网WiFi通信技术传输至阿里云平台,显示在手机APP中,从而实现对衣柜的远程实时监测功能。同时,可以使用LD3320语音识别模块及手机APP两种方式下达指令,操控衣柜中负离子发生器,臭氧发生器、小风扇及PTC加热片的运行与停止,从而改善衣柜中的空气并消毒衣物,实现对衣柜的远程管理功能。用户还可以通过指令控制舵机旋转,使得不同季节的衣服呈现在最外侧。另外,还设计了报警功能,当出现火焰时蜂鸣器发出报警;当衣柜内气体烟雾浓度超过设定阈值发出警报。这一基于新兴物联网技术的智能语音衣柜管家课题的研究,具有很大的市场前景和社会价值。
控制代码
printf("\"杀菌\"OK\r\n"); /*text.....*/
GPIO_SetBits(GPIOB,GPIO_Pin_2);
break;
case CODE_1KL4: /*命令“关灯”*/
printf("\"关闭杀菌\"OK\r\n"); /*text.....*/
GPIO_ResetBits(GPIOB,GPIO_Pin_2);
break;
case CODE_2KL1: /*命令“....”*/
printf("\"加热\"OK\r\n"); /*text.....*/
GPIO_SetBits(GPIOB,GPIO_Pin_10);
break;
case CODE_2KL2: /*命令“....”*/
printf("\"关闭加热\"OK\r\n"); /*text.....*/
GPIO_ResetBits(GPIOB,GPIO_Pin_10);
break;
case CODE_2KL3: /*命令“....”*/
printf("\"开启预警\"ok\r\n"); /*text.....*/
while(1)
{
delay_ms(1500);
tDHT11_rec_data(&tem,&hum);
sprintf(display_buf, "tem:%.2d C",tem);
OLED_ShowString(1,1,display_buf);
printf("AT+MQTTPUB=0,\"/k1eopI97kM6/ESP8266/user/update\",\"%d\",1,0\r\n",tem); //发温度数据
delay_ms(1500);
tDHT11_rec_data(&tem,&hum);
sprintf(display_buf, "hum:%.2d Rh",hum);
OLED_ShowString(2,1,display_buf);
printf("AT+MQTTPUB=0,\"/k1eopI97kM6/ESP8266/user/update\",\"%d\",1,0\r\n",hum); //发温度数据
delay_ms(1500);
MQ2_Value=Get_Adc_Average(ADC_Channel_1,10)*100/4095;//模拟烟雾浓度的值
sprintf(display_buf, "smoke:%.2d mg",MQ2_Value);
//printf("smog= %d \r\n",MQ2_Value);
OLED_ShowString(3,1,display_buf);
fmq(MQ2_Value);
printf("AT+MQTTPUB=0,\"/k1eopI97kM6/ESP8266/user/update\",\"%d\",1,0\r\n",MQ2_Value); //发温度数据
delay_ms(1500);
if(Fire_Get() ==1) {GPIO_SetBits(GPIOB, GPIO_Pin_15);//当检测到火焰
OLED_ShowString(4,1,"Fire:Normal ");
//printf("AT+MQTTPUB=0,\"/k1eopI97kM6/ESP8266/user/update\",\"%d\",1,0\r\n",1);
}
else{GPIO_ResetBits(GPIOB, GPIO_Pin_15);
OLED_ShowString(4,1,"Fire:Warring");
//fmq(MQ2_Value);
printf("AT+MQTTPUB=0,\"/k1eopI97kM6/ESP8266/user/update\",\"%d\",1,0\r\n",119);}
OLED_Update();
}
// Servo_SetAngle(90);
// delay_s(1);
// Servo_SetAngle(0);
// delay_ms(1500);
// Servo_SetAngle(90);
// delay_ms(10);
// MQ2_Value=Get_Adc_Average(ADC_Channel_1,10)*100/4095;//模拟烟雾浓度的值
// printf("smog= %d \r\n",MQ2_Value);
// delay_ms(1000);
// tDHT11_rec_data(&tem,&hum);
// printf("Temp= %d \r\n",tem);
// delay_ms(2000);
// printf("hum= %d \r\n",hum);
// delay_ms(2000);
case CODE_2KL4: /*命令“....”*/
printf("\"短袖\"OK\r\n"); /*text.....*/
Servo_SetAngle(60);
delay_s(3);
Servo_SetAngle(0);
delay_ms(1500);
break;
case CODE_3KL1: /*命令“....”*/
printf("\"棉袄\"OK\r\n"); /*text.....*/
Servo_SetAngle(120);
delay_s(3);
Servo_SetAngle(0);
delay_ms(1500);
break;
case CODE_3KL2: /*命令“....”*/
printf("\"外套\"OK\r\n"); /*text.....*/
Servo_SetAngle(180);
delay_s(3);
Servo_SetAngle(0);
delay_ms(1500);
break;
case CODE_3KL3: /*命令“....”*/
printf("\"后退\"识别成功"); /*text.....*/