• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

ESP8266 SGP30气体传感器采集推送到ThingsPanel

武飞扬头像
thingspanel
帮助1

这个教程的目的是通过ESP8266开发板ESP-12F采集SGP30气体传感器的二氧化碳和TVOC ,并通过MQTT推送到开源物联网平台ThingsPanel。

SGP30是一款二氧化碳(CO2)和有机化合物(TVOC)气体传感器模块,它可以通过检测环境中的CO2和TVOC浓度来实现空气质量监测和控制。专为轻松集成到空气净化器、按需新风控制和物联网应用中而设计。SGP30 设计用于智能家居、家电和物联网应用,它提供两个经过校准的空气质量信号和湿度补偿功能.SGP30 可提供有关空气质量的更详尽指数。针对现实生活环境中的污染气体,该传感器具有无与伦比的可靠性,可以实现独一无的长期稳定性和低漂移.

学新通

学新通

SGP30气体传感器

学新通

采集监控效果

开发板资料:

wiki.diustou.com/cn/ESP8266_…

1. 硬件连接:

首先,将SGP30模块与微控制器连接。SGP30模块使用基于I2C协议的通信方式,可以使用以下引脚连接:

  • 模块的SDA引脚连接到微控制器的对应SDA引脚。

  • 模块的SCL引脚连接到微控制器的对应SCL引脚。

  • 模块的VIN引脚连接到微控制器的5V电源引脚。

  • 模块的GND引脚连接到微控制器的地线引脚。

2.安装Arduino IDE

首先,确保你已经安装了必要的库。你可以使用Arduino IDE的库管理器来安装。你可能需要以下库:

1. Adafruit SGP30 Library

2. Adafruit Unified Sensor Library

3. Pubsubclient

4. ArduinoJson

3.在ThingsPanel平台中创建设备

创建设备时需要选择SGP30气体传感器插件。

学新通

4.在Arduino IDE中刷写代码

需要修改Wi-Fi热点名、密码、MQTT用户名。

先点击验证再上传代码。

#include <Wire.h>
#include <Adafruit_SGP30.h>
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <ArduinoJson.h>

StaticJsonDocument<200> doc;

Adafruit_SGP30 sgp;

// WiFi和MQTT设置
const char* ssid = "Redmi";
const char* password = "123456789";
const char* mqtt_server = "dev.thingspanel.cn";
const char* mqtt_user = "cf8598fa-04dc-2514-4066-bad0ec5227xx";
const char* mqtt_password = "";  // 密码为空
const char* mqtt_topic = "device/attributes";

WiFiClient espClient;
PubSubClient client(espClient);

void setup() {
  Serial.begin(115200);

  // 连接WiFi
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("连接到WiFi...");
  }
  Serial.println("已连接到WiFi");

  client.setServer(mqtt_server, 1883);

  // 开始I2C通信
  Wire.begin(2, 14);  // SDA, SCL
  
  // 检查I2C设备
  Serial.println("扫描I2C设备...");
  byte error, address;
  int nDevices = 0;
  for(address = 1; address < 127; address   ) {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0) {
      Serial.print("找到I2C设备地址: ");
      Serial.print(address, HEX);
      Serial.println(" !");
      nDevices  ;
    }
  }
  if (nDevices == 0) {
    Serial.println("没有找到I2C设备。");
  } else {
    Serial.println("完成。");
  }

  if (!sgp.begin()){
    Serial.println("传感器不可用!");
    while (1);
  }

  Serial.println("SGP30传感器已就绪!");
}

void loop() {
  if (!client.connected()) {
    reconnect();
  }
  client.loop();

  if (!sgp.IAQmeasure()) {
    Serial.println("测量失败!");
    return;
  }

  Serial.print("eCO2: "); 
  Serial.print(sgp.eCO2); 
  Serial.print(" ppm\t");
  Serial.print("TVOC: "); 
  Serial.print(sgp.TVOC);
  Serial.println(" ppb");

  // 使用ArduinoJson生成MQTT消息
  StaticJsonDocument<100> doc;
  doc["eco2"] = sgp.eCO2;
  doc["tvoc"] = sgp.TVOC;
  char payload[100];
  serializeJson(doc, payload);
  
  client.publish(mqtt_topic, payload);

  delay(1000);  // 1秒
}

void reconnect() {
  while (!client.connected()) {
    Serial.print("尝试MQTT连接...");
    if (client.connect("ESP8266Client", mqtt_user, mqtt_password)) {
      Serial.println("已连接");
    } else {
      Serial.print("失败, rc=");
      Serial.print(client.state());
      Serial.println(" 5秒后再试");
      delay(5000);
    }
  }
}

5.完工

刷写代码完成后,ThingsPanel平台即可收到数据,如开头的图所示。

——————————

说明:TVOC是“Total Volatile Organic Compounds”的英文缩写,意思是总挥发性有机化合物, TVOC是三种影响室内空气品质污染中影响较为严重的一种。TVOC是指室温下饱和蒸气压超过了133.32Pa的有机物,其沸点在50℃至250℃,在常温下可以蒸发的形式存在于空气中,它的毒性、刺激性、致癌性和特殊的气味性,会影响皮肤和黏膜,对人体产生急性损害。世界卫生组织(WHO)、美国国家科学院/国家研究理事会(NAS/NRC)等机构一直强调TVOC是一类重要的空气污染物。美国环境署(EPA)对VOC的定义是:除了一氧化碳,二氧化碳,碳酸,金属碳化物,碳酸盐以及碳酸铵外,任何参与大气中光化学反应的含碳化合物。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgiifah
系列文章
更多 icon
同类精品
更多 icon
继续加载