아두이노 우노 Q 물/액체 소렌노이드 밸브
물/액체 소렌노이드 밸브는 물, 기름 또는 기타 액체의 흐름을 제어합니다. 12V가 인가되면 열리고 전원이 제거되면 닫힙니다. Arduino UNO Q는 릴레이를 통해 이를 제어합니다. Bridge와 Telegram을 사용하면 어디서나 원격으로 밸브를 열고 닫을 수 있습니다.
이 튜토리얼에서 배우게 될 내용:
- 물/액체 소렌노이드 밸브가 무엇이고 어떻게 작동하는지
- 밸브와 릴레이를 Arduino UNO Q MCU에 배선하는 방법
- MCU를 프로그래밍하여 밸브를 열고 닫는 방법
- Bridge를 사용하여 Linux 측(Python)에서 밸브를 제어하는 방법
- Arduino UNO Q에서 Telegram을 통해 원격으로 밸브를 열고 닫는 방법
- Arduino UNO Q에서 OpenClaw를 물 밸브와 함께 사용하는 방법

필요한 하드웨어
| 1 | × | Arduino UNO Q | 아마존 | |
| 1 | × | USB Cable for Arduino Uno Q | 아마존 | |
| 1 | × | Liquid Solenoid Valve | 아마존 | |
| 1 | × | 릴레이 | 아마존 | |
| 1 | × | 12V 전원 어댑터 | 아마존 | |
| 1 | × | DC 커넥터 전원 연결 잭 플러그 소켓 | 쿠팡 | 아마존 | |
| 1 | × | 점퍼케이블 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 스크루 터미널 블록 쉴드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) Sensors/Servo Expansion Shield for Arduino Uno | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 브레드보드 쉴드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 케이스 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 프로토타이핑 베이스 플레이트 & 브레드보드 키트 | 아마존 |
물/액체 밸브에 대해
핀 배치
소렌노이드 밸브에는 두 개의 와이어 연결이 있습니다:
- Positive (+) 빨간색 와이어: 릴레이를 통해 12V DC에 연결
- Negative (-) 검은색 와이어: 12V DC 전원 공급장치의 GND에 연결

작동 원리
- 12V가 인가되면 → 소렌노이드가 열림 → 액체가 흐를 수 있음
- 전원이 제거되면 → 소렌노이드가 닫힘 → 액체 흐름이 멈춤
※ 주의:
일부 밸브는 12V를 인가한 후 완전히 열리기 위해 최소한의 유체 압력이 필요합니다. 또한 일부 밸브는 방향성이 있으므로 본체의 흐름 화살표를 확인하세요. 밸브를 Arduino UNO Q 핀에 직접 연결해서는 절대 안 됩니다. 항상 릴레이를 사용하여 12V 공급을 전환하세요.
밸브 제어 방법
Arduino UNO Q MCU는 12V 공급을 소렌노이드 밸브에 전환하는 릴레이를 제어합니다:
- 릴레이 핀 HIGH → 릴레이가 닫힘 → 밸브에 12V → 밸브 OPEN
- 릴레이 핀 LOW → 릴레이가 열림 → 밸브에 전원 없음 → 밸브 CLOSED
배선도

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
릴레이 모듈 IN 핀을 MCU 핀 D3에 연결합니다. 릴레이의 COM과 NO 터미널을 12V 전원 공급과 소렌노이드 밸브 사이에 연결합니다. 릴레이의 VCC를 5V에, GND를 GND에 연결합니다.
| Relay Pin | Arduino UNO Q MCU |
|---|---|
| GND | GND |
| VCC | 5V |
| IN | D3 |
물 밸브를 위한 프로그래밍 방법
- 릴레이 핀을 출력으로 설정:
- 밸브를 열고 닫기:
Arduino UNO Q 코드
Arduino UNO Q에는 함께 작동하는 두 개의 프로세서가 있습니다:
- STM32 MCU는 12V 전력을 소렌노이드 밸브로 전환하는 릴레이를 제어합니다.
- Qualcomm MPU는 Debian Linux를 실행하고 Wi-Fi, Python 및 클라우드 연결을 처리합니다.
- 이 섹션에서는 MCU만 프로그래밍됩니다 - Linux 측은 유휴 상태로 유지됩니다. 나중 섹션에서는 Bridge를 통해 두 프로세서가 함께 작동하는 방법을 보여줍니다.
이 코드는 밸브를 5초 동안 열고 닫으며 - 계속 반복합니다.
빠른 단계
처음 Arduino UNO Q를 사용하시나요? 계속하기 전에 아두이노 우노 Q 시작하기 튜토리얼을 따르세요.
- 연결: 배선도에 표시된 대로 소렌노이드 밸브, 릴레이 및 12V 전원 공급을 Arduino UNO Q MCU에 배선합니다.
- Arduino App Lab 열기: Arduino App Lab을 시작하고 Arduino UNO Q가 감지될 때까지 기다립니다.
- 새 App 만들기: Create New App 버튼을 클릭합니다.

- App에 이름을 지정합니다(예: WaterValve).
- Create를 클릭하여 확인합니다.

- 스케치 붙여넣기: 위의 MCU 코드를 복사하여 sketch/sketch.ino에 붙여넣습니다. 다른 파일은 기본값으로 유지합니다.
- 라이브러리 필요 없음 - 내장 digitalWrite() 함수만 사용합니다.
- 업로드: Arduino App Lab에서 Run 버튼을 클릭합니다.

