使用Arduino IDE编译ESP8266+DHT22+BMP280+SGP30+GP2Y1014AUVF上传到点灯科技APP查看当前温湿度气压空气质量PM2.5

5 篇文章 0 订阅
5 篇文章 0 订阅

目录

重要提醒(必须看):

介绍

效果展示

一、点灯科技的配置

2、添加设备

3.加配置Blinker界面(UI)

二、代码步骤

1.引入库

2.接线图(检查好是否连接正确在通电)

3.代码

存在的问题

压缩包


点灯科技的下载和注册:


点灯科技的下载网站APP那一行(安卓和苹果)在注册页面,输入手机号,并点击获取验证码,可以收到手机短信验证码,输入验证码和密码后,点击 立即注册 按钮,即可注册账号,注册成功后会进入我的设备页面。


重要提醒(必须看):

免费用户的额度:

 

 购买SGP30需要注意的事项

购买时看准工作电压有的是最高只能接受1.98V,开发板上最小只有3.3V


介绍

使用esp8266,dht22,BMP280,SGP30,GP2Y1014AUVF,点灯科技平台,来创造出一个可以使用手机app查看到内温湿度空气质量PM2.5气压+上传至点灯科技平台可以查到1周内温湿度气压


效果展示

在这里插入图片描述


一、点灯科技的配置


2、添加设备

通过添加设备页面,您可以添加设备到您的账号。
我的设备页面点击右上角的“+”图标,即可进入添加设备页面,具体步骤如下:

在这里插入图片描述


3.加配置Blinker界面(UI)



在这里插入图片描述
我的界面设置在压缩包里

二、代码步骤

1.引入库

代码如下(示例):

#include "Adafruit_SGP30.h"//SGP30库
#include <Blinker.h>//点灯科技库
#include <DHT.h>//DHT22库
#include <Adafruit_BMP280.h>//BMP280库

库文件在我的压缩包里


2.接线图(检查好是否连接正确在通电)

  1. 开发板+5V—VVC(DHT22,GP2Y1014AUVF)
  2. 开发板GND—GND(全部模块的)
  3. 开发板+3.3V—VVC(BMP280,SGP30)
  4. 开发板D1—BMP280(SCL)
  5. 开发板D2—BMP280(SDA)
  6. 开发板D1—SGP30(SCL)
  7. 开发板D2—SGP30(SDA)
  8. 开发板D4—DHT22(DAT)
  9. 开发板A0—GP2Y1014AUVF(3)
  10. 开发板D5—GP2Y1014AUVF(5)

GP2Y1014AUVF需要连接1个150欧的电阻,和1个220μF的电容(电容和电阻店家一般都会带),具体位置如图所示。(实物图片是直接截的淘宝店家的)

具体接线图可以看其他作者的

GP2Y1014AU接线1

GP2Y1014AU接线2


3.代码

代码如下(示例):

#include <Adafruit_BMP280.h>
#define BLINKER_WIFI
#include <Wire.h>
#include "Adafruit_SGP30.h"
#include <Blinker.h>
#include <DHT.h>
#include <Wire.h>
#define DHTPIN 2      //定义DHT22模块连接管脚io2

#define DHTTYPE DHT22   // 使用温度湿度模块的类型为DHT22

char auth[] = "***********";//key 密钥
char ssid[] = "***********";//WiFi名称
char pswd[] = "***********";//WiFi密码

BlinkerNumber TEMP("temp"); // 定义BMP280温度数据键名
BlinkerNumber PRES("pres"); // 定义BMP280气压数据键名
BlinkerNumber HUMI("cemp"); //定义DHT22湿度数据键名
BlinkerNumber CEMP("humi"); //定义DHT22温度数据键名
BlinkerNumber TVOC("tvoc"); //定义SGP30温度数据键名
BlinkerNumber ECO2("eCO2"); //定义SGP30温度数据键名
BlinkerNumber PM25("pm2.5"); //定义PM2.5温度数据键名
DHT dht(DHTPIN, DHTTYPE);    //生成DHT对象,参数是引脚和DHT的类型+
float humi_read, temp_read;//定义浮点型全局变量 储存DHT22读取的温湿度数据
float zd , cd ;
float qd ;
float ad , bd ;

