Arduino Elektronik Örnekler ve Projeler

Blynk Kontrollü Otomatik Zamanlayıcılı Evcil Hayvan Besleyici

Evinizde evcil hayvanınız varsa ve yokluğunuzda doğru zamanda onu besleyecek kimse yoksa. Bu yüzden burada basit, verimli ve ekonomik olan IoT tabanlı bir Evcil Hayvan Besleyici inşa ediyoruz . Bu otomatik evcil hayvan besleme ünitesini kullanarak evcil hayvanınızı dünyanın her yerinden Blynk Mobile App veya Web Dashboard kullanarak besleyebilirsiniz . Sadece bir düğmeye basmanız veya bir zaman ayarlamanız yeterlidir ve görevin geri kalanı bu makine tarafından yapılacaktır. Bu projede ana kontrolör olarak bir NodeMCU ESP8266 , pet besleyiciyi çalıştırmak için bir Servo motor ve şimdiki zamanı almak için NTP sunucuları kullanıyoruz.

Pet Besleyici oluşturmak için Gerekli Bileşenler
  • DüğümMCU ESP8266
  • Servo Motor
Otomatik Pet Besleyici Devre Şeması

Otomatik Pet Besleyici için tam şema aşağıda verilmiştir:

Bağlantı Şeması
Bağlantı Şeması

NodeMCU ile sadece bir Servo Motoru bağladığımız için bağlantılar çok basittir . Servo’nun Vcc (Kırmızı Tel) ve GND (Kahverengi Tel) pinleri NodeMCU’nun 3.3V ve GND’sine bağlanırken, Servo’nun sinyal pini (Sarı Tel) NodeMCU’nun D3 pinine bağlanır.

Evcil Hayvan Besleyici için Blynk’i Yapılandırma

Blynk, küçük IoT projelerinden ticari olarak satılan milyonlarca bağlı öğeye kadar herhangi bir ölçekte bağlı cihazları prototiplemek, dağıtmak ve uzaktan yönetmek için eksiksiz bir yazılım setidir. Donanımı buluta bağlamak ve cihazlardan gerçek zamanlı ve geçmiş verileri analiz etmek, bunları dünyanın herhangi bir yerinden uzaktan kontrol etmek, önemli bildirimler almak ve çok daha fazlası için kodsuz iOS, Android ve web uygulamaları oluşturmak için kullanılabilir. . Bu projemizde pet besleyici kurulumuna bağlı servo motoru kontrol etmek için Blynk mobil uygulamasını kullanacağız.

Bunun için öncelikle Blynk Cloud platformu için yeni bir hesap oluşturmamız gerekiyor veya zaten varsa eski hesabınızı kullanabilirsiniz. Hesabınıza giriş yaptıktan sonra, birden fazla cihaz ekleyebileceğiniz bir şablon oluşturmanız gerekir. Bunun için sağ üst köşedeki ‘+ Yeni Şablon’ düğmesine tıklayın.

Şablon Oluşturma
Şablon Oluşturma

Şablon adını, Donanım türünü ve bağlantı türünü girmeniz gereken bir pencere açılacaktır. Şablon adı projenizle ilgili herhangi bir şey olabilir, Donanım türü, kullandığınız mikro denetleyici kartıdır ve bağlantı türü Wi-Fi’dir.

Şablon Sayfası
Şablon Sayfası

Artık şablonun içine, cihaz bilgisi, meta veriler, DataStream’ler, Etkinlikler vb. Gibi birden çok bilgiyi ekleyebiliriz. Sonraki adımlarda bu ayrıntıları tek tek dolduracağız. Bu nedenle, ilk sekme cihaz bilgisidir, varsayılan olarak bırakın.

Şablon Sayfası
Şablon Sayfası

Ardından ikinci sekme Meta Verilerdir. Metadata, Cihaz Adı, Cihaz sahibi vb. gibi projemize verdiğimiz ek bilgilerdir. Bu zorunlu değildir ve isterseniz bunları doldurabilirsiniz.

Metadata Sayfası
Metadata Sayfası

