IDO

Horloge et domotique avec STONE Display

Table des matières

  1. Description
  2. conception de l'interface graphique

3. Schéma de circuit

  1. Code
  2. Vidéo

Description

Dans ce projet, nous allons concevoir une horloge et un système d'automatisation. Avec cette aide, nous pouvons allumer ou éteindre la lumière de la maison et il y a aussi une horloge qui affichera l'heure et la date.

Pour cela nous utilisons Écran TFT (STONE-HMI), cet écran dispose d'un logiciel qui est un logiciel GUI avec cette aide, nous allons concevoir une interface qui contiendra à la fois l'horloge de section et l'automatisation. Téléchargez le logiciel GUI cliquez ici

Conception de pièces d'horloge : -

Commençons par concevoir la partie horloge, nous devons d'abord ajouter toutes les images qui sont données dans le dossier cliquez sur ici .

Comme vous pouvez le voir sur le côté gauche, toutes les images ont été ajoutées dans la section du fichier image. Cliquez maintenant sur l'image « 14 », vous obtiendrez cette interface telle que vous le voyez dans l'image. Sélectionnez maintenant « RTC » dans la configuration tactile pour régler l'heure. et la date et faites toute la configuration pour cela, ajoutez d'abord l'image « dans la page » comme image numéro 6 qui sera utilisée au moment du réglage. Allez maintenant à l'image numéro 6 et ajoutez tous les boutons et leurs valeurs de clés. Ces valeurs seront être dans ce format.

Pour '1' — 0031

Pour '2' — 0031

Pour '3' — 0031

Pour '4' — 0031

Pour '5' — 0031

Pour '6' — 0031

Pour '7' — 0031

Pour '8' — 0031

Pour '9' — 0031

Pour '0' — 0030

Pour « OK » – 00F1

Après cela, ajoutez un effet de bouton comme image numéro 7 pour tous les boutons, cette partie sera donc effectuée pour configurer l'horloge. Allons plus loin pour créer des aiguilles d'horloge.

De même, ajoutez l'horloge à cadran du haut et ajoutez toutes les aiguilles des heures, des minutes et des secondes pour cela, nous devons d'abord créer une icône pour ces aiguilles, donc pour cela, allez au générateur d'icônes et sélectionnez ces images, vous trouverez un nouveau dossier dans la section du « fichier d'icônes » à partir d'ici, vous devez sélectionner toutes les icônes en fonction des exigences des aiguilles. Après cela, sélectionnez toutes les icônes en fonction des exigences des aiguilles de l'horloge, et n'oubliez pas de sélectionner le centre de chaque main pour l'horloge, avec cette procédure cela sera fait maintenant, nous devons opter pour la partie automatisation et pour cela nous avons ajouté un symbole d'automatisation comme vous pouvez le voir dans l'image ci-dessus, pour ce bouton de sélection et placez ce bouton dans la zone de cette icône d'automate, puis sélectionnez le ' changement de page' comme image-1 car il s'agit de l'image pour l'automatisation, après cela, sélectionnez l'image-1 pour une conception ultérieure.

Conception de pièces d'automatisation :-

Concevons une partie d'automatisation pour cela, nous avons demandé à Arduino d'envoyer une valeur de clé particulière sur une adresse, ici nous utilisons « 0001 » pour toute la valeur de clé. Pour le bouton Fan (ON), nous envoyons la valeur de clé « 0001 » et pour Fan (OFF). ), nous envoyons la valeur clé '0002' de la même manière que nous envoyons pour toutes les valeurs particulières pour tous les appareils. Ici, nous avons également ajouté un bouton pour passer à l'interface graphique de l'horloge, ce qui aidera à passer de cette interface à l'interface de l'horloge.

Pour le changement de page, nous utilisons le « bouton » qui est placé en haut à gauche et pour le bouton d'automatisation, nous utilisons la fonction « retour, appuyez sur la valeur de la touche » qui a deux paramètres : le premier est la valeur de l'adresse et un autre est la valeur de la clé, comme nous l'avons mentionné ci-dessus. en utilisant différentes valeurs de clé différentes pour chaque bouton d'automatisation.

Schéma

Comme vous pouvez le voir dans la connexion, il y a trois LED lumière-1, lumière-2 et pour le ventilateur, nous utilisons ici uniquement des LED mais vous pouvez y connecter des appareils réels. Lumière-1 se connecte à la broche -D6 d'Arduino, lumière- 2 connectez-vous à la broche D7 de l'Arduino, un ventilateur similaire se connecte au D5 avec Arduino. Et effectuez la connexion pour Rx et Tx selon le schéma de circuit. Ici, nous avons connecté Tx avec la broche 2 et Rx avec la broche 3 de l'Arduino comme selon le code Arduino. Voyons plus loin comment cela fonctionne avec le code.

Il existe différents types de communications série. Lorsque vous utilisez une carte Arduino sur un projet, vous pouvez choisir les broches série standard comme série Rx Tx du logiciel Arduino, à partir de l'UART à l'intérieur de la carte Arduino, elle est donc appelée Serial TTL. Dans ce cas, nous utilisons la bibliothèque Hardware Serial.h, mais certaines broches supplémentaires peuvent fonctionner comme Rx ou Tx. Par exemple, les broches de communication SPI peuvent fonctionner comme MISO, MOSI et Select (SC), mais ce sont également des broches qui peuvent fonctionner comme une entrée ou une sortie numérique, ou si vous en avez besoin, vous pouvez utiliser ces broches comme Rx, Tx à l'aide du numéro de série du logiciel. .h Bibliothèque. 

Allons plus loin pour savoir comment fonctionne le code. 

Code :- 

#inclure //bibliothèque série logicielle

LogicielSérie max232(2,3);

données sur les caractères ; 

Chaîne machaîne ;

entier f = 5 ; // Épingle pour fan

int l1 = 6 ; // Broche pour la lumière-1

int l2 = 7 ; // Broche pour la lumière-2

void setup ()

{

Série.begin(115200); //Ici, le débit en bauds est de 115200 XNUMX

max232.begin(115200);

pinMode(f, SORTIE);     

digitalWrite(f, FAIBLE); 

pinMode(l1, SORTIE);    

digitalWrite(l1, FAIBLE);

pinMode(l2, SORTIE);    

digitalWrite(l2, FAIBLE);

}

boucle vide ()

{

si (max232.disponible()>0)

 {

   données = max232.read();

   machaîne = machaîne + octet(données) ; 

   délai (10);

 }

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

  {

    machaîne = ""; 

   digitalWrite(f,ÉLEVÉ);

  }

else if  (mystring.endsWith("102")) //condition pour Fan OFF

  {

   machaîne = ""; 

   digitalWrite(f,BAS);

  }

else if  (mystring.endsWith("103")) //condition pour Light-1 ON

  {

  machaîne = ""; 

  digitalWrite(l1,ÉLEVÉ);

  }

else if  (mystring.endsWith("104")) //condition pour Light-1 OFF

  {

   machaîne = ""; 

   digitalWrite(l1,BAS);

  }

else if  (mystring.endsWith("105")) //condition pour Light-2 ON

  {

  machaîne = ""; 

  digitalWrite(l2,ÉLEVÉ);

  }

else if  (mystring.endsWith("106")) //condition pour Light-2 OFF

  {

   machaîne = ""; 

   digitalWrite(l2,BAS);

  }

else if  (mystring.endsWith("107")) //condition pour tous les appareils activés

  {

   machaîne = ""; 

   digitalWrite(l1,ÉLEVÉ);

   digitalWrite(l2,ÉLEVÉ);

   digitalWrite(f,ÉLEVÉ);

  }

else if  (mystring.endsWith("108")) //condition pour tous les appareils désactivés

  {

   machaîne = ""; 

   digitalWrite(l1,BAS);

   digitalWrite(l2,BAS);

   digitalWrite(f,BAS);

  }

}

Fonctionnement :-