int dustPin=0;//PM2.5
int dustVal=0;
int ledPower=2;
int delayTime=280;
int delayTime2=40;
float offTime=9680;

Adafruit_BMP280 bmp;
Adafruit_SGP30 sgp;

void heartbeat()
{
    TEMP.print(ad);//反馈数据
    PRES.print(bd);//反馈数据
    HUMI.print(humi_read);//反馈数据
    CEMP.print(temp_read);//反馈数据
    TVOC.print(zd);//反馈数据
    ECO2.print(cd);//反馈数据
    PM25.print(qd);//反馈数据
}
void dataStorage()//云存储温湿度数据函数
{
    Blinker.dataStorage("temp", ad);//存BMP180储温度
    Blinker.dataStorage("pres", bd);//存BMP1880储气压
    Blinker.dataStorage("cemp", humi_read);//存DHT22储温度
    Blinker.dataStorage("humi", temp_read);//存DHT2储湿度
}
void setup()
{
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);
    Blinker.begin(auth, ssid, pswd);
    Blinker.attachHeartbeat(heartbeat);
    Blinker.attachDataStorage(dataStorage);
    pinMode(ledPower,OUTPUT);
    pinMode(13, OUTPUT);
   dht.begin();
   sgp.begin();
   bmp.begin(0X76);

}
void loop() //把主代码放在这里,重复运行:
{
    Blinker.run();//运行Blinker
    getDHT();
    getBMP();
    getSGP();
    getPM();
}
void getDHT()
{
 //DHT22
        float h = dht.readHumidity();
        float t = dht.readTemperature();        

        if (isnan(h) || isnan(t)) {
          BLINKER_LOG("DHT22测量失败!");
          return;
        }

        float hic = dht.computeHeatIndex(t, h, false);

        humi_read = h;
        temp_read = t;

        BLINKER_LOG("DHT22湿度: ", h, " %");
        BLINKER_LOG("DHT22温度: ", t, " *C");
        BLINKER_LOG("DHT22热指数:", hic, " *C");
     delay(100);//延时函数
}
void getBMP()
{
    if (!bmp.begin(0X76)) {
   BLINKER_LOG("BMP280测量失败");
   return;
}
    
    float a = bmp.readTemperature();//读取BMP180传感器的湿度 并赋值给c
    float b = bmp.readPressure();//读取BMP180传感器的湿度 并赋值给b
       
        //打印
        BLINKER_LOG("BMP280温度: ", a, "C");
        BLINKER_LOG("气压: ", b, " *Pa");
        
        ad = a;//将读取到的湿度赋值给全局变量ad
        bd = b;//将读取到的温度赋值给全局变量bd
     delay(100);//延时函数 
}
void getSGP()
{
   if (! sgp.IAQmeasure()) {
    Serial.println("SGP30测量失败");
    return;
  }
  float z = sgp.TVOC;//读取SGP30传感器的湿度 并赋值给c
  float c = sgp.eCO2;//读取SGP30传感器的湿度 并赋值给b
        zd = z;
        cd = c;
   BLINKER_LOG("TVOC: ", z, " ppb\t");
   BLINKER_LOG("eCO2: ", c, " ppm");
 delay(100);//延时函数 
}
void getPM()
{
delay(100);//延时函数//PM2.5
digitalWrite(ledPower,LOW); // power on the LED
delayMicroseconds(delayTime);
dustVal=analogRead(dustPin); // read the dust value via pin 5 on the sensor
delayMicroseconds(delayTime2);
digitalWrite(ledPower,HIGH); // turn the LED off
delayMicroseconds(offTime);
float q = dustVal;//读取PM2.5传感器的湿度 并赋值给q
     qd = q;
  BLINKER_LOG("PM2.5: ", q, "m3");
Blinker.delay(1000);//延时函数
}

在我的压缩包里


压缩包

https://www.123pan.com/s/RMm9-t6qSh.html

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值