아두이노 우노 Q 불꽃 센서

불꽃 센서는 화재에서 나오는 적외선 방사를 감지하고 디지털 신호(불꽃 감지/미감지)와 아날로그 신호(불꽃 강도) 모두를 출력합니다. 아두이노 UNO Q에서 12비트 ADC는 더 미세한 강도 측정을 제공합니다. Bridge와 Telegram을 사용하면 휴대폰에서 즉시 화재 경보를 받을 수 있습니다.

이 튜토리얼에서 다음을 배웁니다:

아두이노 uno q 불꽃 센서

※ 주의:

불꽃 센서는 적외선 방사를 감지합니다. 조기 화재 감지 및 안전 시스템의 일부로 사용하십시오. 항상 적절한 화재 경보 및 안전 장비와 함께 사용하십시오. 생명 안전 응용 프로그램에서 이 센서만으로는 절대로 의존하지 마십시오.

필요한 하드웨어

1×Arduino UNO Q 아마존
1×USB Cable for Arduino Uno Q 아마존
1×Flame Sensor 쿠팡 | 아마존
1×점퍼케이블 쿠팡 | 아마존
1×(추천) 아두이노 우노용 스크루 터미널 블록 쉴드 쿠팡 | 아마존
1×(추천) Sensors/Servo Expansion Shield for Arduino Uno 쿠팡 | 아마존
1×(추천) 아두이노 우노용 브레드보드 쉴드 쿠팡 | 아마존
1×(추천) 아두이노 우노용 케이스 쿠팡 | 아마존
1×(추천) 아두이노 우노용 프로토타이핑 베이스 플레이트 & 브레드보드 키트 아마존
공개: 이 포스팅 에 제공된 일부 링크는 아마존 제휴 링크입니다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

불꽃 센서 정보

불꽃 센서에는 불꽃에서 나오는 특정 적외선 파장에 민감한 적외선 포토다이오드가 포함되어 있습니다. 디지털 감지 임계값을 조정할 수 있는 온보드 포텐셜미터를 포함하고 있습니다.

불꽃 센서 핀아웃

핀아웃

  • VCC 핀: 3.3V ~ 5V 전원 공급
  • GND 핀: 그라운드
  • DO 핀: 디지털 출력 — HIGH = 불꽃 없음, LOW = 불꽃 감지. 감도는 온보드 포텐셜미터로 설정됩니다.
  • AO 핀: 아날로그 출력 — 높은 값 = 더 많은 적외선/불꽃, 낮은 값 = 적은 불꽃

LED 표시기

  • PWR-LED: 전원 표시기
  • DO-LED: 불꽃이 감지될 때 켜집니다(DO 핀 LOW)

작동 원리

  • DO 핀: 포텐셜미터가 임계값을 설정합니다. 적외선 수준이 임계값을 초과하면 DO가 LOW로 변합니다(불꽃 감지). 불꽃 근처에서 DO-LED가 안정적으로 작동할 때까지 포텐셜미터를 조정합니다.
  • AO 핀: 적외선 강도에 비례하는 연속 아날로그 전압을 출력합니다. 아두이노 UNO Q에서는 12비트 값(0–4095)으로 읽습니다 — 더 높은 값은 더 많은 적외선/불꽃을 의미합니다.

※ 주의:

불꽃 센서는 불만이 아니라 모든 강한 적외선 원에 반응합니다. 강한 햇빛이나 적외선 LED도 센서를 트리거할 수 있습니다. 오작동을 피하기 위해 센서를 직사광선으로부터 차단하십시오.

배선도

아두이노 uno q 불꽃 센서 배선도

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

불꽃 센서 핀 아두이노 UNO Q MCU
VCC 5V
GND GND
DO D2
AO A0

불꽃 센서 프로그래밍 방법

  • DO 핀을 디지털 입력으로 구성합니다:
pinMode(DO_PIN, INPUT);
  • 두 출력 모두 읽습니다:
int do_state = digitalRead(DO_PIN); // HIGH = no flame, LOW = flame int ao_value = analogRead(AO_PIN); // 0-4095, higher = more flame
  • 디지털 출력에서 불꽃 확인:
if (do_state == LOW) { Serial.print("FLAME DETECTED! Intensity (AO): "); Serial.println(ao_value); }

아두이노 UNO Q 코드

아두이노 UNO Q에는 함께 작동하는 두 개의 프로세서가 있습니다:

  • STM32 MCU는 500ms마다 불꽃 센서에서 DO 및 AO 출력을 모두 읽습니다
  • Qualcomm MPU는 Wi-Fi를 지원하는 Debian Linux를 실행합니다 — 이 섹션에서는 MCU만 프로그래밍됩니다. 이후 섹션에서는 두 프로세서가 Bridge를 통해 함께 작동하는 방법을 보여줍니다.
