فهرست مطالب:

ساخت ربات پخش کننده ویدئوی تحت کنترل اینترنت با آردوینو و رزبری پای: 15 مرحله (همراه با تصاویر)
ساخت ربات پخش کننده ویدئوی تحت کنترل اینترنت با آردوینو و رزبری پای: 15 مرحله (همراه با تصاویر)

تصویری: ساخت ربات پخش کننده ویدئوی تحت کنترل اینترنت با آردوینو و رزبری پای: 15 مرحله (همراه با تصاویر)

تصویری: ساخت ربات پخش کننده ویدئوی تحت کنترل اینترنت با آردوینو و رزبری پای: 15 مرحله (همراه با تصاویر)
تصویری: کارگاه معرفی سخت‌افزار آزاد و آردویینو 2024, جولای
Anonim
با استفاده از آردوینو و رزبری پای ، ربات پخش ویدئویی تحت کنترل اینترنت خود را بسازید
با استفاده از آردوینو و رزبری پای ، ربات پخش ویدئویی تحت کنترل اینترنت خود را بسازید
با استفاده از آردوینو و رزبری پای ، ربات پخش ویدئویی تحت کنترل اینترنت خود را بسازید
با استفاده از آردوینو و رزبری پای ، ربات پخش ویدئویی تحت کنترل اینترنت خود را بسازید
با استفاده از آردوینو و رزبری پای ، ربات پخش ویدئویی تحت کنترل اینترنت خود را بسازید
با استفاده از آردوینو و رزبری پای ، ربات پخش ویدئویی تحت کنترل اینترنت خود را بسازید

من @RedPhantom (معروف به LiquidCrystalDisplay / Itay) هستم ، یک دانش آموز 14 ساله از اسرائیل که در دبیرستان علوم و ریاضیات Max Max Shein Junior تحصیل می کند. من این پروژه را برای همه می آموزم تا از آن یاد بگیرند و به اشتراک بگذارند!

شاید با خود فکر کرده باشید: هوم … من یک گیک هستم … و فرزندان من می خواهند که من با آنها پروژه ای بسازم … او می خواست یک ربات بسازد. او می خواست آن را مانند یک توله سگ کوچک بپوشد. این یک پروژه آخر هفته خوب است!

رزبری پای برای هر کاربردی مناسب است: امروز ما توانایی های این میکرو رایانه را برای ساخت یک روبات نشان خواهیم داد. این ربات می تواند:

  • با استفاده از هر کامپیوتری که به شبکه WiFi مشابه رزبری پای متصل است از طریق LAN (WiFi) در اطراف رانندگی کرده و کنترل شوید.
  • پخش مستقیم ویدیو با استفاده از ماژول دوربین رزبری پای
  • داده های حسگر را با استفاده از آردوینو ارسال کنید

برای دیدن آنچه که برای این پروژه نور خوب نیاز دارید ، فقط مرحله بعدی (هشدارها) را بخوانید و بعد از آن مرحله Wanted: Components را بخوانید.

در اینجا repo GitHub است: GITHUB REPO BY ME

در اینجا سایت پروژه وجود دارد: PROJECT SITE BY ME

مرحله 1: هشدار: سعی کنید این کار را در خانه انجام دهید

احتیاط:

نویسنده این فرض بر این است که شما از دانش کافی در مورد برق و عملیات اساسی تجهیزات الکتریکی برخوردار هستید. اگر مراقب نیستید و دستورالعمل های این دستورالعمل را دنبال نکنید ، ممکن است: به تجهیزات الکتریکی آسیب برسانید ، خود را بسوزانید یا باعث آتش سوزی شوید. لطفاً مراقب باشید و از عقل سلیم استفاده کنید. اگر دانش لازم برای این آموزش (لحیم کاری ، اصول اولیه لوازم الکترونیکی) را ندارید ، لطفاً با فردی که این کار را انجام می دهد همکاری کنید. متشکرم.

نویسنده این دستورالعمل هرگونه مسئولیتی را از جانب خود برای خسارت های ناشی از یا از دست دادن دارایی یا خسارت فیزیکی حذف می کند. از حس مشترک استفاده کنید

مرحله 2: اجزاء

اتصالات
اتصالات
اتصالات
اتصالات
اتصالات
اتصالات
اتصالات
اتصالات

قبل از گرم کردن آهن لحیم کاری ، باید بررسی کنیم که چه چیزی باید به چه چیزی متصل شود. من این نمودار ساده را ایجاد کردم (MS Paint هرگز من را ناامید نمی کند) که در آن قسمت خاصی از ربات قرار دارد.

تصویر طوری ساخته شده است که می توانید بزرگنمایی کرده و با وضوح کامل ببینید و متن را بخوانید.

