基于ESP8266的温湿度、可燃气监测系统

1.硬件准备

  • esp8266开发板
  • DHT11温湿度传感器
  • MQ气体传感器(本例使用MQ-5,推荐使用MQ-2)
  • 无源蜂鸣器
  • OLED显示屏
  • 面包板
  • 若干杜邦线

2.线路连接

DHT11 温湿度传感器
传感器开发板
VCC3.3V
GNDGND
OUTD4
MQ-5液化气传感器模块
传感器开发板
AOA0
DOD5
GNDGND
VCC3.3V
无源蜂鸣器

注:无源蜂鸣器翻转过来有正负极

传感器开发板
+D6
HXVCC
OLED显示屏
显示屏开发板
GNDGND
VDDVCC
SCK/SCLD1
SDAD2
实物连接好的图片

在这里插入图片描述

3.代码实现

#include <dht11.h>   // 引入DHT11库,温湿度传感器
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h> //需要自行下载, OLED显示

#define DHT11PIN 2   // 温湿度传感器引脚,2对应D4
#define Sensor_DO 14
#define MQ5PIN A0

/*************定义类型****************/
dht11 DHT11;
Adafruit_SSD1306 oled(128, 64, &Wire,-1);   //实例化

/*************定义全局变量****************/
float sensorValue;   // MQ
float ad_co_f = 0;
int pinBuzzer = 12;
float temp = 0;  // 温度
float hum = 0;   // 湿度


void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  OLED_Init();

  // MQ-5初始化
  pinMode(Sensor_DO, INPUT);
  // 蜂鸣器初始化
  pinMode(pinBuzzer, OUTPUT);
  // 等待
  delay(5000);

}

void loop() {
  // put your main code here, to run repeatedly:
  // 获取温湿度
  Serial.println("获取温湿度");
  DHT11.read(DHT11PIN);  // 更新传感器上的数据
  temp = getTemperature();
  hum = getHumidity();
  Serial.print("当前湿度(%): ");
  Serial.println(hum, 2);
  Serial.print("当前温度(℃):");
  Serial.println(temp, 2);
  // 获取MQ-5
  Serial.println("获取MQ-5数据");
  sensorValue = getSensorValue();
  ad_co_f = sensorValue * (3.3/1024);  
  // 显示到OLED
  Serial.println("显示到OLED屏");
  oled.clearDisplay();  // 清屏
  OLED_Show_Temperature(temp);
  OLED_Show_Humidity(hum);
  OLED_Show_MQ5(ad_co_f);
  oled.display();
  // 判断条件
  if(digitalRead(Sensor_DO) == LOW)
  {
    // 蜂鸣器响
    Serial.println("蜂鸣器响了");
    activateVoice();
  } else {
    // 蜂鸣器停
    Serial.println("蜂鸣器停了");
    deactivateVoice();
  }
  // 等待
  delay(1000);
}

// OLED显示函数
void OLED_Init()
{
  oled.begin(SSD1306_SWITCHCAPVCC, 0x3c);
  oled.setTextColor(WHITE);
  oled.clearDisplay();   // 清屏
}

void OLED_Show_Temperature(float temp)
{
  // 显示温度
  oled.setTextSize(1.9);
  oled.setCursor(5, 1);
  oled.print("Temp:  ");
  oled.print(temp);
  oled.println("C");
}

void OLED_Show_Humidity(float hum)
{
  // 显示湿度
  oled.setTextSize(1.9);
  oled.setCursor(5, 12);
  oled.print("Humidity:");
  oled.print(hum);
  oled.println("%");
}

void OLED_Show_MQ5(float alarm)
{
  oled.setTextSize(1.9);
  oled.setCursor(5, 24);
  oled.print("CO alarm:  ");
  oled.println(alarm);
}

// DHT11温湿度传感器
double Fahrenheit(double celsius)
{
  return 1.8 * celsius + 32; //摄氏温度度转化为华氏温度
}
 
double Kelvin(double celsius)
{
  return celsius + 273.15; //摄氏温度转化为开氏温度
}

float getHumidity()
{
  return (float)DHT11.humidity;
}

float getTemperature()
{
  return (float)DHT11.temperature;
}

// 蜂鸣器函数
void activateVoice()
{
  tone(pinBuzzer, 300, 500);
}
void deactivateVoice()
{
  noTone(pinBuzzer);
}

// 获取MQ-5传感器参数
float getSensorValue()
{
  return analogRead(MQ5PIN);
}
效果

在这里插入图片描述

4.参考资料

  1. MQ2气体/烟雾传感器如何工作及其与Arduino接口,https://zhuanlan.zhihu.com/p/340072270
  2. ESP8266如此简单-入门之驱动蜂鸣器,https://www.bilibili.com/video/BV1zv4y137YN
  3. Arduino esp8266接OLED亮屏,https://blog.csdn.net/dddexter/article/details/116461972
  4. 基于arduino的oled显示屏的使用,https://blog.csdn.net/jiayan0428/article/details/105254403
  5. ESP8266驱动OLED显示屏(附源码),https://www.bilibili.com/video/BV1QM4y1W7kN
  6. 基于ESP8266芯片的实时温湿度传感器,https://blog.csdn.net/m0_57035925/article/details/121971844
  7. 基于esp8266、dht11、MQ2、oled的CO可燃气检测系统设计,https://www.bilibili.com/video/BV1AT4y1a7i4
  8. ESP8266传感器开发参考资料(太极创客),http://www.taichi-maker.com/homepage/iot-development/iot-dev-reference/esp8266-iot-dev-ref/esp8266-sensor-ref/
### STM32燃气管理系统设计方案 #### 1. 系统概述 STM32燃气管理系统旨在提供一种高效、可靠的解决方案来监控家庭或工业环境中可能存在的危险气体泄漏情况。该系统集成了多种类型的气体传感器以及必要的通信接口,能够实现实时监测并及时发出警报。 #### 2. 主要组件介绍 - **核心控制单元**: 使用高性能ARM Cortex-M系列MCU——STM32作为主控芯片负责整个系统的运行管理和数据处理工作[^1]。 - **气体传感模块**: 集成多个高精度气体探测器如MQ-4用于检测甲烷(CH₄),其具有良好的线性和重复性,在低浓度范围内也能保持较高的灵敏度;另外还包括其他种类的气体传感器比如MQ-7专门针对一氧化碳(CO)测量而优化。 - **环境参数采集设备**: DHT11温湿度感应元件可以获取当前空间内的温度和相对湿度信息,这对于评估整体空气质量状况非常重要。 - **无线通讯部分**: ESP8266 Wi-Fi模组提供了便捷的数据上传途径至云端服务器或是直接推送到用户的移动终端上以便随时查看最新状态更新。 #### 3. 功能特性描述 - 实现多通道同步采样机制确保各个被测对象之间不会相互干扰影响准确性; - 支持阈值设定功能允许用户自定义触发条件从而更加灵活应对不同场景需求; - 当任何一项指标超出安全范围时立即激活声光提示装置提醒相关人员采取措施防止事故发生; - 数据记录与历史查询服务帮助管理者长期跟踪趋势变化规律做出科学决策依据。 ```c // 示例代码片段展示如何初始化ADC读取来自气体传感器的模拟信号 void ADC_Init(void){ // 初始化配置... } uint16_t ReadGasSensorValue(uint8_t channel){ uint16_t value; // 设置转换模式等参数... HAL_ADC_Start(&hadc); HAL_ADC_PollForConversion(&hadc, HAL_MAX_DELAY); value = HAL_ADC_GetValue(&hadc); return value; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值