جدول المحتويات:

FaceBot: 8 خطوات
FaceBot: 8 خطوات

فيديو: FaceBot: 8 خطوات

فيديو: FaceBot: 8 خطوات
فيديو: ازاي تكون مبدع في 8 خطوات 2024, شهر نوفمبر
Anonim
FaceBot
FaceBot

سيوضح لك هذا الدليل كيفية إنشاء روبوت منخفض التكلفة (39 دولارًا) لتجنب الاصطدام بواجهة على الخط. نقوم بذلك باستخدام شاشة OLED ساطعة منخفضة التكلفة. يحب طلابنا إضافة وجوه إلى الروبوتات الخاصة بهم. يحبون رسم وجوه مبتسمة تتغير بناءً على ما يفعله الروبوت.

هناك العديد من الروبوتات الصغيرة منخفضة التكلفة المتاحة بأقل من 25 دولارًا والتي تسمح لك بتدريس أساسيات علوم الكمبيوتر. تتمثل إحدى مشكلات هذه الروبوتات في أنها لا توفر الشفافية فيما يتعلق بما يحدث داخل الروبوت أثناء قيامك ببنائه. في عام 2018 ، بدأ كل شيء يتغير مع توفر شاشات OLED عالية الجودة منخفضة التكلفة. تتمتع شاشات العرض هذه بالمزايا التالية:

  • إنها مشرقة للغاية وذات تباين عالٍ. حتى في الغرفة المشرقة يسهل قراءتها من عدة زوايا.
  • لديهم دقة جيدة. تلك التي أستخدمها هي 168 × 64 بكسل. هذا هو ما يقرب من 4 أضعاف شاشات العرض السابقة التي استخدمناها.
  • إنها منخفضة الطاقة وتعمل باستمرار حتى عندما تنخفض قوة الروبوت الخاص بك.
  • إنها تكلفة منخفضة نسبيًا (حوالي 16 دولارًا لكل منها) والأسعار تنخفض.

في الماضي ، كان من الصعب برمجتها وستستخدم الكثير من الذاكرة لاستخدامها مع Arduino Nanos منخفض التكلفة. نانو يحتوي فقط على 2K أو ذاكرة وصول عشوائي ديناميكية. سيوضح لك هذا الدليل كيفية التغلب على هذه المشكلات وبناء روبوت يحب الأطفال برمجته.

الخطوة 1: الخطوة 1: بناء الروبوت الأساسي الخاص بك

الخطوة 1: قم ببناء الروبوت الأساسي الخاص بك
الخطوة 1: قم ببناء الروبوت الأساسي الخاص بك

لبناء FaceBot ، نبدأ عادةً بالروبوت الأساسي. أحد الأمثلة على ذلك هو CoderDojo Robot بقيمة 25 دولارًا الموصوف هنا. يستخدم هذا الروبوت Arduino Nano منخفض التكلفة والشائع ، وهو وحدة تحكم بسيطة في المحرك ، ومحركين DC و 4 أو 6 بطاريات AA. يبدأ معظم الطلاب في استخدام مستشعر ping لبناء روبوت لتجنب الاصطدام. نظرًا لأنه يوفر نظام طاقة 5 فولت ، فهو مثالي لجهاز FaceBot. للحفاظ على التكاليف منخفضة ، عادةً ما أطلب من طلابي طلب الأجزاء عبر الإنترنت من e-Bay. غالبًا ما تستغرق الأجزاء 2-3 أسابيع للوصول وتتطلب قدرًا بسيطًا من اللحام للمحركات ومفتاح الطاقة. يتم إجراء باقي التوصيلات باستخدام لوح التجارب 400 ربطة. كثيرًا ما يقوم الطلاب بغراء الأسلاك بالغراء الساخن لمنعها من الانزلاق.

هناك تغيير واحد نجريه على تصميم تفادي الاصطدام القياسي. نقوم بنقل مستشعر ping من أعلى الهيكل إلى أسفل الهيكل. هذا يترك مساحة للعرض أعلى الروبوت.

بمجرد الانتهاء من برمجة تجنب الاصطدام ، تقرأ لإضافة وجه!

الخطوة 2: الخطوة 2: ابحث عن شاشة OLED واطلبها

الخطوة 2: ابحث عن شاشة OLED واطلبها
الخطوة 2: ابحث عن شاشة OLED واطلبها

