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

قم ببناء روبوت دفق الفيديو المتحكم فيه عبر الإنترنت باستخدام Arduino و Raspberry Pi: 15 خطوة (بالصور)
قم ببناء روبوت دفق الفيديو المتحكم فيه عبر الإنترنت باستخدام Arduino و Raspberry Pi: 15 خطوة (بالصور)

فيديو: قم ببناء روبوت دفق الفيديو المتحكم فيه عبر الإنترنت باستخدام Arduino و Raspberry Pi: 15 خطوة (بالصور)

فيديو: قم ببناء روبوت دفق الفيديو المتحكم فيه عبر الإنترنت باستخدام Arduino و Raspberry Pi: 15 خطوة (بالصور)
فيديو: الدرس 26 - المشروع 8 - جهاز ريّ التربة باستعمال الأردوينو, حساس رطوبة والترانزستور 2024, يوليو
Anonim
قم ببناء روبوت دفق الفيديو المتحكم فيه عبر الإنترنت باستخدام Arduino و Raspberry Pi
قم ببناء روبوت دفق الفيديو المتحكم فيه عبر الإنترنت باستخدام Arduino و Raspberry Pi
قم ببناء روبوت دفق الفيديو المتحكم فيه عبر الإنترنت باستخدام Arduino و Raspberry Pi
قم ببناء روبوت دفق الفيديو المتحكم فيه عبر الإنترنت باستخدام Arduino و Raspberry Pi
قم ببناء روبوت دفق الفيديو المتحكم فيه عبر الإنترنت باستخدام Arduino و Raspberry Pi
قم ببناء روبوت دفق الفيديو المتحكم فيه عبر الإنترنت باستخدام Arduino و Raspberry Pi

أناRedPhantom (المعروف أيضًا باسم LiquidCrystalDisplay / Itay) ، طالبة تبلغ من العمر 14 عامًا من إسرائيل أتعلم في مدرسة ماكس شين جونيور الثانوية للعلوم المتقدمة والرياضيات. أنا أصنع هذا المشروع للجميع للتعلم منه ومشاركته!

ربما فكرت في نفسك: حسنًا … أنا مهووس … وأولادي يريدون مني أن أقوم بمشروع معهم … لقد أراد بناء روبوت. أرادت أن تلبسها مثل جرو صغير. إنه مشروع عطلة نهاية أسبوع جيد!

يعد Raspberry Pi مثاليًا لكل استخدام: سنقوم اليوم بتوضيح قدرات هذا الكمبيوتر الصغير في صنع روبوت. يمكن لهذا الروبوت:

  • تجول في الأنحاء وتم التحكم فيك عبر شبكة LAN (WiFi) باستخدام أي جهاز كمبيوتر متصل بنفس شبكة WiFi مثل Raspberry Pi.
  • دفق الفيديو مباشرة باستخدام وحدة كاميرا Raspberry Pi
  • إرسال بيانات المستشعر باستخدام Arduino

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

هنا Github repo: GITHUB REPO BY ME

هنا موقع المشروع: موقع المشروع بواسطتي

الخطوة 1: تحذير: كن حذرًا عند تجربة ذلك في المنزل

حذر:

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

يزيل مؤلف هذا البرنامج التعليمي أي مسؤولية من نفسه عن الضرر الناجم أو المفقود أو الضرر المادي. استخدام الحس السليم

الخطوة 2: المكونات

روابط
روابط
روابط
روابط
روابط
روابط
روابط
روابط

قبل تسخين مكواة اللحام ، نحتاج إلى تجاوز ما يجب توصيله بما. لقد صنعت هذا المخطط البسيط (MS Paint لا يسمح لي مطلقًا بالهبوط) الذي يصف مكان وجود جزء معين داخل الروبوت.

تم إنشاء الصورة بحيث يمكنك التكبير والرؤية بدقة كاملة وقراءة النص.

الخطوة 6: عنوان Pi