Sonraki sekme ‘DataStream’dir. Veri akışları, cihaza düzenli olarak giren ve çıkan verileri yapılandırmanın bir yoludur. Burada, biri servoyu kontrol etmek için diğeri de blynk uygulamasından zamanlayıcı verilerini almak için olmak üzere iki veri akışı oluşturacağız. Bir DataStream oluşturmak için ‘+New Datastream’ düğmesine tıklayın ve ardından Virtual Pin’i seçin .

Pin Ayarlama
Pin Ayarlama

Veri akışı adını, sanal pini ve veri türünü girmeniz gereken bir pencere açılacaktır. Bundan sonra ‘Oluştur’ düğmesine tıklayın ve zamanlayıcı değerlerini almak için bir veri akışı oluşturmak için aynı prosedürü izleyin.

Virtual Pin Datastream
Virtual Pin Datastream

Bu yapıldıktan sonra ‘Etkinlik’ sekmesini olduğu gibi bırakın ve ‘Web Gösterge Tablosu’ sekmesine gidin. blynk 2.0’da Web Panosu ve Mobil Pano olmak üzere iki tür Panomuz vardır. Her iki gösterge panosu da ayrı ayrı yapılandırılabilir ve kullanılabilir. Web Panosu sınırlı sayıda widget’a sahiptir. Test için bir anahtar ekleyebilirsiniz.

Panel
Panel

Bu yapıldığında bir sonraki sekme mobil kontrol panelidir. Mobil Gösterge Tablosu yalnızca Mobil’de yapılandırılabilir. Bu yüzden mobil tarafa geçmeden önce tüm değişiklikleri buluta kaydedin. Bunun için sağ üst köşedeki kaydet düğmesine tıklayın.

Mobil Ekran
Mobil Ekran

Şimdi geriye kodlama kısmı ve Mobil Kontrol Paneli kaldı. İlk olarak, kodlama kısmı ile gideceğiz.

Tam kod bu proje için dokümanın sonunda verilir. Burada kodun bazı önemli satırlarını açıklıyoruz. Her zamanki gibi, gerekli tüm kitaplık dosyalarını ekleyerek kodu başlatın. BlynkEdgent.h , Blynk 2.0 platformu için yeni kitaplıktır. “NTPClient.h” , NTP sunucularından saat ve tarih verilerini almak için kullanılır. “WiFiUdp.h” kütüphanesi, bir UDP portunu açmak, UDP paketlerini göndermek ve almak gibi UDP protokolünü işlemek için kullanılır. “Servo.h” ise servo motoru kontrol etmek için kullanılır.

#include "BlynkEdgent.h"
#include <NTPClient.h>
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <Servo.h>

Ardından sonraki satırlarda Blynk şablon kimliğini ve Blynk Cihaz Kimliğini girin. Bu kimlikler, Blynk bulut platformundaki ‘cihaz Bilgileri’ sayfasından kopyalanabilir.

#define BLYNK_TEMPLATE_ID "TMPLrKGv1gYp"
#define BLYNK_DEVICE_NAME "Pet Feeder"

Ardından bir sonraki satırda NTP istemcisi için bir örnek oluşturun. Bu örnek içerisinde kullanmak istediğimiz NTP Sunucusunun adresini belirtmeliyiz.

NTPClient timeClient(ntpUDP, "asia.pool.ntp.org", utcOffsetInSeconds);

BLYNK_WRITE () işlev V0 ve V1 Sanal pinlere gelen veriler için kontrol etmek için kullanılır. V1 pini Blynk uygulamasından zamanlayıcı verilerini almak için kullanılırken sanal pin V0 anahtar durumunu almak içindir.

BLYNK_WRITE(V0)
{
int data = param.asInt();
if (data == 1){
  servo_1.write (45); // Servo will move to 45 degree angle.
  delay (1000);
  servo_1.write (90);  // servo will move to 90 degree angle.
}
}
BLYNK_WRITE(V1){
 time_blynk = param.asInt();
}

Kurulum kısmında ilk olarak 115200 baud hızında seri haberleşmeyi başlatıyoruz ve ayrıca Blynk ve time client haberleşmesini başlatıyoruz.

