IOT

STONE Display kullanarak Saat ve Ev Otomasyonu

İçerik

  1. Açıklama
  2. GUI tasarımı

3. Devre Şeması

  1. Kod
  2. Video

Açıklama

Bu projede bir saat ve bu yardımla ev ışığını açıp kapatabileceğimiz bir otomasyon sistemi tasarlayacağız ve ayrıca saat ve tarihi gösterecek bir saat de var.

Bunun için kullanıyoruz TFT ekran (STONE-HMI), bu ekran bir GUI yazılımına sahiptir, bu yardım ile hem bölüm saati hem de otomasyonu içerecek bir arayüz tasarlayacağız. GUI yazılımını indirin buraya Tıkla

Saat parçası tasarımı: -

Önce saat kısmını tasarlayalım, önce klasörde verilen tüm görselleri ekleyelim. İşte .

Sol tarafta gördüğünüz gibi tüm resimler resim dosyası bölümüne eklenmiştir. Şimdi resim '14'e tıklayın, resimde gördüğünüz gibi bu arayüze sahip olacaksınız. Şimdi zamanı ayarlamak için dokunmatik konfigürasyondan 'RTC'yi seçin. ve tarih ve bunun için tüm yapılandırmayı yapın ve bunun için ilk önce ayar sırasında kullanılacak olan 6 numaralı resim olarak 'sayfada' resmi ekleyin. Şimdi 6 numaralı resme gidin ve tüm düğmeleri ve tuşların değerlerini ekleyin. bu değerler bu formatta olun.

'1' için — 0031

'2' için — 0031

'3' için — 0031

'4' için — 0031

'5' için — 0031

'6' için — 0031

'7' için — 0031

'8' için — 0031

'9' için — 0031

'0' için — 0030

'Tamam' için– 00F1

Bundan sonra tüm butonlar için 7 numaralı resim olarak buton efektini ekleyin, bu kısımda saatin ayarları yapılacaktır.Bir saat ibresi oluşturmak için biraz daha ilerleyelim.

Benzer şekilde, üstten Kadran saatini ekleyin ve bunun için tüm ,saat, dakika ve saniye ibrelerini ekleyin, önce bu eller için simge yapmalıyız, bunun için simge oluşturucuya gidin ve bu görüntüleri seçin, bölümde yeni bir klasör bulacaksınız. 'icon file' kısmından tüm ikonları el gereksinimlerine göre seçmelisiniz. Bundan sonra tüm ikonları saat ibreleri gereksinimlerine göre seçin ve bu prosedürle saat için her bir elin merkezini seçmeyi unutmayın. bu şimdi yapılacak, otomasyon kısmına gitmemiz gerekiyor ve bunun için yukarıdaki resimde gördüğünüz gibi bir otomasyon sembolü ekledik, bu seçim butonu için ve o butonu bu otomat simgesinin bulunduğu alana koyun ve ardından 'seçeneğini seçin. sayfa geçişini görüntü-1 olarak seçin çünkü bu, otomasyon için görüntüdür, bundan sonra daha fazla tasarım için görüntü-1'i seçin.

Otomasyon parçası tasarımı: -

Bunun için otomasyon bölümünü tasarlayalım, Arduino'nun bir adres üzerinden belirli bir anahtar değeri göndermesini istedik, burada tüm anahtar değerler için '0001' kullanıyoruz. Fan(ON) düğmesi için '0001' anahtar değeri gönderiyoruz ve Fan(KAPALI) ) '0002' anahtar değerini gönderiyoruz, benzer şekilde tüm cihazlar için tüm belirli değerler için gönderiyoruz. Burada ayrıca bu arayüzden saat arayüzüne geçişe yardımcı olacak saat GUI'sine geçmek için bir düğme ekledik.

Sayfa geçişi için sol üstte bulunan 'buton' ve otomasyon butonu için yukarıda belirttiğimiz gibi birincisi adres değeri diğeri ise anahtar değeri olmak üzere iki parametreli 'dönüş basma tuşu değeri' fonksiyonunu kullanıyoruz. her otomasyon düğmesi için farklı farklı anahtar değeri kullanarak.

Devre şeması

Bağlantıda göreceğiniz gibi üç adet led light-1,light-2 var ve burada Fan için sadece led kullanıyoruz fakat buna gerçek cihazları bağlayabilirsiniz.Light-1 Arduino'nun -D6 pinine,light- 2 Arduino'nun pin-D7'sine bağlanın, benzer fanı Arduino ile D5 ile bağlayın.Ve devre şemasına göre Rx ve Tx için bağlantıyı yapın.Burada Tx'i pin-2 ve Rx'i Arduino'nun pin-3'ü ile bağladık. Arduino koduna göre.Kodla nasıl çalıştığını daha da ileri taşıyalım.

Seri İletişimin farklı türleri vardır. Bir projede Arduino kartı kullandığınızda, Arduino kartının içindeki UART'tan standart Seri pinlerini Arduino yazılımı seri Rx Tx olarak seçebilirsiniz, dolayısıyla buna Seri TTL denir. Bu durumda Hardware seri.h Kütüphanesini kullanıyoruz ancak bazı ek pinler Rx veya Tx olarak çalışabilir. Örneğin SPI iletişim pinleri MISO, MOSI ve Select (SC) olarak çalışabildiği gibi aynı zamanda dijital giriş veya dijital çıkış olarak da çalışabilen pinlerdir veya ihtiyacınız varsa bu pinleri yazılım serisini kullanarak Rx, Tx olarak da kullanabilirsiniz. .h Kütüphane. 

Kodun nasıl çalıştığını öğrenmek için biraz daha ilerleyelim. 

Kod :- 

#Dahil etmek //yazılım seri kitaplığı

YazılımSeri max232(2,3);

karakter verileri; 

dize mystring;

int f = 5; // Fan için Pin

int l1 = 6; // Light-1 için pin

int l2 = 7; // Light-2 için pin

geçersiz kurulum ()

{

Serial.begin(115200); //Burada Baud hızı 115200

max232.başlangıç(115200);

pinMode(f, ÇIKIŞ);     

digitalWrite(f, DÜŞÜK); 

pinMode(l1, ÇIKIŞ);    

digitalWrite(l1, DÜŞÜK);

pinMode(l2, ÇIKIŞ);    

digitalWrite(l2, DÜŞÜK);

}

geçersiz döngü ()

{

if (max232.available()>0)

 {

   veri = max232.read();

   mystring = mystring + byte(veri); 

   gecikmesi (10);

 }

else if (mystring.endsWith(“101”)) //Fan AÇIK için koşul

  {

    dizim = “”; 

   digitalWrite(f,YÜKSEK);

  }

else if (mystring.endsWith(“102”)) //Fan KAPALI için koşul

  {

   dizim = “”; 

   digitalWrite(f,DÜŞÜK);

  }

else if (mystring.endsWith(“103”)) //Light-1 ON için koşul

  {

  dizim = “”; 

  digitalWrite(l1,YÜKSEK);

  }

else if (mystring.endsWith(“104”)) //Light-1 OFF için koşul

  {

   dizim = “”; 

   digitalWrite(l1,DÜŞÜK);

  }

else if (mystring.endsWith(“105”)) //Light-2 ON için koşul

  {

  dizim = “”; 

  digitalWrite(l2,YÜKSEK);

  }

else if (mystring.endsWith(“106”)) //Light-2 OFF için koşul

  {

   dizim = “”; 

   digitalWrite(l2,DÜŞÜK);

  }

else if (mystring.endsWith(“107”)) //Tüm cihazlar için koşul AÇIK

  {

   dizim = “”; 

   digitalWrite(l1,YÜKSEK);

   digitalWrite(l2,YÜKSEK);

   digitalWrite(f,YÜKSEK);

  }

else if (mystring.endsWith(“108”)) //Tüm cihazlar için durum KAPALI

  {

   dizim = “”; 

   digitalWrite(l1,DÜŞÜK);

   digitalWrite(l2,DÜŞÜK);

   digitalWrite(f,DÜŞÜK);

  }

}

Çalışma :-

