IOT

Klocka och hemautomation med STONE Display

Innehåll

  1. Beskrivning
  2. GUI design

3 .Kretsdiagram

  1. Koda
  2. Video

Beskrivning

I det här projektet ska vi designa en klocka och ett automationssystem med denna hjälp kan vi slå PÅ eller AV hembelysningen och det finns även en klocka som visar tid och datum.

För detta använder vi TFT-skärm (STONE-HMI), denna display har en mjukvara som är en GUI-mjukvara med denna hjälp ska vi designa gränssnitt som kommer att innehålla både sektionsklocka och automation. Ladda ner GUI-mjukvaran Klicka här

Design av klockdelar:-

Låt oss först designa klockdelen, först måste vi lägga till alla bilder som ges i mappen klicka här.

Som du kan se på vänster sida har alla bilder lagts till i avsnittet av bildfilen. Klicka nu på bild '14' så får du det här gränssnittet som du ser på bilden. Välj nu 'RTC' från pekkonfigurationen för att ställa in tiden och datum och gör all konfiguration för denna första lägg till 'på sidan'-bilden som bild nummer 6 som kommer att användas vid tidpunkten för inställningen. Gå nu till bild nummer 6 och lägg till alla knappar och deras nyckelvärden. Dessa värden kommer att vara i detta format.

För '1' — 0031

För '2' — 0031

För '3' — 0031

För '4' — 0031

För '5' — 0031

För '6' — 0031

För '7' — 0031

För '8' — 0031

För '9' — 0031

För '0' — 0030

För 'OK' – 00F1

Efter att lägga till knappeffekt som bild nimber-7 för alla knappar så genom denna del kommer att göras för att ställa in klockan. Låt oss gå vidare för att skapa en visare av klockan.

På liknande sätt lägg till Dial clock från toppen och lägg till alla timmar, minuter och sekundvisare för detta först måste vi skapa ikon för dessa visare så för detta, gå till ikongeneratorn och välj dessa bilder hittar du en ny mapp i avsnittet av 'ikonfil' härifrån måste du välja alla ikoner enligt visarkraven. Välj sedan alla ikoner enligt klockvisares krav,och glöm inte att välja mitten av varje visare för klockan,med denna procedur detta kommer att göras nu måste vi gå till automationsdelen och för detta har vi lagt till en automatiseringssymbol som du kan se i bilden ovan, för denna välj-knapp och placera den knappen i området för denna automatikon och välj sedan ' page switch' som bild-1 eftersom det här är bilden för automatisering, välj sedan bild-1 för vidare design.

Design av automationsdelar:-

Låt oss designa automatiseringsdelen för detta, vi krävde att Arduino skickade ett speciellt nyckelvärde över en adress, här använder vi "0001" för alla nyckelvärden. För Fan(ON)-knappen skickar vi "0001" nyckelvärde och för Fan(OFF) ) vi skickar "0002" nyckelvärde på samma sätt som vi skickar för alla speciella värden för alla apparater. Här har vi också lagt till en knapp för att byta till klockgränssnitt som hjälper till att flytta från detta gränssnitt till klockgränssnitt.

För sidväxeln använder vi 'knapp' som är placerad till vänster och för automatiseringsknapp använder vi 'retur tryck på nyckelvärde'-funktionen som har två parameter först är adressvärde och en annan är nyckelvärde som vi har nämnt ovan. med olika nyckelvärden för varje automationsknapp.

Kretsschema

Som du kan se i anslutningen finns det tre lysdioder light-1,light-2 och för fläkt här använder vi endast lysdioder men du kan ansluta faktiska apparater till detta.Light-1 anslut till stiftet -D6 på Arduino ,light- 2 anslut till stift-D7 på Arduino, liknande fläkt anslut till D5 med Arduino. Och gör anslutningen för Rx och Tx enligt kretsschemat. Här har vi anslutit Tx med stift-2 och Rx med stift-3 på Arduino som enligt Arduino-koden. Låt oss gå vidare hur det fungerar med koden.

Det finns olika typer av seriell kommunikation. När du använder ett Arduino-kort i ett projekt kan du välja de vanliga seriella stiften som Arduino-programvaran seriell Rx Tx, från UART inuti Arduino-kortet, så det kallas Serial TTL. I så fall använder vi Hardware serial.h Library, men några extra stift kan fungera som en Rx eller Tx. Till exempel kan SPI-kommunikationsstiften fungera som MISO, MOSI och Select (SC), men de är också stift som kan fungera som en digital ingång eller digital utgång, eller om du behöver kan du använda dessa stift som Rx, Tx med hjälp av mjukvaruserien .h bibliotek. 

Låt oss gå vidare för att veta hur koden fungerar. 

Kod:- 

#omfatta //programvaruseriebibliotek

SoftwareSerial max232(2,3);

char data; 

String mystring;

int f = 5; // Pin for Fan

