IOT

Ρολόι και οικιακός αυτοματισμός με χρήση οθόνης STONE

Περιεχόμενα

  1. Περιγραφή
  2. Σχεδιασμός GUI

3 .Διάγραμμα κυκλώματος

  1. Κώδικας
  2. Βίντεο

Περιγραφή

Σε αυτό το έργο πρόκειται να σχεδιάσουμε ένα ρολόι και ένα σύστημα αυτοματισμού με αυτή τη βοήθεια μπορούμε να ενεργοποιήσουμε ή να απενεργοποιήσουμε το φως του σπιτιού και υπάρχει επίσης ρολόι που θα δείχνει την ώρα και την ημερομηνία.

Για αυτό χρησιμοποιούμε Οθόνη TFT (STONE-HMI), αυτή η οθόνη έχει ένα λογισμικό που είναι λογισμικό GUI με αυτήν τη βοήθεια θα σχεδιάσουμε διεπαφή που θα περιέχει και το ρολόι ενότητας και την αυτοματοποίηση. Κατεβάστε το λογισμικό GUI κάντε κλικ εδώ

Σχεδιασμός εξαρτημάτων ρολογιού: -

Ας σχεδιάσουμε πρώτα το μέρος του ρολογιού, πρώτα πρέπει να προσθέσουμε όλες τις εικόνες που δίνονται στο κλικ στο φάκελο εδώ .

Όπως μπορείτε να δείτε στην αριστερή πλευρά, όλες οι εικόνες έχουν προστεθεί στην ενότητα του αρχείου εικόνας. Τώρα κάντε κλικ στην εικόνα '14' θα λάβετε αυτήν τη διεπαφή όπως βλέπετε στην εικόνα. Τώρα επιλέξτε 'RTC' από τη διαμόρφωση αφής για να ρυθμίσετε την ώρα και ημερομηνία και κάντε όλες τις ρυθμίσεις για αυτό, πρώτα προσθέστε την εικόνα «στη σελίδα» ως την εικόνα 6 που θα χρησιμοποιηθεί τη στιγμή της ρύθμισης. Τώρα μεταβείτε στον αριθμό της εικόνας 6 και προσθέστε όλα τα κουμπιά και τις τιμές των κλειδιών τους. να είναι σε αυτή τη μορφή.

Για «1» — 0031

Για «2» — 0031

Για «3» — 0031

Για «4» — 0031

Για «5» — 0031

Για «6» — 0031

Για «7» — 0031

Για «8» — 0031

Για «9» — 0031

Για «0» — 0030

Για «OK» – 00F1

Μετά από αυτό, προσθέστε το εφέ κουμπιού ως εικόνα number-7 για όλα τα κουμπιά, έτσι ώστε από αυτό το μέρος θα γίνει η ρύθμιση του ρολογιού. Ας προχωρήσουμε περαιτέρω για να δημιουργήσουμε δείκτες ρολογιού.

Ομοίως, προσθέστε το ρολόι κλήσης από πάνω και προσθέστε όλα τα ,ώρα, λεπτά και δεύτερο χέρι για αυτό πρέπει πρώτα να δημιουργήσουμε εικονίδιο για αυτούς τους δείκτες, οπότε για αυτό μεταβείτε στη γεννήτρια εικονιδίων και επιλέξτε αυτές τις εικόνες θα βρείτε τον νέο φάκελο στην ενότητα του 'αρχείου εικονιδίου' από εδώ πρέπει να επιλέξετε όλα τα εικονίδια σύμφωνα με τις απαιτήσεις του χεριού. Στη συνέχεια επιλέξτε όλο το εικονίδιο σύμφωνα με τις απαιτήσεις των δεικτών του ρολογιού και μην ξεχάσετε να επιλέξετε το κέντρο κάθε δείκτη για το ρολόι, με αυτήν τη διαδικασία αυτό θα γίνει τώρα πρέπει να πάμε για το τμήμα αυτοματισμού και για αυτό έχουμε προσθέσει ένα σύμβολο αυτοματισμού όπως μπορείτε να δείτε στην παραπάνω εικόνα, για αυτό το κουμπί επιλογής και βάλτε αυτό το κουμπί στην περιοχή αυτού του εικονιδίου αυτόματου και, στη συνέχεια, επιλέξτε το " αλλαγή σελίδας' ως εικόνα-1 επειδή αυτή είναι η εικόνα για αυτοματισμό και μετά επιλέξτε την εικόνα-1 για περαιτέρω σχεδιασμό.

Σχεδιασμός εξαρτημάτων αυτοματισμού: -

