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

منصة اردوينو للروبوتات البسيطة: 5 خطوات
منصة اردوينو للروبوتات البسيطة: 5 خطوات

فيديو: منصة اردوينو للروبوتات البسيطة: 5 خطوات

فيديو: منصة اردوينو للروبوتات البسيطة: 5 خطوات
فيديو: مقدمة سلسلة - تعلم الاردوينو والروبوتات ببساطة 2024, يوليو
Anonim
منصة الروبوتات اردوينو بسيطة!
منصة الروبوتات اردوينو بسيطة!
منصة الروبوتات اردوينو بسيطة!
منصة الروبوتات اردوينو بسيطة!

لقد حصلت للتو على Arduino بعد اللعب مع بعض وحدات التحكم الدقيقة AVR خلال اجتماعات فريق Robotics. لقد أحببت فكرة وجود شريحة قابلة للبرمجة رخيصة جدًا يمكن تشغيلها تقريبًا من واجهة كمبيوتر بسيطة ، لذا حصلت على Arduino لأنه يحتوي بالفعل على لوحة رائعة وواجهة USB. بالنسبة إلى أول مشروع لي في Arduino ، قمت بحفر مجموعة Vex Robotics التي كنت أضعها في بعض المسابقات التي قمت بها في المدرسة الثانوية. كنت أرغب دائمًا في إنشاء منصة روبوتات مدفوعة بالكمبيوتر ، لكن المتحكم الدقيق Vex يتطلب كابل برمجة لم يكن لدي. قررت استخدام Arduino الجديد الخاص بي (وربما لاحقًا شريحة AVR عارية إذا قمت بتشغيلها) لقيادة النظام الأساسي. في النهاية ، أرغب في الحصول على كمبيوتر محمول ثم يمكنني قيادة الروبوت باستخدام WiFi وعرض كاميرا الويب الخاصة به عن بُعد.

تمكنت من الحصول على بروتوكول تسلسلي لائق ومثال بسيط يقود الروبوت باستخدام وحدة تحكم Xbox 360 متصلة بجهاز كمبيوتر يعمل بنظام Linux.

الخطوة 1: ما الذي يمكنه فعله …

ما يمكن أن تفعله …
ما يمكن أن تفعله …
ما يمكن أن تفعله …
ما يمكن أن تفعله …

Arduino عبارة عن منصة متعددة الاستخدامات. كان هدفي الأساسي هو جعل Arduino يربط محركي Vex بجهاز الكمبيوتر ، لكن كان لدي الكثير من دبابيس الإدخال / الإخراج المتبقية وقررت إضافة بعض الأشياء الإضافية. لدي الآن RGB LED لحالة المنفذ التسلسلي (أخضر إذا كانت الحزم جيدة ، وأحمر إذا كانت سيئة) ومروحة كمبيوتر يعمل بواسطة ترانزستور. يمكنني أيضًا إضافة مفاتيح وأجهزة استشعار لكنني لم أضع أيًا منها عليها حتى الآن ، وأفضل ما في ذلك هو أنه يمكنك إضافة ما تريد إلى روبوت Arduino. لا يتطلب الأمر سوى القليل من رمز الواجهة للتحكم في العناصر الإضافية والحصول على مدخلات إلى الكمبيوتر.

الخطوة 2: الأجزاء

القطع
القطع
القطع
القطع
القطع
القطع

بالنسبة لروبوتي ، استخدمت عدة أجزاء مختلفة. كانت معظم الأجزاء من الأشياء القديمة التي كنت أضعها حول الطابق السفلي الخاص بي. ومع ذلك ، فإن الكود صغير بما يكفي بحيث يتناسب بسهولة مع أي بطاقة أردوينو. من المحتمل أن يتناسب مع ATTiny (إذا قمت ببناء وحدة تحكم روبوت بصرف النظر عن Arduino ، فإن ATTiny 2313 يبدو خيارًا جيدًا ، فهو أصغر وأرخص ولكن لا يزال لديه الكثير من المخرجات وواجهة UART تسلسلية) 2) Vex Robotics PlatformI حصلت على مجموعة Vex منذ بضع سنوات لبناء روبوت يتم التحكم فيه عن طريق الراديو لالتقاط الأشياء لمسابقة المدرسة الثانوية. لقد قمت ببناء قاعدة "الروبوت المربع" الأساسية التي تحتوي على 4 عجلات يقودها محركان. يمكنك استبدال قواعد الروبوت الأخرى إذا كان لديك منصة أخرى تريد قيادتها. الشيء المهم الذي يجب ملاحظته هو أن محركات Vex هي في الأساس أجهزة دوران مستمرة ، فهي تستخدم تعديل عرض النبضة للإشارة إلى مدى السرعة والاتجاه الذي يجب أن تدور فيه. تعد محركات Vex رائعة نظرًا لأن لديها نطاقًا عاليًا من الفولتية التشغيلية ، في مكان ما بين 5 إلى 15 فولت. أنا أستخدم 12 فولت لأنني كنت أمتلك بطارية 12 فولت. بالنسبة لمعظم أجهزة الهواية القياسية ، ستحتاج إلى جهد أقل (غالبًا 6 فولت).3) البطارية: الروبوت عديم الفائدة بدون مصدر طاقة. للاختبار ، أستخدم محولًا قياسيًا بجهد 9 فولت من RadioShack ، ولكن للتشغيل اللاسلكي ، وجدت حزمة بطارية NiMH بجهد 12 فولت في كمبيوتر محمول قديم. على الرغم من أنه لا يحتوي على ما يكفي من الشحنة لتشغيل الكمبيوتر المحمول ، إلا أنه يقود روبوت Vex الخاص بي على ما يرام. يمكنه أيضًا تشغيل Arduino باستخدام دبوس إدخال Vin على موصل الطاقة ، وسوف يقوم Arduino بتنظيم 12V إلى 5 وحتى إخراج دبوس الإخراج 5V على موصل الطاقة. اربط كل شيء. في النهاية ، سأحصل على لوحة نماذج أولية أجمل ولحام على بعض الوصلات الدائمة ، لكن في الوقت الحالي ، تجعل اللوح من السهل تغيير الأشياء. لوح التجارب الخاص بي هو "لوح التجارب الأساسي" من SparkFun ، وهو عبارة عن لوح تجارب على لوحة معدنية بها 3 أطراف. 5) محول RS232-TTL المستند إلى MAX232 إذا كنت ترغب في قيادة الروبوت الخاص بك باستخدام اتصال منفذ تسلسلي RS-232 (على عكس Arduino's المدمج في USB) يمكنك استخدام محول RS232-TTL. أنا أستخدم MAX232 لأنه كان لدي عدد قليل منهم ملقاة حوله وقمت بلحامها على قطعة صغيرة من لوحة النماذج الأولية بالمكثفات المطلوبة. أحتاج إلى RS-232 لأن الكمبيوتر المحمول القديم الخاص بي يحتوي على منفذ USB واحد فقط وأنا أستخدم ذلك لوحدة التحكم في اللعبة لقيادة الروبوت.6) أجزاء إضافية حسب الرغبة لتصحيح أخطاء البروتوكول التسلسلي بسهولة ، أضع مصباح RGB LED عليه (حصلت على واحدة مع طلب Arduino الخاص بي لأنها بدت رائعة). يومض الضوء باللون الأحمر والأخضر والأزرق بالتسلسل عندما يقوم Arduino بالتمهيد لإظهار إعادة تشغيل الروبوت ، ثم يضيء باللون الأخضر عند استلام حزمة محرك ، والأزرق عند استلام حزمة مروحة ، والأحمر عندما يكون سيئًا أو غير معروف تم استلام الحزمة. لقيادة المروحة ، استخدمت ترانزستور NPN قياسيًا (نفس الترانزستور الذي عرضته في آخر Instructable خاصتي) ومقاومًا بين الترانزستور و Arduino (كان الترانزستور يسحب تيارًا أكثر من اللازم ويسخن Arduino ، لذلك وضعت حدًا المقاوم لإيقافه).

الخطوة 3: برمجة Arduino و PC

برمجة Arduino و PC
برمجة Arduino و PC

لبرمجة Arduino ، من الواضح أنك ستحتاج إلى برنامج Arduino وكابل USB. يمكنك أيضًا برمجة Arduino باستخدام منفذ تسلسلي ومحول مستوى TTL إذا كان جهاز الكمبيوتر الخاص بك يحتوي على منفذ تسلسلي. لاحظ أن واجهة USB التسلسلية لن تتواصل مع معالج ATMega الخاص بـ Arduino إذا كان هناك محول مستوى متصل بمسامير Arduino التسلسلية (الدبابيس 0 و 1) ، لذا افصلها قبل استخدام USB. على Arduino سنحتاج إلى واجهة تسلسلية تسمح بـ جهاز كمبيوتر للتحكم في المحركات. سنحتاج أيضًا إلى نظام محرك سيرفو PWM لإرسال الإشارات الصحيحة إلى محركات Vex والتأكد من أنها تسير في الاتجاهات الصحيحة عند إعطاء القيم الصحيحة. أضفت أيضًا بعض وميض LED البسيط ، وذلك بشكل أساسي لإشارة الحالة ولكن أيضًا لأنه يبدو رائعًا على جهاز الكمبيوتر ، سنحتاج إلى فتح المنفذ التسلسلي وإرسال إطارات البيانات التي سيفهمها برنامج Arduino. يحتاج الكمبيوتر أيضًا إلى الخروج بقيم المحرك. طريقة سهلة للقيام بذلك هي استخدام لوحة ألعاب USB أو عصا التحكم ، فأنا أستخدم وحدة تحكم Xbox 360. خيار آخر هو استخدام كمبيوتر متصل بالشبكة (إما نتبووك أو لوحة ITX صغيرة) على الروبوت نفسه للقيادة لاسلكيًا. باستخدام netbook ، يمكنك حتى استخدام كاميرا الويب الموجودة على متن الطائرة لبث تدفق الفيديو مرة أخرى وقيادة الروبوت الخاص بك عن بُعد. لقد استخدمت نظام مقابس Linux للقيام ببرمجة الشبكة للإعداد الخاص بي. يتم تشغيل أحد البرامج ("خادم جويستيك") على جهاز كمبيوتر منفصل يحتوي على وحدة تحكم متصلة به ، ويتم تشغيل برنامج آخر ("العميل") على كمبيوتر الإنترنت المتصل بـ Arduino. يربط هذا بين جهازي الكمبيوتر ويرسل معلومات عصا التحكم إلى netbook ، والذي يرسل بعد ذلك حزمًا متسلسلة إلى Arduino الذي يقود الروبوت. للاتصال بـ Arduino باستخدام كمبيوتر يعمل بنظام Linux (في C ++) ، يجب أولاً فتح المنفذ التسلسلي على النحو الصحيح معدل الباود ثم إرسال القيم باستخدام بروتوكول استخدمته أيضًا في كود Arduino. تنسيق المسلسل الخاص بي بسيط وفعال. أستخدم 4 بايت لكل "إطار" لإرسال سرعتين للمحرك (كل منهما عبارة عن بايت واحد). البايتان الأول والأخير عبارة عن قيم مشفرة يتم استخدامها لمنع Arduino من إرسال البايت الخطأ إلى كود PWM والتسبب في جنون المحركات. هذا هو الغرض الأساسي من RGB LED ، يومض باللون الأحمر عندما يكون الإطار التسلسلي غير مكتمل. 4 بايت هي كما يلي: 255 (بايت "بداية" مشفر بشكل ثابت) ، 200 (بايت "نهاية" مشفر بشكل ثابت) لضمان استقبال موثوق للبيانات ، تأكد من وضع تأخير كافٍ بين حلقات البرنامج. إذا قمت بتشغيل رمز جهاز الكمبيوتر الخاص بك بسرعة كبيرة ، فسوف يغرق المنفذ وقد يبدأ Arduino في الانخفاض أو حتى يخطئ في قراءة البايت. حتى إذا لم تسقط المعلومات ، فيمكنها أيضًا تجاوز المخزن المؤقت للمنفذ التسلسلي في Arduino. بالنسبة لمحركات Vex ، استخدمت مكتبة Arduino Servo. نظرًا لأن محركات Vex هي مجرد محركات دوران مستمرة ، فإنها تستخدم نفس الإشارات التي تستخدمها الماكينات. ومع ذلك ، فبدلاً من أن تكون 90 درجة هي النقطة المركزية ، فهي نقطة التوقف حيث لا يدور المحرك. يؤدي خفض "الزاوية" إلى بدء دوران المحرك في اتجاه واحد ، بينما يؤدي رفع الزاوية إلى جعله يدور في الاتجاه الآخر. كلما كنت بعيدًا عن نقطة المركز ، زادت سرعة دوران المحرك. في حين أنه لن يكسر أي شيء إذا أرسلت قيمًا أكبر من 180 درجة إلى المحركات ، فإنني أنصح بتحديد القيم من 0 إلى 180 درجة (وهي في هذه الحالة زيادات في السرعة). نظرًا لأنني كنت أرغب في مزيد من التحكم وقيادة الروبوت خارج نطاق التحكم ، فقد أضفت "حدًا لسرعة" البرنامج إلى برنامجي الذي لا يسمح بزيادة السرعة عن 30 "درجة" في أي من الاتجاهين (النطاق 90 +/- 30). أخطط لإضافة أمر منفذ تسلسلي يغير حد السرعة ، حتى يتمكن الكمبيوتر من إزالة الحد بسرعة إذا كنت تريد أن تسير بسرعة (لقد كنت أختبر في غرف صغيرة لذلك لا أريد أن يتم تسريعها وتحطم في الحائط ، خاصة مع وجود نتبووك عليه). لمزيد من المعلومات ، قم بتنزيل الكود المرفق في نهاية هذا Instructable.

الخطوة 4: إضافة نتبووك لاستكشاف عوالم مجهولة من مسافة بعيدة

أضف نتبووك لاستكشاف عوالم مجهولة من مسافة بعيدة
أضف نتبووك لاستكشاف عوالم مجهولة من مسافة بعيدة
أضف نتبووك لاستكشاف عوالم مجهولة من مسافة بعيدة
أضف نتبووك لاستكشاف عوالم مجهولة من مسافة بعيدة

باستخدام جهاز كمبيوتر كامل على روبوت Arduino ، يمكنك قيادة الروبوت الخاص بك من أبعد ما يمكن أن تصل إليه شبكة WiFi دون أي أسلاك لتقييد الروبوت بمنطقة واحدة. إن المرشح الجيد لهذه الوظيفة هو نتبووك ، لأن نتبووك صغيرة وخفيفة الوزن وبها بطارية مدمجة ولديها شبكة WiFi ، ومعظمها يحتوي على كاميرات ويب مدمجة يمكن استخدامها لدفق عرض الروبوت إلى مكان آمن حيث يمكنك يمكن السيطرة عليه. أيضًا ، إذا كان netbook الخاص بك مزودًا بخدمة النطاق العريض للأجهزة المحمولة ، فإن نطاقك غير محدود عمليًا. باستخدام البطاريات الكافية ، يمكنك قيادة الروبوت الخاص بك إلى مكان البيتزا المحلي وتقديم طلب عبر كاميرا الويب (غير موصى به ، لا يُسمح عادةً بالروبوتات في أماكن البيتزا ، حتى لو كانوا أشخاصًا من المحتمل أن يحاولوا سرقة الروبوت وربما حتى البيتزا). قد تكون أيضًا طريقة جيدة لاستكشاف الأعماق المظلمة في الطابق السفلي من مقعدك المريح ، على الرغم من أن إضافة بعض المصابيح الأمامية قد يكون مفيدًا جدًا في هذه الحالة.

هناك العديد من الطرق لجعل هذا يعمل ، ربما يكون العديد منها أسهل كثيرًا من طريقي ، على الرغم من أنني لست على دراية بمعالجة اللغات القائمة على النصوص ، لذلك اخترت استخدام Linux و C ++ لإنشاء ارتباط تحكم لاسلكي بين محطتي الأساسية (المعروف أيضًا باسم ThinkPad القديم) وكمبيوتر محمول Lenovo IdeaPad الجديد المتصل بقاعدة محرك Arduino. يعمل كلا الجهازين على تشغيل Ubuntu. تم توصيل ThinkPad بشبكة LAN الخاصة بمدرستي ، كما أن IdeaPad الخاص بي متصل بنقطة وصول WiFi الخاصة بي والمتصلة أيضًا بشبكة LAN الخاصة بالمدرسة (لم أستطع الحصول على دفق فيديو موثوق به من شبكة WiFi بالمدرسة نظرًا لأن الجميع يستخدمها ، لذلك قمت بتعيين حتى جهاز التوجيه الخاص بي لتوفير اتصال جيد). يعد الاتصال الجيد مهمًا بشكل خاص في حالتي لأنني لم أقم بتنفيذ أي فحص للأخطاء أو مهلة. إذا انقطع اتصال الشبكة فجأة ، يستمر الروبوت في العمل حتى يصطدم بشيء ما أو أركض وأوقفه. هذا هو العامل الرئيسي وراء قراري لإبطاء نظام الدفع من خلال تسيير المحركات لأسفل وتنفيذ حد لسرعة البرنامج.

الخطوة 5: احصل على موجز فيديو

بعد أن يتمكن المستكشف الآلي الخاص بك من القيادة لاسلكيًا ، قد ترغب في الحصول على موجز فيديو من netbook حتى تتمكن من معرفة مكان الروبوت الخاص بك. إذا كنت تستخدم Ubuntu (أو حتى إذا لم تكن كذلك!) ، فإنني أوصي باستخدام VLC Media Player للبث. إذا لم تقم بتثبيته ، فأنت في عداد المفقودين حقًا ، لذا قم بتثبيته باستخدام الأمر "sudo apt-get install vlc" ، أو تصفح بحثًا عن VLC في Ubuntu Software Center (9.10 فقط) ، أو قم بتنزيل المثبت على videolan. org إذا كنت تستخدم Windows. ستحتاج إلى تشغيل برنامج VLC على كلا الجهازين. VLC قادر على البث وكذلك تشغيل التدفقات على الشبكة. على netbook (كمبيوتر روبوت) تأكد أولاً من عمل كاميرا الويب (سواء كانت مدمجة أو متصلة بـ USB) بالنقر فوق Open Capture Device وتجربة Video for Linux 2 (قد تحتاج بعض الأجهزة القديمة إلى Video for Linux بدلاً من الإصدار 2 الجديد). يجب أن تشاهد عرض الكاميرا على شاشة netbook. لدفقه ، حدد Streaming من قائمة File ثم اختر علامة التبويب Capture Device في الجزء العلوي من النافذة التي تظهر. تذكر أن Ubuntu (والعديد من توزيعات Linux الأخرى) تتيح لك الضغط باستمرار على Alt للنقر وسحب النوافذ الكبيرة جدًا لشاشتك (مفيدة بشكل خاص على أجهزة الكمبيوتر المحمولة القديمة ، على الرغم من أن IdeaPad الخاص بي يحتوي على دقة 1024 × 576 بدون سبب واضح). لتقليل التأخير ، انقر فوق "إظهار المزيد من الخيارات" وخفض قيمة التخزين المؤقت. يعتمد المقدار الذي يمكنك خفضه أحيانًا على الجهاز ، ويصبح غير مستقر إذا خفضته كثيرًا. عند 300 مللي ثانية ، قد تحصل على تأخير بسيط ولكنه ليس سيئًا للغاية.

بعد ذلك ، انقر فوق "تدفق" للانتقال إلى القائمة التالية. انقر فوق التالي ، ثم حدد HTTP وأضفه كوجهة جديدة. الآن قم بإعداد Transcoding لجعل الدفق أصغر. لقد قمت بإنشاء ملف تعريف مخصص يستخدم M-JPEG بسرعة 60 كيلو بايت / ثانية و 8 إطارات في الثانية. هذا لأن استخدام برنامج ترميز متقدم مثل MPEG أو Theora سيستهلك وقتًا هائلاً لوحدة المعالجة المركزية على معالج Atom الخاص بـ netbook وهذا يمكن أن يؤدي إلى توقف تغذية الفيديو دون سبب واضح. MJPEG هو برنامج ترميز بسيط سهل الاستخدام بمعدلات بت منخفضة. بعد بدء البث الخاص بك ، افتح VLC على جهاز الكمبيوتر الآخر ، وافتح دفق الشبكة ، وحدد HTTP ، ثم اكتب عنوان IP الخاص بحاسوبك netbook (سواء محلي أو إنترنت حسب طريقة الاتصال) متبوعًا بـ ": 8080". تحتاج إلى تحديد المنفذ لسبب غريب ، وإلا فإنه يعطيك أخطاء. إذا كان لديك اتصال جيد ، يجب أن تشاهد تغذية كاميرا الويب الخاصة بك على جهاز الكمبيوتر الآخر ، ولكن سيكون هناك تأخير طفيف (حوالي ثانية). لا أعرف بالضبط سبب حدوث هذا التأخير ، لكن لا يمكنني معرفة كيفية التخلص منه. افتح الآن تطبيق التحكم وابدأ في قيادة روبوت netbook الخاص بك. تعرف على كيفية عمل التأخير أثناء القيادة حتى لا تصطدم بأي شيء. إذا نجح ، فهذا يعني أن روبوت netbook الخاص بك قد انتهى.

موصى به: