보정된 공기 품질 센서를 IoT(사물 인터넷)에 추가

Digi-Key 북미 편집자 제공

공기 품질 센서를 스마트 빌딩 시스템에 추가하면 엔지니어는 유해한 기체와 화학물질의 축적에 대한 조기 경고 기능을 구현할 수 있지만, 상업용 공기 품질 센서에는 스마트 빌딩 네트워크에 연결되는 데 필요한 통합 기능이 부족합니다. 하지만 엔지니어는 간편한 개발 키트를 이용하여 이 문제를 극복하는 데 필요한 처리 성능과 무선 기능을 추가할 수 있습니다.

환경 내의 CO2 또는 휘발성 유기 화합물(VOC)의 ppm 농도를 파악할 수 있는 가장 인기 있는 유형의 공기 품질 장치는 측정되는 기체 또는 화학물질의 농도에 비례하는 출력 전압을 생성하는 반도체 전기 화학 소자를 기반으로 하여 만들어졌습니다. 하지만 측정 정밀도는 온도와 습도의 영향을 받습니다. 공기 품질 센서 결과물의 정확도를 개선하기 위해 지속적인 보정 알고리즘에 대한 데이터를 제공할 수 있는 온도 및 습도 센서는 이러한 유형의 공기 품질 센서와 일반적으로 통합되지 않습니다.

또한 현재의 공기 품질 센서 제품군은 다른 센서 유형에 일반적인 무선 기술을 갖추지 못했으며 스마트 빌딩 네트워크에 대한 연결이 필요합니다.

이렇한 기술 부족으로 엔지니어가 가정, 상업, 산업 응용 분야를 위한 무선 네트워크용 공기 품질 센서를 설계하기가 더욱 어렵습니다.

하지만 최근 온도 및 습도 센서는 물론, 무선 연결 기능까지 포함된 공기 품질 모니터링 제품용 개발 키트가 도입되면서 설계가 더욱 용이해졌습니다. 본 기사에서는 이러한 개발 키트를 이용해 공기 품질 제품의 설계 주기를 단축하는 방법에 대해 설명합니다.

MOS 센서 특성

공기 품질을 모니터링하는 센서에는 몇 가지 유형이 있습니다. 전기 화학(EC), 비분산 적외선(NDIR), 광이온화 탐지기(PID) 및 열 방식 등을 예로 들 수 있습니다.

하지만 스마트 빌딩 응용 분야의 모니터링 요구 사항에 가장 적합한 것은 금속 산화막 반도체(MOS) 유형입니다. 이 장치는 상대적으로 가격이 저렴하고 콤팩트하면서 배터리로 작동할 수 있으며(주기적으로 MOS 센서의 히터에 전력을 공급하기에 충분한 용량) 감지 범위가 일반적인 실내 작업 공간의 CO2 및 VOC 농도와 일치합니다(그림 1).

침실 내 CO2 및 VOC의 농도 변화 그래프

그림 1: 하루 동안의 침실 내 CO2 및 VOC의 농도 변화. (이미지 출처: IDT)

작동 중에 감지 소자는 수백 도(˚C)까지 가열됩니다. 정밀한 온도는 특정 기체 또는 화학물질에 대한 소자의 선택도를 결정합니다. 감도는 재료의 농도에 따라 달라집니다.

센서는 n- 또는 p- 반도체 감지 소자로 제조됩니다. 감지 소자는 대상 화학물질을 흡수(p-) 또는 제거(n-)하고, 대상 화합물과의 전기 화학적 반응으로 반도체의 전도대에서 전자가 추가 또는 제거됩니다. 전자의 이동은 감지 소자의 저항성이나 전도율의 알려진 기본값을 선형적으로 변화시킵니다(그림 2).

MOS 센서 소자의 저항성 그래프

그림 2: MOS 센서 소자의 저항성은 대상 화학물질의 농도 변화에 따라 선형적으로 변화합니다. 이 예에서는 에탄올이 사용되었습니다. (이미지 출처: IDT)

스마트 홈 응용 분야를 위한 유일한 상업용 MOS 센서는 ams에서 공급되고 있습니다. CCS811B는 마이크로 컨트롤러, 아날로그 디지털 컨버터(ADC) 및 I2C 인터페이스를 통합하는 디지털 MOS 센서 솔루션입니다(그림 3). 이 장치는 ‘등가 총 VOC’(eTVOC) 및 ‘등가 CO2’(eCO2) 값을 도출하기 위해 미가공 센서의 측정값을 처리합니다. 이 센서는 10리드 2.7mm x 4.0mm x 1.1mm 패키지로 제공됩니다.

