- المكونات مطلوبة
- ربط درع اللمس TFT LCD مع Arduino
- مخطط الرسم البياني
- شرح الكود
- اختبار مشروع المطعم الذكي باستخدام الأردوينو
أنظمة الأتمتة الحالية متوفرة في كل مكان سواء كان المنزل أو المكتب أو أي صناعة كبيرة ، وكلها مجهزة بأنظمة التشغيل الآلي. تتبنى المطاعم / الفنادق أيضًا اتجاهات الأتمتة الحديثة وتقوم بتركيب الروبوتات لتوصيل الطعام والأجهزة اللوحية لتلقي الطلبات. باستخدام بطاقات القائمة الرقمية هذه مثل الأجهزة اللوحية ، يمكن للعملاء تحديد العناصر بسهولة. سيتم إرسال هذه المعلومات إلى مطبخ المطعم وعرضها أيضًا على الشاشة.
في هذا المشروع ، نقوم ببناء مشروع مطعم ذكي باستخدام Arduino ، وشاشة TFT ، ووحدة إرسال / مستقبل RF 433 ميجا هرتز. هنا سيتألف قسم جهاز الإرسال من Arduino Uno ، وشاشة TFT ، وجهاز إرسال RF ، حيث يمكن للعملاء اختيار العناصر الغذائية وتقديم الطلب. بينما يتكون قسم الاستقبال من Arduino Uno ووحدة LCD وجهاز استقبال RF وجرس يتم تثبيته في مطبخ المطعم لتتبع عناصر الطلب.
المكونات مطلوبة
- اردوينو اونو (2)
- 433 ميجا هرتز الارسال والاستقبال RF
- شاشة لمس TFT LCD مقاس 2.4 بوصة
- وحدة 16 * 2 LCD
- أنا 2 ج الوحدة النمطية
ربط درع اللمس TFT LCD مع Arduino
شاشة TFT LCD تعمل باللمس مقاس 2.4 بوصة هي شاشة TFT متعددة الألوان متوافقة مع Arduino UNO / Mega تأتي مع شاشة تعمل باللمس ومقبس بطاقة SD أيضًا. تتميز وحدة العرض TFT هذه بإضاءة خلفية ساطعة وشاشة ملونة 240X320 بكسل.كما أنها تتكون من RGB فردي تحكم بالبكسل يمنحها دقة أفضل بكثير من شاشات العرض بالأبيض والأسود.
يعد الربط بين شاشة TFT و Arduino أمرًا بسيطًا للغاية وقد تم شرحه في البرنامج التعليمي السابق. ما عليك سوى تركيب شاشة TFT على لوحة Arduino Uno ، كما هو موضح في الصورة أدناه.
تعتبر شاشة TFT LCD مفيدة جدًا في إنشاء تطبيقات محمولة مثل:
- اردوينو شاشة تعمل باللمس حاسبة
- قفل رمز رقمي للتحكم في الهاتف الذكي باستخدام Arduino
- اردوينو المنبه الذكي
- شريط NeoPixel LED مع Arduino و TFT LCD
تحقق أيضًا من جميع المشاريع القائمة على TFT LCD هنا.
مخطط الرسم البياني
يتكون مشروع نظام طلب قائمة المطاعم الذكية من قسم مرسل واستقبال الترددات اللاسلكية يستخدم كل من جانب المرسل والمستقبل Arduino Uno لمعالجة البيانات. استخدمنا سابقًا نفس وحدات التردد اللاسلكي 433 ميجاهرتز مع Arduino لبناء مشاريع مثل جرس الباب اللاسلكي ، والروبوت الذي يتم التحكم فيه بإيماءات اليد ، وما إلى ذلك.
دائرة قسم الارسال
يتكون قسم جهاز الإرسال في هذا المشروع من Arduino Uno و RF Transmitter و TFT. يستخدم هذا القسم للطلب من القائمة التي تظهر على شاشة TFT. Arduino Uno هو عقل جانب المرسل الذي يعالج جميع البيانات ، ويتم استخدام وحدة إرسال RF لنقل البيانات المحددة إلى جهاز الاستقبال. يتم توصيل دبوس البيانات الخاص بوحدة إرسال التردد اللاسلكي بالدبوس الرقمي 12 من Arduino بينما يتم توصيل دبابيس V CC و GND بدبوس 5V و GND في Arduino.
دائرة قسم المستقبل
يتكون قسم الاستقبال في هذا المشروع من Arduino Uno و RF Receiver ووحدة 16 * 2 LCD ووحدة I2C. يستخدم مستقبل الترددات اللاسلكية لتلقي البيانات من قسم جهاز الإرسال ، ويتم استخدام وحدة LCD لعرض البيانات المستلمة. يتم استخدام الجرس لإصدار صوت كلما تم تقديم طلب جديد. يتم توصيل دبوس البيانات الخاص بمستقبل التردد اللاسلكي بالدبوس الرقمي 11 في Arduino بينما يتم توصيل دبوس V CC و GND بدبوس 5V و GND في Arduino. يتم توصيل الدبوس الموجب لـ Buzzer بالدبوس الرقمي 2 من Arduino ، والدبوس السالب متصل بدبوس GND في Arduino. يتم توصيل دبابيس SCL و SDA لوحدة I2C بالدبابيس التناظرية A5 و A4 Arduino بينما يتم توصيل دبابيس VCC و GND بمسامير 5V و GND في Arduino.
شرح الكود
يتم تقديم الكود الكامل لجوانب مرسل وجهاز الاستقبال لنظام الطلب الذكي هذا في المطعم في نهاية المستند. يمكن تنزيل جميع المكتبات المستخدمة في هذا المشروع من الروابط المحددة.
- مكتبة 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 radius، uint16_t color)
أين:
x0 = الاحداثى X لنقطة بداية المستطيل
y0 = إحداثي Y لنقطة بداية المستطيل
w = عرض المستطيل
ح = ارتفاع المستطيل
نصف القطر = نصف قطر الزاوية المستديرة
اللون = لون المستقيم.
تُستخدم الدالة 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 ، أبيض) ؛ // حدود الصفحة tft.fillRoundRect (30 ، 40 ، 100 ، 40 ، 8 ، الذهب) ؛ tft.drawRoundRect (30 ، 40 ، 100 ، 40 ، 8 ، أبيض) ؛ // Dish1 tft.fillRoundRect (30 ، 90 ، 100 ، 40 ، 8 ، ذهبي) ؛ 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 (أبيض) ، tft.setCursor (37 ، 47) ؛ tft.print ("Dish1") ؛
داخل وظيفة الإرسال الفارغة ، أرسل البيانات إلى جانب المستقبل كل ثانية.
إرسال باطل () {driver.send ((uint8_t *) msg، strlen (msg))؛ driver.waitPacketSent () ، تأخير (1000) ؛ }
داخل وظيفة الحلقة الفارغة ، اقرأ قيمة Raw ADC باستخدام وظيفة ts.getPoint.
TSPoint p = ts.getPoint () ،
استخدم الآن وظيفة الخريطة لتحويل قيم Raw ADC إلى إحداثيات البكسل.
px = خريطة (px ، TS_MAXX ، TS_MINX ، 0 ، 320) ؛ py = map (py، TS_MAXY، TS_MINY، 0، 240) ؛
بعد تحويل قيم Raw ADC إلى تنسيق بكسل ، أدخل إحداثيات البكسل لزر Dish1 وإذا لمس شخص ما الشاشة بين هذه المنطقة ، فأرسل الرسالة إلى جانب المتلقي.
if (px> 180 && px <280 && py> 190 && py <230 && pz> MINPRESSURE && pz <MAXPRESSURE) {Serial.println ("Dish1")؛ msg = "Dish1" ؛ إرسال () ؛ 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 ("Dish1") ؛ تأخير (70) ؛ }
اتبع نفس الإجراء لجميع الأزرار الأخرى.
كود قسم المتلقي
بالنسبة إلى رمز قسم مستقبل الترددات اللاسلكية ، قم بتضمين مكتبات مستقبل الترددات اللاسلكية ووحدة LCD. قم أيضًا بتضمين مكتبة SPI.h لإنشاء اتصال SPI بين Arduino وجهاز استقبال RF.
#تضمن
داخل وظيفة الحلقة الفارغة ، تحقق باستمرار من الرسائل المرسلة. وإذا تلقت وحدة الاستقبال رسالة ، فقم بعرض الرسالة على وحدة LCD وإصدار صوت صفير.
if (driver.recv (buf، & buflen)) // Non-blocking {int i؛ الكتابة الرقمية (الجرس ، عالية) ؛ تأخير (1000) ؛ digitalWrite (الجرس ، منخفض) ؛. lcd.print ("T1:") ؛ lcd.print ((char *) buf) ؛
اختبار مشروع المطعم الذكي باستخدام الأردوينو
بعد توصيل جميع الأجهزة وتحميل الرمز لكل من قسم جهاز الإرسال والاستقبال ، حان الوقت الآن لاختبار المشروع. لاختبار المشروع ، اضغط على زر على شاشة TFT ، يجب أن يعرض اسم الطبق مع رقم الجدول الذي هو T1 على وحدة LCD المتصلة بجانب جهاز الاستقبال. إذا لم تعرض شاشة LCD الجانبية لجهاز الاستقبال أي شيء ، فتحقق مما إذا كانت شاشة TFT تعمل أم لا.
هذه هي الطريقة التي يمكنك بها إنشاء مشروع نظام طلب قائمة المطاعم الذكي باستخدام شاشة Arduino و TFT. يمكنك أيضًا تغيير اتجاه الشاشة لإضافة المزيد من الأزرار.
A فيديو العمل مع رمز كاملة ويرد أدناه.