عندما ظهرت شاشات OLED ، تم تصميم الشاشات منخفضة التكلفة للساعات أو شاشات اللياقة البدنية. ونتيجة لذلك ، كانت صغيرة ، يبلغ عرضها حوالي بوصة واحدة. والخبر السار هو أنها كانت منخفضة التكلفة ، حوالي 3 دولارات. قمنا ببناء عدد قليل من الروبوتات باستخدام هذه الشاشات ، ولكن نظرًا لأن حجم شاشات العرض كان محدودًا ، فما يمكننا فعله على الشاشة. ثم في عام 2018 بدأنا نرى تكلفة شاشات OLED الأكبر حجمًا مقاس 2.42 بوصة تنخفض في السعر. في يناير من عام 2019 ، انخفضت الأسعار إلى حوالي 16 دولارًا. أخيرًا كان لدينا عرض رائع يمكننا استخدامه لوجوه الروبوت لدينا.

فيما يلي مواصفات هذه الشاشات:

  1. 2.42 بوصة (قياس قطري)
  2. 128 بكسل عبر (x- البعد)
  3. ارتفاع 64 بكسل (البعد y)
  4. طاقة منخفضة (عادة 10ma)
  5. أحادية اللون (تأتي باللون الأصفر والأخضر والأزرق والأبيض)
  6. واجهة SPI الافتراضية على الرغم من أنه يمكنك تغييرها إلى I2C إذا كنت تريد ذلك
  7. برنامج تشغيل SSD1309 (برنامج تشغيل عرض شائع جدًا)

تحتوي واجهة SPI على سبعة أسلاك. فيما يلي الملصقات النموذجية على الواجهة:

  1. CS - تحديد رقاقة
  2. DC - البيانات / الأوامر
  3. RES - إعادة تعيين
  4. SDA - البيانات - يجب توصيل هذا بـ Arduino Nano pin 11
  5. SCL - Clock - يجب توصيل هذا دبوس Arduino Nano 13
  6. VCC - +5 فولت
  7. GND - الأرض

ستحتاج أيضًا إلى بعض الأسلاك لتوصيل الشاشة بلوحة التجارب. عادةً ما تأتي الشاشات برأس ذي 7 أسنان تقوم بلحام الشاشة. لقد استخدمت 7 موصلات دوبونت 20mc من الذكور إلى الذكور وقمت بلحامها بحيث خرجت الأسلاك من الجزء الخلفي من الشاشة.

الخطوة 3: الخطوة 3: قم بتوصيل OLED بـ Arduino Nano

الخطوة 3: قم بتوصيل OLED بـ Arduino Nano
الخطوة 3: قم بتوصيل OLED بـ Arduino Nano
الخطوة 3: قم بتوصيل OLED بـ Arduino Nano
الخطوة 3: قم بتوصيل OLED بـ Arduino Nano

أنت الآن جاهز لاختبار OLED الخاص بك. أستخدم Arduino Nano آخر فقط لاختبار أن كل شاشة أحصل عليها تعمل. بمجرد أن تعمل الاختبارات ، أقوم بتوصيلها بالروبوت. يظهر مخطط الأسلاك لجهاز الاختبار في الشكل أعلاه. لاحظ أنه يمكنك نقل اتصالات OLED إلى دبابيس أخرى تدعم المخرجات الرقمية ، ولكن إذا تأكدت من أن SCL (الساعة) على Arduino Nano pin 13 و SDA (البيانات) على Arduino Nano pin 11 ، يمكنك استخدام الإعدادات الافتراضية في البرنامج. هذا يبقي شفرتك أبسط قليلاً.

الخطوة 4: الخطوة 4: اختبر شاشتك

الخطوة 4: اختبر شاشتك
الخطوة 4: اختبر شاشتك

لاختبار العرض الخاص بك ، سنستخدم مكتبة u8g2. هناك مكتبات أخرى يمكنك استخدامها ، ولكن من واقع خبرتي ، لا يوجد أي منها بجودة مكتبة u8g2. أحد العوامل الحاسمة هو مقدار ذاكرة الوصول العشوائي (RAM) داخل Arduino التي تستخدمها الشاشة. u8g2 هي المكتبة الوحيدة التي وجدتها تستخدم "وضع الصفحة" الذي سيعمل مع Arduino Nano.

