- Componentes requeridos
- Interfaz de pantalla táctil TFT LCD con Arduino
- Diagrama de circuito
- Explicación del código
- Probando el proyecto de restaurante inteligente usando Arduino
Los sistemas de automatización actuales están en todas partes, ya sea en el hogar, la oficina o cualquier gran industria, todos están equipados con sistemas de automatización. Los restaurantes / hoteles también están adoptando tendencias de automatización recientes y están instalando robots para entregar alimentos y tabletas para recibir pedidos. Con estas tarjetas de menú digitales como tabletas, los clientes pueden seleccionar fácilmente los elementos. Esta información se enviará a la cocina del Restaurante y también se mostrará en la pantalla.
En este proyecto, estamos construyendo un proyecto de restaurante inteligente utilizando Arduino, pantalla TFT y módulo transmisor / receptor de RF de 433 MHz. Aquí, la sección del transmisor consistirá en Arduino Uno, pantalla TFT y un transmisor de RF, mediante el cual los clientes pueden seleccionar los alimentos y realizar el pedido. Mientras que la sección del receptor consta de un Arduino Uno, un módulo LCD, un receptor de RF y un zumbador, que se instalará en la cocina del restaurante para rastrear los artículos del pedido.
Componentes requeridos
- Arduino Uno (2)
- Transmisor y receptor de RF de 433 MHz
- Pantalla táctil TFT LCD de 2,4 "
- Módulo LCD 16 * 2
- Módulo I 2 C
Interfaz de pantalla táctil TFT LCD con Arduino
El protector táctil LCD TFT de 2,4 "es una pantalla TFT multicolor compatible con Arduino UNO / Mega que también viene con pantalla táctil y conector para tarjeta SD. Este módulo de pantalla TFT tiene una luz de fondo brillante y una colorida pantalla de 240X320 píxeles. También consta de RGB individual control de píxeles que le da una resolución mucho mejor que las pantallas en blanco y negro.
La interfaz de la pantalla TFT con Arduino es muy simple y se explica en el tutorial anterior. Solo necesita montar la pantalla TFT sobre la placa Arduino Uno, como se muestra en la imagen de abajo.
TFT LCD es muy útil para crear aplicaciones portátiles como:
- Calculadora de pantalla táctil Arduino
- Bloqueo de código digital controlado por teléfono inteligente usando Arduino
- Despertador Arduino SMART
- Tira de LED NeoPixel con Arduino y TFT LCD
Además, consulte todos los proyectos basados en TFT LCD aquí.
Diagrama de circuito
El proyecto Smart Restaurant Menu Ordering System consta de una sección de transmisor y receptor de RF. Tanto el lado del transmisor como el del receptor utilizan Arduino Uno para el procesamiento de datos. Anteriormente usamos los mismos módulos de RF de 433 MHz con Arduino para proyectos de construcción como un timbre inalámbrico, un robot controlado por gestos manuales, etc. El diagrama de circuito para la sección del transmisor y el receptor se muestra a continuación.
Circuito de la sección del transmisor
La sección del transmisor de este proyecto consta de un Arduino Uno, un transmisor de RF y un protector de pantalla TFT. Esta sección se utiliza para realizar pedidos desde el menú que se muestra en la pantalla TFT. Arduino Uno es el cerebro del lado del transmisor que procesa todos los datos, y el módulo transmisor de RF se utiliza para transmitir los datos seleccionados al receptor. El pin de datos del módulo transmisor de RF está conectado al pin digital 12 de Arduino, mientras que los pines V CC y GND están conectados a 5V y al pin GND de Arduino.
Circuito de la sección del receptor
La sección del receptor de este proyecto consta de un Arduino Uno, un receptor de RF, un módulo LCD de 16 * 2 y un módulo I2C. El receptor de RF se usa para recibir los datos de la sección del transmisor y el módulo LCD se usa para mostrar los datos recibidos. Se utiliza un timbre para hacer un sonido cada vez que se realiza un nuevo pedido. El pin de datos del receptor de RF está conectado al pin digital 11 de Arduino, mientras que el pin V CC y GND está conectado al pin 5V y GND de Arduino. El pin positivo de Buzzer está conectado al pin digital 2 de Arduino, y el pin negativo está conectado al pin GND de Arduino. Los pines SCL y SDA del módulo I2C están conectados a los pines analógicos A5 y A4 Arduino, mientras que los pines VCC y GND están conectados a los pines 5V y GND de Arduino.
Explicación del código
El código completo para los lados del transmisor y receptor de RF para este sistema de pedidos inteligentes en el restaurante se proporciona al final del documento. Todas las bibliotecas utilizadas en este proyecto se pueden descargar desde los enlaces dados.
- Biblioteca RadioHead
- Biblioteca SPFD5408
La biblioteca RadioHead se usa para el módulo transmisor / receptor de RF, mientras que la biblioteca SPFD5408 se usa para la pantalla TFT.
Código de la sección del transmisor:
Inicie el código incluyendo todas las bibliotecas necesarias. La biblioteca RH_ASK.h se utiliza para la comunicación entre los módulos transmisor y receptor. SPFD5408_Adafruit_GFX.h es una biblioteca de gráficos Core para pantallas TFT.
#incluir
Después de eso, cree un objeto llamado 'controlador' para RH_ASK .
Controlador RH_ASK;
Después de eso, defina los valores mínimos y máximos calibrados de los ejes X e Y para su pantalla TFT.
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define TS_MAXY 905
Ahora, dentro de la función drawHome, dibuje un diseño para su pantalla TFT. Aquí tft.fillScreen se usa para establecer el color de fondo.
La función tft.drawRoundRect se utiliza para crear un rectángulo relleno. La sintaxis de la función tft.drawRoundRect se proporciona a continuación:
tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radio, uint16_t color)
Dónde:
x0 = Coordenada X del punto de inicio de rectangular
y0 = Coordenada Y del punto inicial de rectangular
w = Ancho de la rectangular
h = Altura del Rectangular
radio = Radio de la esquina redonda
color = Color del Rect.
La función tft.fillRoundRect se usa para dibujar un rectángulo relleno. La sintaxis de lafunción tft.fillRoundRect se proporciona a continuación:
tft.fillRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radio, uint16_t color) tft.fillScreen (BLANCO); tft.drawRoundRect (0, 0, 319, 240, 8, BLANCO); // Borde de página tft.fillRoundRect (30, 40, 100, 40, 8, GOLD); tft.drawRoundRect (30, 40, 100, 40, 8, BLANCO); // Plato1 tft.fillRoundRect (30, 90, 100, 40, 8, ORO); tft.drawRoundRect (30, 90, 100, 40, 8, BLANCO); // Dish2 tft.fillRoundRect (30, 140, 100, 40, 8, ORO); // Dish3 tft.drawRoundRect (30, 140, 100, 40, 8, BLANCO);
Después de crear los botones en la pantalla TFT, ahora muestre el texto en los botones. tft.setCursor se usa para colocar el cursor desde donde desea iniciar el texto.
tft.setCursor (60, 0); tft.setTextSize (3); tft.setTextColor (LIME); tft.print ("Menú"); tft.setTextSize (2); tft.setTextColor (BLANCO); tft.setCursor (37, 47); tft.print ("Plato1");
Dentro de la función de transmisión vacía , envíe los datos al lado del receptor cada 1 segundo.
void transmit () {driver.send ((uint8_t *) msg, strlen (msg)); driver.waitPacketSent (); retraso (1000); }
Dentro de la función de bucle void , lea el valor de ADC sin procesar utilizando la función ts.getPoint.
TSPoint p = ts.getPoint ();
Ahora use la función de mapa para convertir los valores de ADC sin procesar en coordenadas de píxeles.
px = mapa (px, TS_MAXX, TS_MINX, 0, 320); py = mapa (py, TS_MAXY, TS_MINY, 0, 240);
Después de convertir los valores de ADC sin procesar en coordenadas de píxeles, ingrese las coordenadas de píxeles para el botón Dish1 y si alguien toca la pantalla entre esta área, envíe el mensaje al lado del receptor.
if (px> 180 && px <280 && py> 190 && py <230 && pz> MINPRESSURE && pz <MAXPRESSURE) {Serial.println ("Plato1"); msg = "Plato1"; transmitir(); tft.fillRoundRect (30, 40, 100, 40, 8, BLANCO); retraso (70); tft.fillRoundRect (30, 40, 100, 40, 8, ORO); tft.drawRoundRect (30, 40, 100, 40, 8, BLANCO); tft.setCursor (37, 47); tft.println ("Plato1"); retraso (70); }
Siga el mismo procedimiento para todos los demás botones.
Código de sección del receptor
Para el código de la sección del receptor de RF, incluya las bibliotecas para el receptor de RF y el módulo LCD. También incluye la biblioteca SPI.h para establecer una comunicación SPI entre Arduino y el receptor de RF.
#incluir
Dentro de la función de bucle vacío , compruebe continuamente los mensajes transmitidos. Y si el módulo receptor recibe un mensaje, muestre el mensaje en el módulo LCD y emita un pitido.
if (driver.recv (buf, & buflen)) // Sin bloqueo {int i; digitalWrite (zumbador, ALTO); retraso (1000); digitalWrite (zumbador, BAJO);. lcd.print ("T1:"); lcd.print ((char *) buf);
Probando el proyecto de restaurante inteligente usando Arduino
Después de conectar todo el hardware y cargar el código tanto para la sección del transmisor como para el receptor, ahora es el momento de probar el proyecto. Para probar el proyecto, presione un botón en la pantalla TFT, debe mostrar el nombre del plato con el número de mesa que es T1 en el módulo LCD conectado al lado del receptor. Si la pantalla LCD del lado del receptor no muestra nada, verifique si su pantalla TFT está funcionando o no.
Así es como puede crear un proyecto de Sistema de pedido de menú de restaurante inteligente utilizando Arduino y pantalla TFT. También puede cambiar la orientación de la pantalla para agregar más botones.
A continuación se muestra un video de trabajo con el código completo.