文章目錄
- 一、硬體材料:
- 二、程式功能:
- 三、接線圖:
- 四、Arduino關鍵代碼:
- 1、傳感器初始化代碼:
- 2、資料上傳APP代碼:
- 3、OLED顯示代碼:
- 五、效果演示:
- 1、Blinker APP手機界面:
- 2、視頻鏈接:
一、硬體材料:
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("\r\n程式初始化完成");
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/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/394050.html
標籤:其他
