- Componentes necessários
- Interface de proteção de toque TFT LCD com Arduino
- Diagrama de circuito
- Explicação do código
- Testando o projeto do restaurante inteligente usando Arduino
Hoje, os sistemas de automação estão em toda parte, seja em casa, no escritório ou em qualquer grande indústria, todos equipados com sistemas de automação. Restaurantes / hotéis também estão adotando tendências de automação recentes e estão instalando robôs para entregar alimentos e tablets para receber pedidos. Usando esses cartões de menu digital como tablets, os clientes podem selecionar facilmente os itens. Estas informações serão enviadas para a cozinha do Restaurante e também apresentadas no visor.
Neste projeto, estamos construindo um projeto de restaurante inteligente usando Arduino, display TFT e módulo transmissor / receptor RF de 433 MHz. Aqui, a seção do transmissor consistirá em Arduino Uno, display TFT e um transmissor RF, usando o qual os clientes podem selecionar os itens alimentares e fazer o pedido. Já a seção do receptor consiste em um Arduino Uno, módulo LCD, receptor RF e um Buzzer, que será instalado na cozinha do restaurante para rastrear os itens do pedido.
Componentes necessários
- Arduino Uno (2)
- Transmissor e receptor RF 433 MHz
- Protetor de toque TFT LCD de 2,4 "
- Módulo 16 * 2 LCD
- Módulo I 2 C
Interface de proteção de toque TFT LCD com Arduino
O escudo de toque LCD TFT de 2,4 "é um display TFT compatível com Arduino UNO / Mega multicolorido que vem com tela de toque e tomada para cartão SD também. Este módulo de display TFT tem uma luz de fundo brilhante e um display colorido de 240X320 pixels. Ele também consiste em RGB individual controle de pixels que oferece uma resolução muito melhor do que as telas em preto e branco.
A interface do display TFT com o Arduino é muito simples e explicada no tutorial anterior. Você só precisa montar o display TFT sobre a placa Arduino Uno, conforme mostrado na imagem abaixo.
O LCD TFT é muito útil na construção de aplicativos portáteis como:
- Calculadora da tela de toque Arduino
- Bloqueio de código digital controlado por telefone inteligente usando Arduino
- Arduino SMART Alarm Clock
- Fita LED NeoPixel com Arduino e LCD TFT
Além disso, verifique todos os projetos baseados em TFT LCD aqui.
Diagrama de circuito
O projeto do sistema de pedidos de cardápio de restaurante inteligente consiste na seção de transmissor e receptor de RF. Tanto o transmissor quanto o receptor usam Arduino Uno para processamento de dados. Anteriormente, usamos os mesmos módulos RF de 433 MHz com o Arduino para construir projetos como uma campainha sem fio, um robô controlado por gestos de mão, etc. O diagrama de circuito para a seção do transmissor e do receptor é fornecido abaixo.
Circuito de seção do transmissor
A seção do transmissor deste projeto consiste em um Arduino Uno, um transmissor de RF e um escudo de tela TFT. Esta seção é usada para fazer pedidos a partir do menu que é mostrado no display TFT. O Arduino Uno é o cérebro do lado do transmissor que processa todos os dados, e o módulo transmissor de RF é usado para transmitir os dados selecionados para o receptor. O pino de dados do módulo transmissor de RF é conectado ao pino digital 12 do Arduino, enquanto os pinos V CC e GND são conectados ao pino 5V e GND do Arduino.
Circuito de seção do receptor
A seção do receptor deste projeto consiste em um Arduino Uno, receptor RF, módulo LCD 16 * 2 e módulo I2C. O receptor RF é usado para receber os dados da seção do transmissor e o módulo LCD é usado para exibir os dados recebidos. Uma campainha é usada para emitir um som sempre que um novo pedido é feito. O pino de dados do receptor RF é conectado ao pino digital 11 do Arduino, enquanto o pino V CC e GND está conectado ao pino 5V e GND do Arduino. O pino positivo do Buzzer é conectado ao pino digital 2 do Arduino, e o pino negativo é conectado ao pino GND do Arduino. Os pinos SCL e SDA do módulo I2C são conectados aos pinos analógicos A5 e A4 do Arduino, enquanto os pinos VCC e GND são conectados aos pinos 5V e GND do Arduino.
Explicação do código
O código completo para os lados do transmissor e receptor de RF para este sistema de pedidos inteligentes em restaurantes é fornecido no final do documento. Todas as bibliotecas usadas neste projeto podem ser baixadas dos links fornecidos.
- Biblioteca RadioHead
- Biblioteca SPFD5408
A biblioteca RadioHead é usada para o módulo transmissor / receptor de RF, enquanto a biblioteca SPFD5408 é usada para exibição TFT.
Código de seção do transmissor:
Inicie o código incluindo todas as bibliotecas necessárias. A biblioteca RH_ASK.h é usada para comunicação entre os módulos transmissor e receptor. SPFD5408_Adafruit_GFX.h é uma biblioteca gráfica principal para exibição TFT.
#incluir
Depois disso, crie um objeto chamado 'driver' para RH_ASK .
Driver RH_ASK;
Depois disso, defina os valores mínimo e máximo calibrados dos eixos X e Y para o seu monitor TFT.
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define TS_MAXY 905
Agora, dentro da função drawHome, desenhe um layout para sua tela TFT. Aqui, tft.fillScreen é usado para definir a cor de fundo.
A função tft.drawRoundRect é usada para criar um retângulo preenchido. A sintaxe para a função tft.drawRoundRect é fornecida abaixo:
tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t raio, uint16_t cor)
Onde:
x0 = coordenada X do ponto inicial de retangular
y0 = coordenada Y do ponto inicial de retangular
w = largura do retangular
h = Altura do Retangular
raio = raio do canto redondo
color = Cor do Reto.
A função tft.fillRoundRect é usada para desenhar um retângulo preenchido. A sintaxe dafunção tft.fillRoundRect é fornecida abaixo:
tft.fillRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t raio, uint16_t cor) tft.fillScreen (BRANCO); tft.drawRoundRect (0, 0, 319, 240, 8, BRANCO); // Borda da página tft.fillRoundRect (30, 40, 100, 40, 8, GOLD); tft.drawRoundRect (30, 40, 100, 40, 8, BRANCO); // Dish1 tft.fillRoundRect (30, 90, 100, 40, 8, GOLD); tft.drawRoundRect (30, 90, 100, 40, 8, BRANCO); // Dish2 tft.fillRoundRect (30, 140, 100, 40, 8, GOLD); // Dish3 tft.drawRoundRect (30, 140, 100, 40, 8, WHITE);
Depois de criar os botões na tela TFT, agora exiba o texto nos botões. tft.setCursor é usado para definir o cursor de onde você deseja iniciar o texto.
tft.setCursor (60, 0); tft.setTextSize (3); tft.setTextColor (LIME); tft.print ("Menu"); tft.setTextSize (2); tft.setTextColor (WHITE); tft.setCursor (37, 47); tft.print ("Dish1");
Dentro da função de transmissão vazia , envie os dados para o lado do receptor a cada 1 segundo.
void transmit () {driver.send ((uint8_t *) msg, strlen (msg)); driver.waitPacketSent (); atraso (1000); }
Dentro da função de loop void , leia o valor Raw ADC usando a função ts.getPoint.
TSPoint p = ts.getPoint ();
Agora use a função de mapa para converter os valores RAW ADC em coordenadas de pixel.
px = mapa (px, TS_MAXX, TS_MINX, 0, 320); py = mapa (py, TS_MAXY, TS_MINY, 0, 240);
Depois de converter os valores ADC brutos em coordenadas de pixel, insira as coordenadas de pixel para o botão Dish1 e se alguém tocar a tela entre esta área, envie a mensagem para o lado do receptor.
if (px> 180 && px <280 && py> 190 && py <230 && pz> MINPRESSURE && pz <MAXPRESSURE) {Serial.println ("Dish1"); msg = "Dish1"; transmite(); tft.fillRoundRect (30, 40, 100, 40, 8, BRANCO); atraso (70); tft.fillRoundRect (30, 40, 100, 40, 8, GOLD); tft.drawRoundRect (30, 40, 100, 40, 8, BRANCO); tft.setCursor (37, 47); tft.println ("Dish1"); atraso (70); }
Siga o mesmo procedimento para todos os outros botões.
Código da seção do receptor
Para o código da seção do receptor RF, inclua as bibliotecas para o receptor RF e o módulo LCD. Inclua também a biblioteca SPI.h para estabelecer uma comunicação SPI entre o Arduino e o receptor RF.
#incluir
Dentro da função de loop void , verifique continuamente as mensagens transmitidas. E se o módulo receptor receber uma mensagem, exiba a mensagem no módulo LCD e emita um sinal sonoro.
if (driver.recv (buf, & buflen)) // Sem bloqueio {int i; digitalWrite (campainha, ALTO); atraso (1000); digitalWrite (buzzer, LOW);. lcd.print ("T1:"); lcd.print ((char *) buf);
Testando o projeto do restaurante inteligente usando Arduino
Após conectar todo o hardware e enviar o código para a seção do transmissor e do receptor, agora é hora de testar o projeto. Para testar o projeto, pressione um botão no display TFT, ele deverá mostrar o nome do prato com o número da mesa que é T1 no módulo LCD conectado ao lado do receptor. Se o LCD do lado do receptor não exibir nada, verifique se a tela TFT está funcionando ou não.
É assim que você pode construir um projeto de sistema de pedido de menu de restaurante inteligente usando Arduino e display TFT. Você também pode alterar a orientação da tela para adicionar mais botões.
Um vídeo de trabalho com o código completo é fornecido abaixo.