ESP8266 WiFi Otomatik Akvaryum Yemleme Makinesi

Özellikle tatil dönemlerinde akvaryum yemleme süreci en azından benim için her zaman sorun olmuştur. Elimdeki imkanlardan da faydalanarak ve Arduino tabanlı çalışan otomatik yemleyici denemelerim de olmuştu. Gayet basit bir devre ve kodlamayla hazırladığım bu denemelerde en büyük sorun; sistemin gerçekten görevini başarı ile sürdüre bildiğinden emin olmak sorun oluyordu. Bu yüzden ESP8266 WiFi Otomatik Akvaryum Yemleme Makinesi projesi ile bu sorunu aşmaya çalıştım.

Bu sistemin başlıca özellikleri aşağıdaki gibidir.

  • Üzerinde gerçek zamanlı saat bulunduracak.
  • Belirlenen saatlerde yemleme otomatik yapılacak.
  • Yemleme bitince e-posta ile bilgilendirme yapacak.
  • Gerektiğinde Web arayüzüne bağlanıp, son işlem zamanı görüntülenebilecek.

Devre

ESP8266 WiFi Otomatik Akvaryum Yemleme Makinesi

Devrenin çok yer kaplamaması ve daha pratik olabilmesi için doğrudan ESP8266 ile çalışmaya karar verdim. Üzerinde bir programlama düzeneği olmadığından denemelerin genellikle sök tak ile yapılması bir dezavantaj olsa da süreç tamamlandığında aşağıdaki resimde görüldüğü gibi oldukça küçük bir devre işimizi çözüyor.

ESP8266 WiFi Otomatik Akvaryum Yemleme
ESP8266 WiFi Otomatik Akvaryum Yemleme

Devrenin büyük kısmı saat için gereken bileşenlerden oluşuyor. Daha önce DS1302 ile saat devresini oluşturmayı denedim ama gün içindeki sapmalar bile çok fazlaydı bu yüzden bu projede DS1307 ile devam ettim.

Sistem saati, ESP8266 sayesinde internete bağlanarak NTP üzerinden güncelleniyor ve yemlemeye başlamadan önce saati güncelliyor. Gün içerisinde belirli aralıklarla yine bu güncellemeleri yapmaya devam ediyor.

Devre; saat (DS1307 RTC), servo motor ve ESP8266 bileşenlerinden oluşuyor.

ESP8266 WiFi Devresi

ESP8266, WiFi otomatik akvaryum yemleme makinesi projesinin hem beyni hem de hareket sistemini oluşturmaktadır. Arduino gibi IO pinlerine sahip olduğundan hem çevre bileşenleri yönetirken hem de tüm yazılımı içinde barındırmaktadır. Proje de 1 MB kapasiteli ESP8266 kullanılmıştır.

  • 1 adet ESP8266-01
  • 1 adet 10k ohm Direnç
  • 1 adet LF33V Lineer Voltaj Regülatörü
  • 1 adet 16v 100uF Kondansatör
  • 1 adet 6.3v 10uF Kondansatör
  • 1 adet SG90 Servo Motor
ESP8266 WiFi Otomatik Akvaryum Yemleme
ESP8266 WiFi Otomatik Akvaryum Yemleme

Devrede ESP8266’nın elektriksel bağlantıları ile birlikte bileşenlerin bağlantısı da ifade edilmiştir.

ESP8266 3.3 volt ile çalışır ve 5 voltluk bir gerilim işlemciye zarar verir. Bu yüzden DS1307’de kullanılan 7805 voltaj regülatörü bu kısım için kullanılmamış; bunun yerine LF33V voltaj regülatörü kullanılmıştır. Bu lineer regülatör 3.3 volt çıkış sağlayıp 500mA akım verebilmektedir. ESP8266 yoğun çalıştığı zaman belirtilen akıma kadar ulaşmaktadır. Ben yaptığım denemelerde LF33V’yi sorunsuz kullandım.

Resimde gösterilmemiştir ama alt kısımda bulunan saat devresinde olduğu gibi LF33V için de aynı değerlerdeki kapasitörler bu regülatörün de giriş çıkışında kullanılmıştır.

Servo için ESP8266’nın GPIO 3 pini yani Rx pini kullanılmıştır. Projede Serial bağlantıya ihtiyaç duyulmadığından, pin doğrudan dijital çıkış olarak kullanılmıştır.

Devre üzerinde görülen yeşil led WiFi bağlantı durumu için konumlandırılmıştı ama ESP8266 üzerindeki mavi LED ile aynı işlevi gördüğünden iptal edilmiştir.

Saat Devresi

Bu devre aşağıdaki bileşenlerden oluşmaktadır.

ESP8266 WiFi Otomatik Akvaryum Yemleme
ESP8266 WiFi Otomatik Akvaryum Yemleme
  • 1 adet DS1307 Real Time Clock
  • 1 adet 32768kHz Kristal
  • 1 adet 7805 Lineer Voltaj Regülatörü
  • 1 adet 16v 100uF Kondansatör
  • 1 adet 6.3v 10uF Kondansatör
  • 1 adet CR2032 uyumlu pil yuvası
  • 1 adet CR2032 3 Volt Pil
  • 2 adet 10K ohm Direnç

DS1307 grafikte görüldüğü gibi basit bir devreden oluşuyor. Bir kez saat parametreleri ayarlandığında saat ve tarih bilgilerini tutabiliyor. Üzerindeki SDA ve SCL pinleri ile ESP8266 veya Arduino gibi bir mikroişlemciye bağlantı sağlayabiliyor ve bu sayede ESP8266’nın saatle ilgili işlemler için kullanacağı sistem kaynaklarının diğer işlemlerde kullanılmasını sağlıyor.

ESP8266 WiFi Otomatik Akvaryum Yemleme projesinde belli aralıklarla zaman ve tarih bilgisi NTP (Network Time Protocol) üzerinden çekilerek DS1307 üzerinde bulunan zaman bilgisinin güncellenmesi de sağlanıyor. Bunun sebebi ise, her ne kadar düzgün ayarlansa da gün içerisinde zaman ayarlarında küçük sapmalar olabiliyor. Projede NTP olarak time.nist.gov adresini kullandım.

Devre de bulunan 7805 voltaj regülatörü DS1307 için gereken 5 voltluk gerilimi sağlıyor. ESP8266 WiFi Otomatik Akvaryum Yemleme projesinde sistemin tamamı için 12 volt 2 amper gücünde adaptör kullanıyorum. Kapasitörler ise, 7805 regülatörünün düzenli çalışabilmesi için gereken düzenlemeler için devrede bulunuyorlar.

Kullanılan iki adet 10k ohm dirençler şemada görüldüğü gibi DS1307 SCL ve SDA pinleri için pull up direnci olarak görev yapıyorlar ve devredeki 7805 voltaj regülatörünün çıkışından besleniyorlar. Bu dirençlerin varlığı DS1307’inin bilgi yaprağında (datasheet) tavsiye edilmesinden dolayıdır.

Devre üzerindeki CR2032 pil ise DS1307’nin devreden gerilim alamadığı durumda sorunsuz olarak işlevine devam edebilmesi için gereken enerjiyi sağlamak için konumlandırıldı. Tabi bu pil olmadan DS1307 çalışmamaktadır.

Kutu

ESP8266 WiFi Otomatik Akvaryum Yemleme Makinesi

Tüm sistemi elektrikçiden oldukça uygun fiyata aldığım buat içerisine yerleştirdim. Resimdeki kutu oluşturulan devre için oldukça büyük.

Yemleme Kutusu
ESP8266 WiFi Otomatik Akvaryum Yemleme

Servo motoru, kendi ölçülerinde kutunun kenarından açılan kısıma yerleştirilip vidalandı. Yemin doldurulduğu malzeme ise oyun hamuru kutusu. Kenarından açılan ufak bir delik yemin yeteri kadar boşaltılması için oldukça yeterli. Zaten servo 180 derecelik toplam dönüşünü 1 saniye içerisinde yaptığından az miktarda yem akvaryuma dökülüyor.

Yemleme Kutusu
ESP8266 WiFi Otomatik Akvaryum Yemleme

Servo motor ile gelen bağlantı aparatı yemin doldurulacağı kutuya vidalandı. Servo sistem açıldığında kendi başlangıç yani 0 pozisyonuna getiriyor, yani resimde görüldüğü gibi yemleme deliği üst kısımda kalıyor.

Ana kutunun arka kısmında ise Barrel Jak girişi bulunmaktadır. Sistemin ihtiyacı olan güç buradan sağlanıyor. Daha önce de belirtildiği gibi 12 volta 2 amper çıkış veren bir adaptör ile sistem işletiliyor.

