- Components necessaris
- Interfície de pantalla tàctil TFT LCD amb Arduino
- Esquema de connexions
- Explicació del codi
- Prova del Projecte Smart Restaurant mitjançant Arduino
Ara els sistemes d’automatització del dia són a tot arreu, ja sigui a casa, oficina o qualsevol altra gran indústria, tots estan equipats amb sistemes d’automatització. Els restaurants / hotels també adopten tendències recents d'automatització i instal·len robots per lliurar aliments i tauletes per rebre comandes. Mitjançant aquestes targetes de menú digitals com les tauletes, els clients poden seleccionar fàcilment els articles. Aquesta informació s’enviarà a la cuina del restaurant i també es mostrarà a la pantalla.
En aquest projecte, estem construint un Smart Restaurant Project mitjançant Arduino, pantalla TFT i mòdul de transmissor / receptor RF de 433 MHz. Aquí, la secció del transmissor estarà formada per Arduino Uno, pantalla TFT i un transmissor de RF, amb el qual els clients poden seleccionar els aliments i fer la comanda. Mentre que la secció del receptor consta d’un Arduino Uno, un mòdul LCD, un receptor de RF i un buzzer, que s’instal·laran a la cuina del restaurant per fer un seguiment dels articles de la comanda.
Components necessaris
- Arduino Uno (2)
- Transmissor i receptor de RF de 433 MHz
- Pantalla tàctil LCD TFT de 2,4 "
- Mòdul LCD de 16 * 2
- Mòdul I 2 C.
Interfície de pantalla tàctil TFT LCD amb Arduino
La pantalla tàctil LCD TFT de 2,4 "és una pantalla TFT compatible Arduino UNO / Mega multicolor que també inclou pantalla tàctil i sòcol per a targeta SD. Aquest mòdul de pantalla TFT té una retroiluminació brillant i una pantalla colorida de 240X320 píxels. També consta de RGB individual control de píxels que li proporciona una resolució molt millor que les pantalles en blanc i negre.
La interfície de la pantalla TFT amb Arduino és molt senzilla i s’explica al tutorial anterior. Només cal muntar la pantalla TFT sobre la placa Arduino Uno, com es mostra a la imatge següent.

El TFT LCD és molt útil per crear aplicacions portàtils com:
- Calculadora de pantalla tàctil Arduino
- Bloqueig de codi digital controlat per telèfon intel·ligent mitjançant Arduino
- Rellotge despertador Arduino
- Cinta LED NeoPixel amb Arduino i TFT LCD
A més, consulteu aquí tots els projectes basats en TFT LCD.
Esquema de connexions
El projecte Smart Restaurant Menu Order System System consisteix en una secció de transmissor i receptor de RF. Tant el transmissor com el receptor utilitzen Arduino Uno per al processament de dades. Prèviament, hem utilitzat els mateixos mòduls de RF de 433 MHz amb Arduino per a projectes de construcció com un timbre sense fils, un robot controlat per gestos manuals, etc.
Circuit de secció de transmissor
La secció del transmissor d’aquest projecte consisteix en un Arduino Uno, un transmissor de RF i un blindatge de pantalla TFT. Aquesta secció s'utilitza per fer comandes des del menú que es mostra a la pantalla TFT. Arduino Uno és el cervell del costat del transmissor que processa totes les dades i el mòdul transmissor de RF s’utilitza per transmetre les dades seleccionades al receptor. El pin de dades del mòdul transmissor de RF està connectat al pin digital 12 d’Arduino mentre que els pins V CC i GND estan connectats al pin 5V i GND d’Arduino.


Circuit de la secció del receptor
La secció de receptors d’aquest projecte consta d’un Arduino Uno, un receptor de RF, un mòdul LCD de 16 * 2 i un mòdul I2C. El receptor de RF s’utilitza per rebre les dades de la secció del transmissor i el mòdul LCD s’utilitza per mostrar les dades rebudes. Un timbre s’utilitza per fer un so sempre que es fa una nova comanda. El pin de dades del receptor de RF està connectat al pin digital 11 d’Arduino mentre que el pin V CC i GND està connectat al pin 5V i GND d’Arduino. El pin positiu de Buzzer està connectat al pin digital 2 d’Arduino i el pin negatiu al pin GND d’Arduino. Els pins SCL i SDA del mòdul I2C estan connectats als pins analògics A5 i A4 Arduino, mentre que els pins VCC i GND estan connectats als pins 5V i GND d’Arduino.


Explicació del codi
Al final del document es dóna un codi complet per a les cares del transmissor i del receptor de RF d’aquest sistema de comandes intel·ligents al restaurant. Totes les biblioteques utilitzades en aquest projecte es poden descarregar des dels enllaços indicats.
- Biblioteca RadioHead
- Biblioteca SPFD5408
La biblioteca RadioHead s'utilitza per al mòdul transmissor / receptor de RF, mentre que la biblioteca SPFD5408 s'utilitza per a la visualització TFT.
Codi de la secció del transmissor:
Inicieu el codi incloent totes les biblioteques necessàries. La biblioteca RH_ASK.h s’utilitza per a la comunicació entre mòduls transmissor i receptor. SPFD5408_Adafruit_GFX.h és una biblioteca de gràfics bàsics per a la visualització TFT.
#incloure
Després, creeu un objecte anomenat "controlador" per a RH_ASK .
Controlador RH_ASK;
Després definiu els valors calibrats mínims i màxims de l'eix X i Y per a la pantalla TFT.
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define TS_MAXY 905
Ara dins de la funció drawHome dibuixa un disseny per a la pantalla TFT. Aquí s’utilitza tft.fillScreen per establir el color de fons.
La funció tft.drawRoundRect s’utilitza per crear un rectangle ple. A continuació es mostra la sintaxi per a la funció tft.drawRoundRect :
tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radi, uint16_t color)
On:
x0 = X coordenada del punt inicial de rectangular
y0 = Coordenada Y del punt inicial del rectangle
w = Amplada del rectangle
h = Alçada del Rectangular
radi = radi de la cantonada rodona
color = Color de la recta.
La funció tft.fillRoundRect s’utilitza per dibuixar un rectangle ple. A continuació es mostra la sintaxi de lafunció tft.fillRoundRect :
tft.fillRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radi, uint16_t color) tft.fillScreen (BLANC); tft.drawRoundRect (0, 0, 319, 240, 8, BLANC); // Vora de la pàgina tft.fillRoundRect (30, 40, 100, 40, 8, GOLD); tft.drawRoundRect (30, 40, 100, 40, 8, BLANC); // Dish1 tft.fillRoundRect (30, 90, 100, 40, 8, GOLD); tft.drawRoundRect (30, 90, 100, 40, 8, BLANC); // Dish2 tft.fillRoundRect (30, 140, 100, 40, 8, GOLD); // Dish3 tft.drawRoundRect (30, 140, 100, 40, 8, BLANC);
Després de crear els botons a la pantalla TFT, ara mostreu el text als botons. tft.setCursor s’utilitza per configurar el cursor des d’on voleu iniciar el text.
tft.setCursor (60, 0); tft.setTextSize (3); tft.setTextColor (LIME); tft.print ("Menú"); tft.setTextSize (2); tft.setTextColor (BLANC); tft.setCursor (37, 47); tft.print ("Dish1");
Dins de la funció de transmissió buida , envieu les dades al receptor cada 1 segon.
void transmit () {driver.send ((uint8_t *) msg, strlen (msg)); driver.waitPacketSent (); retard (1000); }
Dins de la funció de bucle buit , llegiu el valor Raw ADC mitjançant la funció ts.getPoint.
TSPoint p = ts.getPoint ();
Ara utilitzeu la funció de mapa per convertir els valors Raw ADC a coordenades de píxels.
px = mapa (px, TS_MAXX, TS_MINX, 0, 320); py = mapa (py, TS_MAXY, TS_MINY, 0, 240);
Després de convertir els valors Raw ADC en coordenades de píxels, introduïu les coordenades de píxel del botó Dish1 i si algú toca la pantalla entre aquesta àrea, envieu el missatge al costat del receptor.
if (px> 180 && px <280 && py> 190 && py <230 && pz> MINPRESSURE && pz <MAXPRESSURE) {Serial.println ("Dish1"); msg = "Dish1"; transmetre (); tft.fillRoundRect (30, 40, 100, 40, 8, BLANC); retard (70); tft.fillRoundRect (30, 40, 100, 40, 8, GOLD); tft.drawRoundRect (30, 40, 100, 40, 8, BLANC); tft.setCursor (37, 47); tft.println ("Plat1"); retard (70); }
Seguiu el mateix procediment per a la resta de botons.
Codi de la secció del receptor
Per al codi de la secció del receptor de RF, incloeu les biblioteques del receptor de RF i del mòdul LCD. Incloeu també la biblioteca SPI.h per establir una comunicació SPI entre Arduino i el receptor de RF.
#incloure
Dins de la funció de bucle buit , comproveu contínuament si hi ha missatges transmesos. I si el mòdul receptor rep un missatge, mostreu-lo al mòdul LCD i feu un so.
if (driver.recv (buf, & buflen)) // No bloqueja {int i; digitalWrite (buzzer, HIGH); retard (1000); digitalWrite (brunzidor, BAIX);. lcd.print ("T1:"); lcd.print ((char *) buf);
Prova del Projecte Smart Restaurant mitjançant Arduino
Després de connectar tot el maquinari i carregar el codi tant de la secció del transmissor com del receptor, ara toca provar el projecte. Per provar el projecte, premeu un botó a la pantalla TFT, hauria de mostrar el nom de la placa amb el número de taula que és T1 al mòdul LCD connectat al costat del receptor. Si la pantalla LCD del receptor no mostra res, comproveu si la pantalla TFT funciona o no.
Així és com podeu crear un projecte de sistema de comanda de menús de restaurants intel·ligents mitjançant pantalla Arduino i TFT. També podeu canviar l'orientació de la pantalla per afegir més botons.
A continuació es mostra un vídeo de treball amb el codi complet.
