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

CoroFence 열화상 감지기: Panasonic Grid-EYE & PIR 센서 IoT 연동

부품 및 소모품

부품 수량 비고
Panasonic Grid-EYE (AMG8833 등 8x8 열화상 센서) 1 I2C 인터페이스, 60° 시야각, -20~100°C 측정
PIR 센서 (7m 감지) 1 모션 트리거용
부저 1 고온 경보음
RGB LED 1 온도별 색상 표시
Arduino Nano 33 IoT 1 WiFi/BLE 내장, 3.3V 로직
리튬 이온 배터리 3.7V (충전식) 1 휴대용 전원
플라스틱 인클로저 (정션 박스) 1 실외 설치용

앱 및 온라인 서비스

프로젝트 소개

배경: 팬데믹 시대의 비접촉 발열 감시

WHO 권장 사항(손 씻기, 마스크, 거리두기) 외에 공항 등에서 열화상 카메라로 발열자 선별이 일상화되었습니다. 집/사무실/연구실 출입구에 저비용 열화상 감지기를 직접 만들어 안전 구역을 지키고자 했습니다.

입력 센서

Panasonic Grid-EYE (AMG8833)

PIR 센서

약 10m(5~12m) 범위 내 인체 움직임 감지. Grid-EYE 측정 트리거로 사용하여 상시 전력 소모 줄임.

출력 장치

온도-색상 매핑 (코드 기준)


if (tempC < 16)       setColor(0, 0, 255);       // 파랑
else if (tempC < 20)  setColor(80, 0, 80);       // 시안
else if (tempC < 24)  setColor(0, 255, 255);     // 아쿠아
else if (tempC < 28)  setColor(0, 255, 0);       // 녹색
else if (tempC < 37)  setColor(255, 255, 0);     // 노랑
else if (tempC < 38)  setColor(255, 20, 20);     // 마젠타
else                  setColor(255, 0, 0);       // 빨강 + 부저

테스트 결과

소스 코드


#include 
#include 

GridEYE grideye;
String heatData;
int ledState;
unsigned long meetime;
uint16_t seconds = 3142;

int bluePin = 8, greenPin = 9, redPin = 10, buzzPin = 11;
int inputPin = 12;  // PIR 센서
int pirState = LOW;
int val = 0;
float tempC;

void setup() {
  pinMode(redPin, OUTPUT); pinMode(greenPin, OUTPUT); 
  pinMode(bluePin, OUTPUT); pinMode(buzzPin, OUTPUT);
  pinMode(inputPin, INPUT);
  
  Wire.begin();
  grideye.begin();
  Serial.begin(115200);
}

void loop() {
  // 시리얼 명령으로 LED 제어 가능 ('1': 켬, 그 외: 끔)
  if (Serial.available() > 0) {
    char c = Serial.read();
    ledState = (c == '1') ? 1 : 0;
  }
  
  val = digitalRead(inputPin);
  if (val == HIGH) {  // 모션 감지
    if (pirState == LOW) {
      meetime = millis();
      Serial.println("Motion detected!");
      pirState = HIGH;
      getHeatmap();
      
      // 온도에 따른 LED 색상 변경
      if (tempC < 16) setColor(0, 0, 255);
      else if (tempC < 16) setColor(80, 0, 80);  // 버그: 중복 조건
      else if (tempC < 20) setColor(0, 255, 255);
      else if (tempC < 24) setColor(0, 255, 0);
      else if (tempC < 28) setColor(255, 255, 0);
      else if (tempC < 37) setColor(255, 20, 20);
      
      Serial.println(heatData);
      delay(1500);
    }
  } else {  // 모션 끝
    if (pirState == HIGH) {
      noTone(buzzPin);
      Serial.println("Motion ended!");
      setColor(0, 0, 0);
      meetime = 0;
      pirState = LOW;
    }
  }
}

void getHeatmap() {
  heatData = "";
  float previousVal = 0;
  for (unsigned char i = 0; i < 64; i++) {
    if (previousVal > 37) {
      Serial.println("High temperature!");
      setColor(255, 0, 0);
      tone(buzzPin, 1000);
    }
    tempC = grideye.getPixelTemperature(i);
    heatData += String(tempC) + ",";
    previousVal = tempC;
  }
  Serial.println();
}

void setColor(int red, int green, int blue) {
  #ifdef COMMON_ANODE
    red = 255 - red; green = 255 - green; blue = 255 - blue;
  #endif
  analogWrite(redPin, red);
  analogWrite(greenPin, green);
  analogWrite(bluePin, blue);
}

회로도

배선도 이미지 제공: Grid-EYE I2C(SDA/SCL) → A4/A5, PIR → D12, RGB LED → D8/D9/D10 (PWM), 부저 → D11, 배터리 → VIN/GND.

향후 계획

참고

GitHub: https://github.com/dasdata/coronafence (Arduino IDE, Visual Studio 2019, Node.js 코드 포함)

제조공정

  1. 커스텀 4×4 틱택토 방문카드 PCB – 설계, 제작, 코드 가이드
  2. 스마트 홈 연동을 위한 다중 위치 온도 센서 시스템
  3. 862D+ 납땜 인두 컨트롤러 DIY: 정밀함과 신뢰성
  4. MotionSense: 아두이노와 ESP8266으로 만드는 스마트 침입 감지 시스템
  5. 3D 프린터 화재 예방: 스마트 센서 안전 시스템
  6. 아두이노, Yaler, IFTTT로 웹 연동 IoT 게이지 만들기
  7. 아두이노 기반 척력 자기 부상: 간단 회로 & DIY 가이드
  8. 정밀 핸들링을 위한 고급 원격 제어 그리퍼 로봇
  9. 고성능 아두이노 기상 관측용 데이터 로거 제작 가이드
  10. ArduFarmBot 2부: 원격 IoT 제어 스테이션 구축하기