산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

CO2 농도 측정: 졸음 유발 배수 발견하기

부품 및 소모품

부품수량
안디움 안두이노 와이파이 (Andium Anduino WiFi)1
아두이노 듀 (Arduino Due)1
CO2 센서 (Cozir NDIR 타입)1

앱 및 온라인 서비스

프로젝트 소개

동기

오후 회의 중 졸음이 쏟아지거나 하품이 멈추지 않나요? 3시간 강의 중 졸고 있나요? 수면 부족 탓도 있지만, 실내 환기 불량으로 인한 고농도 이산화탄소(CO2)가 원인일 수 있습니다! 이 NDIR CO2 센서는 UART 시리얼 인터페이스로 정확한 CO2 농도 측정이 가능합니다. 기존 센서는 예열 시간과 전력 소모가 컸으나, 이 센서는 LED와 적외선 검출기를 사용해 3.3V, 평균 1.5mA 미만으로 동작합니다. 광학 분산 기술 등을 사용하며 Cozir 데이터시트 참조 바랍니다.

시작하기

필요한 것: 아두이노 듀/제로, 안두이노 와이파이 실드, Cozir CO2 센서, 점퍼 와이어 몇 개.

연결 간단: 센서 10핀 중 4개만 사용. 3.3V→3V3, GND→GND, Rx(DIO19)→Tx, Tx(DIO18)→Rx (UART 크로스 연결). DIO0/DIO1은 시리얼 모니터용으로 예약. Serial1 사용 (나머지 UART 3개 중 아무거나 가능).

주의: 센서는 3.3V TTL이므로 5V 시스템과 통신 시 로직 레벨 시프터 필수.

아두이노 없이 센서 테스트 시: PuTTY 등 시리얼 터미널로 9600 baud, 8N1, CR/LF 전송 설정 후 직접 명령 전송 가능.

센서 캘리브레이션

질소 가스(CO2 0ppm)로 제로 포인트 캘리브레이션이 최선이지만, 신선한 공기(약 450ppm)로도 충분히 정확. 실외에서 예제 스케치의 calibrateFreshAir() 주석 해제 후 실행. 'G' 명령 전송으로 캘리브레이션 수행. NYC 14층 실외 공기도 기준점으로 사용 가능 (실내 임계값은 1000ppm 단위이므로 오차 허용).

클라우드에 CO2 데이터 발행 (Adafruit IO)

Adafruit IO 연동 예제 스케치 제공. WiFi 연결, MQTT로 Adafruit IO 접속, 1분마다 CO2 농도 읽어 피드 발행. LCD에 현재/이전 값 표시. Anduino 라이브러리 필요 (GitHub 참조).

마무리

이 센서는 매우 민감해 환기 잘 되는 방에서도 인원 수에 따른 CO2 농도 변화 추적 가능. "미분방정식 때문이 아니라 환기 때문이야!"라며 교수님께 증명해보세요. 수업을 해변으로 옮길 때입니다!

코드

초기 테스트 스케치 (캘리브레이션 포함)

char buffer[20] = {0}; int c = 0;
void setup() {
  Serial.begin(9600); while(!Serial){};
  Serial1.begin(9600); while(!Serial1){};
  Serial.println("Begin reading CO2 Levels");
  // setOperatingMode(CZR_STREAMING);
  // setOperatingMode(CZR_POLLING);
  // calibrateFreshAir();
}
void loop() {
  delay(10000);
  c = Request("Z");
  Serial.print("CO2 : "); Serial.println(c); Serial.println("");
}
int Request(char* s) {
  buffer[0] = '\0'; int idx = 0;
  Command(s); delay(250);
  while(Serial1.available()) buffer[idx++] = Serial1.read();
  buffer[idx] = '\0';
  uint16_t rv = 0;
  switch(buffer[1]) {
    case 'T': rv = atoi(&buffer[5]); if (buffer[4] == 1) rv += 1000; break;
    default: rv = atoi(&buffer[2]); break;
  }
  return rv;
}
void Command(char* s) { Serial1.print(s); Serial1.print("\r\n"); }
uint16_t calibrateFreshAir() { return Request("G"); }
void setOperatingMode(uint8_t mode) { sprintf(buffer, "K %u", mode); Command(buffer); }

Adafruit IO 발행 스케치 (일부)

#include 
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
#include "AnduinoLCD.h"
// WiFi, Adafruit IO 설정 상수 정의...
// loop()에서 1분마다 Request("Z")로 CO2 읽고 carbonDioxide.publish()로 발행
// LCD에 현재/이전 값 표시 (displayCo2 함수)
// WiFi/Adafruit 연결 함수, Request/Command/calibrateFreshAir/setOperatingMode 함수 포함

라이브러리

Anduino: 안디움(안두이노) 실드용 아두이노 라이브러리. 아두이노를 안디움 노드로 변환. https://github.com/andium/Anduino

제조공정

  1. Sensirion, 초소형 CO₂ 및 RH/T 센서 SCD40 출시
  2. 라즈베리 파이에 센서 데이터 통합하기: GPS 및 MPU-9150 IMU 실전 가이드
  3. 레고 마인드스톰 EV3용 커스텀 객체 센서 만들기: DIY 빛 기반 "눈"
  4. 레고 마인드스톰 NXT 초음파 센서를 라즈베리 파이에 직접 연결하기
  5. HC-SR04 초음파 센서를 라즈베리 파이에 연결하기 – 실전 가이드
  6. Acconeer A111 펄스 레이더를 라즈베리 파이에 통합하기: 실전 가이드
  7. 선반 위 고객 서비스 향상: 가시성·효율성 고도화 전략
  8. RF 무선전력으로 범용 센서 네트워크 보급 가속화
  9. RapidPlex 센서: SARS-CoV-2 가정용 검사 5가지 핵심 질문
  10. 산업 유지보수 5단계 레벨 완벽 가이드 (AFNOR X 60-010 기준)