Comme nous l'avons discuté, nous utilisons une bibliothèque logicielle-série pour transférer la valeur clé via une adresse. Pour cela, nous avons ajouté dans ce code, cela donne l'interface pour connecter l'écran Arduino et STON-HMI. Après cela, nous avons déclaré toutes les broches de sortie, peu importe ce que nous utilisons pour les LED et le ventilateur, pour ces appareils, nous avons déclaré ces broches comme SORTIE, puis défini le débit en bauds. pour la bibliothèque logicielle-série. Tout cela est fait dans la partie de configuration vide, passons maintenant à la condition pour les appareils que nous utilisons, cette partie est ajoutée dans la boucle vide car cela va se répéter plusieurs fois lorsque nous appuierons sur le bouton sur l'écran.

Dans la section de boucle vide, il y a quatre conditions pour les appareils. La première condition est pour le ventilateur allumé et éteint. Ici, nous envoyons la valeur de clé « 0001 » pour la condition ON et « 0002 » pour la condition éteinte sur l'adresse « 0001 ». pareil pour tous les appareils. Pour le deuxième appareil destiné à la lumière-1, nous envoyons « 0003 » pour la condition ON et « 0004 » pour la condition éteinte, de même pour la lumière-2, « 0005 » pour la condition ON et « 0006 » pour la condition éteinte. de cette manière, ces conditions fonctionnent pour un appareil individuel.

Il existe une condition supplémentaire pour éteindre ou allumer tous les appareils en même temps. Pour cela, nous utilisons « 0007 » pour ON et « 0008 » pour OFF.

Vidéo de sortie : -

Il s'agit de la vidéo de sortie de ce projet dans cette vidéo montrant d'abord la configuration de l'horloge et le fonctionnement de l'automatisation comme vous pouvez le voir dans la vidéo.

Ceci est la vidéo de sortie que vous pouvez télécharger en cliquant sur cette vidéo. Nous avons ajouté toutes les données liées à cela. Si vous avez des doutes sur la conception de l'interface graphique, vous pouvez télécharger le fichier du projet et l'ouvrir directement. Dans ce cas, vous n'êtes pas obligé de le faire. concevez n’importe quelle interface graphique, vous obtiendrez cette conception que nous avons construite. Mais si vous souhaitez concevoir une interface graphique différente, vous devez suivre toutes les étapes.

Code

//Pour plus d'informations sur ce projet, visitez :- wwww.electrocircuit.net //

#inclure

LogicielSérie max232(2,3);

données sur les caractères ; 

Chaîne machaîne ;

entier f = 5 ; 

int l1 = 6 ; 

int l2 = 7 ;  

void setup ()

{

Serial.begin (115200); 

max232.begin(115200);

pinMode(f, SORTIE); /////////ROUGE////////

digitalWrite(f, FAIBLE); 

pinMode(l1, SORTIE); ////////VERT///////

digitalWrite(l1, FAIBLE);

pinMode(l2, SORTIE); ///////BLEU/////////

digitalWrite(l2, FAIBLE);

}

boucle vide ()

{

si (max232.disponible()>0)

 {

   données = max232.read();

   machaîne = machaîne + octet(données) ; 

   délai (10);

 }

sinon si (mystring.endsWith("101"))

  {

    machaîne = ""; 

   digitalWrite(f,ÉLEVÉ);

  }

sinon si (mystring.endsWith("102"))

  {

   machaîne = ""; 

   digitalWrite(f,BAS);

  }

sinon si (mystring.endsWith("103"))

  {

  machaîne = ""; 

  digitalWrite(l1,ÉLEVÉ);

  }

sinon si (mystring.endsWith("104"))

  {

   machaîne = ""; 

   digitalWrite(l1,BAS);

  }

sinon si (mystring.endsWith("105"))

  {

  machaîne = ""; 

  digitalWrite(l2,ÉLEVÉ);

  }

sinon si (mystring.endsWith("106"))

  {

   machaîne = ""; 

   digitalWrite(l2,BAS);

  }

sinon si (mystring.endsWith("107"))

  {

   machaîne = ""; 

   digitalWrite(l1,ÉLEVÉ);

   digitalWrite(l2,ÉLEVÉ);

   digitalWrite(f,ÉLEVÉ);

  }

sinon si (mystring.endsWith("108"))

  {

   machaîne = ""; 

   digitalWrite(l1,BAS);

   digitalWrite(l2,BAS);

   digitalWrite(f,BAS);

  }

}

Source : Platon Data Intelligence