يمكنك إضافة هذه المكتبة إلى Arduino IED الخاص بك عن طريق البحث عن "u8g2" في قائمة "إدارة المكتبات". يمكنك أيضًا تنزيل الكود مباشرةً من gethub.

github.com/olikraus/u8g2

رمز الاختبار الذي أستخدمه هنا:

github.com/dmccreary/coderdojo-robots/blob…

هناك بعض الأشياء التي يجب ملاحظتها. يتم التعليق على أرقام PIN SCL و SDA لأنها الدبابيس الافتراضية على Nano. مُنشئ u8g2 هو السطر الأساسي:

// نحن نستخدم SSD1306 ، 128x64 ، صفحة واحدة ، غير مسمى ، 4 أسلاك ، أجهزة ، SPI بدون دوران والتي تستخدم فقط 27٪ من الذاكرة الديناميكية

نحن نستخدم وضع الصفحة الواحدة لأن هذا الوضع يستخدم الحد الأدنى من ذاكرة الوصول العشوائي. نحن نستخدم واجهة الأجهزة المكونة من 4 أسلاك ويأتي OLED مع SPI افتراضيًا.

الخطوة 5: الخطوة 5: أضف OLED إلى الروبوت

الخطوة 5: أضف OLED الخاص بك إلى الروبوت
الخطوة 5: أضف OLED الخاص بك إلى الروبوت

الآن بعد أن أصبح لدينا OLED عامل ونعرف كيفية تهيئة مكتبات u8g2 ، أصبحنا جاهزين لدمج OLED مع الروبوت الأساسي الخاص بنا. هناك عدد قليل من الأشياء في الاعتبار. في اختبار OLED الخاص بنا ، استخدمنا المسامير التي كانت بجوار بعضها البعض لجعل الأسلاك أسهل. لسوء الحظ ، نحتاج إلى pin 9 لقيادة الروبوت الخاص بنا لأنه أحد دبابيس PWM التي نحتاجها لإرسال إشارة تناظرية إلى سائق المحرك. الحل هو نقل السلك الموجود على الدبوس 9 إلى دبوس مجاني آخر ثم تغيير العبارة #define إلى هذا الدبوس الجديد. لتركيب OLED على الجزء الأمامي من الروبوت ، قمت بقطع قطعتين مثلثتين من زجاج شبكي ولصقها بالغراء الساخن منهم إلى الهيكل. أحب دائمًا استخدام بعض ورق الصنفرة لخشونة سطح زجاج شبكي قبل أن ألصق الأجزاء معًا بالغراء الساخن حتى لا تتفكك بسهولة.

بعد ذلك ، دعنا نحصل على بعض البيانات على OLED الخاص بنا ونرسم بعض الوجوه على الروبوت!

الخطوة 6: الخطوة 6: عرض معلمات الروبوت

الخطوة 6: عرض معلمات الروبوت
الخطوة 6: عرض معلمات الروبوت

من الأشياء اللطيفة المتعلقة بالحصول على شاشة هو أنها تساعد حقًا في تصحيح أخطاء ما يجري داخل الروبوت أثناء قيادته. ليس من غير المألوف للمطورين أن يكون لديهم وظيفة تعمل على سطح المكتب عندما تكون متصلاً بجهاز الكمبيوتر الخاص بك فقط لجعلها لا تعمل عندما يتجول الروبوت. يعد عرض قيمة مثل المسافة التي تم قياسها بواسطة مستشعر ping مثالًا جيدًا لعرض معلمة الروبوت.

في الصورة أعلاه ، يُظهر السطر الأول (Echo Time) وقت التأخير بين خروج الصوت من مكبر الصوت بالموجات فوق الصوتية والوقت الذي يستقبله الميكروفون. ثم يتم تحويل هذا الرقم إلى سنتيمترات في السطر الثاني (المسافة بالسنتيمتر). يتم تحديث العداد في البحث الثاني لإظهار أن العرض يتم تحديثه. يتم عرض "Turning…" فقط إذا كانت المسافة أقل من رقم معين يسمى حد الانعطاف. تتحرك كلتا العجلتين للأمام إذا كانت مسافة اختبار الاتصال أعلى من هذا الرقم. إذا كان الرقم أقل من حد الانعطاف ، فإننا نعكس المحركات (النسخ الاحتياطي) ثم نغير الاتجاه.

