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
分享
二维码
< <上一篇

)">
下一篇>>