- Componente necesare
- Interfață ecran TFT LCD tactil cu Arduino
- Diagrama circuitului
- Explicarea codului
- Testarea proiectului Smart Restaurant folosind Arduino
Acum, sistemele de automatizare de zi sunt peste tot, indiferent dacă sunt acasă, la birou sau în orice industrie mare, toate sunt echipate cu sisteme de automatizare. Restaurante / Hoteluri adoptă, de asemenea, tendințele recente de automatizare și instalează roboți pentru a livra alimente și tablete pentru preluarea comenzilor. Folosind aceste carduri de meniu digitale, cum ar fi tabletele, clienții pot selecta cu ușurință articolele. Aceste informații vor fi trimise în bucătăria restaurantului și vor fi afișate și pe afișaj.
În acest proiect, construim un proiect Smart Restaurant folosind Arduino, afișaj TFT și modul de transmisie / receptor RF de 433 MHz. Aici secțiunea transmițător va consta din Arduino Uno, afișaj TFT și un transmițător RF, cu ajutorul căruia clienții pot selecta produsele alimentare și plasa comanda. În timp ce secțiunea receptorului constă dintr-un Arduino Uno, un modul LCD, un receptor RF și un buzzer, care vor fi instalate în bucătăria restaurantului pentru a urmări articolele comandate.
Componente necesare
- Arduino Uno (2)
- Transmițător și receptor RF de 433 MHz
- Ecran tactil LCD TFT de 2,4 "
- Modul LCD 16 * 2
- Modulul I 2 C
Interfață ecran TFT LCD tactil cu Arduino
Ecranul tactil TFT LCD de 2,4 "este un afișaj TFT compatibil Arduino UNO / Mega multicolor, care vine cu ecran tactil și soclu pentru card SD. Acest modul de afișare TFT are o lumină de fundal strălucitoare și un afișaj colorat de 240X320 pixeli. De asemenea, este format din RGB individual. control pixel care îi oferă o rezoluție mult mai bună decât afișajele alb-negru.
Interfața afișajului TFT cu Arduino este foarte simplă și explicată în tutorialul anterior. Trebuie doar să montați afișajul TFT pe placa Arduino Uno, așa cum se arată în imaginea de mai jos.
TFT LCD este foarte util în construirea de aplicații portabile precum:
- Calculator ecran tactil Arduino
- Blocare cod digital controlat prin telefon inteligent folosind Arduino
- Ceas cu alarmă SMART Arduino
- Benzi LED NeoPixel cu Arduino și LCD TFT
De asemenea, verificați aici toate proiectele bazate pe TFT LCD.
Diagrama circuitului
Proiectul Sistemului de comandă a meniului Smart Restaurant este format din secțiunea Transmițător și Receptor RF. Atât emițătorul, cât și receptorul utilizează Arduino Uno pentru procesarea datelor. Am folosit anterior aceleași module RF de 433 MHz cu Arduino pentru proiecte de construcții, cum ar fi soneria fără fir, robotul controlat prin gestul mâinii etc. Diagrama circuitului pentru secțiunea emițător și receptor este dată mai jos.
Circuitul secțiunii emițătorului
Secțiunea emițător a acestui proiect constă dintr-un Arduino Uno, un transmițător RF și un ecran de afișare TFT. Această secțiune este utilizată pentru comenzi din meniul care este afișat pe afișajul TFT. Arduino Uno este creierul părții transmițătoare care procesează toate datele, iar modulul transmițător RF este utilizat pentru a transmite datele selectate către receptor. Pinul de date al modulului transmițător RF este conectat la pinul digital 12 al Arduino, în timp ce pinii V CC și GND sunt conectați la pinul 5V și GND al Arduino.
Circuitul secțiunii receptorului
Secțiunea de recepție a acestui proiect constă dintr-un Arduino Uno, un receptor RF, un modul LCD 16 * 2 și un modul I2C. Receptorul RF este utilizat pentru a primi datele de la secțiunea emițător, iar modulul LCD este utilizat pentru a afișa datele primite. Un buzzer este folosit pentru a scoate un sunet ori de câte ori este plasată o nouă comandă. Pinul de date al receptorului RF este conectat la pinul digital 11 al Arduino, în timp ce pinul V CC și GND este conectat la pinul 5V și GND al Arduino. Pinul pozitiv al Buzzer este conectat la pinul digital 2 al Arduino, iar pinul negativ este conectat la pinul GND al Arduino. Pinii SCL și SDA ai modulului I2C sunt conectați la pinii analogici A5 și A4 Arduino, în timp ce pinii VCC și GND sunt conectați la pinii 5V și GND ai Arduino.
Explicarea codului
Codul complet pentru fețele emițătorului și receptorului RF pentru acest sistem inteligent de comandă în restaurant sunt furnizate la sfârșitul documentului. Toate bibliotecile utilizate în acest proiect pot fi descărcate de pe linkurile date.
- Biblioteca RadioHead
- Biblioteca SPFD5408
Biblioteca RadioHead este utilizată pentru modulul transmițător / receptor RF, în timp ce biblioteca SPFD5408 este utilizată pentru afișajul TFT.
Cod secțiune emițător:
Porniți codul prin includerea tuturor bibliotecilor necesare. Biblioteca RH_ASK.h este utilizată pentru comunicarea dintre modulele emițător și receptor. SPFD5408_Adafruit_GFX.h este o bibliotecă grafică de bază pentru afișaj TFT.
#include
După aceea, creați un obiect numit „driver” pentru RH_ASK .
Driver RH_ASK;
După aceea, definiți valorile calibrate minime și maxime ale axei X & Y pentru afișajul TFT.
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define TS_MAXY 905
Acum, în funcția drawHome, desenați un aspect pentru ecranul TFT. Aici tft.fillScreen este folosit pentru a seta culoarea de fundal.
Funcția tft.drawRoundRect este utilizată pentru a crea un dreptunghi umplut. Sintaxa pentru funcția tft.drawRoundRect este dată mai jos:
tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t rază, uint16_t culoare)
Unde:
x0 = coordonata X a punctului de plecare dreptunghiular
y0 = Coordonata Y a punctului de plecare dreptunghiular
w = Lățimea dreptunghiului
h = Înălțimea dreptunghiului
raza = Raza colțului rotund
color = Color of the Rect.
Funcția tft.fillRoundRect este utilizată pentru a desena un dreptunghi umplut. Sintaxafuncției tft.fillRoundRect este dată mai jos:
tft.fillRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t rază, uint16_t culoare) tft.fillScreen (WHITE); tft.drawRoundRect (0, 0, 319, 240, 8, ALB); // Bordura paginii tft.fillRoundRect (30, 40, 100, 40, 8, GOLD); tft.drawRoundRect (30, 40, 100, 40, 8, ALB); // Dish1 tft.fillRoundRect (30, 90, 100, 40, 8, GOLD); tft.drawRoundRect (30, 90, 100, 40, 8, ALB); // Dish2 tft.fillRoundRect (30, 140, 100, 40, 8, GOLD); // Dish3 tft.drawRoundRect (30, 140, 100, 40, 8, WHITE);
După crearea butoanelor de pe ecranul TFT, afișați acum textul pe butoane. tft.setCursor este folosit pentru a seta cursorul de unde doriți să porniți textul.
tft.setCursor (60, 0); tft.setTextSize (3); tft.setTextColor (LIME); tft.print („Meniu”); tft.setTextSize (2); tft.setTextColor (ALB); tft.setCursor (37, 47); tft.print ("Dish1");
În interiorul funcției de transmisie nulă , trimiteți datele către partea receptorului la fiecare 1 secundă.
void transmit () {driver.send ((uint8_t *) msg, strlen (msg)); driver.waitPacketSent (); întârziere (1000); }
În interiorul funcției de buclă nulă , citiți valoarea Raw ADC utilizând funcția ts.getPoint.
TSPoint p = ts.getPoint ();
Acum utilizați funcția de hartă pentru a converti valorile Raw ADC în coordonatele pixelilor.
px = hartă (px, TS_MAXX, TS_MINX, 0, 320); py = hartă (py, TS_MAXY, TS_MINY, 0, 240);
După convertirea valorilor Raw ADC în coordonate de pixeli, introduceți coordonatele pixelilor pentru butonul Dish1 și dacă cineva atinge ecranul dintre această zonă, trimiteți mesajul către partea receptorului.
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, ALB); întârziere (70); tft.fillRoundRect (30, 40, 100, 40, 8, GOLD); tft.drawRoundRect (30, 40, 100, 40, 8, ALB); tft.setCursor (37, 47); tft.println ("Dish1"); întârziere (70); }
Urmați aceeași procedură pentru toate celelalte butoane.
Codul secțiunii destinatarului
Pentru codul secțiunii receptorului RF, includeți bibliotecile pentru receptorul RF și modulul LCD. Includeți și biblioteca SPI.h pentru stabilirea unei comunicații SPI între Arduino și receptorul RF.
#include
În interiorul funcției de buclă nulă , verificați continuu mesajele transmise. Și dacă modulul receptor primește un mesaj, atunci afișați mesajul pe modulul LCD și emiteți un semnal sonor.
if (driver.recv (buf, & buflen)) // Non-blocant {int i; digitalWrite (buzzer, HIGH); întârziere (1000); digitalWrite (buzzer, LOW);. lcd.print ("T1:"); lcd.print ((char *) buf);
Testarea proiectului Smart Restaurant folosind Arduino
După conectarea întregului hardware și încărcarea codului atât pentru secțiunea emițător, cât și pentru receptor, acum este timpul să testați proiectul. Pentru a testa proiectul, apăsați un buton de pe afișajul TFT, acesta ar trebui să afișeze numele farfuriei cu numărul de masă care este T1 pe modulul LCD conectat la partea receptorului. Dacă ecranul LCD al receptorului nu afișează nimic, verificați dacă ecranul TFT funcționează sau nu.
Acesta este modul în care puteți construi un proiect al sistemului de comandă a meniului Smart Restaurant folosind afișajul Arduino și TFT. De asemenea, puteți schimba orientarea ecranului pentru a adăuga mai multe butoane.
Un videoclip de lucru cu codul complet este prezentat mai jos.