ams의 CCS811B 디지털 MOS 센서의 구성도

그림 3: ams의 CCS811B 디지털 MOS 센서에는 미가공 센서 데이터의 온보드 처리를 위한 마이크로 컨트롤러가 포함되어 있습니다. (이미지 출처: ams)

각 MOS 센서에는 주어진 공기의 구성, 온도, 습도에 대한 특징적인 기본 저항성이 있습니다. 이는 기체 또는 화학물질 농도 계산의 기준으로 사용되며 기준선 값과의 저항성 차이는 기체 또는 화학물질 농도에 비례합니다.

현장에서는 주위 온도와 습도가 센서 소자의 기본 저항성에 영향을 미쳐 감도를 변화시키므로 결과적으로 정확도가 달라집니다. 예를 들어 주위 온도가 상승하면 센서 소자의 기본 저항성(주어진 습도에 대한)이 높아지는 반면 습도가 높아지면 기본 저항성(주어진 온도에 대한)이 저하될 수 있습니다.

센서 제조업체는 감시 역할의 마이크로 프로세서가 기본 저항성의 변화를 지속적으로 보정하는 알고리즘을 실행할 수 있도록 공기 품질 센서를 온도 및 습도 센서와 연결할 것을 조언합니다.

이 응용 분야에서 인기 있는 장치는 Bosch Sensortec의 BME280입니다. BME280은 디지털 습도, 압력 및 온도를 LGA 패키지에 결합해 2.5mm x 2.5mm x 0.93mm의 실장 면적으로 제공합니다. 이 센서에는 외부 마이크로 프로세서와 통신할 수 있는 I2C 인터페이스가 있으며 센서에 전력을 공급하기 위해 1.71V ~ 3.6V의 전원 공급이 필요합니다. 센서가 절전 모드일 경우 전류 소모가 0.1μA로 줄어듭니다.

상업용 MOS 센서에는 무선 네트워크에 연결하는 데 필요한 연결 기능이 내장되어 있지 않습니다. 하지만 센서와 직접 접속할 수 있도록 설계된 저전력의 무선 칩은 많습니다. 이러한 장치의 대다수에는 내장형 마이크로 프로세스가 탑재되어 있으며 이는 미가공 센서 데이터를 처리하고 습도 및 온도 변화를 보정하는 데 필요한 알고리즘을 실행하기에 충분한 성능을 제공합니다. 이 응용 분야에 적합한 무선 기술에 대한 자세한 내용은 Digi-Key 문서 “저전력 무선 기술 비교”를 참조하세요.

기본적인 공기 품질 센서 개발

무선으로 연결되는 공기 품질 모니터를 설계하기 위해 엔지니어는 별도의 MOS 센서, 습도 및 온도 센서, 무선 트랜시버를 비롯해 경우에 따라 마이크로 프로세스까지 하나의 시스템으로 결합해 작동하게 만들어야 합니다. 그러한 복잡성으로 인해 이는 벅차고 시간이 오래 소요되는 작업이 될 수 있습니다.

하지만 시장에는 초기 설계 및 테스트 과정을 상당히 수월하게 진행할 수 있도록 해주는 다양한 개발 키트가 출시되어 있습니다. 예를 들어, SparkFun Electronics의 공기 품질 센서 개발용 SEN-14348 Qwiic 환경 콤보 브레이크아웃은 CCS811B 공기 품질 센서를 온도 및 습도 보정을 위해 BME280 센서와 결합하며 4핀 극성 Qwii 커넥터의 형태로 2개의 물리 I2C 인터페이스를 포함하고 있습니다(그림 4).

SparkFun의 SEN-14348 브레이크아웃의 이미지

그림 4: SparkFun의 SEN-14348 브레이크아웃은 온도 및 습도 보정을 위해 CCS811B 센서를 BME280 장치와 결합합니다. (이미지 출처: SparkFun)

SEN-14348을 온도 및 습도 보정 온도 품질 센서 설계의 기반으로 사용할 수 있지만 이는 포괄적 솔루션이 아닙니다. CCS811B에는 마이크로 프로세스가 포함되어 있지만 이 장치는 주기적 측정을 감독하고 기본 보정을 수행하는 것 이상의 기능을 수행하기에는 제한적입니다. 공기 품질 임계치를 모니터링하거나 장기적인 기체 또는 화학물질 농도를 계산하는 등의 더 복잡한 응용 분야는 마이크로 프로세서의 성능을 넘어서는 문제입니다. SEN-14348을 통해 더욱 높은 수준의 응용 분야를 지원하기 위해서는 이를 더욱 뛰어난 성능의 마이크로 프로세서에 연결해야 합니다.

SparkFun에서는 초기 개발의 경우 SEN-14348 브레이크아웃을 RedBoard와 같은 Arduino 호환 컴퓨터에 연결할 것을 제안합니다. RedBoard는 Arduino IDE에서 코드를 업로드하기 위해 USB 케이블(기판에 전력도 제공)을 통해 PC에 연결합니다. Qwii 브레이크아웃과 함께 RedBoard를 사용하려면 컴퓨터를 DEV-14352 Qwiic 실드에 맞게 조정해야 합니다. 이 실드에는 I2C 커넥터가 탑재되어 있으며 5V의 RedBoard 공급 전압을 SEN-14348 브레이크아웃의 센터에 필요한 3.3V로 조정합니다.

작업을 시작하기 위해 개발자는 Github에서 SparkFun CCS811 및 BME280 Arduino 라이브러리를 다운로드해야 합니다. 이 센서는 샘플링 속도, 유한 임펄스 응답(FIR) 필터 계수, 오버샘플링 모드 등의 정보로 Arduino IDE에서 구성됩니다.

아래의 코드 정보는 판독값을 얻기 전에 BME280 센서를 초기화하는 루틴을 보여줍니다(CCS811의 초기 루틴도 이와 유사).

복사

#include <SparkFunBME280.h>

#include <SparkFunCCS811.h>

#define CCS811_ADDR 0x5B //Default I2C Address

//#define CCS811_ADDR 0x5A //Alternate I2C Address

//Global sensor objects

CCS811 myCCS811(CCS811_ADDR);

BME280 myBME280;

void setup()

