아두이노 우노 Q 조명 센서로 LED 제어하기
이 가이드에서는 다음을 배울 수 있습니다:
- 조명 센서 값이 임계값 이하일 때(매우 밝을 때) LED를 켜기
- 조명 센서 값이 임계값 이상일 때 LED를 끄기

필요한 하드웨어
| 1 | × | Arduino UNO Q | 아마존 | |
| 1 | × | USB Cable for Arduino Uno Q | 아마존 | |
| 1 | × | 조도 센서 | 아마존 | |
| 1 | × | LED | 쿠팡 | 아마존 | |
| 1 | × | LED Module | 아마존 | |
| 1 | × | 220Ω Resistor | 아마존 | |
| 1 | × | 10 kΩ Resistor | 아마존 | |
| 1 | × | 브레드보드 | 쿠팡 | 아마존 | |
| 1 | × | 점퍼케이블 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 스크루 터미널 블록 쉴드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) Sensors/Servo Expansion Shield for Arduino Uno | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 브레드보드 쉴드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 케이스 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 프로토타이핑 베이스 플레이트 & 브레드보드 키트 | 아마존 |
LDR 조명 센서는 배선을 위해 저항이 필요합니다. 설정을 단순화하려면 대신 LDR 조명 센서 모듈을 사용할 수 있습니다.
LED 및 조명 센서 정보
아래 튜토리얼에서 LED 및 조명 센서에 대해 배우세요:
배선 다이어그램

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
MCU 코드
Arduino UNO Q는 두 개의 프로세서를 가지고 있습니다: STM32 MCU(실시간 하드웨어 제어 처리) 및 Qualcomm MPU(Debian Linux 실행). 이 섹션에서는 STM32 MCU만 프로그래밍되며, Linux 쪽은 유휴 상태로 유지됩니다. 나중 섹션에서 두 프로세서가 함께 작동하는 방법을 보여줍니다.
※ 주의:
Arduino UNO Q STM32 MCU는 12비트 ADC(0–4095)를 가지고 있으며 3.3V 기준입니다. 코드의 임계값은 10비트 Arduino 보드(0–1023)에 비해 맞춤 조정되었습니다.
빠른 단계
- Arduino UNO Q를 처음 사용하세요? 계속하기 전에 아두이노 우노 Q 시작하기 튜토리얼을 따라 개발 환경을 준비하세요.
- 구성 요소 배선: 광저항과 10 kΩ 저항(분압기)을 A0에 연결합니다. LED(220 Ω 저항 포함)를 핀 3에 연결합니다.
- 연결: USB-C 케이블로 Arduino UNO Q를 컴퓨터에 연결합니다.
- Arduino App Lab 열기: Arduino App Lab을 시작하고 Arduino UNO Q를 감지할 때까지 대기합니다.
- 새 앱 만들기: 새 앱 만들기 버튼을 클릭합니다.

- 앱에 이름을 지정합니다. 예: DIYables_LightSensorLED
- 만들기를 클릭하여 확인합니다.
- 새 앱 내에 폴더 및 파일 집합이 생성됩니다.

- sketch/sketch.ino 파일을 찾습니다. 이것이 MCU 스케치를 붙여넣을 위치입니다.
- Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.

- Search for Arduino_RouterBridge created by Arduino and click the Install button.
- 업로드: Arduino App Lab에서 실행 버튼을 클릭하여 STM32에 컴파일 및 업로드합니다.

