아두이노 우노 Q 사운드 센서

사운드 센서는 환경의 소리를 감지하고 디지털 신호를 출력합니다. 온보드 포텐셔미터가 포함되어 있어 감도를 조정할 수 있습니다. 박수, 두드림 또는 큰 소음이 감지될 때 작업을 트리거하는 데 사용하세요. Bridge 및 Telegram을 사용하면 Arduino UNO Q가 소리를 들었을 때 즉시 알림을 보낼 수 있습니다.

이 튜토리얼에서 배울 내용:

Arduino UNO Q 소리 센서

필요한 하드웨어

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

사운드 센서 정보

사운드 센서 모듈에는 공기의 진동(음파)을 감지하는 작은 마이크로폰이 있습니다. 모듈은 이를 디지털 신호로 변환합니다:

  • HIGH: 조용함 — 임계값 이상의 소리 감지 안 함
  • LOW: 소리 감지됨

모듈에는 다음이 포함됩니다:

  • VCC 핀: 3.3V ~ 5V 전원 공급
  • GND 핀: 그라운드
  • OUT 핀: 디지털 출력 — HIGH = 조용함, LOW = 소리 감지됨
  • 온보드 포텐셔미터: 감지 감도 조정
  • PWR LED: 전원 표시기
  • Sound LED: 소리가 감지되면 켜짐
소리 센서 사용법 핀아웃

감도 조정 방법

모듈의 포텐셔미터를 회전하세요:

  • 시계방향: 더 민감 (더 작은 소리 감지)
  • 반시계방향: 덜 민감 (큰 소리만 트리거)

Sound LED가 박수나 두드림에 확실하게 반응하지만 주변 소음에는 꺼져 있을 때까지 조정하세요.

배선도

Arduino UNO Q 소리 센서 연결 배선도

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

사운드 센서 핀 Arduino UNO Q MCU
GND GND
VCC 5V
OUT D8

사운드 센서 프로그래밍 방법

  • 센서 핀을 디지털 입력으로 구성하세요:
pinMode(SENSOR_PIN, INPUT);
  • 디지털 출력을 읽으세요:
int sound_state = digitalRead(SENSOR_PIN);
  • 이전 상태와 비교하여 소리 이벤트를 감지하세요:
if (prev_state == HIGH && sound_state == LOW) Serial.println("Sound DETECTED"); else if (prev_state == LOW && sound_state == HIGH) Serial.println("Quiet again"); prev_state = sound_state;

Arduino UNO Q 코드

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

  • STM32 MCU는 사운드 센서의 디지털 출력을 읽고 소리 이벤트를 감지합니다
  • 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-sound-sensor */ // Sound sensor DO pin: HIGH = quiet, LOW = sound detected // Sensitivity is adjusted by the onboard potentiometer #define SENSOR_PIN 8 // The Arduino UNO Q MCU pin connected to OUT of the sound sensor int prev_sound_state = HIGH; int sound_state; void setup() { Serial.begin(9600); pinMode(SENSOR_PIN, INPUT); Serial.println("Arduino UNO Q Sound Sensor ready"); } void loop() { sound_state = digitalRead(SENSOR_PIN); if (prev_sound_state == HIGH && sound_state == LOW) Serial.println("Sound DETECTED"); else if (prev_sound_state == LOW && sound_state == HIGH) Serial.println("Sound gone — quiet again"); prev_sound_state = sound_state; }

빠른 단계

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

  • 연결: 배선도에 표시된 대로 사운드 센서를 Arduino UNO Q MCU에 배선하세요.
  • Arduino App Lab 열기: Arduino App Lab을 실행하고 Arduino UNO Q를 감지할 때까지 기다리세요.
  • 새 앱 만들기: Create New App 버튼을 클릭하세요.
create new app in 아두이노 app lab on Arduino UNO Q
  • 앱에 이름을 지정하세요. 예: SoundSensor
  • Create를 클릭하여 확인합니다.
아두이노 app lab app folders and files on Arduino UNO Q
  • 스케치 붙여넣기: 위의 MCU 코드를 복사하여 sketch/sketch.ino에 붙여넣으세요.
  • 업로드: Arduino App Lab에서 Run 버튼을 클릭하세요.
click run 버튼 in 아두이노 app lab on Arduino UNO Q
  • 센서 근처에서 박수를 치거나 테이블을 두드린 후 Serial Monitor 출력을 관찰하세요.
  • 감지가 안정적이지 않으면 모듈의 포텐셔미터를 조정하세요.

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 Sound Sensor ready [2026-04-29 09:00:05] Sound DETECTED [2026-04-29 09:00:05] Sound gone — quiet again [2026-04-29 09:00:08] Sound DETECTED [2026-04-29 09:00:08] Sound gone — quiet again

Bridge: Linux + MCU

이 섹션에서는 Linux 측이 Bridge를 통해 사운드 상태를 읽고 사운드 이벤트를 수신할 수 있도록 Arduino UNO Q의 두 프로세서를 프로그래밍하는 방법을 보여줍니다:

  • 사운드 센서는 MCU에 연결되어 있습니다 — MCU는 디지털 출력을 지속적으로 모니터링하고 현재 상태를 캐시합니다
  • MPU는 센서 핀을 직접 읽을 수 없습니다 — 현재 상태를 얻거나 새로운 소리 이벤트를 확인하기 위해 Bridge 함수를 호출합니다
  • MPU는 Wi-Fi를 가지고 있습니다 — 전체 Debian Linux를 실행하면서 소리가 감지되는 순간 Telegram 알림을 보낼 수 있습니다
  • Arduino_RouterBridge두 프로세서 간의 RPC 통신을 활성화합니다
  • ⚠️ /dev/ttyHS1 (Linux) 및 Serial1 (MCU)은 라우터에서 예약됨 — 사용자 코드에서 절대 열지 마세요

