Makato-kanのアイコン画像
Makato-kan 2021年02月20日作成 (2021年12月07日更新)
製作品 製作品 閲覧数 765
Makato-kan 2021年02月20日作成 (2021年12月07日更新) 製作品 製作品 閲覧数 765

Seeeduino XIAOを使って二酸化炭素測定する AdaFruitライブラリVer

概要
前回投稿した二酸化炭素測定プログラムのCCS811センサーライブラリをAdafrultにしたものです。
 SparkFunのライブラリを使った時と計測値の変化が違う感じします。
ライブラリの導入
Adafrultライブラリは ”ライブラリを管理”で”CCS811”を検索して"Adafruit CCS811 Library"をインストールします
ちょっとした事
 Mac-OSでArduinoIDEを使っていますがXIAOを接続したままArduinoIDEを終了するとプログラム書き込みモードになってしまい。
 プログラムが実行できなくなる問題発生していました。何が悪いのかわかりませんが、ArduinoIDEを終了する前にUSBケーブルを抜けば大丈夫だったのでそんな使い方しておりました。
プログラム

#include <Wire.h>
#include <ACROBOTIC_SSD1306.h>
#include "Adafruit_CCS811.h"
#define CCS811_WAKE 2
#define DHTPIN 3
#define DHTTYPE DHT11
//I2C CCS811_ADDR 0x5A
DHT dht(DHTPIN, DHTTYPE);
Adafruit_CCS811 ccs;
int base=1;
int down=1;
int countdown=20;

void setup() {
   Serial.begin(1200);
   Serial.print("");
       delay(2000);
   Serial.println("CCS811 Basic Example");
  pinMode(CCS811_WAKE, OUTPUT);
  delay(90);
  digitalWrite(CCS811_WAKE, LOW); // turn Sensor on
 Wire.begin(); 
    
  oled.init();                      // Initialze SSD1306 OLED display
  oled.clearDisplay();              // Clear screen
  oled.setTextXY(3,3);              // Set cursor position, start of line 0
  oled.putString("Hello, World");

    delay(1000);
    
//DHT11 Temp Humi status
  dht.begin();
  oled.clearDisplay();
  oled.setTextXY(0,0);
  oled.putString("Temp");
  oled.setTextXY(0,11);
  oled.putString("xxxxC");
  oled.setTextXY(2,0);
  oled.putString("Humi");
  oled.setTextXY(2,13);
  oled.putString("xx%");

//CCS811 CO2 status
  oled.setTextXY(4,0);  
  oled.putString("CO2");
  oled.setTextXY(4,9);
  oled.putString("xxxxppm");

  oled.setTextXY(6,0);
  oled.putString("Heat Index");
  oled.setTextXY(6,14);
  oled.putString("xx");


 if(!ccs.begin()){
    Serial.println("Failed to start sensor! Please check your wiring.");
    while(1);
  }
  delay(4000);
  digitalWrite(CCS811_WAKE, HIGH); // turn Sensor off
//SSD1306 brightness set 
  unsigned char brightness = 5;
  oled.setBrightness((unsigned char)brightness);
}


void loop() 
{
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  float f = dht.readTemperature(true);
  if (isnan(h) || isnan(t) || isnan(f)) 
    {
    oled.setTextXY(7,0);
    oled.putString("Status : NG");
    return;
    }else {
 //Counter check and countdown 20min
   base=base+1;
if(base>12) {
     base=1;
} else {
    down=base/12;
    countdown=countdown-down;
    if(countdown<1){
         oled.setTextXY(7,0);
         oled.putString("            "); 
    }else{
    oled.setTextXY(7,0);
    oled.putString("Wait");
    oled.setTextXY(7,6);
  char strMIN[2];
  sprintf(strMIN,"%2d",int(countdown));
      delay(10);
  oled.putString(String(strMIN));
    oled.setTextXY(7,8);
    oled.putString("min");
         }
         }
     }
  float hic = dht.computeHeatIndex(t, h, false);
  
//Display Temp
  oled.setTextXY(0,10);
  oled.putString("  ");
    delay(10);
  oled.setTextXY(0,10);
  oled.putFloat(float(t));
  
//Display Hume
  oled.setTextXY(2,11);
  oled.putString("  ");
    delay(10);
  oled.putNumber(int(h));

//Display Heat Index
  oled.setTextXY(6,14);
  char strHIC[2];
  sprintf(strHIC,"%2d",int(hic));
      delay(10);
  oled.putString(String(strHIC));  
      delay(10);

//CSS811 data check and Humi Temp data set
  digitalWrite(CCS811_WAKE, LOW); // turn Sensor on
  delay(90);
ccs.setEnvironmentalData(h,t);
      delay(90);
  if(ccs.available()){
    if(!ccs.readData()){
//SerialOUT  CO2 TVOC
      Serial.print(ccs.geteCO2());
      Serial.print(",");
      Serial.print(ccs.getTVOC());
            Serial.print(",");
    }
    else{
      Serial.println("ERROR!");
      while(1);
    }
  }


//SerialOUT Temp Hume  
    Serial.print(float(t));  
    Serial.print(",");
    Serial.println(int(h)); 
//Display CO2
  oled.setTextXY(4,9);
  oled.putString("   ");
    delay(10);
      oled.setTextXY(4,9);
  char strCO2[4];
  sprintf(strCO2,"%4d",ccs.geteCO2());
      delay(10);
  oled.putString(String(strCO2));
        oled.setTextXY(4,13);
              delay(10);
    oled.putString("ppm");
          digitalWrite(CCS811_WAKE, HIGH); // turn Sensor off
        delay(5000);  
             }

実際の所
 ライブラリの違いによる変化は気づきませんでした

Makato-kanのアイコン画像
屋外で温度湿度を測定し記録するので、壊れやすいと思い大量にDHT11とESP-WROOM-02を購入したのですが思いのほか壊れなかったので、何にでもDHT11をくっつけています。
ログインしてコメントを投稿する