إليك بعض التعليمات البرمجية النموذجية التي توضح لك كيفية أخذ القيم من مستشعر ping وعرض القيم على شاشة OLED الخاصة بك.

فيما يلي مثال يختبر ثلاثة مستشعرات ping (يسار ووسط ويمين) ويعرض القيم على الشاشة:

github.com/dmccreary/coderdojo-robots/blob…

الخطوة 7: الخطوة 7: ارسم بعض الوجوه

الخطوة السابعة: ارسم بعض الوجوه!
الخطوة السابعة: ارسم بعض الوجوه!

الآن لدينا كل القطع في مكانها لرسم بعض الوجوه. يعتقد طلابنا عادة أن الروبوت يجب أن يكون له وجه سعيد إذا كان يقود إلى الأمام. عندما يرى شيئًا أمامه ، فإنه يسجل شعورًا بالدهشة. ثم يتراجع وينظر حوله ، ربما مع تحرك العينين للإشارة إلى الاتجاه الذي سيتجه إليه.

أمر الرسم لرسم وجه بسيط للغاية. يمكننا رسم دائرة لمخطط الوجه وملئها بدوائر لكل عين. يمكن أن يكون الفم نصف دائرة للابتسامة ودائرة مستديرة ممتلئة للشعور بالدهشة. هذا هو المكان الذي يمكن للأطفال استخدام إبداعاتهم فيه لتخصيص التعبيرات. أحيانًا أرسم وجوهًا سيئة عمدًا وأطلب من الطلاب مساعدتي في تحسينها.

يمكنك استخدام وظائف display.height () و display.width () للحصول على حجم الشاشة. في الكود أدناه نقوم بإعداد المتغيرات

half_width = display.width () / 2 ؛ half_height = display.height () / 2 ؛

إذا قمت بإجراء هذه الحسابات عدة مرات ، فسيكون الرمز أسرع قليلاً إذا تم حسابها مرة واحدة وتخزينها في متغير. فيما يلي بعض الأمثلة على كيفية رسم الوجه المستقيم الممل أعلاه:

// نقوم بهذا في بداية كل حلقة

display.clearDisplay () ، // ارسم وجهًا فاتحًا لعرض الخلفية. // العين اليسرى darkdisplay.fillCircle (half_width + 10، display.height () / 3، 4، BLACK) ؛ // ارسم خطًا مستقيمًا لعرض الفم. // يرسل هذا الخط وجهنا الجديد إلى شاشة عرض OLED.

الخطوة 8: الخطوة 8: التخصيص

الخطوة 8: التخصيص
الخطوة 8: التخصيص

رسم الوجه الأساسي هو مجرد البداية. يمكن للطلاب إنشاء العديد من الاختلافات. أضاف العديد من الطلاب مكبر صوت صغير يقوم بتشغيل نغمات أو أصوات أثناء تنقلهم.

يمكنك أيضًا إنشاء برامج اختبار أصغر تساعد طلابك على توصيل المحركات بشكل صحيح. على سبيل المثال ، سوف يخبر سهم (مثلث) على الشاشة الطالب بالاتجاه الذي يجب أن تدور فيه العجلة عند توصيل المحركات. دورات برنامج الاختبار من خلال كل اتجاه من اتجاهات المحرك:

  1. حق للأمام
  2. عكس اليمين
  3. اليسار إلى الأمام
  4. عكس اليسار

لكل وضع ، يتم تحديث الشاشة بشاشة جديدة لإظهار العجلة التي يجب أن تدور وفي أي اتجاه.

مثال على هذا البرنامج هنا

github.com/dmccreary/coderdojo-robots/blob…

هناك العديد من الأمثلة الإضافية وتفاصيل البرمجة على صفحة CoderDojo Robots GitHub FaceBot.

هناك أيضًا إصدار من FaceBot robot يسمح للطلاب بتغيير جميع معلمات تجنب الاصطدام (السرعة الأمامية ، مسافة الدوران ، وقت الدوران ، سرعة الدوران) مباشرة باستخدام الشاشة. لا يلزم وجود جهاز كمبيوتر "لبرمجة" هذه الروبوتات! تعد هذه الإصدارات مثالية لـ MakerFairs والأحداث التي لا تريد نقل أجهزة الكمبيوتر حولها.

يرجى إخبارنا بالوجوه الجديدة التي تبتكرها أنت وطلابك!

ترميز سعيد!

موصى به: