아두이노 기반 6연발 칵테일 제조기 – 나만의 자동 바텐더 만들기
부품 및 소모품
| 부품 | 수량 |
| RobotGeek Geekduino (또는 Arduino UNO 호환 보드) | 1 |
| RobotGeek 센서 실드 | 1 |
| RobotGeek 듀이노 마운트 | 1 |
| RobotGeek 메가 워크벤치 | 1 |
| RobotGeek 4라인 I2C LCD 제어 패널 | 1 |
| RobotGeek 드링크 스테이션 | 1 |
| RobotGeek 네오픽셀 링 - 16 x WS2812 5050 RGB LED | 1 |
| RobotGeek 12V DC 액체 펌프 | 1 |
| RobotGeek 솔레노이드 밸브 | 7 |
| RobotGeek 릴레이 | 8 |
| RobotGeek 12V/10A 파워 서플라이 | 1 |
| RobotGeek 6V/2A 파워 서플라이 | 1 |
| RobotGeek DC 파워 스퀴드 | 2 |
| RobotGeek 실리콘 튜빙 | 1 |
| RobotGeek 3핀 커플러 | 1 |
| RobotGeek 스탠드오프 버라이어티 팩 | 1 |
| RobotGeek 3핀 센서 케이블 | 1 |
| 체크 밸브 | 1 |
| 6구 분배 밸브 | 1 |
앱 및 온라인 서비스
프로젝트 소개
버튼 하나만 누르면 칵테일을 제조해주는 기계를 원하시나요? 6-슈터(6-Shooter)는 단일 펌프로 6가지 음료를 조합해 다양한 칵테일을 만듭니다. LCD 메뉴에서 음료를 선택하고 버튼을 누르면 자동으로 따라주며 화려한 라이트 쇼까지 선사합니다. 이 튜토리얼에서는 상용 제품인 Somabar과 유사한 장치를 직접 제작합니다. 참고: 부품 비용이 꽤 드는 프로젝트지만, 파티에서 단연 화제가 될 것입니다. 이제 시작해볼까요?
1단계: 배선
배선이 복잡해 보이지만, 사실 같은 과정을 여러 번 반복하는 것뿐입니다.
솔레노이드 밸브를 릴레이에 연결하기
- 릴레이, 솔레노이드 밸브, DC 암잭 피그테일, 와이어 너트 준비
- 솔레노이드 밸브 한 쪽 선을 릴레이의 공통 단자(COM)에 연결
- DC 잭의 그라운드 선을 릴레이의 상시 개방(NO) 단자에 연결
- 솔레노이드 밸브의 다른 선과 DC 잭의 전압 선을 와이어 너트나 납땜으로 연결 (납땜이 더 안정적)
펌프도 동일한 방식으로 연결하되, 음극(검정, 그라운드)은 릴레이 공통 단자에, 양극(빨강, 전압)은 DC 잭 전압 선에 연결합니다.
배선 전에 LCD 제어 패널과 드링크 스테이션 조립을 완료하세요.
센서 실드에 부품 연결하기

2단계: 조립
전선이 당기지 않게 부품을 배치하고, 전자 부품이 액체에 닿지 않도록 주의하세요. 두 워크벤치 플레이트 사이에 배선을 깔끔하게 정리하는 것이 좋습니다. 사진을 참고해 배치하고, 첨부된 다이어그램(MS Paint로 1만 시간 공들여 제작)을 따라 액체 라인의 방향이 펌프 작동에 맞도록 연결하세요.
3단계: 프로그래밍 및 테스트
RobotGeek 라이브러리 및 도구를 다운로드하세요. 여기에 6-슈터용 모든 라이브러리와 데모 코드가 포함되어 있습니다. 아두이노 폴더에 압축 해제 후 IDE에서 열기:
파일 → 스케치북 → RobotGeekSketches → Demos → drinkStation
코드 주요 부분 살펴보기
음료 메뉴 설정
// Selections
String selectionLine[14] = {
" ", // 버퍼 라인. 삭제 시 오류 발생
"1. 레드 ", "2. 그린 ", "3. 블루 ", "4. 옐로우 ", "5. 화이트 ", "6. 블랙 ",
"7. 레드 & 옐로우 ", "8. 그린 & 블루 ", "9. 블랙 & 화이트 ", "10. 블랙 & 옐로우 ",
" ", " ", "End of List "
};
LCD에 표시될 음료 목록입니다. 실제 사용하는 재료명으로 수정하세요.
펌핑 시간 설정
int PUMP_TIME = 2500; // 펌프 작동 시간(밀리초)
기본 펌프 작동 시간입니다. 더 많은 양을 따르려면 이 값을 늘리세요.
LCD 주소 설정
LiquidCrystal_I2C lcd(0x27, 20, 4); // I2C 4행 20열 LCD, 주소 0x27
// LiquidCrystal_I2C lcd(0x3F, 20, 4); // 주소가 0x3F인 경우 이 줄로 변경
LCD 모듈마다 I2C 주소가 다를 수 있습니다. 화면에 아무것도 안 뜨면 주소를 0x3F로 바꿔보세요.
음료 제조 로직 (예: 1번 레드)
if ( debounce[2].fell() ) {
switch (drinkSelectCounter) {
case 1: // 레드
lcd.setCursor(0, 0);
lcd.print(promptLine[2]);
colorWipe(strip.Color(255, 0, 0), 50); // 빨간색 라이트 쇼
digitalWrite(PUMP_RELAY_PIN, HIGH); // 펌프 켜기
digitalWrite(SELECTED_RELAY_PIN[0], HIGH); // 솔레노이드 1번 열기
delay(PUMP_TIME); // 설정 시간 동안 작동
digitalWrite(SELECTED_RELAY_PIN[0], LOW); // 솔레노이드 1번 닫기
digitalWrite(CLEAN_RELAY_PIN, HIGH); // 세척용 솔레노이드 7번 열기
delay(PUMP_TIME); // 세척 펌핑
digitalWrite(CLEAN_RELAY_PIN, LOW); // 세척 밸브 닫기
digitalWrite(PUMP_RELAY_PIN, LOW); // 펌프 끄기
break;
}
}
각 case문이 한 잔의 레시피입니다. 화면 프롬프트 변경 → 라이트 쇼 → 해당 밸브 오픈 → 펌프 작동 → 밸브 닫기 → 세척 순서로 진행됩니다. 최소 한 개 이상의 밸브가 열려 있을 때만 펌프가 돌아가도록 설계하세요.
코드 업로드 후 테스트하세요. 처음엔 물로 테스트하는 것을 권장합니다. 각 밸브가 개별적으로 잘 작동하는지 확인한 뒤 혼합 음료를 테스트하세요. 모두 정상이면 파티를 준비하세요!
4단계: 파티 타임!
이제 나만의 자동 바텐더가 완성되었습니다! 손님들은 로봇이 버튼 하나로 완벽한 칵테일을 만들어내는 모습에 놀랄 것입니다. 여기서 더 나아가 블루투스 기능을 추가해 스마트폰으로 주문하게 하거나(MIT App Inventor 추천), 로봇 팔을 달아 여러 잔을 서빙하게 하거나, 로버에 장착해 돌아다니는 서빙 드로이드를 만들 수도 있습니다. 여러분의 아이디어를 공유해주세요!
코드
전체 코드는 GitHub에서 다운로드 가능합니다: