- Komponenter krävs
- Gränssnitt TFT LCD-pekskärm med Arduino
- Kretsschema
- Kodförklaring
- Testa Smart Restaurant-projektet med Arduino
Nu finns dagens automationssystem överallt oavsett om det är hemma, kontor eller någon större industri, alla är utrustade med automatiseringssystem. Restauranger / hotell antar också de senaste automatiseringstrenderna och installerar robotar för att leverera mat och tabletter för att ta emot beställningar. Med hjälp av dessa digitala menykort som surfplattor kan kunder enkelt välja objekt. Denna information kommer att skickas till restaurangens kök och visas också på displayen.
I det här projektet bygger vi ett Smart Restaurant-projekt med Arduino, TFT-skärm och 433MHz RF-sändare / mottagarmodul. Här kommer sändarsektionen att bestå av Arduino Uno, TFT-display och en RF-sändare, där kunderna kan välja matvaror och göra beställningen. Medan mottagarsektionen består av en Arduino Uno, LCD-modul, RF-mottagare och en summer, som kommer att installeras i restaurangköket för att spåra beställningsartiklarna.
Komponenter krävs
- Arduino Uno (2)
- 433MHz RF-sändare och mottagare
- 2,4 "TFT LCD-pekskärm
- 16 * 2 LCD-modul
- I 2 C-modul
Gränssnitt TFT LCD-pekskärm med Arduino
2,4 "TFT LCD-pekskärm är en mångfärgad Arduino UNO / Mega-kompatibel TFT-skärm som också kommer med pekskärm och SD-kortuttag. Denna TFT-skärmmodul har en ljus bakgrundsbelysning och en färgstark 240X320 pixlar. Den består också av individuell RGB pixelkontroll som ger den en mycket bättre upplösning än de svartvita skärmarna.
Gränssnittet mellan TFT-skärmen och Arduino är väldigt enkelt och förklarades i föregående handledning. Du behöver bara montera TFT-skärmen över Arduino Uno-kortet, som visas i bilden nedan.
TFT LCD är mycket användbart för att bygga bärbara applikationer som:
- Arduino pekskärmskalkylator
- Smarttelefonstyrt digitalt kodlås med Arduino
- Arduino SMART väckarklocka
- NeoPixel LED Strip med Arduino och TFT LCD
Kontrollera också alla TFT LCD-baserade projekt här.
Kretsschema
Smart Restaurant Menu Ordering System-projektet består av avsnittet RF-sändare och mottagare. Både sändar- och mottagarsidan använder Arduino Uno för databehandling. Vi använde tidigare samma 433 MHz RF-moduler med Arduino för byggprojekt som en trådlös dörrklocka, handstyrd robot etc. Kretsschemat för sändar- och mottagaravsnittet ges nedan.
Sändarens sektionskrets
Sändarsektionen i detta projekt består av en Arduino Uno, RF-sändare och TFT-skärm. Detta avsnitt används för att beställa från menyn som visas på TFT-skärmen. Arduino Uno är hjärnan på sändarsidan som behandlar all data, och RF-sändarmodulen används för att överföra den valda informationen till mottagaren. Datastiftet på RF-sändarmodulen är ansluten till den digitala stift 12 på Arduino medan V CC och GND-stiften är anslutna till 5V och GND-stiftet i Arduino.
Mottagarsektionens krets
Mottagarsektionen för detta projekt består av en Arduino Uno, RF-mottagare, 16 * 2 LCD-modul och I2C-modul. RF-mottagare används för att ta emot data från sändarsektionen, och LCD-modulen används för att visa mottagen data. En summer används för att göra ett ljud när en ny beställning görs. Datapinnen på RF-mottagaren är ansluten till den digitala stift 11 i Arduino medan V CC och GND-stift är anslutna till 5V och GND-stiftet i Arduino. Den positiva stiften på Buzzer är ansluten till den digitala stiftet 2 på Arduino och den negativa stiften är ansluten till GND-stiftet i Arduino. SCL- och SDA-stiften på I2C-modulen är anslutna till analoga stift A5 & A4 Arduino medan VCC- och GND-stiften är anslutna till 5V- och GND-stiften på Arduino.
Kodförklaring
Komplett kod för RF-sändar- och mottagarsidor för detta smarta beställningssystem i restaurang finns i slutet av dokumentet. Alla bibliotek som används i detta projekt kan laddas ner från de angivna länkarna.
- RadioHead-biblioteket
- SPFD5408-bibliotek
RadioHead-biblioteket används för RF-sändar- / mottagarmodulen, medan SPFD5408-biblioteket används för TFT-skärm.
Sändarens sektionskod:
Starta koden genom att inkludera alla nödvändiga bibliotek. RH_ASK.h- biblioteket används för kommunikation mellan sändar- och mottagarmoduler. SPFD5408_Adafruit_GFX.h är ett kärngrafikbibliotek för TFT-skärm.
#omfatta
Skapa sedan ett objekt som heter 'driver' för RH_ASK .
RH_ASK-drivrutin;
Därefter definierar du minsta och högsta kalibrerade X & Y-axelvärden för din TFT-skärm.
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define TS_MAXY 905
Nu i drawHome-funktionen ritar du en layout för din TFT-skärm. Här används tft.fillScreen för att ställa in bakgrundsfärgen.
tft.drawRoundRect- funktionen används för att skapa en fylld rektangel. Syntax för tft.drawRoundRect- funktionen ges nedan:
tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radie, uint16_t färg)
Var:
x0 = X-koordinat för startpunkten för rektangulär
y0 = Y-koordinat för startpunkten för rektangulär
w = Rektangulär bredd
h = Rektangulär höjd
radie = Radie av det runda hörnet
färg = Rektors färg.
tft.fillRoundRect- funktionen används för att rita en fylld rektangel. Syntax för tft.fillRoundRect- funktionen ges nedan:
tft.fillRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radie, uint16_t color) tft.fillScreen (WHITE); tft.drawRoundRect (0, 0, 319, 240, 8, VIT); // Sidgräns tft.fillRoundRect (30, 40, 100, 40, 8, GULD); tft.drawRoundRect (30, 40, 100, 40, 8, VIT); // Dish1 tft.fillRoundRect (30, 90, 100, 40, 8, GULD); tft.drawRoundRect (30, 90, 100, 40, 8, VIT); // Dish2 tft.fillRoundRect (30, 140, 100, 40, 8, GULD); // Dish3 tft.drawRoundRect (30, 140, 100, 40, 8, VIT);
Efter att du har skapat knapparna på TFT-skärmen, visa nu texten på knapparna. tft.setCursor används för att ställa in markören från vilken du vill starta texten.
tft.setCursor (60, 0); tft.setTextSize (3); tft.setTextColor (LIME); tft.print ("Meny"); tft.setTextSize (2); tft.setTextColor (VIT); tft.setCursor (37, 47); tft.print ("Dish1");
Inuti tomrumsöverföringsfunktionen , skicka data till mottagarsidan var 1 sekund.
ogiltig sändning () {driver.send ((uint8_t *) msg, strlen (msg)); driver.waitPacketSent (); fördröjning (1000); }
Inne i tomrumsfunktionen läser du Raw ADC-värdet med funktionen ts.getPoint.
TSPoint p = ts.getPoint ();
Nu använder kartfunktionen för att konvertera Raw ADC värden till Pixel koordinater.
px = karta (px, TS_MAXX, TS_MINX, 0, 320); py = karta (py, TS_MAXY, TS_MINY, 0, 240);
Efter att ha konverterat Raw ADC-värdena till pixelkoordinat, ange pixelkoordinaterna för Dish1- knappen och om någon vidrör skärmen mellan detta område, skicka sedan meddelandet till mottagarsidan.
if (px> 180 && px <280 && py> 190 && py <230 && pz> MINPRESSURE && pz <MAXPRESSURE) {Serial.println ("Dish1"); msg = "Dish1"; överföra(); tft.fillRoundRect (30, 40, 100, 40, 8, VIT); fördröjning (70); tft.fillRoundRect (30, 40, 100, 40, 8, GULD); tft.drawRoundRect (30, 40, 100, 40, 8, VIT); tft.setCursor (37, 47); tft.println ("Dish1"); fördröjning (70); }
Följ samma procedur för alla andra knappar.
Mottagarens sektionskod
För sektionskoden för RF-mottagare, inkludera biblioteken för RF-mottagare och LCD-modul. Inkludera även SPI.h- biblioteket för att skapa en SPI-kommunikation mellan Arduino och RF-mottagare.
#omfatta
Inuti tomrumsfunktionen ska du kontinuerligt kontrollera om överförda meddelanden finns. Och om mottagarmodulen får ett meddelande, visa meddelandet på LCD-modulen och avge ett pip.
if (driver.recv (buf, & buflen)) // Icke-blockerande {int i; digitalWrite (summer, HÖG); fördröjning (1000); digitalWrite (summer, LOW);. lcd.print ("T1:"); lcd.print ((char *) buf);
Testa Smart Restaurant-projektet med Arduino
Efter att ha anslutit all hårdvara och laddat upp koden för både sändar- och mottagaravsnittet är det nu dags att testa projektet. För att testa projektet, tryck på en knapp på TFT-displayen, den ska visa maträttens namn med tabellnummer som är T1 på LCD-modulen ansluten till mottagarsidan. Om LCD-skärmen på mottagaren inte visar något, kontrollera sedan om din TFT-skärm fungerar eller inte.
Så här kan du bygga ett Smart Restaurant Menu Ordering System-projekt med Arduino och TFT-skärm. Du kan också ändra skärmens riktning för att lägga till fler knappar.
En arbetsvideo med den fullständiga koden ges nedan.