void setup()
{
  Serial.begin(115200);
  delay(100);
  BlynkEdgent.begin();
  servo_1.attach(0);
  timeClient.begin();
}

Şimdi döngü fonksiyonunun içinde, önce NTP istemci-sunucudan zaman verilerini alıyoruz ve ardından bu verileri HH ve MM değişkenleri içinde saklıyoruz. NTP istemcisinden aldığımız zaman verileri 24 saat biçimindedir, bu yüzden önce 12 saat biçimine değiştirdik ve ardından bu saat ve dakika verilerini Blynk’ten aldığımız zamanlayıcı verileriyle karşılaştırmak için saniye cinsinden dönüştürdük. uygulama. Blynk uygulamasından alınan saat ve saat aynıysa, evcil hayvan besleyici belirli bir süre için açılır ve kapanır.

void loop() {
  timeClient.update();
  HH = timeClient.getHours();
  int hours = HH;
    if (hours == 0) hours = 12; 
    if (hours > 12) hours = hours - 12;
  MM = timeClient.getMinutes();
  final_time = 3600*hours + 60*MM;
  if (time_blynk == final_time){
  }
   BlynkEdgent.run();
}

Şimdi ‘ NodeMCU ‘ olan pano tipini ve NodeMCU’nun bağlı olduğu portu seçin ve kodu yükleyin. Şimdi bu yapıldığında, Blynk mobil uygulaması ve ayrıca Wi-Fi kimlik bilgilerini NodeMCU’ya eklememiz kaldı.

Blynk Mobil Uygulamasını Yapılandırma

İlk adım, Blynk uygulamasını Play Store’dan indirmek ve ardından yeni bir hesap oluşturmak olacaktır. Varsa mevcut hesabınızı kullanarak da giriş yapabilirsiniz. Şimdi geliştirici modunu etkinleştirmeniz gerekiyor. Geliştirici, platformu son kullanıcılar tarafından kullanılmak üzere yapılandırmak için gereken tüm işlevlere erişimi olan özel bir kullanıcıdır. Geliştirici modunu etkinleştirmek için sol üst köşedeki ‘Profil’ simgesine tıklayın ve ardından Geliştirici modunu etkinleştirin.

Uygulama Yapılandırma
Uygulama Yapılandırma

Bundan sonra, yeni cihaz ekle düğmesine tıklamanız ve NodeMCU kartını telefona yaklaştırmanız ve hazır düğmesine tıklamanız gerekir.

Aygıt Ekleme
Aygıt Ekleme

NodeMCU kartı tarafından oluşturulan etkin noktayı otomatik olarak bulacaktır. Bu etkin noktaya bağlanın ve ardından yönlendiricinizin Wi-Fi kimlik bilgilerini kolayca girebilirsiniz. Bundan sonra devam düğmesine tıklayın ve Wi-Fi kimlik bilgilerini NodeMCU kartına gönderecek ve Wi-Fi kimlik bilgilerini panoya eklemeyi bitirdik.

Aygıt Bulundu
Aygıt Bulundu

Blynk Mobile Dashboard Oluşturma 

Şimdi, Blynk Mobile Dashboard’u yapılandıran son adıma geldik. Bunun için az önce oluşturduğunuz cihaza gidin ve ardından menü simgesine tıklayın ve size mevcut tüm widget’lar sunulacak.

Widget Box
Widget Box

Burada Button ve Timer widget’ı olmak üzere iki widget ekleyeceğiz. Düğme widget’ı servoyu manuel olarak kontrol etmek için kullanılırken, zamanlayıcı widget’ı belirli bir eylemin zamanını ayarlamak için kullanılır.

Zamanlayıcı
Zamanlayıcı

Şimdi yapılandırmak için Düğme widget’ına dokunun. Burada Blynk bulutunda oluşturduğumuz veri akışını seçmelisiniz. Bundan sonra Zamanlayıcı widget’ına dokunun ve veri akışını seçin. Widget adı, rengi vb. gibi diğer ayarları da değiştirebilirsiniz.

Input Ayarları
Input Ayarları

Şimdi Blynk Mobile panosunu başarıyla yapılandırdık ve sonraki adım Pet Feeder kurulumunu oluşturmak.

Evcil Hayvan Besleyici Kurulumunu Oluşturma

Bir oluşturmak için besleyici otomatik kedi biz Amazon’dan gelen bir evcil hayvan besleme kutusu sipariş ve servo ve diğer elektronik uyması için değiştirilmiş. DC motor, kutunun içine 3 boyutlu baskılı dişli takılı olarak yerleştirilmiştir. NodeMCU kartı kutunun altına yerleştirilmiştir ve bu eksiksiz kuruluma 12V adaptör kullanılarak güç sağlanır.

Besleme Kutusu
Besleme Kutusu
NodeMCU Otomatik Evcil Hayvan Besleyicisini Test Etme

Şimdi her şey hazır olduğuna göre, devam edelim ve bu Pet Feeder kurulumunu test edelim. Bunun için Pet Feeder kutusunu kedi maması ile doldurdum ve test çalışması için, evcil hayvan besleyicimizin mama dağıtıp dağıtmadığını kontrol etmek için cep telefonumda yüklü olan Blynk uygulamasını uzaktan kumanda olarak kullandım. Kurulumu açar açmaz evcil hayvan besleyici kedi mamasını kontrollü bir oranda dağıtmaya başladı.

Anahtarın yanı sıra, Blynk uygulamasının zamanlayıcı widget’ını kullanarak kediyi beslemek için bir zaman da ayarlayabiliriz. Tam test süreci, sayfanın altına eklenen videoda gösterilmektedir. 

// Fill-in information from your Blynk Template here
#define BLYNK_TEMPLATE_ID "TMPLrKGv1gYp"
#define BLYNK_DEVICE_NAME "Pet Feeder"
#define BLYNK_FIRMWARE_VERSION        "0.1.0"
#define BLYNK_PRINT Serial
//#define BLYNK_DEBUG 
#define APP_DEBUG
// Uncomment your board, or configure a custom board in Settings.h
//#define USE_SPARKFUN_BLYNK_BOARD
//#define USE_NODE_MCU_BOARD
//#define USE_WITTY_CLOUD_BOARD
//#define USE_WEMOS_D1_MINI 
#include "BlynkEdgent.h"
#include <NTPClient.h>
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
//#include <Servo.h> // including servo library.
const long utcOffsetInSeconds = 19800;
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "asia.pool.ntp.org", utcOffsetInSeconds);
int HH, MM,final_time;
int time_blynk, data;
//Servo servo_1;
#define motor D0
BLYNK_WRITE(V0)
{
data = param.asInt();
}
BLYNK_WRITE(V1)
{
time_blynk = param.asInt();
Serial.print(time_blynk);
//Serial.print("Got The Time");
}
void setup()
{
  Serial.begin(115200);
  delay(100);

  BlynkEdgent.begin();
  pinMode(motor, OUTPUT);
  digitalWrite(motor, LOW);
  //servo_1.attach(0);
  timeClient.begin();
}
void loop() {
  timeClient.update();
  HH = timeClient.getHours();
  //Serial.print(timeClient.getHours());
  int hours = HH;    
    if (hours == 0) hours = 12;  // Midnight
    if (hours > 12) hours = hours - 12;
  //Serial.print(hours);
  //Serial.print(":");
  MM = timeClient.getMinutes();
 // Serial.println(timeClient.getMinutes()); 
  final_time = 3600*hours + 60*MM;
 // Serial.println(final_time);
  if (time_blynk == final_time){
    digitalWrite(motor, LOW);
    delay(3000);
    digitalWrite(motor,HIGH); 
  }
  if (data == 1){
  digitalWrite(motor, HIGH);
  delay(5000);
  digitalWrite(motor,LOW);
  Serial.print("Opening");
}  
  delay(6000);
  BlynkEdgent.run();
}

Bu makale buradan çevrilmiştir.

Related posts

MQ-135 Hava Kalite Sensörü Örnekleri

Ömer Ersin

HVDC Güç Kaynağı Tasarımı

Ömer Ersin

Yanıp sönen polis ışıkları devresi

Ömer Ersin