IOT

Klok en huisautomatisering met STONE Display

Inhoud

  1. Omschrijving
  2. GUI-ontwerp

3. Schakelschema

  1. Code
  2. Video

Omschrijving

In dit project gaan we een klok en een automatiseringssysteem ontwerpen. Met deze hulp kunnen we de verlichting in huis AAN of UIT zetten en er is ook een klok die de tijd en datum weergeeft.

Hiervoor gebruiken wij TFT-display (STONE-HMI)Dit display heeft software die GUI-software is. Met deze hulp gaan we een interface ontwerpen die zowel sectieklok als automatisering zal bevatten. Download de GUI-software klik hier

Ontwerpen van klokonderdelen: -

Laten we eerst het klokgedeelte ontwerpen, eerst moeten we alle afbeeldingen toevoegen die in de map worden weergegeven hier.

Zoals u aan de linkerkant kunt zien, zijn alle afbeeldingen toegevoegd aan het gedeelte van het afbeeldingsbestand. Klik nu op afbeelding '14' en u krijgt deze interface zoals u deze in de afbeelding ziet. Selecteer nu 'RTC' via de aanraakconfiguratie om de tijd in te stellen en datum en voer alle configuratie hiervoor uit. Voeg eerst de 'in de pagina'-afbeelding toe als afbeeldingsnummer 6, die zal worden gebruikt op het moment van instellen. Ga nu naar afbeelding nummer 6 en voeg alle knoppen en hun sleutelwaarden toe. Deze waarde zal in dit formaat zijn.

Voor '1' — 0031

Voor '2' — 0031

Voor '3' — 0031

Voor '4' — 0031

Voor '5' — 0031

Voor '6' — 0031

Voor '7' — 0031

Voor '8' — 0031

Voor '9' — 0031

Voor '0' — 0030

Voor 'OK'– 00F1

Voeg daarna het knopeffect toe als afbeelding nimber-7 voor alle knoppen, dus met dit deel wordt het instellen van de klok gedaan. Laten we verder gaan om een ​​wijzers van de klok te maken.

Voeg op dezelfde manier de wijzerplaatklok van boven toe en voeg alle uren, minuten en secondenwijzers toe. Eerst moeten we een pictogram voor deze wijzers maken, dus ga hiervoor naar de pictogramgenerator en selecteer deze afbeeldingen. U vindt een nieuwe map in de sectie van 'pictogrambestand' vanaf hier moet u alle pictogrammen selecteren op basis van de wijzervereisten. Selecteer daarna alle pictogrammen op basis van de wijzersvereisten, en vergeet niet om het midden van elke wijzers voor de klok te selecteren, met deze procedure dit zal worden gedaan nu moeten we voor het automatiseringsgedeelte gaan en hiervoor hebben we een automatiseringssymbool toegevoegd zoals je kunt zien in de bovenstaande afbeelding, selecteer hiervoor de knop en plaats die knop in het gebied van dit automaatpictogram en selecteer vervolgens de ' paginaschakelaar' als afbeelding-1 omdat dit de afbeelding voor automatisering is, selecteer daarna afbeelding-1 voor verder ontwerp.

Ontwerpen van automatiseringsonderdelen: -

Laten we hiervoor het automatiseringsgedeelte ontwerpen. We hadden Arduino nodig om een ​​bepaalde sleutelwaarde over een adres te verzenden, hier gebruiken we '0001' voor alle sleutelwaarden. Voor de knop Fan (AAN) sturen we de sleutelwaarde '0001' en voor Fan (UIT) ) we sturen de sleutelwaarde '0002' op dezelfde manier sturen we alle specifieke waarden voor alle apparaten. Hier hebben we ook een knop toegevoegd om naar de klok-GUI te schakelen, wat zal helpen om van deze interface naar de klokinterface te gaan.

Voor de paginawisseling gebruiken we de 'knop' die linksboven is geplaatst en voor de automatiseringsknop gebruiken we de functie 'return press key value', die eerst twee parameters heeft: de adreswaarde en een andere is de sleutelwaarde, zoals we hierboven hebben vermeld. met verschillende sleutelwaarden voor elke automatiseringsknop.