{

Serial.begin(9600);

Serial.println();

Serial.println("Apply BME280 data to CCS811 for compensatio

n.");

//This begins the CCS811 sensor and prints error status of .

begin()

CCS811Core::status returnCode = myCCS811.begin();

if (returnCode != CCS811Core::SENSOR_SUCCESS)

{

Serial.println("Problem with CCS811");

printDriverError(returnCode);

}

else {

Serial.println("CCS811 online");

}

//Initialize BME280

//For I2C, enable the following and disable the SPI section

myBME280.settings.commInterface = I2C_MODE;

myBME280.settings.I2CAddress = 0x77;

myBME280.settings.runMode = 3; //Normal mode

myBME280.settings.tStandby = 0;

myBME280.settings.filter = 4;

myBME280.settings.tempOverSample = 5;

myBME280.settings.pressOverSample = 5;

myBME280.settings.humidOverSample = 5;

//Calling .begin() causes the settings to be loaded

delay(10);  //Make sure sensor had enough time to turn on. B

ME280 requires 2ms to start up.

byte id = myBME280.begin(); //Returns ID of 0x60 if successf

ul

if (id != 0x60)

{

Serial.println("Problem with BME280");

}

else {

Serial.println("BME280 online");

}

}

코드 스니펫 1: 판독값을 얻기 전 BME280 센서의 초기화 루틴. (코드 출처: SparkFun)

센서에서 판독값을 얻으려면 코드에 유효한 루프를 추가해야 합니다(Arduino ‘스케치’)(코드 스니펫 2).

복사

void loop() {

if (myCCS811.dataAvailable()) //Check to see if CCS811 has n ew data (it's the slowest sensor)

{

myCCS811.readAlgorithmResults(); //Read latest from CCS81

1 and update tVOC and CO2 variables

//getWeather(); //Get latest humidity/pressure/temp data f

rom BME280

printData(); //Pretty print all the data

}

else if (myCCS811.checkForStatusError()) //Check to see if C

CS811 has thrown an error

{

Serial.println(myCCS811.getErrorRegister()); //Prints what

ever CSS811 error flags are detected

}

delay(2000); //Wait for next reading

}

코드 스니펫 2: CCS811 센서에서 판독값을 확보하고 출력하기 위한 루틴. (코드 출처: SparkFun)

BME280의 환경 데이터(‘ENV_DATA’)는 보정 계수가 온도 및 습도 영향 요인에 대한 기본 저항성에 적용될 수 있도록 CCS811에 기록됩니다.

습도 및 온도 정보는 1/512% RH 및 1/512도의 분해능으로 부호 없는 16비트 정수로 전달됩니다. 습도 기본값은 50%입니다(= 0x64, 0x00). 예: 48.5% 습도 = 0x61, 0x00. 온도 판독값에는 -25로 매핑된 0의 오프셋이 포함됩니다. 온도 기본값은 25°C입니다(= 0x64, 0x00). 예: 23.5°C = 0x61, 0x00.

BME280에서 CCS811로 온도 및 습도 값을 공급하면 마이크로 프로세서가 보정 알고리즘을 적용할 수 있습니다(코드 스니펫 3).

복사

void loop() {

//Check to see if data is available

if (myCCS811.dataAvailable())

{

//Calling this function updates the global tVOC and eCO2 v

ariables

myCCS811.readAlgorithmResults();

//printData fetches the values of tVOC and eCO2

printData();

float BMEtempC = myBME280.readTempC();

float BMEhumid = myBME280.readFloatHumidity();

Serial.print("Applying new values (deg C, %): ");

Serial.print(BMEtempC);

Serial.print(",");

Serial.println(BMEhumid);

Serial.println();

//This sends the temperature data to the CCS811

myCCS811.setEnvironmentalData(BMEhumid, BMEtempC);

}

else if (myCCS811.checkForStatusError())

{

Serial.println(myCCS811.getErrorRegister()); //Prints what

ever CSS811 error flags are detected

}

delay(2000); //Wait for next reading

}

코드 스니펫 3: 보정 알고리즘을 수행하도록 CCS811 센서를 활성화하기 위해 온도 및 습도 데이터를 공급. (코드 출처: SparkFun)

IoT에 공기 품질 센서 추가

SparkFun의 SEN-14348 브레이크아웃, Arduino 컴퓨터 및 실드가 공기 품질 데이터의 제어와 정렬을 허용하지만 시스템은 무선 연결성을 제공하지 않습니다. Cypress Semiconductor의 CY8CKIT-042-BLE-A PSoC 4 BLE 파이오니어 키트에는 이 요구 사항을 해결할 수 있는 무선 기능이 포함되어 있습니다.

PSoC 4 BLE 파이오니어 키트는 엔지니어가 무선 센서 응용 제품을 개발하는 것을 돕기 위해 설계된 개발 도구입니다. 이 키트를 이용하면 엔지니어가 응용 제품을 코딩 및 컴파일한 다음 펌웨어를 Cypress의 PSoC 4 Bluetooth 저에너지 SoC로 포팅할 수 있습니다. SoC는 32비트, 48MHz Arm® Cortex®-M0 프로세서와 Bluetooth 저에너지 무선 통신을 통합합니다.

이 경우 키트의 PC 기판의 I2C 커넥터에 대한 브레이크아웃의 I2C 연결을 통해 브레이크아웃의 보정된 공기 품질 데이터가 공급됩니다. I2C 인터페이스의 SDA 라인에서 데이터를 받는 것 외에도 프로세서는 센서를 리셋 및 중단하고 절전 상태로 전환할 수 있습니다.

일부 개발 작업에서는 키트를 사용할 때 공기 품질 센서 설계를 프로그래밍 및 디버깅해야 합니다. Cypress는 코딩과 테스트를 위해 Windows CySmart 호스트 에뮬레이션 도구(PC에서 실행)와 Bluetooth 저에너지 동글을 제공합니다. 동글과 파이오니어 키트는 개발 공정 중에 공통 호스트 PC에 동시에 연결할 수 있습니다(그림 5).

Cypress Bluetooth 저에너지 개발 도구의 이미지(확대하려면 클릭)

그림 5: Cypress는 PSoC 4 BLE 파이오니어 키트를 통한 응용 제품 펌웨어 개발을 돕기 위해 Bluetooth 저에너지 개발 도구와 동글(Bluetooth 저에너지 중앙 장치로 구성됨)을 공급합니다. (이미지 출처: Cypress Semiconductor)

CY8CKIT-042-BLE-A PSoC 4 BLE 파이오니어 키트 설계 공정을 통한 개발은 다음 4단계로 구성됩니다.

  • PSoC Creator 회로도 페이지에 설계 생성
  • Bluetooth 저에너지 이벤트를 초기화 및 다룰 수 있도록 펌웨어 작성
  • 파이오니어 키트를 이용해 Bluetooth 저에너지 SoC 프로그래밍
  • CySmart 호스트 에뮬레이션 도구(또는 모바일 앱)를 사용하여 설계 테스트

Bluetooth 저에너지 응용 제품 개발에 대한 자세한 내용은 Digi-Key 문서, “Bluetooth 4.1, 4.2, 5 호환 Bluetooth 저에너지 SoC 및 도구로 IoT 문제 해결”을 참조하세요.

응용 제품 펌웨어를 이용하면 Bluetooth 저에너지 SoC가 센서 데이터를 대조 및 처리하고 정보를 Bluetooth 저에너지 링크를 통해 분석 및 게시를 위해 스마트폰에 전송하는 등의 작업을 수행할 수 있습니다.

그런 다음 센서의 데이터는 스마트폰에서 클라우드 서버로 전달되어 데이터가 저장되며 해당하는 경우 데이터를 기반으로 IFTTT(If This Then That) 알림이 트리거될 수도 있습니다. 예를 들어 자녀의 침실에서 지속적으로 높은 CO2 판독값이 관찰될 경우 환기를 하도록 조언하는 알림이 부모의 스마트폰에서 트리거될 수 있습니다.

클라우드를 센서에 직접 연결하는 것은 조금 더 복잡합니다. Cypress 부품과 같은 Bluetooth 저에너지 SoC는 일반적으로 기본 IPv6 네트워크 계층이 부족합니다. 해결책은 Bluetooth 데이터를 대체 프로토콜을 사용해 클라우드에 연결하는 ‘게이트웨이’(예: Wi-Fi)로 전송하는 것입니다.

이를 위해 Cypress와 SparkFun이 다시 협력했습니다. 엔지니어는 Cypress의 CY8CKIT-062-BLE PSoC 6 BLE 파이오니어 키트와 SparkFun의 DEV-14531 PSoC 파이오니어 IoT 애드온 실드(XB2B-WFWT-001 XBee Wi-Fi 모듈 장착)를 이용하여, 센서에서 보정된 공기 품질 데이터를 받아 이를 CY8CKIT-042-BLE-A PSoC 4 BLE 파이오니어 키트의 Bluetooth 저에너지 링크를 통해 CY8CKIT-062-BLE PSoC 6 BLE 파이오니어 키트로, 그리고 여기에서(Wi-Fi를 통해) 클라우드로 전송하는 네트워크를 개발할 수 있습니다(그림 6). Wi-Fi 모듈을 사용하여 클라우드에 연결하는 것에 대한 자세한 내용은 Digi-Key 기술 기사, “802.11x 모듈, 개발 키트로 IoT 무선 설계 단순화”를 참조하세요.

Cypress 및 SparkFun 개발 키트에서 구축된 무선 시스템의 구성도

그림 6: Cypress 및 SparkFun 개발 키트에서 구축된 이 무선 시스템은 공기 품질 센서 데이터를 클라우드에 전송하는 데 Bluetooth 저에너지 및 Wi-Fi를 사용합니다. (이미지 출처: Digi-Key Electronics)

결론

환기 제어 건물에 VOC 및 CO2와 같은 기체가 축적되면 건강에 유해한 영향을 미친다는 사실이 알려짐에 따라 스마트 빌딩 네트워크의 일부로 공기 품질 센서를 포함시키는 것이 더욱 중요해지고 있습니다.

현재 상업용 공기 품질 센서에는 다른(모듈식) 센서에 일반적인 강력한 통합 마이크로 프로세서와 무선 연결 기능이 없습니다. 하지만 엔지니어는 사용이 간편한 설계 도구를 선택해 온도 및 습도 영향에 대해 미가공 공기 품질 데이터를 보정할 수 있을 뿐만 아니라 그 정보를 Bluetooth 저에너지 네트워크와 스마트폰 네트워크 또는 Wi-Fi 모듈을 통해 클라우드로 무선 전송할 수도 있습니다.

면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 Digi-Key Electronics의 의견, 생각 및 견해 또는 Digi-Key Electronics의 공식 정책과 관련이 없습니다.

게시자 정보

Digi-Key 북미 편집자