مرحله 6: آدرس Pi

آردوینو طبق برنامه با Pi صحبت می کند. و Pi با رایانه صحبت می کند ، بنابراین این همه چگونه کار می کند؟

اجازه دهید دنباله شروع اتصال را مشاهده کنیم:

  1. رزبری پای شروع می شود
  2. آردوینو راه اندازی می شود
  3. Raspberry Pi TCP Client را راه اندازی می کند. آدرس IP خود را از طریق LED نشان می دهد.
  4. Raspberry Pi سرویس ارتباطات سری را راه اندازی می کند و به آردوینو متصل می شود

بنابراین ما نوعی ارتباط برقرار کرده ایم:

کامپیوتر Raspberry Pi Arduino

من از Visual Basic. NET (Microsoft Visual Studio 2013 Community) برای نوشتن برنامه ای که با Raspberry Pi و Python برای نوشتن پروتکل Arduino/Raspberry Pi صحبت می کند ، استفاده کردم.

برای دانستن آدرس IP Pi خود تنها کاری که باید انجام دهید این است که آن را به یک صفحه HDMI وصل کنید ، وارد Shell شوید و دستور زیر را تایپ کنید:

نام میزبان -I

مرحله 7: برنامه

اکنون که آدرس IP Pi را داریم ، SSH را در آن وارد می کنیم (SSH Secure Shell است - از راه دور به پوسته لینوکس متصل می شویم) و فایلی را بنویسیم که آدرس IP سرور را نمایش می دهد. Pi در هنگام راه اندازی نیز همین کار را می کند و پورت مورد نظر خود را می نویسد. در اینجا من فقط چند نمونه از کد را ارائه می کنم ، اما در این مرحله و از شاخه GitHub که ایجاد کرده ام قابل بارگیری است. جزئیات آن بعداً

اینطور عمل می کند:

  1. RPi راه اندازی می شود.
  2. RPi برنامه Tcp را با IP محلی و پورت تعیین شده شروع می کند.
  3. RPI شروع به پخش ویدئو می کند
  4. RPI خاموش می شود.

مرحله هشتم: انجام تمرینات بدنی

در حال حاضر ، ما آماده هستیم تا کل کار را به صورت فیزیکی آغاز کنیم. اگر مرحله 1 (متن اخطار و مجوز) را نخوانده اید ، لطفاً قبل از انجام این کار اقدام کنید. من مسئول هیچ گونه خسارتی نیستم. و در صورت تردید ، این روبات نباید برای اهداف نظامی استفاده شود مگر اینکه آخرالزمان زامبی باشد. و حتی در آن صورت از عقل سلیم استفاده کنید.

پیشنهاد می شود گوش دادن به دستورالعمل ها را در لیست خواندن بخوانید.

طرح اتصال را از مرحله "اتصالات" بارگیری کنید.

موتور

موتورهایی که خریداری کرده اید احتمالاً به این شکل هستند و اگر اینطور نباشند مشکلی نیست: اگر فقط دو سیم دارند (در بیشتر موارد سیاه و قرمز) باید کار کند. برای مشاهده ولتاژ و جریان آنها ، برگه اطلاعات آنها را آنلاین جستجو کنید. با خیال راحت سوالات خود را در قسمت نظرات مطرح کنید. من همیشه آنها را می خوانم.

H-BRIDGE

من قبلاً با H-Bridge کار نکرده بودم. کمی در گوگل جستجو کردم و یک دستورالعمل خوب برای توضیح اصول HB پیدا کردم. شما نیز می توانید آنجا را نگاه کنید (مرحله خواندن لیست را ببینید) و خود را نیز قلاب کنید. زیاد توضیح نمی دهم می توانید آنجا بخوانید و همه آنچه را که باید در مورد این مدار بدانید بدانید.

رهبری

این چراغ کوچک می تواند از ولتاژ منطقی کار کند فقط به این دلیل که تقریباً به جریان احتیاج ندارد و ولتاژ 3V-5V 4mA-18mA. اختیاری.

آردوینو

آردوینو سیگنال ها و دستورات را از طریق اتصال سریال از رزبری پای دریافت می کند. ما از Arduino برای کنترل موتورهای خود استفاده می کنیم زیرا رزبری پای نمی تواند مقادیر آنالوگ را از طریق GPIO خروجی دهد.

مرحله 9: راه اندازی خودکار رزبری پای

هر زمان که رزبری پای را فعال می کنید ، باید نام کاربری و رمز عبور را تایپ کنید. ما نمی خواهیم این کار را انجام دهیم زیرا گاهی اوقات نمی توانیم صفحه کلید را به Pi متصل کنیم ، بنابراین این مراحل را از این آموزش دنبال می کنیم تا برنامه ای که Pi را آماده می کند به طور خودکار راه اندازی شود. اگر در یک حلقه گیر کرد ، همیشه می توانیم Ctrl+C را قطع کنیم.

  • sudo crontab -e
  • و سپس ما فرمان را وارد می کنیم که آن فایل را به auto-strartup در cron manager اضافه می کند.