Schakelschema

Zoals je kunt zien in de verbinding zijn er drie LED's licht-1, licht-2 en voor de ventilator gebruiken we hier alleen LED's, maar je kunt hier echte apparaten op aansluiten. Licht-1 wordt aangesloten op de pin -D6 van Arduino, licht- 2 verbinden met pin-D7 van Arduino, soortgelijke ventilator verbinden met D5 met Arduino. En voer de verbinding uit voor Rx en Tx volgens het schakelschema. Hier hebben we Tx verbonden met pin-2 en Rx met pin-3 van Arduino zoals volgens de Arduino-code. Laten we verder kijken hoe het met de code werkt.

Er zijn verschillende soorten seriële communicatie. Wanneer u een Arduino-bord voor een project gebruikt, kunt u de standaard seriële pinnen kiezen als Arduino-software seriële Rx Tx, van de UART in het Arduino-bord, dus het wordt Seriële TTL genoemd. In dat geval gebruiken we de Hardware serial.h-bibliotheek, maar sommige extra pinnen kunnen werken als Rx of Tx. De SPI-communicatiepinnen kunnen bijvoorbeeld werken als een MISO, MOSI en Select (SC), maar het zijn ook pinnen die kunnen werken als een digitale ingang of digitale uitgang, of als je dat nodig hebt, kun je die pinnen gebruiken als Rx, Tx met behulp van de software-seriële .h Bibliotheek. 

Laten we verder gaan om te weten hoe de code werkt. 

Code:- 

#erbij betrekken //software seriële bibliotheek

SoftwareSeriële max232(2,3);

char-gegevens; 

String mijnstring;

intf = 5; // Pin voor ventilator

int l1 = 6; // Pin voor licht-1

int l2 = 7; // Pin voor licht-2

leegte setup ()

{

Serieel.begin(115200); //Hier is de Baudrate 115200

max232.begin(115200);

pinModus(f, UITVOER);     

digitalWrite(f, LAAG); 

pinMode(l1, UITGANG);    

digitalWrite(l1, LAAG);

pinMode(l2, UITGANG);    

digitalWrite(l2, LAAG);

}

leegte lus ()

{

als (max232.beschikbaar()>0)

 {

   data = max232.lezen();

   mijnstring = mijnstring + byte(data) ; 

   vertraging (10);

 }

else if (mystring.endsWith(“101”)) //conditie voor ventilator AAN

  {

    mijnstring = “”; 

   digitalWrite(f,HOOG);

  }

else if (mystring.endsWith(“102”)) //conditie voor ventilator UIT

  {

   mijnstring = “”; 

   digitalWrite(f,LAAG);

  }

else if (mystring.endsWith(“103”)) //condition voor Light-1 ON

  {

  mijnstring = “”; 

  digitalWrite(l1,HOOG);

  }

else if (mystring.endsWith(“104”)) //condition voor Light-1 OFF

  {

   mijnstring = “”; 

   digitalWrite(l1,LAAG);

  }

else if (mystring.endsWith(“105”)) //condition voor Light-2 ON

  {

  mijnstring = “”; 

  digitalWrite(l2,HOOG);

  }

else if (mystring.endsWith(“106”)) //condition voor Light-2 OFF

  {

   mijnstring = “”; 

   digitalWrite(l2,LAAG);

  }

else if (mystring.endsWith(“107”)) //conditie voor alle apparaten AAN

  {

   mijnstring = “”; 

   digitalWrite(l1,HOOG);

   digitalWrite(l2,HOOG);

   digitalWrite(f,HOOG);

  }

else if (mystring.endsWith(“108”)) //conditie voor alle apparaten UIT

  {

   mijnstring = “”; 

   digitalWrite(l1,LAAG);

   digitalWrite(l2,LAAG);

   digitalWrite(f,LAAG);

  }

}

Werkend :-

Zoals we hebben besproken, gebruiken we een software-seriële bibliotheek om de sleutelwaarde over een adres over te dragen, hiervoor hebben we toegevoegd in deze code geeft dit de interface om Arduino en STON-HMI-display aan te sluiten. Daarna hebben we alle uitvoerpins aangegeven, wat we ook gebruiken voor de LED's en ventilator, voor deze apparaten hebben we deze pinnen als OUTPUT aangegeven en vervolgens de baudsnelheid ingesteld voor de software-seriële bibliotheek. Deze zijn allemaal gedaan in het ongeldige installatiegedeelte. Laten we nu gaan om de voorwaarde te maken voor de apparaten die we gebruiken. Dit deel wordt toegevoegd in de lege lus omdat dit zich vele malen zal herhalen terwijl we op de knop zullen drukken knop op het display.

In de lege lussectie zijn er vier voorwaarden voor de apparaten. De eerste voorwaarde is voor ventilator aan en uit. Hier sturen we de sleutelwaarde '0001' voor de AAN-voorwaarde en '0002' voor de uit-voorwaarde via het adres '0001'. Dit adres is hetzelfde voor alle apparaten. Voor het tweede apparaat dat voor licht-1 is, sturen we '0003' voor AAN-toestand en '0004' voor uit-toestand, op dezelfde manier voor licht-2 '0005' voor AAN en '0006' voor uit-toestand, dus op deze manier werken deze omstandigheden voor het individuele apparaat.

Er is nog een voorwaarde om alle apparaten tegelijk UIT of AAN te zetten. Hiervoor gebruiken we '0007' voor AAN en '0008' voor UIT.

Uitgangsvideo: -

Dit is de outputvideo van dit project in deze video, waarin eerst de instelling van de klok wordt getoond en de werking van de automatisering, zoals je in de video kunt zien.

Dit is de uitvoervideo die u kunt downloaden door op die video te klikken. We hebben alle gegevens die hiermee verband houden toegevoegd. Als u enige twijfel heeft over het GUI-ontwerp, kunt u het projectbestand downloaden en direct openen. In dit geval hoeft u dat niet te doen Als u een GUI ontwerpt, krijgt u het ontwerp dat wij hebben gebouwd. Maar als u een andere GUI wilt ontwerpen, moet u alle stappen volgen.

Code

//Ga voor meer informatie over dit project naar:- wwww.electrocircuit.net //

#erbij betrekken

SoftwareSeriële max232(2,3);

char-gegevens; 

String mijnstring;

intf = 5; 

int l1 = 6; 

int l2 = 7;  

leegte setup ()

{

Serial.begin (115200); 

max232.begin(115200);

pinModus(f, UITVOER); /////////ROOD////////

digitalWrite(f, LAAG); 

pinMode(l1, UITGANG); ////////GROENTE///////

digitalWrite(l1, LAAG);

pinMode(l2, UITGANG); ///////BLAUW/////////

digitalWrite(l2, LAAG);

}

leegte lus ()

{

als (max232.beschikbaar()>0)

 {

   data = max232.lezen();

   mijnstring = mijnstring + byte(data) ; 

   vertraging (10);

 }

anders als (mijnstring.eindigtMet(“101”))

  {

    mijnstring = “”; 

   digitalWrite(f,HOOG);

  }

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

  {

   mijnstring = “”; 

   digitalWrite(f,LAAG);

  }

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

  {

  mijnstring = “”; 

  digitalWrite(l1,HOOG);

  }

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

  {

   mijnstring = “”; 

   digitalWrite(l1,LAAG);

  }

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

  {

  mijnstring = “”; 

  digitalWrite(l2,HOOG);

  }

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

  {

   mijnstring = “”; 

   digitalWrite(l2,LAAG);

  }

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

  {

   mijnstring = “”; 

   digitalWrite(l1,HOOG);

   digitalWrite(l2,HOOG);

   digitalWrite(f,HOOG);

  }

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

  {

   mijnstring = “”; 

   digitalWrite(l1,LAAG);

   digitalWrite(l2,LAAG);

   digitalWrite(f,LAAG);

  }

}

Bron: Plato Data Intelligence