İçeriğe Geç

DIY Cat & Dog Feeder Using Raspberry Pi

18 Jan 2024
DIY Cat & Dog Feeder Using Raspberry Pi

Selamlar hayvan dostları, bugün sizlerle Raspberry Pi kiti PicoBricks kullanarak otomatik evcil hayvan besleyici yapacağız. Bu besleyiciyi yapabilmeniz için gerekli 3D baskı dosyalarını ve Python kodlarını yazı içinde paylaştık. Hadi o zaman başlayalım.

Evcil hayvanlarımız, özellikle de kedi ve köpeklerimiz çok sık acıkıyorlar. Zaman zaman mama koymaya üşeniyor olabilirsiniz. Bu çok normal. Ben de sevgili kedim Oslo'nun sürekli mama kabını doldurmaya üşeniyorum :).

İşte bu yüzden hem kendim için hem de sizler için çok faydalı bir proje hazırlamaya karar verdim: raspberry pi cat feeder.

Bu muhteşem robotumuzun özelliklerini sıralamam gerekirse:

  1. Otomatik timer özelliği sayesinde belirlediğiniz saat aralıklarında mama haznesini otomatik doldurur.
  2. HC-SR04 (LDR) sayesinde mamanın bittiğini robotumuz algılıyor ve OLED ekranda bir uyarı çıkıyor ve robot bip sesi çıkarıyor.
  3. Evcil hayvanınızın pleasebo etkisi geliştirebilmesi için mama dökülürken bip sesi çıkarıyor.

Harika özellikler değil mi? Hadi o zaman adım adım nasıl DIY otomatik kedi ve köpek besleyici yapacağımızı öğrenelim.


Wiring Diagram

Components

  • PicoBricks Mainboard
  • OLED Screen
  • LDR
  • Buzzer

1. Adım: 3D Yazıcı ile Baskı Alalım

Bu projenin en iyi yanlarından biri 3D baskı imkanı sunması. Bu sayede evde kendi mama haznenizi ücretsiz bir şekilde oluşturabilirsiniz. 

Merak etmeyin, sizinle gerekli STL dosyalarını aşağıda paylaştım:

Download 3D STL Files

Kodları Raspberry Pi'ımıza Yükleyelim

Aşağıda sizinle paylaşacağım kodları BricksIDE veya Raspberry Pi destekleyen herhangi bir uygulamadan kolayca yükleyebilirsiniz. Eğer nasıl yapacağınızı bilmiyorsanız yazımızı okuyabilirsiniz:

How to Use PicoBricks with Microphyton?

İşte kodlar:


# time_tracking.py

import time
from machine import Pin
from machine import I2C
from picobricks import SSD1306_I2C
from machine import PWM
from math import fabs
import utime

i2c = I2C(0, scl=Pin(5), sda=Pin(4), freq=200000)
oled = SSD1306_I2C(128, 64, i2c, addr=0x3c)
pwm_1 = PWM(Pin(21))
pwm_1.freq(50)
buzzer = PWM(Pin(20))
trigger = Pin(15, Pin.OUT)
echo = Pin(14, Pin.IN)
  
def getDistance():
   trigger.low()
   utime.sleep_us(2)
   trigger.high()
   utime.sleep_us(5)
   trigger.low()
   while echo.value() == 0:
      signaloff = utime.ticks_us()
   while echo.value() == 1:
      signalon = utime.ticks_us()
   timepassed = signalon - signaloff
   distance = (timepassed * 0.0343) / 2
   print("The distance from object is ",distance,"cm")
   return distance

def CalculateAngle(angle):
   angle = fabs((angle * (6000 / 180)) + 2000)
   angle = round(angle)
   return angle

# Configure the hardware timer
timer = machine.Timer()

# Define a global variable to store the elapsed time
elapsed_time = 0
# Function to be called by the timer interrupt
def timer_callback(timer):
    global elapsed_time
    elapsed_time += 1

# Configure the timer to call the callback function every second
timer.init(freq=1, mode=machine.Timer.PERIODIC, callback=timer_callback)

# Main loop
while True:
    pwm_1.duty_u16(CalculateAngle(0))
    # Print the elapsed time every 5 seconds
    oled.text("It'll give food",0,0)
    oled.text("in every",0,10)
    oled.text("12 hours?",0,20)
    oled.show()
    distance = getDistance()

    if distance < (5):
        oled.fill(0)    
        oled.text("FEEDING TIME",10,30)
        oled.show()

    else:
        oled.fill(0)
        oled.text("{}".format("Mama Bitti"), 0, 0)
        oled.show()
        #buzzer.freq(300)
        #buzzer.duty_u16(100)
        time.sleep(0.25)
        
    if elapsed_time % 10 == 0:
        pwm_1.duty_u16(CalculateAngle(30))
        time.sleep((5))
        print(elapsed_time)
        
    time.sleep((1))        
    oled.fill(0)

    # Sleep for a short duration to reduce CPU usage

Veee... işte bu kadaar. Artık mama haznesini doldurabilir ve mutlu kedinizin karnını okşayabilirsiniz.

Sorunuz olursa sormaktan çekinmeyin. Kendinize iyi bakın. :)

Önceki Gönderi
Sıradaki Gönderi

Abone olduğun için teşekkürler!

Bu e-posta kaydedildi!

Görünümü satın alın
Seçenekleri Seçin

Seçeneği Düzenle

Aklında bir soru mu var?

Stok Bildirimi

Karşılaştır

Ürün Stok KoduDeğerlendirmeAçıklama Kategori Uygunluk Ürün Tipi Diğer Detaylar
this is just a warning
Giriş Yap
Alışveriş Sepeti
0 Ürünler
Same Day Shipping No Extra Costs
Easy Returns Guarantee Return with Ease
Secure Checkout Secure Payment