- 테스트: 센서에 밝은 빛을 비추면 LED가 켜집니다. 센서를 덮으면 LED가 꺼집니다.
Linux + MCU Bridge 프로그래밍
Arduino UNO Q는 함께 작동하는 두 프로세서를 가지고 있습니다: MPU(Qualcomm, Debian Linux 실행) 및 MCU(STM32, Zephyr OS 및 Arduino 스케치 실행). 그들은 Arduino_RouterBridge 라이브러리를 통해 RPC를 사용하여 통신합니다. 절대 원시 직렬 포트를 통하지 않습니다.
- 조명 센서 및 LED는 모두 MCU(STM32)에 연결됩니다 — A0는 센서를 읽고, 핀 3은 LED를 구동합니다.
- MPU는 이를 직접 제어할 수 없습니다 — MCU에서 Bridge.call("check_light")를 호출하면, 이는 센서를 읽고 그에 따라 LED를 설정합니다.
- MPU에는 Wi-Fi가 있습니다 — MPU가 Wi-Fi를 포함한 전체 Debian Linux를 실행하기 때문에 Telegram을 실행하고 자동으로 체크를 반복할 수 있습니다.
- 통신: Linux 쪽의 Bridge.call()은 MCU 쪽의 Bridge.provide_safe()를 호출합니다(digitalWrite()는 하드웨어 API이므로).
- ⚠️ 예약됨: /dev/ttyHS1(Linux) 및 Serial1(MCU)은 Arduino Router에서 사용합니다. 절대 직접 열지 마세요.
요약: Python이 체크 호출 → MCU가 센서를 읽음 → MCU가 LED를 설정하고 Monitor에 출력합니다.
MCU 스케치 — Bridge 및 Monitor 출력을 사용한 조명 센서 LED 제어:
Python 스크립트(Arduino App Lab) — Linux에서 조명 체크 루프 실행:
- 참고: Bridge.begin()이 MCU 스케치에서 호출되었는지 확인하고 Python 스크립트를 Linux 쪽에서 실행하기 전에 스케치가 업로드되었는지 확인합니다.
- ⚠️ 경고: 코드에서 /dev/ttyHS1(Linux)을 직접 열거나 Serial1(MCU)을 사용하지 마세요. 이들은 Arduino Router에서 예약되어 있으며 액세스하면 Bridge가 손상됩니다.
빠른 단계
- MCU 스케치 업로드: Arduino App Lab을 열고, 새 앱을 만들고, Bridge MCU 스케치를 sketch/sketch.ino에 붙여넣고, Arduino_RouterBridge 라이브러리를 설치한 후 실행을 클릭합니다.
- Python 스크립트 추가: 위의 Python 코드를 같은 앱의 Python 탭에 붙여넣습니다.
- 앱 실행: 실행을 클릭하면 Python이 500ms마다 check_light를 호출합니다. MCU가 센서를 읽고 LED를 제어합니다.
- 콘솔 확인: 콘솔 탭을 열고 → MCU Monitor 서브탭에서 센서 값과 LED 상태를 확인합니다.
App Lab 콘솔 출력
Telegram 통합
Telegram을 통해 원격으로 조명 센서 및 LED 상태를 모니터링합니다.
아직 Telegram 봇이 없는 경우 계속하기 전에 아두이노 우노 Q - 텔레그램 봇을 참조하여 봇 토큰을 획득합니다.
MCU 스케치: 이전 Bridge 섹션의 동일한 MCU 스케치를 유지합니다. 변경 사항이 필요 없습니다. STM32에서 이미 업로드되고 실행 중인지 확인한 후 진행합니다.
Python 스크립트(Arduino App Lab) — 조명 센서 LED 모니터링을 위한 Telegram 봇:
- 참고: YOUR_BOT_TOKEN을 Telegram의 @BotFather에서 얻은 토큰으로 바꿉니다.
- 봇은 계속해서 조명 센서를 확인하고 LED를 제어하면서 Telegram 명령을 수신합니다.
- /read를 보내 상태가 MCU Monitor에 기록되었음을 확인하도록 요청합니다.
빠른 단계
- MCU 스케치 업로드: 이전 섹션에서 Bridge MCU 스케치를 사용합니다(아직 수행하지 않았다면 먼저 업로드).
- Telegram 스크립트 붙여넣기: 위의 Python 코드를 Arduino App Lab의 앱의 Python 탭에 복사합니다.
- 토큰 설정: 스크립트의 YOUR_BOT_TOKEN을 실제 봇 토큰으로 바꿉니다.
- 앱 실행: 실행을 클릭하면 봇이 LED를 제어하고 Telegram 메시지를 수신합니다.
- 테스트: /read를 보내면 봇이 현재 센서 값과 LED 상태로 응답합니다.
App Lab 콘솔 출력
ArduinoBot
OpenClaw 통합
이 튜토리얼을 OpenClaw에 맞추도록 조정할 수 있습니다. 아두이노 우노 Q - OpenClaw 튜토리얼의 지시사항을 참조하세요.
응용 프로그램/프로젝트 아이디어
- 자동 책상 램프: 주변 빛이 임계값 아래로 내려가면 LED(또는 릴레이를 통한 LED 스트립)를 켭니다.
- 디스플레이 백라이트 제어: 주변 빛 수준에 따라 디스플레이를 어둡게 하거나 밝게 합니다.
- 스마트 수족관 조명: 일몰 시 수족관 조명을 자동으로 켜고 일출 시 끕니다.
- 야간 모드 표시기: LED를 사용하여 저전력 모드에 충분히 어두운 시간을 신호합니다.
- 온실 조명 보충: 자연광이 충분하지 않을 때 보충 LED 성장 조명을 추가합니다.
자신을 도전해 보세요
- 쉬움: ANALOG_THRESHOLD 값을 조정하여 LED가 매우 밝은 빛이 아닌 황혼에 켜지도록 합니다.
- 중간: LED가 켜지거나 꺼질 때 Telegram 경고를 보냅니다(조명 변화 이벤트 알림).
- 고급: 임계값에서 급속한 깜빡임을 방지하기 위해 히스테리시스 대역을 구현합니다(예: 150 아래에서 켜기, 300 이상에서 끄기).