ما فایل را pibot.sh می نامیم که دستوراتی را برای شروع انواع اسکریپت های پایتون برای کار با ربات می دهد. بیایید به آن بپردازیم: (ما با برنامه های پایتون پرده sudo می کنیم تا به برنامه اجازه دسترسی به GPIO را بدهیم)

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

کدی که تمام کارهای طرف pi را انجام می دهد upon_startup.sh نامیده می شود.

این یک اسکریپت پوسته ساده است که همه چیز را اجرا می کند.

مرحله 10: هوستون ، ما مشکلی داشتیم … موتورهای DC همان مدل نیستند

من قبلاً H-Bridge را آزمایش کرده ام و خوب کار می کند ، اما وقتی موتورهایی را که از پلت فرم ربات دریافت کردم به هم متصل می کنم ، به صورت آنلاین سفارش می دهم که این دو موتور با سرعت های مختلف می چرخند و صداهای متفاوتی ایجاد می کنند. روی موتورها گاز را 100 درصد تغییر دادم. هر دوی آنها نمی توانستند در حداکثر توان خود بدوند.

به نظر می رسد این دو موتور متفاوت هستند. یکی گشتاور بزرگتری دارد که برای این نوع ربات ها عالی است اما دیگری ربات را حرکت نمی دهد. بنابراین به صورت دایره در می آید.

در این مرحله ، آنچه من دریافت کردم این است که برنامه سریال در Arduino به طور کامل کار می کند ، اما سرور Tcp در رایانه شخصی و Tcp Client در Pi هنوز کدگذاری نشده است. در من نیاز به تکمیل این ورودی برای مسابقه. چکار کنم؟

  1. ابتدا ولتاژ موتورها را سه برابر می کنم. برگه اطلاعات 3 ولت ، 6 ولت آنها را جابجا نمی کرد. آنوقت 9 ولت است. من به طور موازی باتری های teo را وصل کردم تا جریان دو برابر شود و ولتاژ ثابت می ماند.
  2. آیا موتورهای دیگری هم دارم که بر روی پلت فرم نصب شوند؟ شاید بتوانم ببینم آیا آنها مدلهای مشابه هستند.
  3. اگر شکلات واقعاً به فن برخورد کرد ، می توانم سروو را جایگزین کنم.

مدرسه شروع شد. باید ببینم چکار کنم.

توجه: چرا روی زمین مشکلاتی را که با آنها مواجه می شوم در اینجا می نویسم؟ بنابراین اگر تجربه کمتری دارید و مشکلات مشابهی دارید ، می دانید که باید چه کار کنید.

راه حل:

بنابراین من یک آزمایش دیگر انجام دادم. من تفاوت سرعت را در کد آردوینو تنظیم کرده ام.

توجه: ممکن است موتورها با سرعت های مختلف برای شما بچرخند! مقادیر را در طرح آردوینو تغییر دهید.

مرحله 11: [TCP]: چرا Tcp و Not Secure Shell؟ TCP چیست؟

من دو توضیح دارم که چرا از Tcp و نه SSH برای P. C. - ارتباط Pi

  1. در مرحله اول ، SSH (Secure Shell ، توضیحات را ببینید) به منظور راه اندازی دستورات از یک رایانه از راه دور است. پاسخ دادن Pi با اطلاعات مورد نیاز ما دشوارتر است زیرا تنها گزینه ما برای تجزیه و تحلیل داده ها از طریق پردازش سخت و خسته کننده رشته است.
  2. ثانیاً ، ما قبلاً نحوه استفاده از SSH را می دانیم و می خواهیم راههای ارتباطی بیشتری بین دستگاه ها را در این آموزش بیاموزیم.

TCP یا پروتکل کنترل انتقال ، یک پروتکل اصلی مجموعه پروتکل اینترنت است. این در پیاده سازی اولیه شبکه ایجاد شد که در آن پروتکل اینترنت (IP) را تکمیل کرد. بنابراین ، کل مجموعه معمولاً TCP/IP نامیده می شود. TCP ارائه قابل اطمینان ، منظم و بررسی شده خطا از جریان هشت گانه بین برنامه های در حال اجرا بر روی میزبان ارتباط از طریق یک شبکه IP را فراهم می کند.

(از ویکی پدیا)

