- Componenti richiesti
- Interfacciamento dello schermo tattile LCD TFT con Arduino
- Schema elettrico
- Spiegazione del codice
- Testare il progetto Smart Restaurant utilizzando Arduino
Oggi i sistemi di automazione del giorno sono ovunque, sia che si tratti di casa, ufficio o qualsiasi grande industria, tutti sono dotati di sistemi di automazione. Anche i ristoranti / hotel stanno adottando le recenti tendenze dell'automazione e installano robot per consegnare cibo e tablet per prendere ordini. Utilizzando queste schede menu digitali come i tablet, i clienti possono selezionare facilmente gli elementi. Queste informazioni verranno inviate alla cucina del Ristorante e visualizzate anche sul display.
In questo progetto, stiamo costruendo un progetto di ristorante intelligente utilizzando Arduino, display TFT e modulo trasmettitore / ricevitore RF a 433 MHz. Qui la sezione del trasmettitore sarà composta da Arduino Uno, display TFT e un trasmettitore RF, utilizzando il quale i clienti possono selezionare gli alimenti ed effettuare l'ordine. Mentre la sezione del ricevitore è composta da un Arduino Uno, un modulo LCD, un ricevitore RF e un Buzzer, che verrà installato nella cucina del ristorante per tracciare gli articoli dell'ordine.
Componenti richiesti
- Arduino Uno (2)
- Trasmettitore e ricevitore RF 433 MHz
- Schermo tattile LCD TFT da 2,4 "
- Modulo LCD 16 * 2
- Modulo I 2 C.
Interfacciamento dello schermo tattile LCD TFT con Arduino
Lo schermo tattile LCD TFT da 2,4 "è un display TFT multicolore compatibile con Arduino UNO / Mega che viene fornito con touch-screen e presa per scheda SD. Questo modulo display TFT ha una retroilluminazione luminosa e un display colorato da 240 x 320 pixel. È composto anche da singoli RGB controllo dei pixel che gli conferisce una risoluzione molto migliore rispetto ai display in bianco e nero.
L'interfacciamento del display TFT con Arduino è molto semplice e spiegato nel tutorial precedente. Hai solo bisogno di montare il display TFT sulla scheda Arduino Uno, come mostrato nell'immagine sottostante.
TFT LCD è molto utile nella creazione di applicazioni portatili come:
- Calcolatrice touch screen Arduino
- Serratura a codice digitale controllata da smartphone utilizzando Arduino
- Sveglia Arduino SMART
- Striscia LED NeoPixel con Arduino e LCD TFT
Inoltre, controlla qui tutti i progetti basati su TFT LCD.
Schema elettrico
Il progetto Smart Restaurant Menu Ordering System consiste nella sezione trasmettitore e ricevitore RF. Sia il lato trasmettitore che quello ricevitore utilizzano Arduino Uno per l'elaborazione dei dati. In precedenza abbiamo utilizzato gli stessi moduli RF a 433 MHz con Arduino per progetti di costruzione come un campanello senza fili, un robot controllato con gesti delle mani, ecc. Di seguito è riportato lo schema del circuito per la sezione trasmettitore e ricevitore.
Circuito sezione trasmettitore
La sezione del trasmettitore di questo progetto è costituita da un Arduino Uno, un trasmettitore RF e uno schermo per display TFT. Questa sezione viene utilizzata per ordinare dal menu visualizzato sul display TFT. Arduino Uno è il cervello del lato trasmettitore che elabora tutti i dati e il modulo trasmettitore RF viene utilizzato per trasmettere i dati selezionati al ricevitore. Il pin dati del modulo trasmettitore RF è collegato al pin digitale 12 di Arduino mentre i pin V CC e GND sono collegati al pin 5V e GND di Arduino.
Circuito sezione ricevitore
La sezione ricevitore di questo progetto è costituita da un Arduino Uno, un ricevitore RF, un modulo LCD 16 * 2 e un modulo I2C. Il ricevitore RF viene utilizzato per ricevere i dati dalla sezione del trasmettitore e il modulo LCD viene utilizzato per visualizzare i dati ricevuti. Un cicalino viene utilizzato per emettere un suono ogni volta che viene effettuato un nuovo ordine. Il pin dati del ricevitore RF è collegato al pin digitale 11 di Arduino mentre il pin V CC e GND è collegato al pin 5V e GND di Arduino. Il pin positivo di Buzzer è collegato al pin digitale 2 di Arduino e il pin negativo è collegato al pin GND di Arduino. I pin SCL e SDA del modulo I2C sono collegati ai pin analogici A5 e A4 di Arduino mentre i pin VCC e GND sono collegati ai pin 5V e GND di Arduino.
Spiegazione del codice
Il codice completo per i lati del trasmettitore e del ricevitore RF per questo sistema di ordinazione intelligente nel ristorante è fornito alla fine del documento. Tutte le librerie utilizzate in questo progetto possono essere scaricate dai link indicati.
- Libreria RadioHead
- Libreria SPFD5408
La libreria RadioHead viene utilizzata per il modulo trasmettitore / ricevitore RF, mentre la libreria SPFD5408 viene utilizzata per il display TFT.
Codice sezione trasmettitore:
Avvia il codice includendo tutte le librerie richieste. La libreria RH_ASK.h viene utilizzata per la comunicazione tra i moduli trasmettitore e ricevitore. SPFD5408_Adafruit_GFX.h è una libreria grafica di base per display TFT.
#includere
Successivamente, crea un oggetto chiamato "driver" per RH_ASK .
Driver RH_ASK;
Successivamente, definire i valori minimi e massimi calibrati degli assi X e Y per il display TFT.
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define TS_MAXY 905
Ora all'interno della funzione drawHome disegna un layout per il tuo schermo TFT. Qui tft.fillScreen viene utilizzato per impostare il colore di sfondo.
La funzione tft.drawRoundRect viene utilizzata per creare un rettangolo pieno. La sintassi per la funzione tft.drawRoundRect è fornita di seguito:
tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t raggio, uint16_t colore)
Dove:
x0 = coordinata X del punto iniziale del rettangolare
y0 = coordinata Y del punto iniziale del rettangolare
w = Larghezza del rettangolare
h = Altezza del Rettangolare
raggio = Raggio dell'angolo arrotondato
color = Colore del rettangolo.
La funzione tft.fillRoundRect viene utilizzata per disegnare un rettangolo pieno. Di seguito viene fornita lasintassi dellafunzione tft.fillRoundRect :
tft.fillRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t raggio, uint16_t color) tft.fillScreen (BIANCO); tft.drawRoundRect (0, 0, 319, 240, 8, WHITE); // Bordo della pagina tft.fillRoundRect (30, 40, 100, 40, 8, GOLD); tft.drawRoundRect (30, 40, 100, 40, 8, WHITE); // Dish1 tft.fillRoundRect (30, 90, 100, 40, 8, GOLD); tft.drawRoundRect (30, 90, 100, 40, 8, WHITE); // Dish2 tft.fillRoundRect (30, 140, 100, 40, 8, GOLD); // Dish3 tft.drawRoundRect (30, 140, 100, 40, 8, WHITE);
Dopo aver creato i pulsanti sullo schermo TFT, ora visualizza il testo sui pulsanti. tft.setCursor viene utilizzato per impostare il cursore da dove si desidera iniziare il testo.
tft.setCursor (60, 0); tft.setTextSize (3); tft.setTextColor (LIME); tft.print ("Menu"); tft.setTextSize (2); tft.setTextColor (BIANCO); tft.setCursor (37, 47); tft.print ("Dish1");
All'interno della funzione di trasmissione del vuoto , inviare i dati al lato ricevitore ogni 1 secondo.
void trasmissione () {driver.send ((uint8_t *) msg, strlen (msg)); driver.waitPacketSent (); ritardo (1000); }
All'interno della funzione void loop , leggi il valore Raw ADC utilizzando la funzione ts.getPoint.
TSPoint p = ts.getPoint ();
Ora usa la funzione map per convertire i valori Raw ADC in Pixel Coordinates.
px = mappa (px, TS_MAXX, TS_MINX, 0, 320); py = mappa (py, TS_MAXY, TS_MINY, 0, 240);
Dopo aver convertito i valori Raw ADC in coordinate pixel, inserisci le coordinate pixel per il pulsante Dish1 e se qualcuno tocca lo schermo tra quest'area invia il messaggio al destinatario.
if (px> 180 && px <280 && py> 190 && py <230 && pz> MINPRESSURE && pz <MAXPRESSURE) {Serial.println ("Dish1"); msg = "Dish1"; trasmettere(); tft.fillRoundRect (30, 40, 100, 40, 8, BIANCO); ritardo (70); tft.fillRoundRect (30, 40, 100, 40, 8, GOLD); tft.drawRoundRect (30, 40, 100, 40, 8, WHITE); tft.setCursor (37, 47); tft.println ("Dish1"); ritardo (70); }
Seguire la stessa procedura per tutti gli altri pulsanti.
Codice sezione ricevitore
Per il codice della sezione ricevitore RF, includere le librerie per ricevitore RF e modulo LCD. Includere anche la libreria SPI.h per stabilire una comunicazione SPI tra Arduino e il ricevitore RF.
#includere
All'interno della funzione void loop , controlla continuamente i messaggi trasmessi. E se il modulo ricevitore riceve un messaggio, visualizza il messaggio sul modulo LCD ed emette un segnale acustico.
if (driver.recv (buf, & buflen)) // Non bloccante {int i; digitalWrite (buzzer, HIGH); ritardo (1000); digitalWrite (buzzer, LOW);. lcd.print ("T1:"); lcd.print ((char *) buf);
Testare il progetto Smart Restaurant utilizzando Arduino
Dopo aver collegato tutto l'hardware e caricato il codice sia per la sezione trasmettitore che per quella ricevente, ora è il momento di testare il progetto. Per testare il progetto, premere un pulsante sul display TFT, dovrebbe visualizzare il nome della parabola con il numero della tabella che è T1 sul modulo LCD collegato al lato del ricevitore. Se il display LCD sul lato del ricevitore non visualizza nulla, controlla se lo schermo TFT funziona o meno.
Ecco come creare un progetto di sistema di ordinazione menu ristorante intelligente utilizzando Arduino e display TFT. È inoltre possibile modificare l'orientamento dello schermo per aggiungere altri pulsanti.
Di seguito viene fornito un video funzionante con il codice completo.