새벽 5시, 고양이 알람에서 해방되기
고양이는 더없이 사랑스러운 가족이지만, 새벽 5시면 어김없이 시작되는 "밥 달라"는 울음소리는 집사의 숙명과도 같습니다. 맞벌이나 잦은 외출로 정해진 시간에 사료를 챙겨주지 못할 때의 미안함은 더 큰 부담으로 다가옵니다.
시중의 자동 급식기는 많지만, 와이파이 연동이 안 되거나, 사료가 걸려도 알 수 없고, 우리 집 자동화 시스템과 따로 노는 '멍텅구리' 기기인 경우가 많습니다. 그래서 기술에 관심 있는 집사라면 한 번쯤 꿈꿔봅니다. "내 손으로 직접, 똑똑한 급식기를 만들어보는 건 어떨까?"
이 글에서는 ESP32 보드와 ESPHome, 그리고 몇 가지 센서를 활용하여 Home Assistant와 완벽하게 연동되는 고양이용 자동 급식기를 직접 제작하는 방법을 A부터 Z까지 상세히 설명합니다. 단순히 만드는 것을 넘어, 전문가 수준의 정밀 제어와 안전장치까지 구현하는 것을 목표로 합니다.
프로젝트 목표: '그냥' 급식기가 아닌 '스마트' 급식기
우리가 만들 급식기는 다음과 같은 기능을 갖춘, 시중 제품을 뛰어넘는 스마트 기기입니다.
- 정확한 정량/정시 급여: 설정된 시간에 정확히 원하는 양만큼만 사료를 제공합니다.
- 원격 수동 급여: 언제 어디서든 스마트폰 버튼 하나로 사료를 줄 수 있습니다.
- 실시간 사료량 모니터링: 밥그릇과 사료통의 무게를 실시간으로 측정하여 남은 양을 파악합니다.
- 고양이 존재 감지: 고양이가 밥그릇 앞에 있을 때만 사료를 주어 낭비를 막습니다.
- 기록 및 알림: 모든 급여 기록을 Home Assistant에 저장하고, 사료가 부족하면 즉시 알림을 받습니다.
핵심 준비물: 하드웨어 선택 가이드
이 프로젝트의 핵심 부품들입니다. 대부분의 부품은 온라인 쇼핑몰에서 쉽게 구할 수 있습니다.
구성품 | 주요 기능 및 추천 모델 |
---|---|
ESP32 보드 | 자동화의 두뇌 역할을 하는 마이크로컨트롤러. (NodeMCU ESP32, ESP32-S3 등) |
서보모터 | 사료 배출구를 열고 닫는 역할. 소음이 적고 힘이 좋은 MG996R 추천. |
로드셀 + HX711 | 밥그릇의 무게를 측정하는 센서와 신호 증폭기. (5kg 용량 센서면 충분) |
ToF 거리 센서 | 고양이가 밥그릇 앞에 있는지 감지하는 '재실 센서'. (VL53L0X 추천) |
사료통 및 토출구 | 사료 보관 및 배출 메커니즘. 3D 프린터를 활용하거나, 시리얼 디스펜서를 개조. (Thingiverse, Printables 등에서 'Pet Feeder' 검색) |
전원 및 부속품 | 안정적인 5V 2A 이상 전원 어댑터, 점퍼선, 브레드보드 등 |
사료 토출구는 단순히 문을 여닫는 방식보다, 서보모터로 스크류(auger)나 회전 날개를 돌려 일정량을 밀어내는 방식이 더 정확합니다.
ESPHome 설정: 더 정밀하고 똑똑하게
ESPHome은 코딩 없이 YAML 파일을 수정하는 것만으로 펌웨어를 만들 수 있게 해주는 강력한 도구입니다.
1. 무게 센서(HX711) 설정 및 캘리브레이션
로드셀은 처음 연결 시 정확한 무게(g)를 표시하지 못합니다. 따라서 '캘리브레이션(보정)' 과정이 필수입니다. ESPHome 로그를 보면서, ①빈 그릇 상태의 값, ②무게를 아는 물체(예: 100g짜리 추)를 올렸을 때의 값을 찾아 아래 코드에 입력합니다.
# ESPHome YAML 설정
sensor:
- platform: hx711
name: "밥그릇 무게"
id: bowl_weight
dout_pin: GPIO32
clk_pin: GPIO33
gain: 128
update_interval: 5s
filters:
- calibrate_linear:
# 1. 비어 있을 때의 값을 여기에 입력
- 0 -> 0.0
# 2. 100g 물체를 올렸을 때의 값을 여기에 입력
- 21500 -> 100.0
- lambda: return x / 1000; # 그램(g)을 킬로그램(kg)으로 변환 (선택사항)
unit_of_measurement: 'g'
2. 서보모터 정밀 제어
단순히 켜고 끄는 것보다, `servo` 플랫폼을 사용하면 원하는 각도로 정밀하게 제어할 수 있습니다.
# 서보모터 ID 선언
output:
- platform: ledc
pin: GPIO25
id: servo_pwm
# 서보모터 제어부
servo:
- id: food_servo
output: servo_pwm
min_level: 2.5% # 0도에 해당하는 PWM 듀티 사이클
max_level: 12.5% # 180도에 해당하는 PWM 듀티 사이클
# 버튼을 누르면 실행될 스크립트
button:
- platform: template
name: "사료 주기"
on_press:
then:
- script.execute: dispense_food
script:
- id: dispense_food
mode: single # 스크립트가 동시에 여러 번 실행되는 것을 방지
then:
# 1. 배출구 열기 (예: 90도 회전)
- servo.write:
id: food_servo
level: 50% # 0~100% 사이 값으로 각도 제어
# 2. 1.5초간 대기
- delay: 1.5s
# 3. 배출구 닫기 (예: 0도로 복귀)
- servo.write:
id: food_servo
level: 0%
3. 고양이 존재 감지 (ToF 거리 센서)
고양이가 밥그릇 근처(예: 15cm 이내)에 있을 때만 급여하도록 조건을 설정할 수 있습니다.
# I2C 버스 설정
i2c:
sda: GPIO21
scl: GPIO22
scan: true
# ToF 거리 센서
sensor:
- platform: vl53l0x
name: "급식기 앞 거리"
address: 0x29
update_interval: 1s
Home Assistant 연동: 자동화의 완성
ESPHome으로 펌웨어를 업로드하면, 해당 기기는 Home Assistant에 자동으로 인식됩니다. 이제 똑똑한 자동화를 만들 차례입니다.
자동화 1: 정해진 시간에 고양이가 있을 때만 밥 주기
alias: 오전 8시 자동 급여
trigger:
- platform: time
at: '08:00:00'
condition:
# 조건: 급식기 앞 거리가 15cm 미만일 때 (고양이가 있을 때)
- condition: numeric_state
entity_id: sensor.급식기_앞_거리
below: 0.15 # 미터(m) 단위
action:
# 동작: '사료 주기' 버튼 누르기
- service: button.press
target:
entity_id: button.사료_주기
자동화 2: 사료 부족 시 집사에게 알림 보내기
사료통에도 로드셀을 설치했다면, 남은 사료 양에 따라 알림을 보낼 수 있습니다.
alias: 사료 부족 알림
trigger:
# 트리거: 사료통 무게가 500g 미만으로 떨어지면
- platform: numeric_state
entity_id: sensor.사료통_무게
below: 500
action:
# 동작: 모바일 앱으로 메시지 보내기
- service: notify.mobile_app_집사폰
data:
title: " 냥님 사료 부족!"
message: "사료가 거의 다 떨어졌어요. 주문할 시간입니다!"
고양이를 위한 배려와 안전
기술 구현만큼이나 중요한 것은 고양이의 안전과 편의성입니다.
- 소음 최소화: 서보모터 작동 시 발생하는 소음에 고양이가 놀라지 않도록, 저소음 모터를 사용하거나 방음 처리를 고려하세요.
- 안전한 구조: 호기심 많은 고양이의 발이나 얼굴이 사료 토출구에 끼지 않도록 안전하게 설계해야 합니다. 3D 프린팅 시에는 인체에 무해한 PETG 필라멘트를 추천합니다.
- 비상 대책: 정전이나 기기 고장 시를 대비해 수동으로 사료를 줄 수 있는 방법을 마련해두세요.
- 점진적인 전환: 기존 밥그릇 옆에 새 급식기를 두고 익숙해질 시간을 주세요. 갑작스러운 변화는 고양이에게 스트레스를 줄 수 있습니다.
다묘가정과 고급 기능을 위하여
프로젝트에 재미를 붙였다면, 더 나아가볼 수도 있습니다.
- 다묘가정 솔루션 (RFID/NFC): RFID 리더기(PN532)를 추가하고, 고양이 목걸이에 RFID 태그를 달아 특정 고양이에게만 급여가 가능하도록 만들 수 있습니다.
- 시각적 확인 (ESP32-CAM): 카메라 모듈을 장착하여 사료가 나올 때마다 사진을 찍어 Home Assistant로 전송, 원격지에서도 고양이가 밥을 잘 먹었는지 확인할 수 있습니다.
사랑과 기술이 만나는 최고의 DIY 프로젝트
고양이를 키운다는 것은 매일 반복되는 책임감을 동반합니다. 직접 만든 자동 급식기는 단순한 기계가 아니라, 보호자의 사랑과 정성을 담아 그 책임을 대신하는 따뜻한 장치가 될 수 있습니다.
ESPHome과 ESP32를 이용하면 누구나 비교적 낮은 비용으로, 시중 제품보다 훨씬 똑똑하고 내 환경에 꼭 맞는 급식기를 만들 수 있습니다. 이 프로젝트는 단순한 기술적 도전을 넘어, 반려동물과의 삶을 더욱 풍요롭게 만드는 멋진 경험이 될 것입니다.
'스마트홈 IoT' 카테고리의 다른 글
스마트홈 센서 자동화에서 가장 중요한 센서는 무엇일까? (0) | 2025.07.18 |
---|---|
Matter 시대, Zigbee는 정말 사라질까? (0) | 2025.07.18 |
홈어시스턴트 go2rtc 카메라 홈킷(homekit) 연동 방법 (0) | 2025.07.11 |
홈어시스턴트(Home Assistant) 매터브릿지(MatterBridge) 에드온 사용해서 구글홈(Google Home)에 장치 연동하기 (0) | 2025.07.11 |
에어컨 전기세 90% 절약의 비밀, '송풍모드 자동화' 완벽 가이드 (0) | 2025.07.10 |