- Απαιτούμενα στοιχεία
- Διασύνδεση TFT LCD Ασπίδα αφής με Arduino
- Διάγραμμα κυκλώματος
- Επεξήγηση κώδικα
- Δοκιμή του Έργου Smart Restaurant χρησιμοποιώντας το Arduino
Τώρα τα συστήματα αυτοματισμού της ημέρας είναι παντού είτε το σπίτι, το γραφείο είτε οποιαδήποτε μεγάλη βιομηχανία, όλα εξοπλισμένα με συστήματα αυτοματισμού Τα εστιατόρια / ξενοδοχεία υιοθετούν επίσης τις πρόσφατες τάσεις αυτοματισμού και εγκαθιστούν ρομπότ για την παράδοση φαγητού και tablet για τη λήψη παραγγελιών. Χρησιμοποιώντας αυτές τις κάρτες ψηφιακών μενού όπως tablet, οι πελάτες μπορούν να επιλέξουν εύκολα τα αντικείμενα. Αυτές οι πληροφορίες θα σταλούν στην κουζίνα του εστιατορίου και θα εμφανιστούν επίσης στην οθόνη.
Σε αυτό το έργο, χτίζουμε ένα Έξυπνο Έργο Έργου χρησιμοποιώντας Arduino, οθόνη TFT και μονάδα πομπού / δέκτη RF 433MHz. Εδώ, ο τομέας του πομπού θα αποτελείται από Arduino Uno, οθόνη TFT και έναν πομπό RF, με τον οποίο οι πελάτες μπορούν να επιλέξουν τα είδη φαγητού και να κάνουν την παραγγελία. Ενώ το τμήμα δέκτη αποτελείται από ένα Arduino Uno, μονάδα LCD, δέκτη RF και ένα Buzzer, τα οποία θα εγκατασταθούν στην κουζίνα του εστιατορίου για την παρακολούθηση των παραγγελιών.
Απαιτούμενα στοιχεία
- Arduino Uno (2)
- Πομπός & δέκτης RF 433MHz
- Ασπίδα TFT LCD 2,4 "
- Μονάδα LCD 16 * 2
- Ενότητα I 2 C
Διασύνδεση TFT LCD Ασπίδα αφής με Arduino
2.4 "TFT LCD Touch shield είναι μια πολύχρωμη οθόνη Arduino UNO / Mega TFT συμβατή με οθόνη αφής και υποδοχή κάρτας SD. Αυτή η μονάδα οθόνης TFT διαθέτει έντονο οπίσθιο φωτισμό και πολύχρωμη οθόνη 240X320 pixel. Αποτελείται επίσης από μεμονωμένο RGB έλεγχος pixel που του δίνει πολύ καλύτερη ανάλυση από τις ασπρόμαυρες οθόνες.
Η διασύνδεση της οθόνης TFT με το Arduino είναι πολύ απλή και εξηγείται στο προηγούμενο σεμινάριο. Το μόνο που χρειάζεται είναι να τοποθετήσετε την οθόνη TFT πάνω στην πλακέτα Arduino Uno, όπως φαίνεται στην παρακάτω εικόνα.
Το TFT LCD είναι πολύ χρήσιμο για την κατασκευή φορητών εφαρμογών όπως:
- Υπολογιστής οθόνης αφής Arduino
- Έξυπνο ψηφιακό κλείδωμα κωδικού ελεγχόμενου τηλεφώνου χρησιμοποιώντας το Arduino
- Arduino SMART Ξυπνητήρι
- NeoPixel LED Strip με Arduino και TFT LCD
Επίσης, δείτε όλα τα έργα που βασίζονται σε TFT LCD εδώ.
Διάγραμμα κυκλώματος
Το έργο Smart Restaurant Menu Ordering System αποτελείται από την ενότητα RF πομπός και δέκτη. Τόσο ο πομπός όσο και ο δέκτης χρησιμοποιούν το Arduino Uno για την επεξεργασία δεδομένων. Χρησιμοποιήσαμε προηγουμένως τις ίδιες μονάδες RF 433 MHz με το Arduino για την κατασκευή έργων όπως ένα ασύρματο κουδούνι, ρομπότ ελεγχόμενης χειρονομίας κ.λπ. Το διάγραμμα κυκλώματος για την ενότητα πομπού και δέκτη δίνεται παρακάτω.
Κύκλωμα τμήματος πομπού
Το τμήμα πομπού αυτού του έργου αποτελείται από ένα Arduino Uno, RF Transmitter και TFT οθόνη ασπίδα Αυτή η ενότητα χρησιμοποιείται για παραγγελία από το μενού που εμφανίζεται στην οθόνη TFT. Το Arduino Uno είναι ο εγκέφαλος της πλευράς του πομπού που επεξεργάζεται όλα τα δεδομένα και η μονάδα πομπού RF χρησιμοποιείται για τη μετάδοση των επιλεγμένων δεδομένων στον δέκτη. Ο ακροδέκτης δεδομένων της μονάδας πομπού RF συνδέεται με τον ψηφιακό ακροδέκτη 12 του Arduino ενώ οι ακίδες V CC και GND συνδέονται με τον ακροδέκτη 5V και GND του Arduino.
Κύκλωμα ενότητας δέκτη
Το τμήμα δέκτη αυτού του έργου αποτελείται από ένα Arduino Uno, RF Receiver, 16 * 2 LCD module και I2C module. Ο δέκτης RF χρησιμοποιείται για τη λήψη των δεδομένων από την ενότητα πομπού και η μονάδα LCD χρησιμοποιείται για την εμφάνιση των ληφθέντων δεδομένων. Ένας βομβητής χρησιμοποιείται για να κάνει ήχο κάθε φορά που γίνεται μια νέα παραγγελία. Ο ακροδέκτης δεδομένων του δέκτη RF συνδέεται με τον ψηφιακό ακροδέκτη 11 του Arduino ενώ ο ακροδέκτης V CC και GND συνδέεται με τον ακροδέκτη 5V και GND του Arduino. Ο θετικός πείρος του Buzzer συνδέεται στον ψηφιακό πείρο 2 του Arduino και ο αρνητικός πείρος συνδέεται στον ακροδέκτη GND του Arduino. Οι ακροδέκτες SCL και SDA της μονάδας I2C συνδέονται με αναλογικούς ακροδέκτες A5 & A4 Arduino ενώ οι ακίδες VCC και GND είναι συνδεδεμένοι σε ακίδες 5V και GND του Arduino.
Επεξήγηση κώδικα
Ο πλήρης κωδικός για τις πλευρές πομπού RF και δέκτη για αυτό το έξυπνο σύστημα παραγγελίας στο εστιατόριο παρέχεται στο τέλος του εγγράφου. Όλες οι βιβλιοθήκες που χρησιμοποιούνται σε αυτό το έργο μπορούν να ληφθούν από τους δεδομένους συνδέσμους.
- Βιβλιοθήκη RadioHead
- Βιβλιοθήκη SPFD5408
Η βιβλιοθήκη RadioHead χρησιμοποιείται για τη μονάδα πομπού / δέκτη RF, ενώ η βιβλιοθήκη SPFD5408 χρησιμοποιείται για οθόνη TFT.
Κωδικός τμήματος πομπού:
Ξεκινήστε τον κώδικα συμπεριλαμβάνοντας όλες τις απαιτούμενες βιβλιοθήκες. Η βιβλιοθήκη RH_ASK.h χρησιμοποιείται για επικοινωνία μεταξύ μονάδων πομπού και δέκτη. Το SPFD5408_Adafruit_GFX.h είναι μια βασική βιβλιοθήκη γραφικών για οθόνη TFT.
#περιλαμβάνω
Μετά από αυτό, δημιουργήστε ένα αντικείμενο που ονομάζεται «πρόγραμμα οδήγησης» για RH_ASK .
Πρόγραμμα οδήγησης RH_ASK
Στη συνέχεια, ορίστε τις ελάχιστες και μέγιστες βαθμονομημένες τιμές άξονα X & Y για την οθόνη TFT.
# καθορισμός TS_MINX 125 # καθορισμός TS_MINY 85 # καθορισμός TS_MAXX 965 # καθορισμός TS_MAXY 905
Τώρα μέσα στη λειτουργία drawHome σχεδιάστε μια διάταξη για την οθόνη TFT σας. Εδώ χρησιμοποιείται το tft.fillScreen για να ορίσετε το χρώμα του φόντου.
Η συνάρτηση tft.drawRoundRect χρησιμοποιείται για τη δημιουργία ενός γεμάτου ορθογωνίου. Η σύνταξη για τη λειτουργία tft.drawRoundRect δίνεται παρακάτω:
tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t ακτίνα, uint16_t χρώμα)
Οπου:
x0 = X συντεταγμένη του σημείου εκκίνησης του ορθογώνιου
y0 = Υ συντεταγμένη του αρχικού σημείου ορθογώνιου
w = Πλάτος του ορθογωνίου
h = Ύψος του ορθογώνιου
ακτίνα = Ακτίνα της στρογγυλής γωνίας
color = Χρώμα του ορθού.
Η συνάρτηση tft.fillRoundRect χρησιμοποιείται για να σχεδιάσει ένα γεμάτο ορθογώνιο. Η σύνταξη τηςσυνάρτησης tft.fillRoundRect δίνεται παρακάτω:
tft.fillRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color) tft.fillScreen (ΛΕΥΚΟ); tft.drawRoundRect (0, 0, 319, 240, 8, ΛΕΥΚΟ); // Περίγραμμα σελίδας tft.fillRoundRect (30, 40, 100, 40, 8, GOLD); tft.drawRoundRect (30, 40, 100, 40, 8, ΛΕΥΚΟ); // Dish1 tft.fillRoundRect (30, 90, 100, 40, 8, GOLD); tft.drawRoundRect (30, 90, 100, 40, 8, ΛΕΥΚΟ); // Dish2 tft.fillRoundRect (30, 140, 100, 40, 8, ΧΡΥΣΟΣ); // Dish3 tft.drawRoundRect (30, 140, 100, 40, 8, ΛΕΥΚΟ);
Αφού δημιουργήσετε τα κουμπιά στην οθόνη TFT, εμφανίστε τώρα το κείμενο στα κουμπιά. Το tft.setCursor χρησιμοποιείται για τη ρύθμιση του δρομέα από το σημείο όπου θέλετε να ξεκινήσετε το κείμενο.
tft.setCursor (60, 0); tft.setTextSize (3); tft.setTextColor (LIME); tft.print ("Μενού"); tft.setTextSize (2); tft.setTextColor (ΛΕΥΚΟ); tft.setCursor (37, 47); tft.print ("Πιάτο1");
Μέσα στη λειτουργία κενής μετάδοσης , στέλνετε τα δεδομένα στην πλευρά του δέκτη κάθε 1 δευτερόλεπτο.
void transmit () {driver.send ((uint8_t *) msg, strlen (msg)); driver.waitPacketSent (); καθυστέρηση (1000) }
Μέσα στη συνάρτηση void loop , διαβάστε την τιμή Raw ADC χρησιμοποιώντας τη συνάρτηση ts.getPoint.
TSPoint p = ts.getPoint ();
Τώρα χρησιμοποιήστε τη λειτουργία χάρτη για να μετατρέψετε τις τιμές Raw ADC σε συντεταγμένες Pixel.
px = χάρτης (px, TS_MAXX, TS_MINX, 0, 320); py = χάρτης (py, TS_MAXY, TS_MINY, 0, 240);
Αφού μετατρέψετε τις τιμές Raw ADC σε συντεταγμένη pixel, εισαγάγετε τις συντεταγμένες pixel για το κουμπί Dish1 και αν κάποιος αγγίξει την οθόνη μεταξύ αυτής της περιοχής, τότε στείλτε το μήνυμα στην πλευρά του δέκτη.
εάν (px> 180 && px <280 && py> 190 && py <230 && pz> MINPRESSURE && pz <MAXPRESSURE) {Serial.println ("Dish1"); msg = "Πιάτο1"; διαβιβάζουν(); tft.fillRoundRect (30, 40, 100, 40, 8, ΛΕΥΚΟ); καθυστέρηση (70) tft.fillRoundRect (30, 40, 100, 40, 8, ΧΡΥΣΟΣ); tft.drawRoundRect (30, 40, 100, 40, 8, ΛΕΥΚΟ); tft.setCursor (37, 47); tft.println ("Πιάτο1"); καθυστέρηση (70) }
Ακολουθήστε την ίδια διαδικασία για όλα τα άλλα κουμπιά.
Κωδικός Ενότητας Παραλήπτη
Για τον κωδικό ενότητας δέκτη RF, συμπεριλάβετε τις βιβλιοθήκες για δέκτη RF και μονάδα LCD. Συμπεριλάβετε επίσης τη βιβλιοθήκη SPI.h για τη δημιουργία μιας επικοινωνίας SPI μεταξύ του Arduino και του δέκτη RF.
#περιλαμβάνω
Μέσα στη λειτουργία κενών βρόχων , ελέγχετε συνεχώς για τα μεταδιδόμενα μηνύματα. Και αν η μονάδα δέκτη λάβει ένα μήνυμα, τότε εμφανίστε το μήνυμα στη μονάδα LCD και κάντε έναν ήχο μπιπ.
if (driver.recv (buf, & buflen)) // Μη αποκλεισμός {int i; digitalWrite (βομβητής, ΥΨΗΛΟΣ); καθυστέρηση (1000) digitalWrite (βομβητής, LOW),. lcd.print ("T1:"); lcd.print ((char *) buf);
Δοκιμή του Έργου Smart Restaurant χρησιμοποιώντας το Arduino
Μετά τη σύνδεση όλου του υλικού και τη μεταφόρτωση του κωδικού τόσο για το τμήμα πομπό όσο και για τον δέκτη, τώρα ήρθε η ώρα να δοκιμάσετε το έργο. Για να δοκιμάσετε το έργο, πατήστε ένα κουμπί στην οθόνη TFT, θα πρέπει να εμφανίζει το όνομα του πιάτου με τον αριθμό πίνακα που είναι T1 στη μονάδα LCD που είναι συνδεδεμένη στην πλευρά του δέκτη. Εάν η LCD πλευρά του δέκτη δεν εμφανίζει τίποτα, ελέγξτε αν η οθόνη TFT λειτουργεί ή όχι.
Έτσι μπορείτε να δημιουργήσετε ένα έργο Smart Restaurant Menu Ordering System χρησιμοποιώντας την οθόνη Arduino και TFT. Μπορείτε επίσης να αλλάξετε τον προσανατολισμό της οθόνης για να προσθέσετε περισσότερα κουμπιά.
Παρακάτω δίνεται ένα βίντεο εργασίας με τον πλήρη κώδικα.