- 밸브가 5초마다 열림과 닫힘을 번갈아 반복하는 것을 관찰합니다. 소렌노이드가 작동하는 클릭 소리를 들을 수 있습니다.
App Lab 콘솔 출력
Bridge: Linux + MCU
이 섹션에서는 Arduino UNO Q의 두 프로세서를 모두 프로그래밍하여 Linux 측이 Bridge를 통해 밸브를 열고 닫을 수 있도록 합니다:
- 소렌노이드 밸브는 릴레이를 통해 MCU에 연결됩니다 - MCU는 릴레이 출력 핀을 제어합니다.
- MPU는 릴레이를 직접 제어할 수 없습니다 - Bridge 함수를 호출하여 밸브를 열거나 닫습니다.
- MPU는 Wi-Fi를 가지고 있습니다 - 전체 Debian Linux를 실행하므로 Telegram이나 모든 웹 서비스에서 명령을 수락하고 이를 밸브 제어 작업으로 변환할 수 있습니다.
- Arduino_RouterBridge는 두 프로세서 간의 RPC 통신을 가능하게 합니다.
- ⚠️ /dev/ttyHS1 (Linux)과 Serial1 (MCU)은 라우터에서 예약됨 - 사용자 코드에서 절대 열지 마세요.
요약: MPU가 열기/닫기 명령을 수신 → Bridge를 호출 → MCU가 릴레이 제어 → 밸브가 작동합니다.
MCU 코드 (Bridge)
Python 코드 (Bridge)
빠른 단계
- 연결: 배선도에 표시된 대로 소렌노이드 밸브, 릴레이 및 12V 전원 공급을 Arduino UNO Q에 배선합니다.
- Arduino App Lab 열기: Arduino App Lab을 시작하고 보드가 감지될 때까지 기다립니다.
- 새 App 만들기: Create New App를 클릭하고, WaterValveBridge라고 이름을 지정한 후 Create를 클릭합니다.
- MCU 스케치 붙여넣기: 위의 MCU Bridge 코드를 복사하여 sketch/sketch.ino에 붙여넣습니다.
- Python 코드 붙여넣기: 위의 Python Bridge 코드를 복사하여 App의 Python 파일에 붙여넣습니다.
- 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에서 Run 버튼을 클릭합니다.

- 밸브 사이클을 관찰합니다: 열기 → 5초 대기 → 닫기 → 1초 대기 → 반복.
App Lab 콘솔 출력
Telegram
Telegram을 통해 원격으로 물/액체 밸브를 제어합니다 - 간단한 명령으로 어디서나 열고 닫습니다.
MCU 스케치: 이전 Bridge 섹션에서와 동일한 MCU 스케치를 유지합니다.
Python 코드 (Telegram)
빠른 단계
- YOUR_TELEGRAM_BOT_TOKEN을 BotFather에서 받은 실제 봇 토큰으로 바꿉니다.
- YOUR_CHAT_ID를 Telegram 채팅 ID로 바꿉니다.
- 이 Python 코드를 App의 Python 파일에 붙여넣습니다 (동일한 MCU 스케치 유지).
- Run 버튼을 클릭합니다. Telegram에서 /open을 전송하여 흐름을 시작하고, /close를 전송하여 중지합니다.
App Lab 콘솔 출력
ArduinoBot
OpenClaw
You can adapt the OpenClaw to this tutorial by refering the instruction on 아두이노 우노 Q - OpenClaw Tutorial
프로젝트 아이디어
소렌노이드 밸브와 Arduino UNO Q로 많은 유용한 프로젝트를 만들 수 있습니다:
- 원격 관개 시스템: Telegram을 통해 어디서나 정원 급수를 제어합니다 - /open을 전송하여 관개를 시작하고 /close를 전송하여 중지하며, Linux 측이 각 세션의 기간을 파일에 기록합니다.
- 시간 기반 관수: MPU를 프로그래밍하여 Linux 시스템 클록을 사용하여 매일 오전 6시에 자동으로 밸브를 10분 동안 열도록 합니다 - 수동 개입이 필요 없습니다.
- 물 누수 대응: 물 센서와 밸브를 결합합니다 - 센서가 누수를 감지하면 Python이 즉시 Bridge.call("close_valve")를 호출하여 물 공급을 중지하고 Telegram 알림을 보냅니다.
- 수족관 자동 채우기: 수족관의 수위 센서를 사용합니다 - 수위가 임계값 아래로 떨어지면 Python이 30초 동안 밸브를 열어 물을 추가한 후 닫고 Telegram 확인을 보냅니다.
- 맥주/주스 디스펜서: 액체 저장소에 연결된 식품 안전 소렌노이드 밸브를 제어합니다 - /open은 액체를 분배하고 /close는 중지하며, 과다 부음을 방지하기 위한 타이머가 있습니다.
스스로 도전해보세요
Arduino UNO Q의 물 밸브로 더 나아가고 싶으신가요? 이러한 도전 과제를 시도해보세요:
- 쉬움: /open_10s Telegram 명령을 추가하여 Python 측에서 time.sleep(10)을 사용하기 전에 Bridge.call("close_valve")를 호출하여 정확히 10초 동안 밸브를 엽니다.
- 중간: 일일 관개 일정을 구현합니다: Python은 일정 파일(예: 열기/닫기 시간이 있는 schedule.json)을 읽고 Linux 시스템 클록을 기반으로 밸브를 자동으로 제어합니다 - 각 세션이 시작하고 끝날 때 Telegram 알림을 보냅니다.
- 고급: 흐름 시간 로거를 구축합니다: 밸브가 Telegram을 통해 또는 자동으로 열릴 때마다 Python은 시작 시간, 닫기 시간 및 기간을 CSV 파일에 기록합니다 - 마지막 5개의 관개 세션을 반환하는 /log Telegram 명령을 구현합니다.