[나루이야기04]-아두이노 고양이 자동 급식기 만들기

2022. 9. 11. 07:45고양이

반응형

<고양이 자동 급식기는 어떻게 만들게 되었나> 

밥을 잘 먹게 된 고양이 나루는 밥에 대한 관심이 높아졌다.

밥이 맛이 없어 끼니를 거르던 시절은 다 잊은 듯하다.

캐츠랑의 맘앤베이비 사료의 효과는 대단했다. 

(우리 고양이의 기호를 완벽하게 맞췄다.)

밥시간이 조금이라도 지났다 치면 나루는 울기 시작했다.

집사의 소중한 아침, 아니 새벽시간에 새로운 알람이 추가되었다.

 

고양이 알람은 꽤나 정확한 시간에 울리는데.

 

나루는 닭처럼 처음에는 6시 정각에 우리를 깨우더니 점점 빨라져

 

5시 반에 집사를 깨워 사료를 급여받는 루틴으로 자리 잡게 되었다. 

 

사태의 심각성을 깨달은 우리는 자동급식기의 필요성을 느꼈다.

 

쿠팡 구입을 추진하려 했지만

 

왜인지 모를 남집사의 제작 본능과 오기가 구입을 말렸다.

 

그리하여 SELF 고양이 자동급식기를 손수 만들게 되었다. 

 

<아두이노 자동급식기>

 

어떤 방법으로 자동급식기를 만들까 고민하던 중 

코딩 공부를 하겠다며 예전에 사둔 

초등학생용 아두이노 키트가 생각이 났다.

 

공대를 나오긴 했어도 공부에 매진하지 않았기에

코딩은 난생처음 해보는 것이었다.

 

7일간의 사투 끝에 

남집사는 미약하지만 결국 해냈다. 

아두이노 우노 보드를 사용했다.

 

서보모터에 막대를 고정했고

리얼타임 클락으로 시간을 측정해

특정 시간에 회전하게 코딩했다.

 

페트병이 회전할 때 뚫린 구멍으로 

소량의 사료가 흘러나오게 된다. 

 

(펼쳐서 코드작성 확인)

더보기

#include <LiquidCrystal.h>
#include <Servo.h>
#include <DS1302.h>

const int RST = 3;
const int DAT = 4;
const int CLK = 5;
LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
DS1302 rtc(RST, DAT, CLK);
String current;
Servo servo;

int servoMotorPin = 6;

void setup() {
  lcd.begin(16,2);
  lcd.setCursor(2,0);
  lcd.print("naru plz eat");
  Serial.begin(9600);
  rtc.writeProtect(false);
  rtc.halt(false);
  rtc.setDOW(TUESDAY);        // Set Day-of-Week to FRIDAY
  rtc.setTime(16, 40, 0);     // Set the time to 12:00:00 (24hr format)
  rtc.setDate(8, 1, 2022);   // Set the date to August 6th, 2010
  servo.attach(servoMotorPin);
  
}

void loop() {
  current = String(rtc.getTimeStr());

  if (current == "16:40:15") {
    servo.write(150);
    delay(2000);
    servo.write(-150);
    delay(1000);

  };
  if (current == "20:10:20") {
    servo.write(150);
    delay(2000);
    servo.write(-150);
    delay(1000);
  };

  Serial.println(current);
  delay(1000);
}

 

하지만 첫술에 배부른 법은 없듯

두 가지 문제가 발생했다.

 

제시간에 맞춰 사료통이 회전해 

사료가 나왔다  즉,

 

소프트웨어적으로는 작동에 이상이 없었으나

하드웨어(물리적)인 문제가 발생했다 

 

첫 번째는 

회전하면서 사료 알이 여기저기로 튀면서 

사료그릇 안으로 들어가는 양과 

밖으로 떨어지는 양이 같아

사료낭비가 심했다. 

 

떨어지는 사료 밥알들을 잘 모을 만한 구조를 새로 고안해야 한다.

 

두 번째는 

사료 급여량이다.

우리는 고양이(나루가) 비만이 되는 것을 막기 위해 

사료의 칼로리를 계산해서 시간마다 놀이 후에

일정량을 급여하고 있다.

 

그러나 사료통에 담긴 사료가 회전하면서 

나오는 양이 얼마나 될지 계산이 힘들다는 것이었다. 

 

결론을 내리자면

회전하면서 사료를 쏟아내는 방식이

두 가지 문제를 일으킨 것이므로 

다른 방식의 사료 내림을 찾고 고안해보는 것이 좋겠다. 

 

 

<다음 이야기>

 

두집사는

고양이가 밥을 너무 쉽게 얻는 듯하여

참을성 기르기와 지능 향상이 되는 

방법을 생각하게 되는데

반응형