/* * 이 Arduino UNO Q 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino UNO Q 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-uno-q/arduino-uno-q-flame-sensor */ // Flame sensor: // DO pin: HIGH = no flame, LOW = flame detected // AO pin: analog — higher value = more infrared/flame (12-bit ADC: 0-4095) #define DO_PIN 2 // The Arduino UNO Q MCU pin connected to DO of the flame sensor #define AO_PIN A0 // The Arduino UNO Q MCU pin connected to AO of the flame sensor void setup() { Serial.begin(9600); pinMode(DO_PIN, INPUT); Serial.println("Arduino UNO Q Flame Sensor ready"); } void loop() { int do_state = digitalRead(DO_PIN); // HIGH = no flame, LOW = flame int ao_value = analogRead(AO_PIN); // 0-4095, higher = more flame if (do_state == LOW) { Serial.print("FLAME DETECTED! Intensity (AO): "); Serial.println(ao_value); } else { Serial.print("No flame. AO value: "); Serial.println(ao_value); } delay(500); }

빠른 단계

처음 아두이노 UNO Q를 사용하세요? 진행하기 전에 아두이노 우노 Q 시작하기 튜토리얼을 따르세요.

  • 연결: 배선도에 표시된 대로 불꽃 센서를 아두이노 UNO Q MCU에 연결합니다.
  • Arduino App Lab 열기: Arduino App Lab을 실행하고 아두이노 UNO Q를 감지할 때까지 기다립니다.
  • 새 앱 만들기: Create New App 버튼을 클릭합니다.
아두이노 uno q의 아두이노 app lab에서 새 앱 만들기
  • 앱에 이름을 지정합니다. 예: FlameSensor
  • Create를 클릭하여 확인합니다.
아두이노 uno q의 아두이노 app lab 앱 폴더 및 파일
  • 스케치 붙여넣기: 위의 MCU 코드를 복사하고 sketch/sketch.ino에 붙여넣습니다.
  • 업로드: Arduino App Lab의 Run 버튼을 클릭합니다.
아두이노 uno q의 아두이노 app lab에서 run 버튼 클릭
  • 불꽃 센서를 양초 불꽃을 향해 놓고 Serial Monitor 출력을 관찰합니다.
  • DO 핀이 올바르게 응답하지 않으면 모듈의 포텐셜미터를 조정합니다.

App Lab 콘솔 출력

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
Message (Enter to send a message to "Newbiely" on usb(2820070321))
New Line
9600 baud
[2026-04-29 09:00:01] Arduino UNO Q Flame Sensor ready [2026-04-29 09:00:02] No flame. AO value: 45 [2026-04-29 09:00:03] No flame. AO value: 48 [2026-04-29 09:00:04] FLAME DETECTED! Intensity (AO): 2156 [2026-04-29 09:00:05] FLAME DETECTED! Intensity (AO): 2843 [2026-04-29 09:00:06] FLAME DETECTED! Intensity (AO): 3102 [2026-04-29 09:00:07] No flame. AO value: 51

Bridge: Linux + MCU

이 섹션에서는 Linux 측에서 불꽃 상태를 읽고 Bridge를 통해 화재 이벤트를 받을 수 있도록 아두이노 UNO Q의 두 프로세서를 프로그래밍하는 방법을 보여줍니다:

  • 불꽃 센서는 MCU에 연결됩니다 — MCU는 500ms마다 DO 및 AO를 읽고 값을 캐시합니다
  • MPU는 센서 핀을 직접 읽을 수 없습니다 — Bridge 함수를 호출하여 상태, 강도 값 또는 이벤트를 가져옵니다
  • MPU는 Wi-Fi를 가지고 있습니다 — 전체 Debian Linux를 실행하여 불꽃이 감지되는 순간 긴급 Telegram 화재 경보를 보낼 수 있습니다
  • Arduino_RouterBridge는 두 프로세서 간의 RPC 통신을 활성화합니다
  • ⚠️ /dev/ttyHS1 (Linux) 및 Serial1 (MCU)는 라우터로 예약되어 있습니다 — 사용자 코드에서 절대로 열지 마십시오

MCU 코드 (Bridge)

/* * 이 Arduino UNO Q 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino UNO Q 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-uno-q/arduino-uno-q-flame-sensor */ #include "Arduino_RouterBridge.h" #define DO_PIN 2 // The Arduino UNO Q MCU pin connected to DO of the flame sensor #define AO_PIN A0 // The Arduino UNO Q MCU pin connected to AO of the flame sensor // Cached values bool cached_flame = false; int cached_ao = 0; bool flame_event = false; bool prev_flame = false; unsigned long last_read_ms = 0; const unsigned long READ_INTERVAL = 500; String get_state(String arg) { return cached_flame ? "flame" : "no_flame"; } String get_value(String arg) { return String(cached_ao); } String get_event(String arg) { if (flame_event) { flame_event = false; return "flame_detected"; } return "none"; } void setup() { Bridge.begin(); Monitor.begin(); pinMode(DO_PIN, INPUT); Bridge.provide("get_state", get_state); Bridge.provide("get_value", get_value); Bridge.provide("get_event", get_event); Monitor.println("Arduino UNO Q Flame Sensor Bridge ready"); } void loop() { unsigned long now = millis(); if (now - last_read_ms >= READ_INTERVAL) { last_read_ms = now; int do_state = digitalRead(DO_PIN); // LOW = flame cached_ao = analogRead(AO_PIN); cached_flame = (do_state == LOW); if (cached_flame && !prev_flame) { flame_event = true; Monitor.print("FLAME DETECTED! AO value: "); Monitor.println(cached_ao); } else if (!cached_flame && prev_flame) { Monitor.println("Flame gone. No flame detected."); } prev_flame = cached_flame; } }

Python 코드 (Bridge)

/* * 이 Arduino UNO Q 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino UNO Q 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-uno-q/arduino-uno-q-flame-sensor */ from arduino.app_utils import * import time def loop(): state = Bridge.call("get_state") value = Bridge.call("get_value") print(f"Flame state: {state} AO value: {value}") time.sleep(0.5) App.run(user_loop=loop)

빠른 단계

  • 연결: 배선도에 표시된 대로 불꽃 센서를 아두이노 UNO Q에 연결합니다.
  • Arduino App Lab 열기FlameSensorBridge라는 새 앱을 만듭니다.
  • MCU 스케치를 sketch/sketch.ino에 붙여넣습니다.
  • Python 코드를 Python 파일에 붙여넣습니다.
  • Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.
add sketch 라이브러리 in 아두이노 app lab on Arduino UNO Q
  • Search for Arduino_RouterBridge created by Arduino and click the Install button.
My Apps / DIYables Apps
Run
Bricks
No bricks added...
Sketch Libraries
No sketch libra...
Files
python
sketch
.gitignore
README.md
app.yaml
sketch.ino
Add sketch library
Arduino_RouterBridge Arduino

This library provides a simple RPC bridge for Arduino UNO Q boards, allowing communication between the board and other devices using MsgPack serialization.

0.4.1
Install
More Info
  • 업로드: Run 버튼을 클릭합니다.
아두이노 uno q의 아두이노 app lab에서 run 버튼 클릭
  • 센서를 양초를 향해 놓고 두 콘솔 모두에서 불꽃 이벤트가 표시되는 것을 관찰합니다.

App Lab 콘솔 출력

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
Message (Enter to send a message to "Newbiely" on usb(2820070321))
New Line
9600 baud
[2026-04-29 09:00:01] Arduino UNO Q Flame Sensor Bridge ready [2026-04-29 09:00:06] FLAME DETECTED! AO value: 2843 [2026-04-29 09:00:10] Flame gone. No flame detected.
DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:00:02] Flame state: no_flame AO value: 48 [2026-04-29 09:00:04] Flame state: no_flame AO value: 50 [2026-04-29 09:00:06] Flame state: flame AO value: 2843 [2026-04-29 09:00:08] Flame state: flame AO value: 3102 [2026-04-29 09:00:10] Flame state: no_flame AO value: 49

Telegram

아두이노 UNO Q 불꽃 센서에서 즉시 Telegram 화재 경보를 받고 원격으로 불꽃 상태를 쿼리합니다.

MCU 스케치: 이전 Bridge 섹션의 동일한 MCU 스케치를 유지합니다.

Python 코드 (Telegram)

/* * 이 Arduino UNO Q 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino UNO Q 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-uno-q/arduino-uno-q-flame-sensor */ from arduino.app_utils import * import requests import time TELEGRAM_BOT_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN" CHAT_ID = "YOUR_CHAT_ID" last_update_id = 0 def get_updates(): global last_update_id url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/getUpdates" params = {"offset": last_update_id + 1, "timeout": 5} try: response = requests.get(url, params=params, timeout=10) data = response.json() if data["ok"]: return data["result"] except Exception as e: print(f"Error getting updates: {e}") return [] def send_message(chat_id, text): url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage" payload = {"chat_id": chat_id, "text": text} try: requests.post(url, data=payload, timeout=10) except Exception as e: print(f"Error sending message: {e}") def loop(): # Auto-alert on flame detection event = Bridge.call("get_event") if event == "flame_detected": value = Bridge.call("get_value") print(f"FLAME DETECTED! AO value: {value}") send_message(CHAT_ID, f"🔥 FLAME DETECTED! Intensity (AO): {value}") # Handle Telegram commands updates = get_updates() for update in updates: last_update_id = update["update_id"] if "message" not in update: continue message = update["message"] chat_id = message["chat"]["id"] text = message.get("text", "").strip() print(f"Received: {text}") if text == "/start": send_message(chat_id, "Arduino UNO Q Flame Sensor Bot\n" "/state - Current state (flame / no_flame)\n" "/value - Read analog intensity (0-4095)\n" "Automatic alert when flame is detected!") elif text == "/state": result = Bridge.call("get_state") send_message(chat_id, f"Flame state: {result}") elif text == "/value": result = Bridge.call("get_value") send_message(chat_id, f"AO intensity value: {result}") else: send_message(chat_id, "Unknown command. Send /start for help.") time.sleep(0.3) App.run(user_loop=loop)

빠른 단계

  • YOUR_TELEGRAM_BOT_TOKEN을 BotFather에서 얻은 실제 봇 토큰으로 바꿉니다.
  • YOUR_CHAT_ID를 Telegram 채팅 ID로 바꿉니다.
  • 이 Python 코드를 앱의 Python 파일에 붙여넣습니다(동일한 MCU 스케치 유지).
  • Run 버튼을 클릭합니다 — 센서를 불꽃을 향해 놓고 Telegram 경보를 받습니다.

App Lab 콘솔 출력

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:10:00] Waiting for Telegram messages... [2026-04-29 09:10:06] FLAME DETECTED! AO value: 2843 [2026-04-29 09:10:12] Received: /state [2026-04-29 09:10:15] Received: /value
Telegram
Telegram 12:45
Welcome to Telegram!
ArduinoBot 10:19
Chatting with Arduino...
telegram-botfather
BotFather Yesterday
Your bot has been created.

ArduinoBot

bot
Today
🔥 FLAME DETECTED! Intensity (AO): 2843
10:15 AM
/state
10:16 AM ✓✓
Flame state: no_flame
10:17 AM
/value
10:18 AM ✓✓
AO intensity value: 49
10:19 AM

OpenClaw

You can adapt the OpenClaw to this tutorial by refering the instruction on 아두이노 우노 Q - OpenClaw Tutorial

프로젝트 아이디어

불꽃 센서와 아두이노 UNO Q로 많은 유용한 프로젝트를 만들 수 있습니다:

  • 화재 경보 시스템: 불꽃 센서를 주방이나 작업실에 설치합니다 — 불꽃이 감지되면 MPU는 AO 강도 값과 함께 긴급 Telegram 경보를 보내어 어디서나 즉시 조치를 취할 수 있습니다
  • 자동 화재 소화: 불꽃 센서를 릴레이 제어 솔레노이드 밸브와 연결합니다 — 불꽃이 감지되면 MCU가 밸브를 열어 물이나 소화제를 방출하고 Python이 Telegram 알림을 보냅니다
  • 양초 모니터링: 무인 방의 양초 근처에 센서를 배치합니다 — 설정 시간 후에도 양초가 여전히 타고 있거나 새로운 불꽃이 예상치 못하게 나타나면 Telegram 경보를 받습니다
  • 화재 강도 로거: 불꽃이 감지될 때마다 AO 값 및 타임스탬프를 Linux의 CSV에 기록합니다 — 시작 시간, 종료 시간 및 최고 강도를 요약한 화재 이벤트로 일일 Telegram 보고서를 보냅니다
  • 다중 센서 화재 안전 시스템: 불꽃 센서를 가스 센서 튜토리얼과 결합합니다 — 둘 다 동시에 위험을 감지하면 "FIRE + GAS LEAK" Telegram 경보를 보내고 릴레이를 통해 가청 경보를 트리거합니다

도전해보세요

아두이노 UNO Q에서 불꽃 센서를 더 멀리 사용할 준비가 되었나요? 이 도전 과제를 시도해보세요:

  • 쉬움: 마지막 5개의 불꽃 이벤트를 타임스탬프 및 최고 AO 강도 값과 함께 반환하는 /history Telegram 명령을 추가합니다. Python 리스트에 저장되어 있습니다.
  • 중간: 거짓 경보 필터를 구현합니다: 불꽃은 최소 3회 연속 측정(1.5초) 동안 감지되어야 MPU가 Telegram 경보를 보냅니다 — 이는 밝은 빛의 단일 펄스 오작동을 방지합니다.
  • 고급: 서로 다른 디지털 핀의 두 개 불꽃 센서를 사용하여 다중 영역 화재 모니터링 시스템을 만듭니다 — 각 영역에 대해 별도의 Bridge 함수를 노출하고 각 영역이 개별 강도 측정을 사용하여 불꽃을 감지한 것을 지정하는 Telegram 경보를 받습니다.

관련 튜토리얼