요약하면: MCU가 DO 핀을 통해 소리를 감지 → 이벤트 플래그 설정 → MPU가 Bridge를 폴링 → MPU가 Telegram 알림 전송

MCU 코드 (Bridge)

/* * 이 Arduino UNO Q 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino UNO Q 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-uno-q/arduino-uno-q-sound-sensor */ #include "Arduino_RouterBridge.h" #define SENSOR_PIN 8 // The Arduino UNO Q MCU pin connected to OUT of the sound sensor bool cached_sound = false; // true = sound present bool sound_event = false; // true = new sound detected (rising edge) int prev_state = HIGH; String get_state(String arg) { return cached_sound ? "sound" : "quiet"; } String get_event(String arg) { if (sound_event) { sound_event = false; return "sound_detected"; } return "none"; } void setup() { Bridge.begin(); Monitor.begin(); pinMode(SENSOR_PIN, INPUT); Bridge.provide("get_state", get_state); Bridge.provide("get_event", get_event); Monitor.println("Arduino UNO Q Sound Sensor Bridge ready"); } void loop() { int current = digitalRead(SENSOR_PIN); if (prev_state == HIGH && current == LOW) { // Quiet → Sound cached_sound = true; sound_event = true; Monitor.println("Sound detected!"); } else if (prev_state == LOW && current == HIGH) { // Sound → Quiet cached_sound = false; Monitor.println("Quiet again."); } prev_state = current; }

Python 코드 (Bridge)

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

빠른 단계

  • 연결: 배선도에 표시된 대로 사운드 센서를 Arduino UNO Q에 배선하세요.
  • Arduino App Lab 열기하고 SoundSensorBridge라는 새 앱을 만드세요.
  • 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 버튼을 클릭하세요.
click run 버튼 in 아두이노 app lab on Arduino UNO Q
  • 센서 근처에서 박수를 치세요 — 이벤트가 두 콘솔에 모두 나타나는지 확인하세요.

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 Sound Sensor Bridge ready [2026-04-29 09:00:05] Sound detected! [2026-04-29 09:00:05] Quiet again.
DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:00:02] Sound state: quiet [2026-04-29 09:00:03] Sound state: quiet [2026-04-29 09:00:05] Sound state: sound [2026-04-29 09:00:06] Sound state: quiet

Telegram

Arduino 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-sound-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 new sound detection event = Bridge.call("get_event") if event == "sound_detected": print("Sound detected! Sending Telegram alert.") send_message(CHAT_ID, "🔊 Sound detected by Arduino UNO Q!") # 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 Sound Sensor Bot\n" "/state - Current sound state (sound / quiet)\n" "Automatic alert when sound is detected") elif text == "/state": result = Bridge.call("get_state") send_message(chat_id, f"Sound state: {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:05] Sound detected! Sending Telegram alert. [2026-04-29 09:10:10] Received: /state
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
🔊 Sound detected by Arduino UNO Q!
10:15 AM
/state
10:16 AM ✓✓
Sound state: quiet
10:17 AM
/state
10:18 AM ✓✓
Sound state: sound
10:19 AM

OpenClaw

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

프로젝트 아이디어

사운드 센서와 Arduino UNO Q로 많은 유용한 프로젝트를 만들 수 있습니다:

  • 박수 스위치: 빠른 두 박수를 감지하고 Bridge를 통해 릴레이를 토글하여 조명이나 선풍기를 켜거나 끌 수 있습니다 — Python이 500ms 창 내에서 박수 이벤트를 계산하고 토글 명령을 보냅니다
  • 베이비 모니터: 센서를 방에 설치합니다 — 연속적인 소리(울음)를 감지하면 MPU가 Telegram 알림을 보내 어디서나 즉시 알 수 있습니다
  • 침입 경보: 사운드 센서를 도어 센서와 결합합니다 — 도어 열기 및 예상치 못한 큰 소음 모두에 대해 타임스탬프 및 지속 시간이 로깅되는 Telegram 알림
  • 사운드 레벨 로거: 매초 사운드 상태를 폴링하고 감지 빈도를 CSV에 로깅합니다 — 소음 모니터링을 위한 피크 사운드 시간을 보여주는 일일 Telegram 보고서를 보냅니다
  • 스마트 초인종: 사운드 센서를 통해 문의 노크를 감지합니다 — MPU가 사진(카메라가 연결된 경우)과 함께 Telegram 메시지를 보내 누가 문 앞에 있는지 원격으로 확인할 수 있습니다

도전해 보세요

Arduino UNO Q의 사운드 센서로 더 나아갈 준비가 되셨나요? 이 도전을 시도해 보세요:

  • 쉬움: Python 코드에 사운드 카운터를 추가하세요 — 분당 소리가 감지된 횟수를 계산하고 콘솔에 60초마다 총합을 인쇄합니다.
  • 중간: Python에서 박수 패턴 인식을 구현합니다: 단일 박수 (한 소리) 대 더블 박수 (600ms 내 두 소리)를 감지합니다 — 각 패턴에 대해 다른 Telegram 메시지를 보냅니다.
  • 고급: 사운드 지속 시간 추적기 구축: millis()를 사용하여 MCU 측에 각 사운드 이벤트의 시작 및 종료 시간을 기록합니다 — get_duration() Bridge 함수를 통해 마지막 지속 시간을 노출하고 모든 Telegram 알림에 포함합니다.

관련 튜토리얼