int 1 = 6; // Pin för ljus-1

int 2 = 7; // Pin för ljus-2

ogiltig installation ()

{

Serial.begin(115200); //Här är Baudrate 115200

max232.begin(115200);

pinMode(f, OUTPUT);     

digitalWrite(f, LÅG); 

pinMode(l1, OUTPUT);    

digitalWrite(l1, LÅG);

pinMode(l2, OUTPUT);    

digitalWrite(l2, LÅG);

}

ogiltig slinga ()

{

if (max232.available()>0)

 {

   data = max232.read();

   mystring = mystring + byte(data) ; 

   fördröjning (10);

 }

else if (mystring.endsWith(“101”)) //villkor för Fläkt PÅ

  {

    mystring = ""; 

   digitalWrite(f,HIGH);

  }

else if (mystring.endsWith(“102”)) //villkor för Fläkt AV

  {

   mystring = ""; 

   digitalWrite(f,LOW);

  }

else if (mystring.endsWith(“103”)) //villkor för Light-1 ON

  {

  mystring = ""; 

  digitalWrite(l1,HIGH);

  }

else if (mystring.endsWith(“104”)) //villkor för Light-1 OFF

  {

   mystring = ""; 

   digitalWrite(l1,LOW);

  }

else if (mystring.endsWith(“105”)) //villkor för Light-2 ON

  {

  mystring = ""; 

  digitalWrite(l2,HIGH);

  }

else if (mystring.endsWith(“106”)) //villkor för Light-2 OFF

  {

   mystring = ""; 

   digitalWrite(l2,LOW);

  }

else if (mystring.endsWith(“107”)) //villkor för Alla apparater PÅ

  {

   mystring = ""; 

   digitalWrite(l1,HIGH);

   digitalWrite(l2,HIGH);

   digitalWrite(f,HIGH);

  }

else if (mystring.endsWith(“108”)) //villkor för Alla apparater AV

  {

   mystring = ""; 

   digitalWrite(l1,LOW);

   digitalWrite(l2,LOW);

   digitalWrite(f,LOW);

  }

}

Jobbar :-

Som vi har diskuterat använder vi ett programvaruseriebibliotek för att överföra nyckelvärdet över en adress, för detta har vi lagt till i den här koden ger detta gränssnittet för att ansluta Arduino och STON-HMI-skärm. Efter det har vi deklarerat alla utgångsstift vad vi än använder för lysdioderna och fläkten, för dessa enheter har vi deklarerat dessa stift som OUTPUT och sedan ställt in Baud-hastigheten för programvaru-seriebiblioteket. Allt detta gjort i void-inställningsdelen, låt oss nu gå vidare för att göra villkoret för enheterna vi använder, den här delen läggs till i void-slingan eftersom detta kommer att upprepas många gånger när vi trycker på knappen på displayen.

I void loop-sektionen finns det fyra villkor för enheterna. Det första villkoret är att fläkten slås på och av här skickar vi nyckelvärdet '0001' för ON-tillståndet och '0002' för avstängt tillstånd över adressen '0001'. Denna adress är samma för alla enheter. För den andra enheten som är för ljus-1 skickar vi "0003" för PÅ-tillstånd och "0004" för avstängt tillstånd, på samma sätt för ljus-2 "0005" för PÅ och "0006" för avstängt tillstånd så på detta sätt fungerar dessa förhållanden för individuell enhet.

Det finns ytterligare ett villkor för att stänga AV eller slå PÅ alla enheter samtidigt för detta använder vi '0007' för PÅ & '0008' för AV.

Utdata video:-

Det här är utgångsvideon för detta projekt i den här videon som först visar inställningen av klockan och det fungerar med automatisering som du kan se i videon.

Det här är utdatavideon som du kan ladda ner genom att klicka på den videon. Vi har lagt till all data som är relaterad till detta om du har några tvivel om GUI-design kan du ladda ner projektfilen och öppna den direkt i det här fallet behöver du inte designa vilket GUI som helst så får du den design som vi har byggt. Men om du vill designa olika GUI måste du följa alla steg.

Koda

//För mer information om detta projekt besök:- wwww.electrocircuit.net //

#omfatta

SoftwareSerial max232(2,3);

char data; 

String mystring;

int f = 5; 

int 1 = 6; 

int 2 = 7;  

ogiltig installation ()

{

Serial.begin (115200); 

max232.begin(115200);

pinMode(f, OUTPUT); /////////RÖD////////

digitalWrite(f, LÅG); 

pinMode(l1, OUTPUT); ////////GRÖN///////

digitalWrite(l1, LÅG);

pinMode(l2, OUTPUT); ///////BLÅ/////////

digitalWrite(l2, LÅG);

}

ogiltig slinga ()

{

if (max232.available()>0)

 {

   data = max232.read();

   mystring = mystring + byte(data) ; 

   fördröjning (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);

  }

}

Källa: Plato Data Intelligence