- Composants requis
- Interfaçage de l'écran tactile TFT LCD avec Arduino
- Schéma
- Explication du code
- Test du projet Smart Restaurant à l'aide d'Arduino
Aujourd'hui, les systèmes d'automatisation du jour sont partout, que ce soit à la maison, au bureau ou dans toute grande industrie, tous sont équipés de systèmes d'automatisation. Les restaurants / hôtels adoptent également les récentes tendances d'automatisation et installent des robots pour livrer de la nourriture et des tablettes pour prendre les commandes. En utilisant ces cartes de menu numériques comme les tablettes, les clients peuvent facilement sélectionner les éléments. Ces informations seront envoyées à la cuisine du Restaurant et également affichées à l'écran.
Dans ce projet, nous construisons un projet de restaurant intelligent utilisant Arduino, un écran TFT et un module émetteur / récepteur RF 433 MHz. Ici, la section émetteur comprendra Arduino Uno, un écran TFT et un émetteur RF, à l'aide duquel les clients peuvent sélectionner les aliments et passer la commande. Alors que la section récepteur se compose d'un Arduino Uno, d'un module LCD, d'un récepteur RF et d'un buzzer, qui sera installé dans la cuisine du restaurant pour suivre les articles de la commande.
Composants requis
- Arduino Uno (2)
- Émetteur et récepteur RF 433 MHz
- Écran tactile LCD TFT 2,4 "
- Module LCD 16 * 2
- Module I 2 C
Interfaçage de l'écran tactile TFT LCD avec Arduino
L'écran tactile LCD TFT 2,4 "est un écran TFT multicolore compatible Arduino UNO / Mega qui est également livré avec un écran tactile et une prise pour carte SD. Ce module d'affichage TFT dispose d'un rétroéclairage lumineux et d'un écran coloré de 240X320 pixels. Il se compose également d'un RVB individuel contrôle des pixels qui lui donne une bien meilleure résolution que les écrans noir et blanc.
L'interfaçage de l'écran TFT avec Arduino est très simple et expliqué dans le tutoriel précédent. Il vous suffit de monter l'écran TFT sur la carte Arduino Uno, comme indiqué dans l'image ci-dessous.
L'écran LCD TFT est très utile pour créer des applications portables telles que:
- Calculatrice d'écran tactile Arduino
- Verrouillage à code numérique contrôlé par téléphone intelligent à l'aide d'Arduino
- Réveil Arduino SMART
- Bande LED NeoPixel avec Arduino et LCD TFT
Vérifiez également tous les projets basés sur l'écran LCD TFT ici.
Schéma
Le projet de système de commande de menu de restaurant intelligent comprend une section émetteur et récepteur RF. Les côtés émetteur et récepteur utilisent Arduino Uno pour le traitement des données. Nous avons précédemment utilisé les mêmes modules RF 433 MHz avec Arduino pour des projets de construction comme une sonnette sans fil, un robot contrôlé par geste de la main, etc. Le schéma de circuit de la section émetteur et récepteur est donné ci-dessous.
Circuit de section d'émetteur
La section émetteur de ce projet se compose d'un Arduino Uno, d'un émetteur RF et d'un écran TFT. Cette section est utilisée pour commander à partir du menu affiché sur l'écran TFT. Arduino Uno est le cerveau du côté émetteur qui traite toutes les données, et le module émetteur RF est utilisé pour transmettre les données sélectionnées au récepteur. La broche de données du module émetteur RF est connectée à la broche numérique 12 d'Arduino tandis que les broches V CC et GND sont connectées à la broche 5V et GND d'Arduino.
Circuit de section de récepteur
La section récepteur de ce projet se compose d'un Arduino Uno, d'un récepteur RF, d'un module LCD 16 * 2 et d'un module I2C. Le récepteur RF est utilisé pour recevoir les données de la section émetteur et le module LCD est utilisé pour afficher les données reçues. Un buzzer est utilisé pour émettre un son chaque fois qu'une nouvelle commande est passée. La broche de données du récepteur RF est connectée à la broche numérique 11 d'Arduino tandis que la broche V CC et GND est connectée à la broche 5V et GND d'Arduino. La broche positive de Buzzer est connectée à la broche numérique 2 d'Arduino et la broche négative est connectée à la broche GND d'Arduino. Les broches SCL et SDA du module I2C sont connectées aux broches analogiques A5 et A4 Arduino tandis que les broches VCC et GND sont connectées aux broches 5V et GND d'Arduino.
Explication du code
Le code complet pour les côtés de l'émetteur et du récepteur RF pour ce système de commande intelligent dans le restaurant est donné à la fin du document. Toutes les bibliothèques utilisées dans ce projet peuvent être téléchargées à partir des liens indiqués.
- Bibliothèque RadioHead
- Bibliothèque SPFD5408
La bibliothèque RadioHead est utilisée pour le module émetteur / récepteur RF, tandis que la bibliothèque SPFD5408 est utilisée pour l'affichage TFT.
Code de section de l'émetteur:
Démarrez le code en incluant toutes les bibliothèques requises. La bibliothèque RH_ASK.h est utilisée pour la communication entre les modules émetteur et récepteur. SPFD5408_Adafruit_GFX.h est une bibliothèque graphique Core pour l'affichage TFT.
#comprendre
Après cela, créez un objet appelé «pilote» pour RH_ASK .
Pilote RH_ASK;
Ensuite, définissez les valeurs des axes X et Y étalonnées minimum et maximum pour votre écran TFT.
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define TS_MAXY 905
Maintenant, dans la fonction drawHome, dessinez une mise en page pour votre écran TFT. Ici, tft.fillScreen est utilisé pour définir la couleur d'arrière - plan.
La fonction tft.drawRoundRect est utilisée pour créer un rectangle rempli. La syntaxe de la fonction tft.drawRoundRect est donnée ci-dessous:
tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, rayon int16_t, couleur uint16_t)
Où:
x0 = coordonnée X du point de départ du rectangle
y0 = coordonnée Y du point de départ du rectangle
w = Largeur du rectangulaire
h = Hauteur du Rectangulaire
rayon = rayon du coin arrondi
color = Couleur du Rect.
La fonction tft.fillRoundRect est utilisée pour dessiner un rectangle rempli. La syntaxe de lafonction tft.fillRoundRect est donnée ci-dessous:
tft.fillRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, rayon int16_t, couleur uint16_t) tft.fillScreen (BLANC); tft.drawRoundRect (0, 0, 319, 240, 8, BLANC); // Bordure de page tft.fillRoundRect (30, 40, 100, 40, 8, GOLD); tft.drawRoundRect (30, 40, 100, 40, 8, BLANC); // Dish1 tft.fillRoundRect (30, 90, 100, 40, 8, OR); tft.drawRoundRect (30, 90, 100, 40, 8, BLANC); // Dish2 tft.fillRoundRect (30, 140, 100, 40, 8, OR); // Dish3 tft.drawRoundRect (30, 140, 100, 40, 8, BLANC);
Après avoir créé les boutons sur l'écran TFT, affichez maintenant le texte sur les boutons. tft.setCursor est utilisé pour définir le curseur à partir de l'endroit où vous voulez commencer le texte.
tft.setCursor (60, 0); tft.setTextSize (3); tft.setTextColor (LIME); tft.print ("Menu"); tft.setTextSize (2); tft.setTextColor (BLANC); tft.setCursor (37, 47); tft.print ("Dish1");
À l'intérieur de la fonction de transmission d' annulation, envoyez les données au récepteur toutes les 1 seconde.
void transmettre () {driver.send ((uint8_t *) msg, strlen (msg)); driver.waitPacketSent (); retard (1000); }
Dans la fonction de boucle void , lisez la valeur Raw ADC à l'aide de la fonction ts.getPoint.
TSPoint p = ts.getPoint ();
Utilisez maintenant la fonction de carte pour convertir les valeurs ADC brutes en coordonnées de pixels.
px = carte (px, TS_MAXX, TS_MINX, 0, 320); py = carte (py, TS_MAXY, TS_MINY, 0, 240);
Après avoir converti les valeurs Raw ADC en coordonnées de pixels, entrez les coordonnées de pixels pour le bouton Dish1 et si quelqu'un touche l'écran entre cette zone, envoyez le message au récepteur.
if (px> 180 && px <280 && py> 190 && py <230 && pz> MINPRESSURE && pz <MAXPRESSURE) {Serial.println ("Dish1"); msg = "Dish1"; transmettre(); tft.fillRoundRect (30, 40, 100, 40, 8, BLANC); retard (70); tft.fillRoundRect (30, 40, 100, 40, 8, OR); tft.drawRoundRect (30, 40, 100, 40, 8, BLANC); tft.setCursor (37, 47); tft.println ("Dish1"); retard (70); }
Suivez la même procédure pour tous les autres boutons.
Code de section du récepteur
Pour le code de section du récepteur RF, incluez les bibliothèques du récepteur RF et du module LCD. Incluez également la bibliothèque SPI.h pour établir une communication SPI entre Arduino et le récepteur RF.
#comprendre
À l'intérieur de la fonction de boucle vide , vérifiez en permanence les messages transmis. Et si le module récepteur reçoit un message, affichez le message sur le module LCD et émettez un bip.
if (driver.recv (buf, & buflen)) // Non bloquant {int i; digitalWrite (buzzer, HIGH); retard (1000); digitalWrite (buzzer, LOW);. lcd.print ("T1:"); lcd.print ((char *) buf);
Test du projet Smart Restaurant à l'aide d'Arduino
Après avoir connecté tout le matériel et téléchargé le code pour la section émetteur et récepteur, il est maintenant temps de tester le projet. Pour tester le projet, appuyez sur un bouton sur l'écran TFT, il doit afficher le nom de la parabole avec le numéro de table qui est T1 sur le module LCD connecté au côté récepteur. Si l'écran LCD du côté récepteur n'affiche rien, vérifiez si votre écran TFT fonctionne ou non.
C'est ainsi que vous pouvez créer un projet de système de commande de menus de restaurant intelligent à l'aide d'Arduino et d'un écran TFT. Vous pouvez également modifier l'orientation de l'écran pour ajouter d'autres boutons.
Une vidéo de travail avec le code complet est donnée ci-dessous.