- רכיבים נדרשים
- מגן מגע TFT LCD עם ממשק Arduino
- תרשים מעגל
- הסבר קוד
- בדיקת פרויקט המסעדה החכמה באמצעות Arduino
כעת מערכות האוטומציה של היום נמצאות בכל מקום, בין אם הבית, המשרד או כל תעשייה גדולה, כולן מצוידות במערכות אוטומציה. מסעדות / מלונות מאמצות גם מגמות אוטומציה עדכניות ומתקינות רובוטים למסירת מזון וטאבלטים לצורך קבלת הזמנות. באמצעות כרטיסי תפריט דיגיטליים אלה כמו טאבלטים, לקוחות יכולים לבחור בקלות את הפריטים. מידע זה יישלח למטבח המסעדה ויוצג גם בתצוגה.
בפרויקט זה אנו בונים פרויקט מסעדה חכמה באמצעות מודול Arduino, תצוגת TFT ומודול משדר / מקלט RF 433MHz. כאן מקטע המשדר יורכב מארדואינו אוניו, תצוגת TFT ומשדר RF, באמצעותו הלקוחות יכולים לבחור את מוצרי המזון ולבצע את ההזמנה. בעוד שקטע המקלט מורכב מ- Arduino Uno, מודול LCD, מקלט RF ובאזר, אשר יותקנו במטבח המסעדה כדי לעקוב אחר פריטי ההזמנה.
רכיבים נדרשים
- Arduino Uno (2)
- משדר ומקלט RF 433MHz
- מגן מגע LCD TFT 2.4 "
- 16 * 2 מודול LCD
- I 2 C מודול
מגן מגע TFT LCD עם ממשק Arduino
מגן מגע 2.4 אינץ 'TFT LCD הוא תצוגת TFT תואמת ל- Arduino UNO / מגה צבעונית המגיעה עם מסך מגע ושקע כרטיס SD גם כן. מודול תצוגת TFT זה כולל תאורה אחורית בהירה ותצוגה 240X320 פיקסלים צבעונית. הוא מורכב גם מ- RGB נפרד. שליטה בפיקסלים שמעניקה לו רזולוציה הרבה יותר טובה מהצגים בשחור-לבן.
ממשק תצוגת TFT עם Arduino פשוט מאוד והוסבר במדריך הקודם. אתה רק צריך להרכיב את תצוגת TFT מעל לוח ה- Arduino Uno, כפי שמוצג בתמונה למטה.
LCD TFT שימושי מאוד בבניית יישומים ניידים כמו:
- מחשבון מסך מגע של Arduino
- נעילת קוד דיגיטלי מבוקר באמצעות טלפון חכם באמצעות Arduino
- שעון מעורר מסוג Arduino SMART
- רצועת LED NeoPixel עם ארדואינו ו- TFT LCD
כמו כן, בדוק את כל הפרויקטים מבוססי ה- TFT LCD כאן.
תרשים מעגל
פרויקט מערכת הזמנת תפריט מסעדה חכמה מורכב מקטע משדר ומקלט RF. גם משדר וגם צד המקלט משתמשים ב- Arduino Uno לעיבוד נתונים. השתמשנו בעבר באותם 433 מגה-הרץ RF עם Arduino לבניית פרויקטים כמו פעמון דלת אלחוטי, רובוט מבוקר תנועות ידיים וכו '. תרשים המעגל של קטע המשדר והמקלט מובא להלן.
מעגל קטע משדר
קטע המשדרים של פרויקט זה מורכב מ- Arduino Uno, משדר RF ומגן תצוגה TFT. קטע זה משמש להזמנה מהתפריט המוצג בתצוגת TFT. Arduino Uno הוא המוח של צד המשדר שמעבד את כל הנתונים, ומודול משדר ה- RF משמש להעברת הנתונים שנבחרו למקלט. סיכת הנתונים של מודול משדר ה- RF מחוברת לסיכה הדיגיטלית 12 של Arduino ואילו סיכות V CC ו- GND מחוברות לסיכה 5V ו- GND של Arduino.
מעגל מקטע מקלט
קטע המקלט של פרויקט זה מורכב מ- Arduino Uno, מקלט RF, מודול LCD 16 * 2 ומודול I2C. מקלט RF משמש לקבלת הנתונים מחלק המשדר, ומודול ה- LCD משמש להצגת הנתונים שהתקבלו. זמזם משמש להשמעת צליל בכל הזמנה חדשה. סיכת הנתונים של מקלט ה- RF מחוברת לסיכה הדיגיטלית 11 של Arduino בעוד V CC ו- GND pin מחוברים לסיכה 5V ו- GND של Arduino. הסיכה החיובית של הבאזר מחוברת לסיכה הדיגיטלית 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 שלכם.
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define 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 = קואורדינטות Y של נקודת ההתחלה של מלבני
w = רוחב המלבני
h = גובה המלבני
רדיוס = רדיוס הפינה העגולה
color = Color of the Rect.
הפונקציה 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 (WHITE); tft.drawRoundRect (0, 0, 319, 240, 8, WHITE); // גבול העמוד 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, GOLD); // 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 (WHITE); tft.setCursor (37, 47); tft.print ("Dish1");
בתוך פונקציית העברת החלל , שלח את הנתונים לצד המקלט כל שנייה אחת.
חלל שידור () {driver.send ((uint8_t *) msg, strlen (msg)); driver.waitPacketSent (); עיכוב (1000); }
בתוך פונקציית הלולאה הריקנית קרא את ערך ה- ADC הגולמי באמצעות הפונקציה ts.getPoint
TSPoint p = ts.getPoint ();
כעת השתמש בפונקציית המפה כדי להמיר את ערכי ה- ADC הגולמיים לקואורדינטות פיקסל.
px = מפה (px, TS_MAXX, TS_MINX, 0, 320); py = מפה (py, TS_MAXY, TS_MINY, 0, 240);
לאחר המרת ערכי ה- ADC הגולמיים לתיאום פיקסלים, הזן את קואורדינטות הפיקסלים של כפתור 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, GOLD); tft.drawRoundRect (30, 40, 100, 40, 8, לבן); tft.setCursor (37, 47); tft.println ("Dish1"); עיכוב (70); }
בצע את אותו ההליך בכל שאר הלחצנים.
קוד מקטע מקלט
עבור קוד מקטע מקלט RF, כלול את הספריות עבור מקלט RF ומודול LCD. כלול גם את ספריית SPI.h להקמת תקשורת SPI בין ארדואינו למקלט RF.
#לִכלוֹל
בתוך פונקציית הלולאה הריקנית, בדוק ברציפות הודעות מועברות. ואם מודול המקלט מקבל הודעה, הציג את ההודעה במודול ה- LCD והשמע צליל צפצוף.
אם (driver.recv (buf, & buflen)) // לא חוסם {int i; digitalWrite (זמזם, HIGH); עיכוב (1000); digitalWrite (זמזם, LOW);. lcd.print ("T1:"); lcd.print ((char *) buf);
בדיקת פרויקט המסעדה החכמה באמצעות Arduino
לאחר חיבור כל החומרה והעלאת הקוד גם למקטע המשדר וגם למקלט, הגיע הזמן לבדוק את הפרויקט. כדי לבדוק את הפרויקט, לחץ על כפתור בתצוגת TFT, עליו להציג את שם המנה עם מספר הטבלה T1 במודול ה- LCD המחובר לצד המקלט. אם LCD בצד המקלט אינו מציג שום דבר, בדוק אם מסך ה- TFT שלך עובד או לא.
כך תוכלו לבנות פרויקט מערכת הזמנת תפריטים חכמים באמצעות תצוגת Arduino ו- TFT. ניתן גם לשנות את כיוון המסך כדי להוסיף לחצנים נוספים.
להלן מופיע סרטון עבודה עם הקוד השלם.