- Erforderliche Komponenten
- Schnittstelle zwischen TFT LCD Touch Shield und Arduino
- Schaltplan
- Code Erklärung
- Testen des Smart Restaurant-Projekts mit Arduino
Heutzutage sind die Automatisierungssysteme von heute überall, ob zu Hause, im Büro oder in einer großen Industrie, alle mit Automatisierungssystemen ausgestattet. Restaurants / Hotels übernehmen auch die jüngsten Automatisierungstrends und installieren Roboter, um Lebensmittel und Tablets für die Annahme von Bestellungen zu liefern. Mit diesen digitalen Menükarten wie Tablets können Kunden die Elemente einfach auswählen. Diese Informationen werden an die Küche des Restaurants gesendet und auch auf dem Display angezeigt.
In diesem Projekt bauen wir ein Smart Restaurant-Projekt mit Arduino, TFT-Display und 433-MHz-HF-Sender / Empfänger-Modul. Hier besteht der Senderbereich aus Arduino Uno, TFT-Display und einem HF-Sender, mit dem Kunden die Lebensmittel auswählen und die Bestellung aufgeben können. Während der Empfängerbereich aus einem Arduino Uno, einem LCD-Modul, einem HF-Empfänger und einem Summer besteht, werden diese in der Restaurantküche installiert, um die Bestellartikel zu verfolgen.
Erforderliche Komponenten
- Arduino Uno (2)
- 433 MHz HF-Sender und -Empfänger
- 2,4 "TFT LCD Touch Shield
- 16 * 2 LCD-Modul
- I 2 C Modul
Schnittstelle zwischen TFT LCD Touch Shield und Arduino
Das 2,4 "TFT LCD Touch Shield ist ein mehrfarbiges Arduino UNO / Mega-kompatibles TFT-Display mit Touchscreen und SD-Kartenbuchse. Dieses TFT-Anzeigemodul verfügt über eine helle Hintergrundbeleuchtung und ein farbenfrohes 240 x 320 Pixel großes Display. Es besteht auch aus individuellem RGB Pixelsteuerung, die eine viel bessere Auflösung bietet als die Schwarzweißanzeigen.
Die Anbindung des TFT-Displays an Arduino ist sehr einfach und wurde im vorherigen Tutorial erläutert. Sie müssen das TFT-Display nur über der Arduino Uno-Karte montieren, wie in der folgenden Abbildung gezeigt.
TFT LCD ist sehr nützlich beim Erstellen tragbarer Anwendungen wie:
- Arduino Touchscreen-Rechner
- Smartphone-gesteuerte digitale Codesperre mit Arduino
- Arduino SMART Wecker
- NeoPixel LED Strip mit Arduino und TFT LCD
Überprüfen Sie hier auch alle TFT LCD-basierten Projekte.
Schaltplan
Das Projekt Smart Restaurant Menu Ordering System besteht aus dem Bereich RF-Sender und -Empfänger. Sowohl die Sender- als auch die Empfängerseite verwenden Arduino Uno für die Datenverarbeitung. Wir haben zuvor dieselben 433-MHz-HF-Module mit Arduino für Bauprojekte wie eine drahtlose Türklingel, einen handgestengesteuerten Roboter usw. verwendet. Der Schaltplan für den Sender- und Empfängerabschnitt ist unten angegeben.
Schaltkreis des Senderabschnitts
Der Senderteil dieses Projekts besteht aus einem Arduino Uno, einem HF-Sender und einem TFT-Displayschild. Dieser Abschnitt wird zum Bestellen aus dem Menü verwendet, das auf dem TFT-Display angezeigt wird. Arduino Uno ist das Gehirn der Senderseite, das alle Daten verarbeitet, und das HF-Sendemodul wird verwendet, um die ausgewählten Daten an den Empfänger zu übertragen. Der Daten-Pin des HF-Sendemoduls ist mit dem digitalen Pin 12 von Arduino verbunden, während die V CC- und GND-Pins mit dem 5 V- und GND-Pin von Arduino verbunden sind.
Empfängerabschnittschaltung
Der Empfängerteil dieses Projekts besteht aus einem Arduino Uno, einem HF-Empfänger, einem 16 * 2-LCD-Modul und einem I2C-Modul. Der HF-Empfänger wird verwendet, um die Daten vom Senderabschnitt zu empfangen, und das LCD-Modul wird verwendet, um die empfangenen Daten anzuzeigen. Ein Summer gibt ein Geräusch aus, wenn eine neue Bestellung aufgegeben wird. Der Daten-Pin des HF-Empfängers ist mit dem digitalen Pin 11 von Arduino verbunden, während der V CC- und GND-Pin mit dem 5 V- und GND-Pin von Arduino verbunden ist. Der positive Pin von Buzzer ist mit dem digitalen Pin 2 von Arduino verbunden, und der negative Pin ist mit dem GND-Pin von Arduino verbunden. SCL- und SDA-Pins des I2C-Moduls sind mit den analogen Pins A5 und A4 Arduino verbunden, während VCC- und GND-Pins mit 5V- und GND-Pins von Arduino verbunden sind.
Code Erklärung
Der vollständige Code für die RF-Sender- und Empfängerseite für dieses intelligente Bestellsystem im Restaurant ist am Ende des Dokuments angegeben. Alle in diesem Projekt verwendeten Bibliotheken können über die angegebenen Links heruntergeladen werden.
- RadioHead-Bibliothek
- SPFD5408-Bibliothek
Die RadioHead-Bibliothek wird für das RF-Sender / Empfänger-Modul verwendet, während die SPFD5408-Bibliothek für die TFT-Anzeige verwendet wird.
Code des Senderabschnitts:
Starten Sie den Code, indem Sie alle erforderlichen Bibliotheken einschließen. Die Bibliothek RH_ASK.h wird für die Kommunikation zwischen Sender- und Empfängermodulen verwendet. SPFD5408_Adafruit_GFX.h ist eine Kerngrafikbibliothek für die TFT-Anzeige.
#einschließen
Erstellen Sie anschließend ein Objekt mit dem Namen 'driver' für RH_ASK .
RH_ASK-Treiber;
Definieren Sie anschließend die minimalen und maximalen kalibrierten X- und Y-Achsenwerte für Ihre TFT-Anzeige.
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define TS_MAXY 905
Zeichnen Sie nun in der Funktion drawHome ein Layout für Ihren TFT-Bildschirm. Hier wird tft.fillScreen verwendet, um die Hintergrundfarbe festzulegen .
Mit der Funktion tft.drawRoundRect wird ein gefülltes Rechteck erstellt. Die Syntax für die Funktion tft.drawRoundRect ist unten angegeben:
tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t Radius, uint16_t Farbe)
Wo:
x0 = X-Koordinate des Startpunkts des Rechtecks
y0 = Y-Koordinate des Startpunkts des Rechtecks
w = Breite des Rechtecks
h = Höhe des Rechtecks
Radius = Radius der runden Ecke
Farbe = Farbe des Rechtecks.
Mit der Funktion tft.fillRoundRect wird ein gefülltes Rechteck gezeichnet . Die Syntax derFunktion tft.fillRoundRect ist unten angegeben:
tft.fillRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t Radius, uint16_t Farbe) tft.fillScreen (WEISS); tft.drawRoundRect (0, 0, 319, 240, 8, WEISS); // Seitenrand tft.fillRoundRect (30, 40, 100, 40, 8, GOLD); tft.drawRoundRect (30, 40, 100, 40, 8, WEISS); // Dish1 tft.fillRoundRect (30, 90, 100, 40, 8, GOLD); tft.drawRoundRect (30, 90, 100, 40, 8, WEISS); // Dish2 tft.fillRoundRect (30, 140, 100, 40, 8, GOLD); // Dish3 tft.drawRoundRect (30, 140, 100, 40, 8, WEISS);
Nachdem Sie die Schaltflächen auf dem TFT-Bildschirm erstellt haben, zeigen Sie nun den Text auf den Schaltflächen an. Mit tft.setCursor wird der Cursor an der Stelle gesetzt, an der Sie den Text beginnen möchten.
tft.setCursor (60, 0); tft.setTextSize (3); tft.setTextColor (LIME); tft.print ("Menü"); tft.setTextSize (2); tft.setTextColor (WHITE); tft.setCursor (37, 47); tft.print ("Dish1");
Senden Sie innerhalb der Leersendungsfunktion die Daten alle 1 Sekunde an die Empfängerseite.
void send () {driver.send ((uint8_t *) msg, strlen (msg)); driver.waitPacketSent (); Verzögerung (1000); }}
Lesen Sie in der Void-Loop- Funktion den Raw-ADC-Wert mit der Funktion ts.getPoint.
TSPoint p = ts.getPoint ();
Verwenden Sie nun die Kartenfunktion , um die Raw-ADC-Werte in Pixelkoordinaten zu konvertieren.
px = Karte (px, TS_MAXX, TS_MINX, 0, 320); py = map (py, TS_MAXY, TS_MINY, 0, 240);
Geben Sie nach der Konvertierung der Raw-ADC-Werte in die Pixelkoordinate die Pixelkoordinaten für die Schaltfläche Dish1 ein. Wenn jemand den Bildschirm zwischen diesen Bereichen berührt, senden Sie die Nachricht an die Empfängerseite.
if (px> 180 && px <280 && py> 190 && py <230 && pz> MINPRESSURE && pz <MAXPRESSURE) {Serial.println ("Dish1"); msg = "Dish1"; übertragen(); tft.fillRoundRect (30, 40, 100, 40, 8, WEISS); Verzögerung (70); tft.fillRoundRect (30, 40, 100, 40, 8, GOLD); tft.drawRoundRect (30, 40, 100, 40, 8, WEISS); tft.setCursor (37, 47); tft.println ("Dish1"); Verzögerung (70); }}
Gehen Sie für alle anderen Tasten genauso vor.
Code des Empfängerabschnitts
Geben Sie für den Abschnittscode des HF-Empfängers die Bibliotheken für den HF-Empfänger und das LCD-Modul an. Fügen Sie auch die SPI.h- Bibliothek zum Herstellen einer SPI-Kommunikation zwischen Arduino und RF-Empfänger hinzu.
#einschließen
Überprüfen Sie innerhalb der Leerenschleifenfunktion kontinuierlich, ob Nachrichten gesendet wurden. Wenn das Empfängermodul eine Nachricht empfängt, zeigen Sie die Nachricht auf dem LCD-Modul an und geben Sie einen Piepton aus.
if (driver.recv (buf, & buflen)) // Nicht blockierend {int i; digitalWrite (Summer, HIGH); Verzögerung (1000); digitalWrite (Summer, LOW);. lcd.print ("T1:"); lcd.print ((char *) buf);
Testen des Smart Restaurant-Projekts mit Arduino
Nachdem Sie die gesamte Hardware angeschlossen und den Code für den Sender- und den Empfängerbereich hochgeladen haben, ist es jetzt an der Zeit, das Projekt zu testen. Um das Projekt zu testen, drücken Sie eine Taste auf dem TFT-Display. Auf dem an die Empfängerseite angeschlossenen LCD-Modul sollte der Name der Schüssel mit der Tabellennummer T1 angezeigt werden. Wenn auf dem empfängerseitigen LCD nichts angezeigt wird, prüfen Sie, ob Ihr TFT-Bildschirm funktioniert oder nicht.
Auf diese Weise können Sie mithilfe des Arduino- und TFT-Displays ein Projekt für das Bestellsystem für intelligente Restaurants erstellen. Sie können auch die Ausrichtung des Bildschirms ändern, um weitere Schaltflächen hinzuzufügen.
Ein Arbeitsvideo mit dem vollständigen Code ist unten angegeben.