يتحدث Arduino مع Pi وفقًا للخطة. ويتحدث Pi إلى الكمبيوتر ، فكيف يعمل كل هذا؟

دعنا نلقي نظرة على تسلسل بدء الاتصال الخاص بنا:

  1. يبدأ Raspberry Pi
  2. يبدأ Arduino
  3. يبدأ Raspberry Pi تشغيل عميل TCP. يطلق عنوان IP الخاص به عبر مؤشر LED.
  4. يبدأ Raspberry Pi خدمة الاتصالات التسلسلية ويتصل بـ Arduino

لذلك أنشأنا نوعًا من التواصل:

كمبيوتر Raspberry Pi Arduino

لقد استخدمت Visual Basic. NET (مجتمع Microsoft Visual Studio 2013) لكتابة البرنامج الذي يتحدث مع Raspberry Pi و Python لكتابة بروتوكول Arduino / Raspberry Pi.

كل ما عليك فعله لمعرفة عنوان Pi IP الخاص بك ، هو توصيله بشاشة HDMI ، وتسجيل الدخول إلى Shell واكتب الأمر:

اسم المضيف -أنا

الخطوة 7: الخطة

الآن بعد أن حصلنا على عنوان IP الخاص بـ Pi ، سنقوم باستخدام SSH (SSH هو Secure Shell - نتصل عن بُعد بقشرة Linux) ونكتب ملفًا يعرض عنوان IP الخاص بالخادم. يقوم Pi ، عند بدء التشغيل ، بذلك أيضًا ويكتب المنفذ الذي يستمع إليه. سأقدم هنا بعض الأمثلة فقط من الكود ولكنه متاح للتنزيل من هذه الخطوة ومن فرع GitHub الذي قمت بإنشائه. تفاصيل عن ذلك لاحقًا.

يعمل مثل:

  1. يبدأ RPi.
  2. يبدأ RPi برنامج Tcp على IP المحلي الخاص به والمنفذ المعين.
  3. يبدأ RPI في دفق الفيديو
  4. يتم إيقاف تشغيل RPI.

الخطوة 8: الذهاب الجسدي

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

يُقترح قراءة التعليمات والاستماع إليها في قائمة القراءة.

قم بتنزيل مخطط الاتصال من خطوة "Connections".

المحركات

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

H- جسر

لم أعمل مطلقًا مع H-Bridge من قبل. لقد بحثت في Google قليلاً ووجدت تعليمات جيدة تشرح مبادئ HB. يمكنك البحث هناك أيضًا (انظر خطوة قائمة القراءة) وربطها أيضًا. لن أشرح الكثير. يمكنك أن تقرأ هناك وتعرف كل ما يجب أن تعرفه عن هذه الدائرة.

قاد

يمكن تشغيل هذا المصباح الصغير من الجهد المنطقي لمجرد أنه لا يتطلب أي تيار تقريبًا ، وبجهد من 3V-5V 4mA-18mA. اختياري.

أردوينو

سيحصل Arduino على الإشارات والأوامر عبر الاتصال التسلسلي من Raspberry Pi. نحن نستخدم Arduino للتحكم في محركاتنا لأن Raspberry Pi لا يمكنه إخراج القيم التناظرية عبر GPIO.

الخطوة 9: بدء تشغيل Raspberry Pi تلقائيًا

في كل مرة تقوم فيها بتشغيل Raspberry Pi ، سيتعين عليك كتابة اسم المستخدم وكلمة المرور. لا نريد القيام بذلك لأنه في بعض الأحيان لا يمكننا توصيل لوحة مفاتيح بـ Pi ، لذلك سوف نتبع هذه الخطوات من هذا البرنامج التعليمي لبدء تشغيل البرنامج الذي يقوم بإعداد Pi تلقائيًا. إذا كانت ستبقى في حلقة ، فيمكننا دائمًا Ctrl + C لمقاطعتها.

  • sudo crontab -e
  • ثم ندخل الأمر الذي يضيف هذا الملف إلى auto-strartup في مدير cron.

سوف نسمي الملف pibot.sh والذي سيعطي أوامر لبدء جميع أنواع البرامج النصية للبيثون لتشغيل الروبوت. دعنا نتطرق إلى الأمر: (نحن sudo مع برامج ستارة Python للسماح للبرنامج بالوصول إلى GPIO)

raspivid -o - -t 0 -hf -w 640 -h 360 -fps 25 | cvlc -vvv stream: /// dev / stdin --sout '#rtp {sdp = rtsp: //: 8554}': demux = h264

سيتم استدعاء الكود الذي يقوم بكل العمل على جانب pi upon_startup.sh.

إنه برنامج نصي بسيط يقوم بتشغيل كل شيء.

الخطوة العاشرة: هوستون ، لدينا مشكلة… محركات التيار المستمر ليست من نفس الطراز

لقد قمت بالفعل باختبار H-Bridge وهو يعمل بشكل جيد ، ولكن عندما قمت بتوصيل المحركات التي حصلت عليها من منصة الروبوت ، طلبت عبر الإنترنت أن هذين المحركين يدوران بسرعات مختلفة ويصدران أصواتًا مختلفة. لقد غيرت دواسة الوقود إلى 100٪ على المحركات. كلاهما لا يستطيعان الركض بأقصى قدراتهما.

يبدو أن هذين محركان مختلفان. أحدهما لديه عزم دوران أكبر وهو أمر رائع بالنسبة لهذا النوع من الروبوتات ولكن الآخر لن يحرك الروبوت. لذلك يتحول في دوائر.

في هذه المرحلة ، ما لدي هو البرنامج التسلسلي على Arduino يعمل بشكل جيد ولكن خادم Tcp على جهاز الكمبيوتر وعميل Tcp على Pi لم يتم ترميزهما بعد. في أنا بحاجة لإكمال هذا الدخول للمسابقة. ماذا أفعل؟

  1. أولاً ، أضاعف الجهد للمحركات ثلاث مرات. قالت ورقة البيانات إن 3 فولت و 6 فولت لم تحركهما. إنها 9V إذن. لقد قمت بتوصيل بطاريات teo بالتوازي لمضاعفة التيار والجهد يبقى كما هو.
  2. هل لدي محركات أخرى مناسبة للحامل على المنصة؟ ربما أستطيع أن أرى ما إذا كانت نماذج متشابهة.
  3. يمكنني استبدال الماكينات إذا أصابت الشوكولاتة المروحة حقًا.

بدأت المدرسة. سآخذ لمعرفة ما يجب القيام به.

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

الحل:

لذلك قمت بإجراء اختبار آخر. لقد قمت بتكييف الاختلاف في السرعة في كود Arduino.

ملاحظة: قد تدور المحركات بسرعات مختلفة من أجلك! قم بتغيير القيم في رسم Arduino.

الخطوة 11: [TCP]: لماذا Tcp و Not Secure Shell؟ ما هو برنامج التعاون الفني؟

لدي تفسيران لسبب استخدام Tcp وليس SSH لأجهزة الكمبيوتر الشخصية. - الاتصال بي.

  1. أولاً ، يهدف SSH (Secure Shell ، راجع التفسيرات) إلى تشغيل الأوامر من جهاز كمبيوتر بعيد. يعد جعل Pi يستجيب بالمعلومات التي نريدها أكثر صعوبة لأن خيارنا الوحيد لتحليل البيانات هو من خلال معالجة سلسلة صعبة ومملة.
  2. ثانيًا ، نحن نعرف بالفعل كيفية استخدام SSH ونريد معرفة المزيد من طرق الاتصال بين الأجهزة في هذا البرنامج التعليمي.

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

(من ويكيبيديا)

إذن TCP Pros هم:

  • يؤمن
  • بسرعة
  • يعمل في أي مكان على الشبكة
  • يوفر طرقًا للتحقق من نقل البيانات الصحيح
  • التحكم في التدفق: يتمتع بالحماية في حالة قيام مرسل البيانات بإرسال البيانات بسرعة كبيرة بحيث يتعذر على العميل التسجيل والمعالجة.

