IOT

Ura in avtomatizacija doma z uporabo zaslona STONE

vsebina

  1. Opis
  2. Oblikovanje GUI

3. Shema vezja

  1. Koda
  2. Video

Opis

V tem projektu bomo oblikovali uro in sistem za avtomatizacijo, s pomočjo katerega lahko vklopimo ali izklopimo domačo luč, obstaja pa tudi ura, ki bo kazala čas in datum.

Za to uporabljamo TFT zaslon (STONE-HMI), ta zaslon ima programsko opremo, ki je programska oprema GUI. S to pomočjo bomo oblikovali vmesnik, ki bo vseboval uro in avtomatizacijo. Prenesite programsko opremo GUI Klikni tukaj

Oblikovanje delov ure: -

Najprej oblikujmo del ure, najprej moramo dodati vse slike, ki so podane v mapi kliknite tukaj.

Kot lahko vidite na levi strani, so bile vse slike dodane v razdelku slikovne datoteke. Zdaj kliknite na sliko '14' in dobili boste ta vmesnik, kot ga vidite na sliki. Zdaj izberite 'RTC' v konfiguraciji na dotik za nastavitev časa in datum ter izvedite vso konfiguracijo za to. Najprej dodajte sliko 'na strani' kot sliko številka 6, ki bo uporabljena v času nastavitve. Zdaj pojdite na sliko številka 6 in dodajte vse gumbe in njihove vrednosti ključev. te vrednosti bodo biti v tej obliki.

Za '1' — 0031

Za '2' — 0031

Za '3' — 0031

Za '4' — 0031

Za '5' — 0031

Za '6' — 0031

Za '7' — 0031

Za '8' — 0031

Za '9' — 0031

Za '0' — 0030

Za 'OK'– 00F1

Po tem dodajte učinek gumba kot slika nimber-7 za vse gumbe, tako da bo ta del opravljen za nastavitve ure. Pojdimo naprej, da ustvarimo kazalce ure.

Podobno dodajte številčnico z vrha in dodajte vse kazalce za ure, minute in sekunde, za to najprej moramo narediti ikono za te kazalce, tako da za to pojdite na generator ikon in izberite te slike, v razdelku boste našli novo mapo od 'datoteke ikon' od tukaj morate izbrati vse ikone glede na zahteve kazalcev. Nato izberite vse ikone glede na zahteve kazalcev ure in ne pozabite izbrati središča vsakega kazalca za uro s tem postopkom to bo storjeno, zdaj moramo iti na del avtomatizacije in za to smo dodali simbol avtomatizacije, kot lahko vidite na zgornji sliki, za ta gumb za izbiro in postavite ta gumb v območje te ikone avtomata in nato izberite ' preklop strani' kot slika-1, ker je to slika za avtomatizacijo, potem izberite sliko-1 za nadaljnje oblikovanje.

Oblikovanje delov avtomatizacije: -

Oblikujmo avtomatizacijski del za to, zahtevali smo, da Arduino pošlje določeno vrednost ključa preko naslova, tukaj uporabljamo '0001' za vse vrednosti ključa. Za gumb Fan(ON) pošljemo vrednost ključa '0001' in za Fan(OFF) ) pošiljamo vrednost ključa '0002', podobno kot pošiljamo za vse določene vrednosti za vse naprave. Tukaj smo dodali tudi gumb za preklop na GUI ure, ki bo pomagal premakniti s tega vmesnika na vmesnik ure.

Za preklop strani uporabljamo 'gumb', ki je postavljen na levi zgornji del, za gumb za avtomatizacijo pa uporabljamo funkcijo 'return press key value', ki ima dva parametra, prvi je vrednost naslova, drugi pa vrednost ključa, kot smo omenili zgoraj, smo z uporabo različnih vrednosti ključa za vsak gumb za avtomatizacijo.

Circuit diagram

Kot lahko vidite, so v povezavi tri LED diode lučka-1, lučka-2 in za ventilator tukaj uporabljamo samo LED diode, vendar lahko na to priključite dejanske naprave. Luč-1 povežite s priključkom -D6 Arduina, lučka- 2 priključite na pin-D7 Arduina, podoben ventilator povežite z D5 z Arduinom. In izvedite povezavo za Rx in Tx v skladu s shemo vezja. Tukaj smo povezali Tx s pin-2 in Rx s pin-3 Arduina kot na kodo Arduino. Poglejmo še, kako deluje s kodo.

Obstajajo različne vrste serijskih komunikacij. Ko uporabljate ploščo Arduino v projektu, lahko izberete standardne serijske zatiče kot serijski Rx Tx programske opreme Arduino iz UART znotraj plošče Arduino, zato se imenuje Serial TTL. V tem primeru uporabljamo knjižnico Hardware serial.h, vendar lahko nekateri dodatni zatiči delujejo kot Rx ali Tx. Komunikacijski zatiči SPI lahko na primer delujejo kot MISO, MOSI in Select (SC), vendar so tudi zatiči, ki lahko delujejo kot digitalni vhod ali digitalni izhod, če pa potrebujete, lahko te zatiče uporabite kot Rx, Tx z uporabo softwareserial .h Knjižnica. 

Pojdimo naprej, da bomo izvedeli, kako koda deluje. 

Koda :- 

#vključi //programska serijska knjižnica

SoftwareSerial max232(2,3);

char podatki; 

String mystring;

int f = 5; // Pin za oboževalca

int l1 = 6; // Pin za lučko-1

int l2 = 7; // Pin za luč-2

void setup ()

{

Serial.begin(115200); //Tukaj je hitrost prenosa 115200

max232.begin(115200);

pinMode(f, IZHOD);     

digitalWrite(f, LOW); 

pinMode(l1, IZHOD);    

digitalWrite(l1, LOW);

pinMode(l2, IZHOD);    

digitalWrite(l2, LOW);

}

void loop ()

{

če (max232.available()>0)

 {

   podatki = max232.read();

   moj niz = moj niz + bajt (podatki); 

   zakasnitev (10);

 }

else if (mystring.endsWith(“101”)) //pogoj za VKLOP ventilatorja

  {

    mystring = “”; 

   digitalWrite(f,HIGH);

  }

else if (mystring.endsWith(“102”)) //pogoj za IZKLOP ventilatorja

  {

   mystring = “”; 

   digitalWrite(f,LOW);

  }

else if (mystring.endsWith(“103”)) //pogoj za Light-1 ON

  {

  mystring = “”; 

  digitalWrite(l1,HIGH);

  }

else if (mystring.endsWith(“104”)) //pogoj za Light-1 IZKLOP

  {

   mystring = “”; 

   digitalWrite(l1,LOW);

  }

else if (mystring.endsWith(“105”)) //pogoj za Light-2 ON

  {

  mystring = “”; 

  digitalWrite(l2,HIGH);

  }

else if (mystring.endsWith(“106”)) //pogoj za Light-2 IZKLOP

  {

   mystring = “”; 

   digitalWrite(l2,LOW);

  }

else if (mystring.endsWith(“107”)) //pogoj za vse naprave VKLOPLJENE

  {

   mystring = “”; 

   digitalWrite(l1,HIGH);

   digitalWrite(l2,HIGH);

   digitalWrite(f,HIGH);

  }

else if (mystring.endsWith(“108”)) //pogoj za vse naprave IZKLOPLJENE

  {

   mystring = “”; 

   digitalWrite(l1,LOW);

   digitalWrite(l2,LOW);

   digitalWrite(f,LOW);

  }

}

Delo: -

Kot smo razpravljali, uporabljamo programsko serijsko knjižnico za prenos vrednosti ključa preko naslova, za to smo dodali v tej kodi to daje vmesnik za povezavo Arduina in zaslona STON-HMI. Po tem smo deklarirali vse izhodne pine, karkoli že uporabljamo za LED in ventilator, za te naprave smo te pine prijavili kot IZHOD in nato nastavili hitrost prenosa za programsko-serijsko knjižnico. Vse to je narejeno v delu za nastavitev praznine, zdaj pa pojdimo, da naredimo pogoj za naprave, ki jih uporabljamo, ta del je dodan v zanki praznine, ker se bo to večkrat ponovilo, ko bomo pritisnili gumb na zaslonu.

V razdelku prazne zanke so štirje pogoji za naprave. Prvi pogoj je za vklop in izklop ventilatorja, tukaj pošiljamo vrednost ključa '0001' za stanje VKLOP in '0002' za stanje izklopa prek naslova '0001', ta naslov je enako za vse naprave. Za drugo napravo, ki je za luč-1, pošljemo '0003' za stanje VKLOP in '0004' za stanje izklopa, podobno za luč-2 '0005' za stanje ON in '0006 ' za stanje izklopa, tako da na ta način ti pogoji delujejo za posamezno napravo.

Obstaja še en pogoj za IZKLOP ali VKLOP vseh naprav hkrati, za to uporabljamo '0007' za VKLOP in '0008' za IZKLOP.

Izhodni video: -

To je izhodni video tega projekta v tem videoposnetku, ki najprej prikazuje nastavitev ure in delovanje avtomatizacije, kot lahko vidite v videoposnetku.

To je izhodni videoposnetek, ki ga lahko prenesete s klikom na ta videoposnetek. Dodali smo vse podatke, povezane s tem, če imate kakršen koli dvom o oblikovanju GUI, lahko prenesete projektno datoteko in jo odprete neposredno, v tem primeru vam ni treba oblikujte kateri koli GUI, dobili boste tisto zasnovo, ki smo jo zgradili mi. Če pa želite oblikovati drugačen GUI, potem morate slediti vsem korakom.

Koda

//Za več informacij o tem projektu obiščite:- wwww.electrocircuit.net //

#include

SoftwareSerial max232(2,3);

char podatki; 

String mystring;

int f = 5; 

int l1 = 6; 

int l2 = 7;  

void setup ()

{

Serial.begin (115200); 

max232.begin(115200);

pinMode(f, IZHOD); /////////RDEČA////////

digitalWrite(f, LOW); 

pinMode(l1, IZHOD); ////////ZELENA///////

digitalWrite(l1, LOW);

pinMode(l2, IZHOD); ///////MODR/////////

digitalWrite(l2, LOW);

}

void loop ()

{

če (max232.available()>0)

 {

   podatki = max232.read();

   moj niz = moj niz + bajt (podatki); 

   zakasnitev (10);

 }

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

  {

    mystring = “”; 

   digitalWrite(f,HIGH);

  }

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

  {

   mystring = “”; 

   digitalWrite(f,LOW);

  }

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

  {

  mystring = “”; 

  digitalWrite(l1,HIGH);

  }

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

  {

   mystring = “”; 

   digitalWrite(l1,LOW);

  }

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

  {

  mystring = “”; 

  digitalWrite(l2,HIGH);

  }

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

  {

   mystring = “”; 

   digitalWrite(l2,LOW);

  }

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

  {

   mystring = “”; 

   digitalWrite(l1,HIGH);

   digitalWrite(l2,HIGH);

   digitalWrite(f,HIGH);

  }

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

  {

   mystring = “”; 

   digitalWrite(l1,LOW);

   digitalWrite(l2,LOW);

   digitalWrite(f,LOW);

  }

}

Vir: Plato Data Intelligence