Yazılım

ESP8266 WiFi Otomatik Akvaryum Yemleme yazılımı temelde dört farklı aşama olarak tasarlandı. İlk kısımda programın değişkenleri ve tanımlar yer alırken, diğer aşamalar EEPROM, Email, NTP ve Web Page kodlarından oluşmaktadır.

Kodlar bazı sorunlar olmakla birlikte genel hatlarıyla görevini yerine getirmektedir. Sorunların büyük kısmı internet üzerinden yapmaya çalıştığı işlemlere dayanmaktadır.

EEPROM

Kodun kısımlarını ele almak gerekirse; ilk bölüm kütüphane, pin tanımları, değişkenler, setup ile loop kısımları ve bazı küçük fonksiyonlardan meydana gelmektedir. İkinci kısımda ise, yemleme tamamlandığı andaki saat ve tarih bilgisi ESP8266 üzerindeki EEPROM’a kaydedilmektedir. Bunun sebebi; eğer bir sebepten dolayı sistem kapatılırsa; son işlem zamanını kaybetmemek için bu yola başvurulmuştur. Böylece ESP8266 tekrar açıldığında saat ve tarih bilgisi çip üzerinde tutulduğundan; tekrar önceki bilgilere erişilebilmektedir.

Eposta

Bir diğer kısım, eposta fonksiyonunun tanımladığı fonksiyonlar kümesidir. Bu aşamada ESP8266 eposta gönderebilme kabiliyetine sahip olup yemleme sonrasında tanımlanan adrese eposta gönderebilmektedir. Bu fonksiyondaki en büyük problem eposta gönderebilecek bir servis sağlayıcıyı kullanabilmek. Gmail ve Yandex tarafında denemeler yaptım ama bağlantıyı sadece TLS ile yapmak istemelerinden dolayı maalesef gönderim başarısız oluyor. Bu sorunu SMTP2GO adresinden yeni bir hesap oluşturarak aştım. Burada TLS kullanmadan hesaba bağlanmak mümkün oluyor ve mailler sorunsuz olarak ulaştırılıyor. Normalde para ile kullanılan bir hizmet ama bedava kullanımdaki limitler de oldukça yeterli.

NTP

NTP kısmında ise sistemin saatini belirli aralıklarla güncellediği kısımdır. Zaman hem belirli aralıklarla güncellenip DS1307 üzerine kaydedilirken hem de doğru saat ve tarih ile işlem yapabilmek için yemlemeye başlamadan zaman güncelleme işlemi yapmaktadır.

Web Sayfası

Yemlemenin son durumunun görsel olarak görüntülendiği kısımdır. Son yemleme zamanın görüntülendiği veya yemlemenin el ile yapılmasını sağlar. Ayrıca hangi ağa bağlı olduğu kablosuz bağlantının sinyal gücü gibi bilgileri görüntüler.

ESP8266 WebSite
ESP8266 WiFi Otomatik Akvaryum Yemleme

ESP8266 1 MB’lık hafıza alanı ile küçük bir web sitesini içinde barındırabiliyor.

Hazırladığım kodları aşağıdaki linkten indirebilirsiniz.

Kodlarda elimden geldiğince açıklama yapmaya çalıştım. Fonksiyonların daha kolay anlaşılması ve düzenlemenin kolay olması açısından ino dosyası 5 sekmeden oluşmaktadır. Çalıştırıldığında her birinin aynı klasör içinde bulunması gerekiyor.

Ayrıca kodları ESP8266 üzerine yüklemeden önce aşağıdaki kütüphaneleri yüklemeniz gerekiyor.

uRTCLib Kütüphanesi

ESP8266WiFi Kütüphanesi

TimeLib Kütüphanesi

Diğer kütüphaneler eğer Arduino IDE kullanıyorsanız var sayılan olarak yüklü olanlardır.

Web sitesine yeni makaleler eklemek oldukça uzun sürüyor ve yavaş ilerliyor. Bu yüzden makale sayısı oldukça az. Genellikle de en çok işe yarayacak olanları veya çalışan uygulamaları eklemeye çalışıyorum. Eğer dilerseniz ESP8266 Firmware Güncelleme makalesine de göz atabilirsiniz.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.