코드로 물리 세계를 움직이다: 아두이노 기반 자동 물 받기 장치 제작기

• 문제의 발견: 정수기 버튼을 수동으로 누르고 있어야 하는 일상의 사소한 불편함을 피지컬 AI와 로보틱스 기술로 해결했습니다.

H/W 및 S/W 설계: 아두이노 나노를 메인으로 서보모터, 회전 센서, LCD를 조합하여 상태 기반 제어 로직(FSM) 시스템을 구축했습니다.

기술적 통찰: 이론적 코드 계산(7초)과 실제 하드웨어 작동(12초) 사이의 오차를 검증하며, 실제 환경 테스트의 중요성을 확인했습니다.

1151_WaterDispenser_20260529_임준영_page1.png

생활 속 불편함을 해결하는 첫 번째 H/W 프로젝트

이번 프로젝트는 소프트웨어가 화면 속 데이터에 머물지 않고, 물리적 현실 세계와 연결될 때 발생하는 시각적·경험적 가치를 탐구하기 위해 시작되었습니다. 아두이노(Arduino)를 기반으로 임베디드 시스템과 자동화, 그리고 사용자 경험(UX)을 결합한 실증 사례입니다.

1151_WaterDispenser_20260529_임준영_page2.png

문제의 발견 (The Problem)

• 상황: 새로 산 냉장고 정수기에 ‘자동 정량 받기’ 기능이 없음.

• 불편함: 500ml나 1L의 많은 양의 물을 받을 때, 물이 다 찰 때까지 사용자가 버튼을 계속 누르고 있어야 함. 이로 인해 두 손이 묶여 다른 주방 일을 할 수 없으며 매일 반복되는 행동으로 피로감이 누적됨.

• 아이디어(The Spark): "이 정도는 아두이노로 직접 만들 수 있지 않을까?"라는 의문에서 시작됨.

1151_WaterDispenser_20260529_임준영_page3.png

프로젝트 목표 및 요구사항

1151_WaterDispenser_20260529_임준영_page4.png

전체 시스템 구성 (Hardware Anatomy)

정밀한 제어를 위해 다음과 같은 하드웨어를 구성했습니다.

• INPUT: 회전 센서(물 양 설정), 스위치 3개(설정/시작/취소).

CONTROL: 아두이노 나노(Arduino Nano). 센서 데이터를 처리하고 모터와 LCD를 제어하는 메인 보드입니다.

OUTPUT: 16x2 LCD(상태 시각화), 서보모터(Servo Motor). 물리적으로 정수기 버튼을 누르는 역할을 수행합니다.

1151_WaterDispenser_20260529_임준영_page5.png

직관적인 UI/UX 설계

사용자가 현재 상태를 즉각적으로 인지할 수 있도록 16X2 LCD 화면을 설계했습니다.

• IDLE (대기): 장치가 켜진 초기 상태.

• SETTING (설정): 회전 센서를 돌려 0~1000ml 사이의 양을 설정하는 상태.

• WATER! (작동): 서보모터가 버튼을 누르고 물이 나오는 상태.

• CANCEL (취소): 동작 중 사용자가 버튼을 눌러 강제로 중단시킨 상태.

1151_WaterDispenser_20260529_임준영_page6.png

핵심 로직과 기술 구현

장치의 안정성을 위해 소프트웨어는 유한 상태 기계(Finite State Machine) 로직으로 설계되었습니다.

• 값의 정규화: 회전 센서의 0~1023 원시 데이터를 0~1L 수치로 맵핑하여 정밀한 제어 기반을 마련했습니다.

• 상태 전환: IDLESETTEDFLOWSTOP으로 이어지는 유기적인 프로세스를 코드로 구현했습니다.

1151_WaterDispenser_20260529_임준영_page7.png

제어 로직 - 상태 기반 설계 (FSM)

장치의 동작을 유한 상태 기계(Finite State Machine)로 설계하여 논리적 오류를 방지했습니다.

1) IDLE: 시작 버튼 대기.

2) SETTED: 목표량 설정 완료 및 모터 구동 준비.

3) FLOW: 서보모터가 작동 각도(90~180도 등)로 이동하여 버튼을 누름.

4) STOP: 시간 경과 혹은 취소 버튼 입력 시 모터를 원위치로 복귀.

1151_WaterDispenser_20260529_임준영_page8.png

이상과 현실의 괴리 (Expectation vs. Reality)

이 프로젝트의 가장 중요한 기술적 발견입니다.

• 이론적 설계: 100ml를 받는 데 7초가 소요됨을 실측하여 코드상에 delay(7000)를 설정함

• 실제 결과: 실제 구동 시 오차가 누적되어 100ml를 채우는 데 약 12가 소요됨

• 원인 분석: 프로세서의 스케줄링 지연 및 하드웨어의 물리적 관성으로 인한 오차 발생 추정

• 교훈: 소프트웨어 로직만으로는 완벽할 수 없으며, 실제 환경에서의 반복적인 테스트와 보정(Calibration)이 필수적

1151_WaterDispenser_20260529_임준영_page9.png

프로젝트 성과 (Physical Computing)

1151_WaterDispenser_20260529_임준영_page10.png

향후 발전 방향 (Next Steps)

현재의 프로토타입을 고도화하기 위한 3단계 로드맵입니다.

1) 기계적 구조 개선: 서보모터의 회전 운동을 랙 앤 피니언(Rack and Pinion) 방식을 활용한 직선 운동으로 변경하여 버튼 누름의 안정성 확보.

2) 디자인 및 패키징: 전선이 노출되지 않도록 3D 프린팅 하우징(케이스)을 제작하여 실제 주방에서 사용할 수 있는 외관 완성.

3) 소형화: 배터리 구동 및 소형 보드 적용을 통한 장치 최적화.

1151_WaterDispenser_20260529_임준영_page11.png

기능이 ‘제품’이 되는 순간

이번 프로젝트를 통해 내린 엔지니어링적 결론은 다음과 같습니다.

1) 코드는 현실을 움직이는 힘이다: 데이터는 단지 화면 속에 머물지 않고 물리적 실체를 움직입니다.

3) 스스로 해결하는 엔지니어링: 일상의 작은 불편함도 기술을 통해 직접 해결할 수 있습니다.

4) 융합의 가치: 하드웨어, 소프트웨어, 그리고 사용자 경험(UX)이 하나로 묶일 때 비로소 단순한 기능은 '제품'으로 진화합니다.

실제 테스트 영상입니다


📍 비주얼센터 시각언어연구소는 기술로 일상을 혁신합니다.