والعيوب هي:

  • في TCP ، لا يمكنك البث (إرسال البيانات إلى جميع الأجهزة على الشبكة) والبث المتعدد (نفس الشيء ولكن مختلف قليلاً - يمنح القدرة على كل جهاز يبث مثل الخادم).
  • أخطاء في البرنامج ومكتبات نظام التشغيل (التي تدير بنفسها اتصال TCP ، لا يقوم جهاز التوجيه الخاص بك بأي شيء تقريبًا باستثناء توصيل الجهازين [أو أكثر])

قد تسأل لماذا لا تستخدم UDP؟ حسنًا ، على عكس TCP ، لا يتأكد UDP من حصول العميل على البيانات قبل إرسال المزيد. مثل إرسال بريد إلكتروني وعدم معرفة ما إذا كان العميل قد استلمها. إلى جانب ذلك ، فإن UDP أقل أمانًا. لمزيد من المعلومات ، اقرأ هذا المنشور من Stack Exchange Super User

هذه المقالة جيدة وموصى بها.

الخطوة 12: [TCP]: لنصنع عميلاً

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

توضح مقالة Python Wiki TcpC Communication أنه من السهل جدًا إجراء مثل هذا الاتصال ببضعة أسطر من التعليمات البرمجية باستخدام وحدة المقبس المدمجة. سيكون لدينا برنامج على جهاز الكمبيوتر وبرنامج آخر على Pi.

سنعمل مع المقاطعات. تعرف على المزيد في خطوة التفسيرات عنها. اقرأ هناك عن المخازن المؤقتة أيضًا ، والآن يمكننا قراءة البيانات التي لدينا باستخدام data = s.recv (BUFFER_SIZE) ولكن سيكون عدد الأحرف التي حددناها مع القطع الفارغة. هل يمكننا استخدام المقاطعات؟ سؤال آخر: هل سيكون المخزن المؤقت فارغًا أم سينتظر الخادم لإرسال المزيد من البيانات وفي هذه الحالة سيرمي الخادم / العميل استثناء المهلة؟

دعنا نتعامل مع ذلك في وقت واحد. قبل القيام بذلك ، بحثت عن مقال Wikipedia الذي يسرد منافذ TCP و UDP المستخدمة. بعد نظرة سريعة قررت أن هذا المشروع سيتواصل على المنفذ 12298 لأنه لا يستخدم من قبل نظام التشغيل والخدمات المحلية.

الخطوة 13: جرب تطبيق Tcp Comms

من أجل معرفة ما إذا كان بإمكاننا استخدام المقاطعات ، فلنقم بإنشاء عميل وخادم بسيط باستخدام Python Command Line. سأفعل ذلك في الخطوات التالية:

  1. ابدأ برنامجًا يرسل نصًا عبر Tcp في حلقة عبر منفذ ستارة
  2. ابدأ برنامجًا آخر (بالتوازي) يقرأ كل النص في حلقة ويطبع ذلك على الشاشة.

سيتم عرض أجزاء فقط من البرنامج. تعمل جميع البرامج مع Python 3 ، كل ما تفعله هذه البرامج هو إرسال الأمر التسلسلي من لوحة مفاتيح مستخدم الكمبيوتر الشخصي إلى Arduino عبر Pi.

  • SBcontrolPC.py - ليتم تشغيله على جهاز الكمبيوتر. يبدأ اتصال TCP على العنوان المحلي وعلى المنفذ المحدد (أستخدم المنفذ 12298 ، راجع الخطوة السابقة لماذا)
  • SBcontrolPi.py - ليتم تشغيله على ملف Pi. يقرأ المخزن المؤقت الخاص به كل نصف ثانية (0.5 ثانية). يبدأ نصًا برمجيًا يدير أشياء مثل دفق الفيديو وما إلى ذلك.

موصى به: