Ahora los sistemas de automatización del día están en todas partes, ya sea en su hogar, oficina o cualquier gran industria, todos están equipados con sistemas de automatización. Los restaurantes / hoteles también están adoptando las últimas tendencias de automatización y están instalando robots para entregar alimentos y tabletas para tomar pedidos. Usando estas tarjetas de menú digital 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 RF de 433MHz. 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 timbre, que se instalarán en la cocina del restaurante para rastrear los artículos pedidos.

Componentes requeridos

  • Arduino Uno (2)
  • Transmisor y receptor de RF de 433 MHz
  • Pantalla táctil LCD TFT de 2.4 «
  • Módulo LCD 16 * 2
  • 2 C Módulo

Interfaz de pantalla táctil TFT LCD con Arduino

La pantalla táctil TFT LCD de 2.4 «es una pantalla TFT multicolor compatible con Arduino UNO / Mega que también viene con pantalla táctil y toma de tarjeta SD. Este módulo de pantalla TFT tiene una luz de fondo brillante y una pantalla colorida 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.

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 usan Arduino Uno para el procesamiento de datos.

Transmisor Sección Circuito 

La sección del transmisor de este proyecto consiste en un Arduino Uno, un transmisor de RF y un protector de pantalla TFT. Esta sección se utiliza para ordenar 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 un pin 5V y GND de Arduino.

Circuito de sección del receptor 

La sección del receptor de este proyecto consta de un Arduino Uno, receptor de RF, módulo LCD 16 * 2 y 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 emitir un sonido cada vez que se realiza un nuevo pedido. El pin de datos del receptor 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

Todas las bibliotecas utilizadas en este proyecto se pueden descargar desde los enlaces proporcionados.

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 sección del transmisor: 

Comience el código incluyendo todas las bibliotecas requeridas. 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 visualización TFT.

#include <RH_ASK.h>
#include <SPI.h>
#include <SPFD5408_Adafruit_GFX.h>   
#include <SPFD5408_Adafruit_TFTLCD.h>
#include <SPFD5408_TouchScreen.h>

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 usa para crear un rectángulo lleno. La sintaxis para la función tft.drawRoundRect se da 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 partida del rectangular

y0 = coordenada Y del punto inicial de rectangular

w = Ancho del rectangular

h = altura del rectángulo

radio = Radio de la esquina redonda

color = Color de la rect.

La función tft.fillRoundRect se utiliza para dibujar un rectángulo lleno. La sintaxis de lafunción tft.fillRoundRect se da 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, ORO);
  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); // plato2
  tft.fillRoundRect (30, 140, 100, 40, 8, ORO); // plato3
  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 establecer el cursor desde donde desea comenzar 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 ("Dish1");

Dentro de la función de transmisión vacía , envíe los datos al lado del receptor cada 1 segundo.

nulo transmitir ()
{ 
  driver.send ((uint8_t *) mensaje, strlen (mensaje));
  driver.waitPacketSent ();
  retraso (1000);
  }

Dentro de la función de bucle vacío , lea el valor ADC sin formato utilizando la función ts.getPoint.

TSPoint p = ts.getPoint ();

Ahora use la función de mapa para convertir los valores de ADC sin formato 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 formato 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 ("Dish1");
        msg = "Dish1";
        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 ("Dish1");
        retraso (70);
        }

Siga el mismo procedimiento para todos los demás botones.

Código de sección del receptor 

Para el código de sección del receptor de RF, incluya las bibliotecas para el receptor de RF y el módulo LCD. También incluya la biblioteca SPI.h para establecer una comunicación SPI entre Arduino y el receptor de RF.

#include <RH_ASK.h>
#include <SPI.h> // No se usa realmente pero es necesario compilar
#include <LiquidCrystal_I2C.h>

Dentro de la función de bucle vacío , verifique continuamente los mensajes transmitidos. Y si el módulo receptor recibe un mensaje, visualice 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);

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 tabla 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 funciona o no.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *