Sony Spresense용 CO2, 온도 습도 센서 보드 제작

신종 코로나 유행 속에서 CO2 농도에 따라 사람의 비밀을 판단하는 시스템이 늘고 있다.
그래서 Sony Spresense부터 손쉽게 사용할 수 있는 실내 환경 센서판을 제작했습니다.
CO2 센서: SGP30-25KVOC 센서 "SGP30/SGPC3"(NRND)
온도 습도 센서: SHTC1디지털 온도 습도 센서 "SHTC1"
모두 센시리언이 제작한 센서들이지만 SGP30은 제조사를 추천하지 않는다.
사진.

회로도

두 센서 모두 아두노용 라이브러리를 사용할 수 있습니다. 아래의 라이브러리를 추가해 주십시오.
SGP30  https://github.com/sparkfun/SparkFun_SGP30_Arduino_Library
SHTC1  https://github.com/winkj/arduino-sht
라이브러리의 샘플 프로그램에서 센서가 실행 중인지 확인하십시오.
Example1_BasicReadings.ino
// SPG30 Example1_BasicReadings
/*
  Library for the Sensirion SGP30 Indoor Air Quality Sensor
  By: Ciara Jekel
  SparkFun Electronics
  Date: June 28th, 2018
  License: This code is public domain but you buy me a beer if you use this and we meet someday (Beerware license).

  SGP30 Datasheet: https://cdn.sparkfun.com/assets/c/0/a/2/e/Sensirion_Gas_Sensors_SGP30_Datasheet.pdf

  Feel like supporting our work? Buy a board from SparkFun!
  https://www.sparkfun.com/products/14813

  This example reads the sensors calculated CO2 and TVOC values
*/

#include "SparkFun_SGP30_Arduino_Library.h" // Click here to get the library: http://librarymanager/All#SparkFun_SGP30
#include <Wire.h>

SGP30 mySensor; //create an object of the SGP30 class

void setup() {
  Serial.begin(9600);
  Wire.begin();
  //Initialize sensor
  if (mySensor.begin() == false) {
    Serial.println("No SGP30 Detected. Check connections.");
    while (1);
  }
  //Initializes sensor for air quality readings
  //measureAirQuality should be called in one second increments after a call to initAirQuality
  mySensor.initAirQuality();
}

void loop() {
  //First fifteen readings will be
  //CO2: 400 ppm  TVOC: 0 ppb
  delay(1000); //Wait 1 second
  //measure CO2 and TVOC levels
  mySensor.measureAirQuality();
  Serial.print("CO2: ");
  Serial.print(mySensor.CO2);
  Serial.print(" ppm\tTVOC: ");
  Serial.print(mySensor.TVOC);
  Serial.println(" ppb");

}
SHTC1_sample.ino
// SHTC1 Sample code
#include <Wire.h>

#include <shtc1.h>

SHTC1 shtc1;

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

void loop() {
  // put your main code here, to run repeatedly:
  shtc1.readSample();
  Serial.print("SHTC1:\n");
  Serial.print("  RH: ");
  Serial.print(shtc1.getHumidity(), 2);
  Serial.print("\n");
  Serial.print("  T:  ");
  Serial.print(shtc1.getTemperature(), 2);
  Serial.print("\n");

  delay(1000);
}
두 센서가 모두 움직이고 있는지 확인한 후 한 프로그램에 집합한다.
Spresense_SGP30_SHTC1.ino
#include "SparkFun_SGP30_Arduino_Library.h" // Click here to get the library: http://librarymanager/All#SparkFun_SGP30
#include <Wire.h>
#include <shtc1.h>

SGP30 mySensor; //create an object of the SGP30 class
SHTC1 shtc1;

void setup() {
  Serial.begin(115200);
  Wire.begin();
  //Initialize sensor
  if (mySensor.begin() == false) {
    Serial.println("No SGP30 Detected. Check connections.");
    while (1);
  }
  //Initializes sensor for air quality readings
  //measureAirQuality should be called in one second increments after a call to initAirQuality
  mySensor.initAirQuality();

}

void loop() {
  //First fifteen readings will be
  //CO2: 400 ppm  TVOC: 0 ppb
  delay(1000); //Wait 1 second
  //measure CO2 and TVOC levels
  mySensor.measureAirQuality();
  //measure TEMP and HUM levels
  shtc1.readSample();

  Serial.print("CO2: ");
  Serial.print(mySensor.CO2);
  Serial.print("ppm tTVOC: ");
  Serial.print(mySensor.TVOC);
  Serial.print("ppb");

  Serial.print("  RH: ");
  Serial.print(shtc1.getHumidity(), 2);
  Serial.print("%  TEMP: ");
  Serial.print(shtc1.getTemperature(), 2);
  Serial.println("℃");
}

이렇게 하면 Sony Spresense를 통해 CO2, TOVC, 온도, 습도의 데이터를 얻을 수 있다.
다음에는 Spresense LTE를 사용해 얻은 데이터를 서버(클라우드)에 업로드하는 샘플을 공개한다.
추기
Sony Spresense LTE 확장판으로 온습도, eCO2, TVOC 데이터를 클라우드에 업로드(Thingspeak)

좋은 웹페이지 즐겨찾기