بنابراین مزایای TCP عبارتند از:

  • امن است
  • سریع
  • در هر نقطه از شبکه کار می کند
  • روش هایی برای بررسی صحت انتقال داده ها ارائه می دهد
  • کنترل جریان: در صورتی که فرستنده داده برای ثبت نام و پردازش مشتری بسیار سریع اطلاعات ارسال کند ، دارای حفاظت است.

و معایب آن عبارتند از:

  • در TCP شما نمی توانید پخش کنید (داده ها را به همه دستگاه های موجود در شبکه ارسال کنید) و چند رسانه ای (یکسان اما کمی متفاوت- به هر دستگاه مانند سرور پخش می شود).
  • اشکالات موجود در برنامه های شما و کتابخانه های سیستم عامل (که ارتباط TCP خود را مدیریت می کنند ، روتر شما تقریباً هیچ کاری انجام نمی دهد مگر اتصال دو [یا بیشتر] دستگاه)

ممکن است بپرسید چرا از UDP استفاده نمی کنید؟ خب ، بر خلاف TCP ، UDP قبل از ارسال اطلاعات بیشتر ، اطمینان حاصل نمی کند که مشتری شما اطلاعات را دریافت می کند. مانند ارسال یک ایمیل و ندانستن اینکه آیا مشتری آن را دریافت می کند یا خیر. علاوه بر این ، UDP امنیت کمتری دارد. برای اطلاعات بیشتر ، این پست را از Stack Exchange Super User بخوانید

این مقاله خوب است و توصیه می شود.

مرحله 12: [TCP]: اجازه دهید مشتری ایجاد کنیم

مشتری (Raspberry Pi در مورد ما) ، که داده ها را از سرور دریافت می کند (رایانه ما در مورد ما) داده هایی را برای ارسال به Pi دریافت می کند (دستورات سریال که در Arduino انجام می شود) و داده ها را پس می گیرد (خواندن سنسور و بازخورد مستقیم از آردوینو. طرح پیوست رابطه بین این سه را نشان می دهد.

مقاله Python Wiki TcpCommunication نشان می دهد که ایجاد چنین ارتباطی با چند خط کد با استفاده از ماژول سوکت داخلی بسیار ساده است. ما یک برنامه روی رایانه شخصی و یک برنامه دیگر در Pi خواهیم داشت.

ما با وقفه ها کار خواهیم کرد. در مرحله توضیحات درباره آنها بیشتر بیاموزید. در مورد بافرها نیز آنجا بخوانید. حال ، ما می توانیم داده هایی را که داریم با استفاده از data = s.recv (BUFFER_SIZE) بخوانیم ، اما این تعداد کاراکترهایی است که با نیش خالی تعریف کرده ایم. آیا می توانیم از وقفه ها استفاده کنیم؟ یک س Anotherال دیگر: آیا بافر خالی است یا منتظر می ماند تا سرور داده های بیشتری را ارسال کند ، در این صورت سرور/سرویس گیرنده یک استثناء تایم اوت خواهد گذاشت؟

بیایید یک به یک با آن مقابله کنیم. قبل از انجام این کار ، من این مقاله ویکی پدیا را که پورت های TCP و UDP مورد استفاده را فهرست می کند ، جستجو کردم. پس از یک نگاه سریع ، تصمیم گرفتم که این پروژه در پورت 12298 ارتباط برقرار کند ، زیرا توسط سیستم عامل و سرویس های محلی استفاده نمی شود.

مرحله 13: Tcp Comms ما را امتحان کنید

برای اینکه ببینیم آیا می توانیم از وقفه ها استفاده کنیم ، اجازه دهید با استفاده از خط فرمان پایتون ، یک کلاینت ساده و یک سرور بسازیم. در مراحل زیر این کار را انجام خواهم داد:

  1. برنامه ای را شروع کنید که متنی را از طریق Tcp در یک حلقه از طریق درگاه پرده ارسال می کند
  2. برنامه دیگری را شروع کنید (به طور موازی) که تمام متن را در یک حلقه بخواند و آن را روی صفحه چاپ کند.

فقط بخش هایی از برنامه نشان داده می شود. همه برنامه ها با پایتون 3 اجرا می شوند. همه این برنامه ها این است که دستور سریال را از صفحه کلید کاربر رایانه از طریق Pi به Arduino ارسال کنید.

  • SBcontrolPC.py - برای اجرا بر روی کامپیوتر اتصال TCP را در آدرس محلی و درگاه مشخص شده شروع می کند (من از پورت 12298 استفاده می کنم ، چرا به مرحله قبل مراجعه کنید)
  • SBcontrolPi.py - برای اجرا روی Pi. بافر خود را هر نیم ثانیه (0.5 ثانیه) می خواند. یک اسکریپت پوسته را راه اندازی می کند که مواردی مانند پخش ویدئو و غیره را مدیریت می کند.

توصیه شده: