- Componenten vereist
- Interfacing TFT LCD Touch shield met Arduino
- Schakelschema
- Code Uitleg
- Het Smart Restaurant Project testen met Arduino
De automatiseringssystemen van tegenwoordig zijn overal, of het nu thuis, op kantoor of in een andere grote industrie is, ze zijn allemaal uitgerust met automatiseringssystemen. Restaurants / hotels passen ook recente automatiseringstrends toe en installeren robots om voedsel en tabletten te bezorgen voor het opnemen van bestellingen. Met behulp van deze digitale menukaarten, zoals tablets, kunnen klanten eenvoudig de items selecteren. Deze informatie wordt naar de keuken van het restaurant gestuurd en ook weergegeven op het display.
In dit project bouwen we een Smart Restaurant-project met Arduino, TFT-display en 433 MHz RF-zender / ontvangermodule. Hier zal de zendersectie bestaan uit Arduino Uno, TFT-display en een RF-zender, waarmee klanten de etenswaren kunnen selecteren en de bestelling kunnen plaatsen. Terwijl het ontvangergedeelte bestaat uit een Arduino Uno, LCD-module, RF-ontvanger en een zoemer, die in de restaurantkeuken zal worden geïnstalleerd om de bestelde artikelen te volgen.
Componenten vereist
- Arduino Uno (2)
- 433 MHz RF-zender en -ontvanger
- 2,4 "TFT LCD-aanraakscherm
- 16 * 2 LCD-module
- Ik 2 C-module
Interfacing TFT LCD Touch shield met Arduino
2,4-inch TFT LCD-aanraakscherm is een veelkleurig Arduino UNO / Mega-compatibel TFT-scherm dat ook wordt geleverd met een aanraakscherm en een SD-kaartaansluiting. Deze TFT-schermmodule heeft een heldere achtergrondverlichting en een kleurrijk 240x320 pixels scherm. Het bestaat ook uit individuele RGB pixelcontrole die het een veel betere resolutie geeft dan de zwart-witschermen.
De interface van het TFT-scherm met Arduino is heel eenvoudig en wordt uitgelegd in de vorige tutorial. U hoeft alleen het TFT-scherm over het Arduino Uno-bord te monteren, zoals weergegeven in de onderstaande afbeelding.
TFT LCD is erg handig bij het bouwen van draagbare applicaties zoals:
- Arduino Touch Screen Calculator
- Slimme telefoongestuurd digitaal codeslot met Arduino
- Arduino SMART-wekker
- NeoPixel LED Strip met Arduino en TFT LCD
Bekijk hier ook alle op TFT LCD gebaseerde projecten.
Schakelschema
Smart Restaurant Menu Ordering System-project bestaat uit de sectie RF-zender en ontvanger. Zowel de zender- als de ontvangerzijde gebruikt Arduino Uno voor gegevensverwerking. We gebruikten eerder dezelfde 433 MHz RF-modules met Arduino voor bouwprojecten zoals een draadloze deurbel, handgebaren gestuurde robot, enz. Het schakelschema voor de zender en ontvanger wordt hieronder gegeven.
Zendergedeelte Circuit
Het zendgedeelte van dit project bestaat uit een Arduino Uno, RF-zender en TFT-schermscherm. Dit gedeelte wordt gebruikt om te bestellen vanuit het menu dat op het TFT-display wordt weergegeven. Arduino Uno is het brein van de zenderzijde die alle gegevens verwerkt, en de RF-zendermodule wordt gebruikt om de geselecteerde gegevens naar de ontvanger te verzenden. De datapin van de RF-zendmodule is verbonden met digitale pin 12 van Arduino, terwijl V CC- en GND-pinnen zijn verbonden met 5V- en GND-pin van Arduino.
Circuit van de ontvanger
Het ontvangergedeelte van dit project bestaat uit een Arduino Uno, RF-ontvanger, 16 * 2 LCD-module en I2C-module. De RF-ontvanger wordt gebruikt om de gegevens van de zendersectie te ontvangen en de LCD-module wordt gebruikt om de ontvangen gegevens weer te geven. Een zoemer wordt gebruikt om een geluid te maken wanneer er een nieuwe bestelling wordt geplaatst. De datapin van de RF-ontvanger is verbonden met digitale pin 11 van Arduino, terwijl V CC en GND-pin is verbonden met de 5V- en GND-pin van Arduino. De positieve pin van Buzzer is verbonden met de digitale pin 2 van Arduino en de negatieve pin is verbonden met de GND-pin van Arduino. SCL- en SDA-pinnen van de I2C-module zijn verbonden met analoge pinnen A5 & A4 Arduino, terwijl VCC- en GND-pinnen zijn verbonden met 5V- en GND-pinnen van Arduino.
Code Uitleg
De volledige code voor de RF-zender en ontvangerzijde voor dit slimme bestelsysteem in restaurants vindt u aan het einde van het document. Alle bibliotheken die in dit project worden gebruikt, kunnen worden gedownload via de gegeven links.
- RadioHead-bibliotheek
- SPFD5408 bibliotheek
RadioHead-bibliotheek wordt gebruikt voor de RF-zender / ontvangermodule, terwijl de SPFD5408-bibliotheek wordt gebruikt voor TFT-weergave.
Zender sectiecode:
Start de code door alle vereiste bibliotheken op te nemen. RH_ASK.h bibliotheek wordt gebruikt voor communicatie tussen zender- en ontvangermodules. SPFD5408_Adafruit_GFX.h is een Core grafische bibliotheek voor TFT-weergave.
# omvatten
Maak daarna een object met de naam 'driver' voor RH_ASK .
RH_ASK-stuurprogramma;
Definieer daarna de minimale en maximale gekalibreerde X- en Y-aswaarden voor uw TFT-scherm.
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define TS_MAXY 905
Teken nu in de drawHome-functie een lay-out voor uw TFT-scherm. Hier wordt tft.fillScreen gebruikt om de achtergrondkleur in te stellen.
De functie tft.drawRoundRect wordt gebruikt om een gevulde rechthoek te maken. De syntaxis voor de functie tft.drawRoundRect wordt hieronder gegeven:
tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t straal, uint16_t kleur)
Waar:
x0 = X-coördinaat van het startpunt van rechthoekig
y0 = Y-coördinaat van het startpunt van rechthoekig
w = Breedte van de rechthoek
h = Hoogte van de rechthoek
straal = straal van de ronde hoek
color = Kleur van de Rect.
De functie tft.fillRoundRect wordt gebruikt om een gevulde rechthoek te tekenen. De syntaxis van de tft.fillRoundRect- functie wordt hieronder gegeven:
tft.fillRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t straal, uint16_t kleur) tft.fillScreen (WIT); tft.drawRoundRect (0, 0, 319, 240, 8, WIT); // Paginarand tft.fillRoundRect (30, 40, 100, 40, 8, GOUD); tft.drawRoundRect (30, 40, 100, 40, 8, WIT); // Dish1 tft.fillRoundRect (30, 90, 100, 40, 8, GOUD); tft.drawRoundRect (30, 90, 100, 40, 8, WIT); // Dish2 tft.fillRoundRect (30, 140, 100, 40, 8, GOUD); // Dish3 tft.drawRoundRect (30, 140, 100, 40, 8, WIT);
Nadat u de knoppen op het TFT-scherm hebt gemaakt, geeft u nu de tekst op de knoppen weer. tft.setCursor wordt gebruikt om de cursor in te stellen vanaf waar u de tekst wilt laten beginnen.
tft.setCursor (60, 0); tft.setTextSize (3); tft.setTextColor (LIME); tft.print ("Menu"); tft.setTextSize (2); tft.setTextColor (WIT); tft.setCursor (37, 47); tft.print ("Dish1");
Stuur de gegevens binnen de lege verzendfunctie elke seconde naar de ontvanger.
void transmit () {driver.send ((uint8_t *) msg, strlen (msg)); driver.waitPacketSent (); vertraging (1000); }
Lees in de void loop- functie de Raw ADC-waarde met behulp van de functie ts.getPoint.
TSPoint p = ts.getPoint ();
Gebruik nu de kaartfunctie om de onbewerkte ADC-waarden om te zetten in pixelcoördinaten.
px = kaart (px, TS_MAXX, TS_MINX, 0, 320); py = kaart (py, TS_MAXY, TS_MINY, 0, 240);
Na het converteren van de Raw ADC-waarden naar pixelcoördinaten , voert u de pixelcoördinaten in voor de Dish1- knop en als iemand het scherm tussen dit gebied aanraakt, stuurt u het bericht naar de ontvanger.
if (px> 180 && px <280 && py> 190 && py <230 && pz> MINPRESSURE && pz <MAXPRESSURE) {Serial.println ("Dish1"); msg = "Dish1"; verzenden (); tft.fillRoundRect (30, 40, 100, 40, 8, WIT); vertraging (70); tft.fillRoundRect (30, 40, 100, 40, 8, GOUD); tft.drawRoundRect (30, 40, 100, 40, 8, WIT); tft.setCursor (37, 47); tft.println ("Dish1"); vertraging (70); }
Volg dezelfde procedure voor alle andere knoppen.
Code ontvanger sectie
Neem voor de sectiecode van de RF-ontvanger de bibliotheken voor de RF-ontvanger en de LCD-module op. Neem ook de SPI.h- bibliotheek op voor het tot stand brengen van een SPI-communicatie tussen Arduino en RF-ontvanger.
# omvatten
Controleer in de void loop- functie continu op verzonden berichten. En als de ontvangermodule een bericht ontvangt, toon het bericht dan op de LCD-module en maak een pieptoon.
if (driver.recv (buf, & buflen)) // Niet-blokkerend {int i; digitalWrite (zoemer, HIGH); vertraging (1000); digitalWrite (zoemer, LOW);. lcd.print ("T1:"); lcd.print ((char *) buf);
Het Smart Restaurant Project testen met Arduino
Nadat je alle hardware hebt aangesloten en de code voor zowel het zender- als ontvangergedeelte hebt geüpload, is het nu tijd om het project te testen. Om het project te testen, drukt u op een knop op het TFT-scherm, het moet de schotelnaam weergeven met het tafelnummer dat T1 is op de LCD-module die is aangesloten op de ontvangerzijde. Als het LCD-scherm van de ontvanger niets weergeeft, controleer dan of uw TFT-scherm werkt of niet.
Dit is hoe u een Smart Restaurant Menu Ordering System-project kunt bouwen met behulp van Arduino en TFT-display. U kunt ook de oriëntatie van het scherm wijzigen om meer knoppen toe te voegen.
Een werkvideo met de volledige code wordt hieronder gegeven.