Tartıştığımız gibi, anahtar değeri bir adres üzerinden aktarmak için yazılım-seri kitaplığı kullanıyoruz, bunun için ekledik bu kodda Arduino ve STON-HMI ekranını bağlamak için arayüz veriyor.Bundan sonra LED'ler ve Fan için ne kullanıyorsak tüm çıkış pinlerini beyan ettik, bu cihazlar için bu Pinleri OUTPUT olarak ilan ettik ve Baud hızını belirledik. yazılım-seri kitaplığı için. bunların hepsi void setup kısmında yapıldı şimdi kullandığımız cihazların şartlarını yapmak için geçelim , bu kısım void döngüsüne eklendi çünkü bu defalarca tekrarlayacağımız için butona basacağız ekrandaki düğmesine basın.

Void loop bölümünde cihazlar için dört koşul vardır. İlk koşul Fan on ve off için burada '0001' adresi üzerinden ON durumu için '0002' ve off durumu için '0001' anahtar değeri gönderiyoruz bu adres tüm cihazlar için aynı. İkinci cihaz olan light-1 için de ON durumu için '0003' ve off durumu için '0004', aynı şekilde light-2 için de ON için '0005' ve off durumu için '0006' gönderiyoruz. bu şekilde bu koşullar bireysel cihaz için çalışıyor.

Tüm cihazları aynı anda KAPATMAK veya AÇMAK için bir koşul daha var, bunun için AÇIK için '0007' ve KAPALI için '0008' kullanıyoruz.

Çıkış Videosu: -

Bu videoda bu projenin ilk çıkış videosu saatin kurulumunu ve videoda gördüğünüz gibi otomasyonun çalışmasını gösteriyor.

Bu videoya tıklayarak indirebileceğiniz çıkış videosudur.Bununla ilgili tüm verileri ekledik GUI tasarımı hakkında herhangi bir şüpheniz varsa proje dosyasını indirebilir ve doğrudan açabilirsiniz bu durumda yapmanız gerekmez herhangi bir GUI tasarlayın, oluşturduğumuz tasarımı elde edersiniz. Ancak farklı bir GUI tasarlamak istiyorsanız tüm adımları izlemeniz gerekir.

Kod

//Bu proje hakkında daha fazla bilgi için şu adresi ziyaret edin:- wwww.electrocircuit.net //

#Dahil etmek

YazılımSeri max232(2,3);

karakter verileri; 

dize mystring;

int f = 5; 

int l1 = 6; 

int l2 = 7;  

geçersiz kurulum ()

{

Serial.begin (115200); 

max232.başlangıç(115200);

pinMode(f, ÇIKIŞ); /////////KIRMIZI////////

digitalWrite(f, DÜŞÜK); 

pinMode(l1, ÇIKIŞ); ////////YEŞİL///////

digitalWrite(l1, DÜŞÜK);

pinMode(l2, ÇIKIŞ); ///////MAVİ/////////

digitalWrite(l2, DÜŞÜK);

}

geçersiz döngü ()

{

if (max232.available()>0)

 {

   veri = max232.read();

   mystring = mystring + byte(veri); 

   gecikmesi (10);

 }

başka if (mystring.endsWith(“101”))

  {

    dizim = “”; 

   digitalWrite(f,YÜKSEK);

  }

else if (mystring.endsWith(“102”))

  {

   dizim = “”; 

   digitalWrite(f,DÜŞÜK);

  }

else if (mystring.endsWith(“103”))

  {

  dizim = “”; 

  digitalWrite(l1,YÜKSEK);

  }

else if (mystring.endsWith(“104”))

  {

   dizim = “”; 

   digitalWrite(l1,DÜŞÜK);

  }

else if (mystring.endsWith(“105”))

  {

  dizim = “”; 

  digitalWrite(l2,YÜKSEK);

  }

else if (mystring.endsWith(“106”))

  {

   dizim = “”; 

   digitalWrite(l2,DÜŞÜK);

  }

else if (mystring.endsWith(“107”))

  {

   dizim = “”; 

   digitalWrite(l1,YÜKSEK);

   digitalWrite(l2,YÜKSEK);

   digitalWrite(f,YÜKSEK);

  }

else if (mystring.endsWith(“108”))

  {

   dizim = “”; 

   digitalWrite(l1,DÜŞÜK);

   digitalWrite(l2,DÜŞÜK);

   digitalWrite(f,DÜŞÜK);

  }

}

Kaynak: Plato Data Intelligence