Ας σχεδιάσουμε μέρος αυτοματισμού για αυτό, απαιτήσαμε από το Arduino να στείλει συγκεκριμένη τιμή κλειδιού σε μια διεύθυνση, εδώ χρησιμοποιούμε το '0001' για όλη την τιμή του κλειδιού. Για το κουμπί Fan(ON) στέλνουμε την τιμή κλειδιού '0001' και για το Fan(OFF ) στέλνουμε την τιμή κλειδιού '0002' ομοίως στέλνουμε για όλη τη συγκεκριμένη τιμή για όλες τις συσκευές.Εδώ προσθέσαμε επίσης ένα κουμπί για εναλλαγή σε γραφικό περιβάλλον εργασίας ρολογιού που θα σας βοηθήσει να μετακινηθείτε από αυτήν τη διεπαφή σε διεπαφή ρολογιού.

Για τον διακόπτη σελίδας χρησιμοποιούμε το «κουμπί» που βρίσκεται στο επάνω αριστερό μέρος και για το κουμπί αυτοματισμού χρησιμοποιούμε τη λειτουργία «επιστροφή τιμής του πλήκτρου πατήματος» που έχει δύο παραμέτρους πρώτα είναι η τιμή διεύθυνσης και μια άλλη είναι η τιμή κλειδιού όπως αναφέραμε παραπάνω. χρησιμοποιώντας διαφορετική διαφορετική τιμή κλειδιού για κάθε κουμπί αυτοματισμού.

Διάγραμμα κυκλώματος

Όπως μπορείτε να δείτε στη σύνδεση υπάρχουν τρία LED light-1,light-2 και για Fan εδώ χρησιμοποιούμε μόνο LED αλλά μπορείτε να συνδέσετε πραγματικές συσκευές σε αυτό. Το Light-1 συνδέεται με τον ακροδέκτη -D6 του Arduino ,light- 2 συνδεθείτε στον ακροδέκτη-D7 του Arduino, παρόμοια σύνδεση ανεμιστήρα με D5 με Arduino. Και κάντε τη σύνδεση για Rx και Tx σύμφωνα με το διάγραμμα κυκλώματος. Εδώ έχουμε συνδέσει το Tx με τον ακροδέκτη-2 και το Rx με τον ακροδέκτη-3 του Arduino ως σύμφωνα με τον κώδικα Arduino. Ας προχωρήσουμε περαιτέρω πώς λειτουργεί με τον κώδικα.

Υπάρχουν διάφοροι τύποι Σειριακών Επικοινωνιών. Όταν χρησιμοποιείτε μια πλακέτα Arduino σε ένα έργο, μπορείτε να επιλέξετε τις τυπικές σειριακές ακίδες ως σειριακό λογισμικό Arduino Rx Tx, από το UART μέσα στην πλακέτα Arduino, επομένως ονομάζεται Serial TTL. Σε αυτήν την περίπτωση, χρησιμοποιούμε το Hardware serial.h Library, αλλά ορισμένες πρόσθετες ακίδες μπορούν να λειτουργήσουν ως Rx ή Tx. Για παράδειγμα, οι ακίδες επικοινωνίας SPI μπορούν να λειτουργήσουν ως MISO, MOSI και Select (SC), αλλά είναι επίσης καρφίτσες που μπορούν να λειτουργήσουν ως ψηφιακή είσοδος ή ψηφιακή έξοδος ή, αν χρειάζεστε, μπορείτε να χρησιμοποιήσετε αυτές τις ακίδες ως Rx, Tx χρησιμοποιώντας το σειριακό λογισμικό .h Βιβλιοθήκη. 

Ας προχωρήσουμε περαιτέρω για να μάθουμε πώς λειτουργεί ο κώδικας. 

Κωδικός: - 

#περιλαμβάνω //σειριακή βιβλιοθήκη λογισμικού

SoftwareSerial max232(2,3);

δεδομένα χαρακτήρων. 

String mystring;

int f = 5; // Καρφίτσα για ανεμιστήρα

int l1 = 6; // Καρφίτσα για φως-1

int l2 = 7; // Καρφίτσα για φως-2

άκυρη ρύθμιση ()

{

Serial.begin(115200); //Εδώ το Baudrate είναι 115200

max232.begin(115200);

pinMode(f, OUTPUT);     

digitalWrite(f, LOW); 

pinMode(l1, OUTPUT);    

digitalWrite(l1, LOW);

pinMode(l2, OUTPUT);    

digitalWrite(l2, LOW);

}

κενός βρόχος ()

{

if (max232.available()>0)

 {

   data = max232.read();

   mystring = mystring + byte(data) ; 

   καθυστέρηση (10);

 }

else if (mystring.endsWith(“101”)) //condition for Fan ON

  {

    mystring = ""; 

   digitalWrite(f,HIGH);

  }

else if (mystring.endsWith(“102”)) //condition for Fan OFF

  {

   mystring = ""; 

   digitalWrite(f,LOW);

  }

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

  {

  mystring = ""; 

  digitalWrite(l1,HIGH);

  }

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

  {

   mystring = ""; 

   digitalWrite(l1,LOW);

  }

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

  {

  mystring = ""; 

  digitalWrite(l2,HIGH);

  }

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

  {

   mystring = ""; 

   digitalWrite(l2,LOW);

  }

else if (mystring.endsWith(“107”)) //condition for All appliances ON

  {

   mystring = ""; 

   digitalWrite(l1,HIGH);

   digitalWrite(l2,HIGH);

   digitalWrite(f,HIGH);

  }

else if (mystring.endsWith(“108”)) //condition for All appliances OFF

  {

   mystring = ""; 

   digitalWrite(l1,LOW);

   digitalWrite(l2,LOW);

   digitalWrite(f,LOW);

  }

}

