아두이노 나노 기반 스마트 3D 프린팅 펫 피더
부품 및 소모품
| 부품 | 수량 | 비고 |
| 아두이노 나노 R3 | 1 | |
| DS1307 RTC 모듈 | 1 | 타임키핑용 |
| LM317 전압 레귤레이터 모듈 | 1 | |
| 연속 회전 서보 | 1 | 사료 배출용 |
| 시리얼 디스펜서 (곡물용) | 1 | 허니캔두 제품 등 |
| 8mm 자석 | 6 | 엔코더 휠용 |
| 홀 센서 (단극성) | 1 | 반드시 단극성 구매 |
| 16×2 RGB 백라이트 LCD | 1 | 아다프루트 제품 |
| I2C LCD 백팩 | 1 | LCD와 일체형 구매 가능 |
| 5mm LED (적/녹) | 각 1 | 상태 표시용 |
| 택트 스위치 | 5 | 메뉴 조작용 |
| DC 파워 잭 어댑터 | 1 | |
| 9-12V 어댑터 | 1 | |
| 저항 10k옴 | 1 | 홀 센서 풀업용 |
| 저항 330옴 | 2 | LED 전류 제한용 |
필요한 도구
- 3D 프린터 (엔더 3 프로 등, PLA+ 필라멘트)
- 무선 드릴/드라이버
- 원형톱
프로젝트 소개
만들게 된 계기
불규칙한 근무 시간과 정전 등으로 반려견 급식 시간을 놓치는 문제를 해결하고자 제작했습니다. 시중 제품($30-40) 대신 직접 만들어 보았고, 다음과 같은 기능을 구현했습니다.
주요 기능
- 하루 2회 자동 급식
- DS1307 RTC로 정확한 시간 관리
- RTC 시간 수동 설정 가능
- 수동 급식 버튼
- 홀 센서 및 RTC 이상 시 LED 알림
- 메인 화면에 급식 시간, 현재 시간, 완료 상태 표시
- 직관적인 메뉴 네비게이션
- 정전 복구 시 미완료 급식 자동 실행
- 급식 시간 및 완료 여부 EEPROM 저장
- 사료 걸림 방지 '서보 지글' 기능
3D 프린팅 부품
엔더 3 프로와 큐라 슬라이서로 PLA+ 출력했습니다. 모든 STL 파일과 프린팅 가이드는 깃허브에 있습니다.
- 하우징: 나사 없이 탭으로 부품 고정
- 엔코더 휠: 서보 위치 피드백 + 고무 패들 부착 (1회 급식 = 60° 회전)
- 서보 브라켓 & 홀 센서 마운트
- 깔대기, 슈트, 슈트 레일 (사료 이송 경로)
프레임 조립 (목재)
- 디스펜서 노브 제거 및 로드 연마
- 베이스(1.27×15.24cm) 2개로 L자 프레임 제작
- 디스펜서 스탠드 높이 ~11.43cm로 절단, 베이스에 2인치(5.08cm) 구멍 뚫기
- 스탠드를 백패널에 볼트로 고정
- 서보 마운트용 나무 조각 부착
- 다리 부착 (식기 높이에 맞춤), 보강용 크로스 빔 추가
- 깔대기 삽입, 서보 브래킷 장착, 슈트 레일 설치
전자 회로
- 아두이노 핀 30번(VIN)으로 7-20V 입력 (온보드 레귤레이터 사용)
- 홀 센서 VCC-시그널 간 10kΩ 풀업 필수
- 모든 그라운드 공통 연결 중요 (누락 시 홀 센서 오작동)
- 홀 센서/서보용 커스텀 커넥터 제작 권장
- 전원 레일은 퍼마프로토 보드 조각 활용
코드
주요 라이브러리: JC_Button, Wire, LiquidCrystal_I2C, RTClib, Servo, EEPROM
상태 머신으로 메뉴 관리 (MAIN, EDIT_FEED1, EDIT_FEED2, EDIT_TIME, EDIT_PORTION 등)
- 인터럽트(FALLING)로 홀 센서 펄스 카운트
- 급식 시 서보 180° 회전 → 홀 센서 펄스 감지 시 카운트 증가
- 설정 시간 경과 시 미완료 급식 자동 실행 (정전 복구 대응)
- 자정(00:00)에 급식 완료 플래그 리셋
- 설정값(급식 시간, 양) EEPROM 저장/복원
// 핵심 함수들
void startFeeding() {
myservo.attach(SERVO_PIN);
while (count <= portion) {
servoStart();
if (hallSensorActivated) { count++; hallSensorActivated = false; }
if (millis() - hallSensorTime > rotationTime) jiggle(); // 걸림 방지
}
// 완료 플래그 EEPROM 저장
myservo.detach();
}
void jiggle() { myservo.write(80); delay(30); myservo.write(93); delay(30); myservo.write(180); }
전체 코드: 깃허브 링크
3D 모델 파일
퓨전 360 및 STL 파일: 깃허브 저장소
회로도