Arduino ESP32 Blinker 毕业设计 课程设计 DIY 003——基于ESP32的婴儿提醒的设计与制作
文章目录
一、硬件材料:
1、1* ESP32开发板
2、1* DHT11温湿度模块
3、1* MQ-2烟雾模块
4、1* 声音传感器
5、1* 雨滴检测传感器
6、1* OLED显示屏模块【白色】【0.96寸】
7、1* 蜂鸣器模块
8、2* 面包板
9、1* MICRO数据线【0.5m】
10、1* 电池【USB公充/microUSB公放】
11、其他可能需要的元器件(面包板、电阻、电容、导线/杜邦线等)
12、可能需要的工具(万用表、电烙铁及焊锡、剪钳/剪刀、剥线钳/打火机、普通胶布/电工胶布/胶枪等)
二、程序功能:
第1步:ESP32开发板通过DHT11温湿度模块,读取室内温度和湿度,可以在OELD屏幕和手机APP上查看环境的温度和湿度。
第2步:ESP32开发板通过MQ-2烟雾模块,检测婴儿床烟雾气体浓度,当浓度超过设定浓度时,打开蜂鸣器进行报警,并且在OELD屏幕和手机APP上可以查看当前烟雾浓度以及报警信息。
第3步:ESP32开发板通过声音传感器,检测婴儿床音量,当音量过大时,表示婴儿哭泣,可以在OELD屏幕和手机APP上查看警示信息。
第4步:ESP32开发板通过雨滴检测传感器,检测婴儿床水分,当水分过大时,表示婴儿尿床,可以在OELD屏幕和手机APP上查看警示信息。
其他未有写明的地方,以需求出发点、示意图片/视频为参考。
三、接线图:
四、Arduino关键代码:
1、传感器初始化代码:
delay(50);
Serial.begin(115200); // 初始化串口,波特率为115200
pinMode(buzzerPin, OUTPUT); //初始化蜂鸣器
digitalWrite(buzzerPin, buzzerOff); //上电关闭蜂鸣器
pinMode(voicePin, INPUT); //初始化声音传感器
u8g2.begin();
u8g2.enableUTF8Print();
u8g2.setFont(u8g2_font_unifont_t_chinese2);
oledDisplay();
WiFi.begin(ssid, pswd);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
BLINKER_DEBUG.stream(Serial); //设置blinker调试打印串口
Blinker.begin(auth, ssid, pswd); //连接wifi
buttonUpdate.attach(updateCallback);
Blinker.attachHeartbeat(updateSensorData);
Serial.println("rn程序初始化完成");
2、数据上传APP代码:
static unsigned long time = 0;
if (millis() - time > 500) {
time = millis();
voiceValue = digitalRead(voicePin); //读取声音值
if (voiceValue == 1) {
delay(20);
voiceValue = digitalRead(voicePin); //读取声音值
}
smogValue = analogRead(smogPin); //读取烟雾值
waterValue = analogRead(waterPin); //读取水分值
}
static unsigned long nowTime = 0;
if (millis() - nowTime > 2000) {
nowTime = millis();
DHT11.read(dht11Pin); //读取温湿度
humidityValue = DHT11.humidity;
temperatureValue = DHT11.temperature;
}
if (voiceValue == 1) {
warnState = true;
voiceState = "Warn!";
Blinker.notify("!婴儿哭泣,请注意!");
}
else {
voiceState = "OK";
}
if (smogValue > smogTriggerValue) {
warnState = true;
smogState = "Warn!";
digitalWrite(buzzerPin, buzzerOn); //打开蜂鸣器
Blinker.notify("!起火了!警报!警报!");
}
else {
smogState = "OK";
digitalWrite(buzzerPin, buzzerOff); //关闭蜂鸣器
}
if (waterValue < waterTriggerValue) {
warnState = true;
waterState = "Warn!";
Blinker.notify("!婴儿尿床,请及时更换床垫!");
}
else {
waterState = "OK";
}
oledDisplayRefresh();
Serial.print("温度:");
Serial.print(temperatureValue);
Serial.print("t湿度:");
Serial.print(humidityValue);
Serial.print("t烟雾:");
Serial.print(smogValue);
Serial.print("t声音:");
Serial.print(voiceValue);
Serial.print("t水分:");
Serial.println(waterValue);
if (warnState == true) {
oledDisplay();
warnState = false;
// delay(5000);
Blinker.delay(6000);
}
3、OLED显示代码:
u8g2.clearBuffer();
u8g2.setCursor(0, 15);
u8g2.print("Tem:");
u8g2.setCursor(33, 15);
u8g2.print(temperatureValue);
u8g2.setCursor(70, 15);
u8g2.print("Hum:");
u8g2.setCursor(99, 15);
u8g2.print(humidityValue);
u8g2.setCursor(0, 31);
u8g2.print("Som:");
u8g2.setCursor(33, 31);
u8g2.print(smogValue);
u8g2.setCursor(70, 31);
u8g2.print("S:");
u8g2.setCursor(85, 31);
u8g2.print(smogState);
u8g2.setCursor(0, 47);
u8g2.print("Voi:");
u8g2.setCursor(33, 47);
u8g2.print(voiceValue);
u8g2.setCursor(70, 47);
u8g2.print("S:");
u8g2.setCursor(85, 47);
u8g2.print(voiceState);
u8g2.setCursor(0, 63);
u8g2.print("Wat:");
u8g2.setCursor(33, 63);
u8g2.print(waterValue);
u8g2.setCursor(70, 63);
u8g2.print("S:");
u8g2.setCursor(85, 63);
u8g2.print(waterState);
u8g2.sendBuffer();
五、效果演示:
1、Blinker APP手机界面:
2、视频链接:
https://www.bilibili.com/video/BV1Vq4y1m7gX/
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
二维码