Εργασία: -

Όπως έχουμε συζητήσει, χρησιμοποιούμε σειριακή βιβλιοθήκη λογισμικού για να μεταφέρουμε την τιμή κλειδιού σε μια διεύθυνση, για αυτό έχουμε προσθέσει σε αυτόν τον κωδικό αυτό δίνει τη διεπαφή για τη σύνδεση της οθόνης Arduino και STON-HMI. Μετά από αυτό έχουμε δηλώσει όλη την ακίδα εξόδου ό,τι χρησιμοποιούμε για τις λυχνίες LED και τον ανεμιστήρα, για αυτές τις συσκευές έχουμε δηλώσει αυτές τις ακίδες ως OUTPUT και στη συνέχεια ορίζουμε τον ρυθμό Baud για τη βιβλιοθήκη λογισμικού-σειριακής. όλα αυτά έγιναν στο μέρος ρύθμισης κενού τώρα, ας προχωρήσουμε για να διαμορφώσουμε τη συνθήκη για τις συσκευές που χρησιμοποιούμε, αυτό το τμήμα προστίθεται στον βρόχο κενού επειδή αυτό θα επαναληφθεί πολλές φορές καθώς θα πατήσουμε το κουμπί στην οθόνη.

Στην ενότητα βρόχου κενού υπάρχουν τέσσερις προϋποθέσεις για τις συσκευές. Η πρώτη προϋπόθεση είναι η ενεργοποίηση και η απενεργοποίηση του ανεμιστήρα, εδώ στέλνουμε την τιμή κλειδιού '0001' για την κατάσταση ON και '0002' για την κατάσταση εκτός λειτουργίας στη διεύθυνση '0001' αυτή η διεύθυνση είναι το ίδιο για όλες τις συσκευές. Για τη δεύτερη συσκευή που είναι για το φως-1, στέλνουμε "0003" για κατάσταση ON και "0004" για κατάσταση εκτός λειτουργίας, παρόμοια για το φως-2 "0005" για ON και "0006" για κατάσταση εκτός λειτουργίας. Με αυτόν τον τρόπο αυτές οι συνθήκες λειτουργούν για μεμονωμένη συσκευή.

Υπάρχει μια ακόμη προϋπόθεση για να απενεργοποιήσετε ή να ενεργοποιήσετε όλες τις συσκευές ταυτόχρονα, γι' αυτό χρησιμοποιούμε το '0007' για το ON και το '0008' για το OFF.

Έξοδος βίντεο: -

Αυτό είναι το βίντεο εξόδου αυτού του έργου σε αυτό το βίντεο που δείχνει πρώτα τη ρύθμιση του ρολογιού και λειτουργεί ο αυτοματισμός όπως μπορείτε να δείτε στο βίντεο.

Αυτό είναι το βίντεο εξόδου που μπορείτε να κατεβάσετε κάνοντας κλικ σε αυτό το βίντεο. Έχουμε προσθέσει όλα τα δεδομένα που σχετίζονται με αυτό, εάν έχετε αμφιβολίες σχετικά με το σχεδιασμό του GUI, μπορείτε να κάνετε λήψη του αρχείου του έργου και να το ανοίξετε απευθείας σε αυτήν την περίπτωση δεν χρειάζεται να σχεδιάστε οποιοδήποτε GUI θα έχετε αυτό το σχέδιο που έχουμε δημιουργήσει. Αλλά αν θέλετε να σχεδιάσετε διαφορετικό GUI, τότε πρέπει να ακολουθήσετε όλα τα βήματα.

Κώδικας

//Για περισσότερες πληροφορίες σχετικά με αυτό το έργο επισκεφθείτε:- wwww.electrocircuit.net //

#περιλαμβάνω

SoftwareSerial max232(2,3);

δεδομένα χαρακτήρων. 

String mystring;

int f = 5; 

int l1 = 6; 

int l2 = 7;  

άκυρη ρύθμιση ()

{

Serial.begin (115200); 

max232.begin(115200);

pinMode(f, OUTPUT); /////////ΤΟ ΚΟΚΚΙΝΟ////////

digitalWrite(f, LOW); 

pinMode(l1, OUTPUT); ////////ΠΡΑΣΙΝΟΣ///////

digitalWrite(l1, LOW);

pinMode(l2, OUTPUT); ///////ΜΠΛΕ/////////

digitalWrite(l2, LOW);

}

κενός βρόχος ()

{

if (max232.available()>0)

 {

   data = max232.read();

   mystring = mystring + byte(data) ; 

   καθυστέρηση (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);

  }

}

Πηγή: Intelligence Data Intelligence