فهرست مطالب:

Raspberry Pi IoT Foosball Table: 11 مرحله
Raspberry Pi IoT Foosball Table: 11 مرحله

تصویری: Raspberry Pi IoT Foosball Table: 11 مرحله

تصویری: Raspberry Pi IoT Foosball Table: 11 مرحله
تصویری: 2019 ORISE Joint Science and Technology Institute Final Presentations 2024, نوامبر
Anonim
میز رزبری پای IoT Foosball Table
میز رزبری پای IoT Foosball Table

به نسخه من از یک میز شکسته foosball ، به عنوان بخشی از یک پروژه دانشجویی برای فناوری رسانه های نوین و ارتباطات ، خوش آمدید. من عمدتا در اطراف foosball و میزهای استخر بزرگ شدم ، بنابراین فکر کردم عالی است که سعی کنم یکی از این دستگاه ها را به اینترنت متصل کنم.

راه اندازی اصلی استفاده از یک میز foosball موجود متصل به Raspberry Pi است که می تواند همه کارهای زیر را انجام دهد:

  • از پین های GPIO برای هدایت IR/گیرنده های IR و ماژول های ماتریس نقطه 8x8 استفاده می کند
  • یک وب سایت Flask را با استفاده از nginx اجرا می کند
  • پایگاه داده MySQL/MariaDB را برای ذخیره داده اجرا می کند

برای اینکه بتوانید این پروژه را بازسازی کنید ، به مهارت های زیر نیاز دارید:

پس زمینه:

  • درک HTML/CSS/Javascript برای مشتری وب سایت
  • آشنایی با پایتون با Flask/Flask-SocketIO/Jinja2 برای سرور وب سایت
  • آشنایی اولیه با MySQL
  • نحوه اجرای وب سرور را بدانید

نمونه اولیه

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

مرحله 1: مواد

در اینجا لیستی با تمام قطعات لازم برای جدول آمده است:

  • رزبری پای مدل 3 (با پوشش)
  • T-Cobbler برای اتصال Pi به تخته نان
  • میز Foosball (من از یک میز بسیار قدیمی مشابه این میز استفاده کردم. باید مایل به سوراخ کردن در آن باشید)
  • MAX7219 ماژول نقطه ماتریس آردوینو (2)
  • IR LED Emitters (2+ چون خراب می شوند ، شبیه به این یکی)
  • گیرنده های IR (2+ چون خراب می شوند ، شبیه به این یکی)
  • تخته نان پایه بدون لحیم
  • تعداد زیادی سیم (بستگی به اندازه میز فوتسبال دارد)
  • اتصالات نر (30+)
  • اتصالات زن (10+)
  • مقاومت 100-220 اهم (4+)
  • مواد لحیم کاری
  • تسمه های سیم
  • نگهدارنده های LED
  • مقداری چوب/پیچ در صورت تمایل به پخش توپ در ناودان

هزینه کل این پروژه بستگی به هزینه میز کفش شما (گران) دارد. علاوه بر میز ، مواد حداکثر 150 یورو خواهد بود.

مرحله 2: مدار الکتریکی

مدار الکتریکی
مدار الکتریکی
مدار الکتریکی
مدار الکتریکی
مدار الکتریکی
مدار الکتریکی

قبل از اینکه بخواهید لحیم کاری کنید ، تمام اجزایی را که من توصیه می کنم ابتدا روی تخته نان تست کنید ، جمع کنید. جایگزینی قطعات معیوب قبل از اینکه ساعت ها لحیم کاری کنید ، آسان تر است.

در ابتدا سعی کردم ماتریس LED 8x8 را با یک شیفت رجیستر 74HC595 (تصویر اول) و آرایه ترانزیستور پیاده سازی کنم ، اما به دلیل وجود سیم های زیاد و خروجی بسیار کم ، ماژول MAX7219 Dot Matrix Module را تغییر دادم زیرا فقط 5 سیم را می گیرد و مستقیماً توسط آن هدایت می شود. یک اتوبوس SPI

مداری که در نهایت استفاده کردم با Fritzing ترسیم می شود. لطفاً توجه داشته باشید که IR LEDS و گیرنده ها می توانند به هر یک از پین های GPIO رایگان شما متصل شوند.

گیرنده های IR و LED باید مستقیماً روی هم قرار بگیرند و قسمت بالای LED باید به سمت گیرنده باشد. زیرا ما می خواهیم یک پرتو مستقیم را که با حرکت توپ می شکند شبیه سازی کنیم که در این صورت تغییر حالت خط DATA گیرنده از 0 به 1 وجود خواهد داشت.

مرحله 3: کدگذاری سنسورها

کدگذاری سنسورها
کدگذاری سنسورها

من بیشتر این پروژه را با استفاده از Pycharm کدگذاری کرده ام زیرا امکان استقرار آسان SSH را در Raspberry Pi شما با استفاده از مترجم از راه دور فراهم می کند. من جزئیات نحوه عملکرد این برنامه را توضیح نمی دهم ، اما اطلاعات زیادی را می توان در وب سایت pycharm یافت.

من در حال حاضر هنوز روی پروژه کار می کنم اما پس از انجام همه کار ، کل پروژه در نمایه github من در دسترس خواهد بود

کد سنسورها شامل 3 کلاس است که در یک موضوع زمینه در سرور Flask من اجرا می شوند (که بعدا توضیح داده می شود):

  1. کلاس هدف (پیوند) -این فایل همه اجزای جداگانه را آغاز می کند ، که می توان با وارد کردن دستگاه SPI/گذرواژه و شماره پین صحیح از آنها استفاده کرد.
  2. کلاس ماتریکس (پیوند) -این کلاس اصلی برای تقویت ماژول MAX7219 است
  3. کلاس LED و گیرنده (پیوند) - این کلاس اصلی برای تقویت پرتو مادون قرمز با استفاده از Threads جداگانه برای کاهش بار CPU RPi است.

LED و گیرنده هر دو روی فرکانس 38 کیلوهرتز کار می کنند و گیرنده ها همیشه انتظار دارند که پالس 50 up بالا و 50 down پایین به درستی کار کند.

مرحله 4: آماده سازی و قرار دادن سنسورها

آماده سازی و قرار دادن سنسورها
آماده سازی و قرار دادن سنسورها
آماده سازی و قرار دادن سنسورها
آماده سازی و قرار دادن سنسورها
آماده سازی و قرار دادن سنسورها
آماده سازی و قرار دادن سنسورها

اکنون ما قصد داریم LED و گیرنده IR را آماده کنیم. در تصویر جدول می توانید مکانهایی را که RPi و سنسورها باید در آن قرار گیرند پیدا کنید.

اما ابتدا باید سیم کشی را آماده کنیم:

  1. اطمینان حاصل کنید که مقدار سیم مورد نیاز از محل RPi/breadboard تا محل سنسور را اندازه گیری کرده اید
  2. پین های گیرنده IR را به یک سر سیم (COM/GND/V+) لحیم کنید
  3. قطعات اتصال دهنده نر را در انتهای دیگر سیم لحیم کنید

اکنون ما جدول را آماده می کنیم:

  1. یک نقاشی اساسی (بر اساس تصویر) در مورد محل حفاری انجام دهید. بسیار مهم است که 2 سوراخ در یکدیگر تراز شوند زیرا این محل پرتو خواهد بود.
  2. سوراخ ها را سوراخ کنید
  3. اگر چند نگهدارنده LED دارید (پیوند) می توانید آنها را داخل سوراخ قرار دهید تا محکم تر شود
  4. گیرنده LED + را در دو طرف وارد کنید + نوار را بچسبانید
  5. سیم ها را ببندید + آنها را روی چوب بچسبانید تا بیش از حد از یکدیگر عبور نکنند
  6. پین های نر را مطابق مدار ارائه شده قبلی روی تخته نان قرار دهید

مرحله 5: آماده سازی و قرار دادن ماژول ماتریس

آماده سازی و قرار دادن ماژول ماتریس
آماده سازی و قرار دادن ماژول ماتریس

در مرحله بعد ما قصد داریم 2 ماژول ماتریس LED را به هم وصل کنیم

توجه داشته باشید:

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

برای تهیه سیم:

  1. سیم را از تخته نان به سمت قسمت بالای میز اندازه بگیرید
  2. برخی از اتصالات زن را به انتهای اول سیم لحیم کنید
  3. برخی از اتصالات نر را به سر دیگر سیم لحیم کنید

قرار دادن ماتریس:

  1. ماتریس را از سوراخ بالای آن بیرون بیاورید
  2. تسمه + سیم های داخل را روی چوب بچسبانید تا از عبور آنها جلوگیری شود
  3. پین های نر را مطابق سیرکوی ارائه شده قبلی روی تخته نان بگذارید

در یک مرحله من یک مرحله DIY کوچک برای اضافه کردن یک پوشش برای ماژول ماتریس اضافه می کنم ، اما در حال حاضر آنها برهنه هستند.

مرحله 6: ساختن آن به اینترنت اشیا

ساخت آن IoT
ساخت آن IoT

اگر فقط می خواهید نمرات را ثبت و نمایش دهید ، می توانید پروژه را با نوشتن یک اسکریپت پایتون کوچک در حال اجرا به پایان برسانید تا زمانی که یکی از نمرات به 9 برسد و سپس بازنشانی شود ، پروژه را به پایان برسانید.

اما اگر می خواهید میز خود را به اینترنت متصل کنید ، مراحل بعدی باید درست در کوچه شما انجام شود.

در چند مرحله بعدی به موارد زیر می پردازیم:

  • پیکربندی Raspberry Pi
  • ایجاد پایگاه داده برای ذخیره سازی
  • ایجاد وب سایت
  • قرار دادن آن به صورت آنلاین

در این مرحله ، اگر با git آشنا هستید ، توصیه می کنم برای پیگیری پرونده های خود یک مخزن در GitHub/GitLab ایجاد کنید. اگر شما نیستید ، می توانید یک پوشه با ساختار مشابه تصویر ایجاد کنید.

پروژه کامل به زودی در GitHub در دسترس خواهد بود. با این حال یک فایل rar موقت با تمام فایل های لازم در دسترس است.

مرحله 7: اتصال Raspberry Pi

در مرحله بعد ما محیط raspberry pi را راه اندازی می کنیم ، برای این کار باید مراحل زیر را انجام دهید:

  • از طریق SSH به Rasberry Pi خود متصل شوید (می توانید از PuTTY استفاده کنید)
  • یک پوشه ایجاد کنید (مثال mkdir project) و با استفاده از دستور cd به این پوشه بروید
  • با استفاده از فرمان python3 -m venv --system-site-packages env یک محیط مجازی پایتون در این پوشه ایجاد کنید
  • مترجم مجازی را با دستور source/env/bin/activ فعال کنید
  • بسته ها را از شرایط مورد نیاز نصب کنید. txt با دستور python -m pip install package -name
  • فایلها را از فایل project_example.rar ارائه شده قبلی بر روی SSH در پوشه پروژه خود منتقل کنید

اکنون باید بتوانید پروژه کامل را روی Raspberry Pi خود اجرا کنید. من به شما توصیه می کنم از یک Python IDE مانند PyCharm استفاده کنید که به شما امکان می دهد از مترجم راه دور خود در SSH اشکال زدایی کرده و در صورت لزوم تغییرات را مستقیماً بارگذاری کنید.

مرحله 8: راه اندازی پایگاه داده

راه اندازی پایگاه داده
راه اندازی پایگاه داده

اکنون باید بر اساس این مدل یک پایگاه داده بسیار اساسی ایجاد کنید.

ساده ترین راه برای انجام این کار این است که پایگاه داده خود را در میز کار MySQL ایجاد کنید که در آن می توانید آزمایشاتی نیز انجام دهید.

پس از اتمام کار ، می توانید یک پایگاه داده خود را صادر کرده و آن را در RPi خود بارگذاری کنید و سپس آن را با sudo mariadb <pathtofile/file.sql اجرا کنید.

مرحله 9: ایجاد وب سایت

ایجاد وب سایت
ایجاد وب سایت
ایجاد وب سایت
ایجاد وب سایت
ایجاد وب سایت
ایجاد وب سایت

در مرحله بعد می توانید کد ارائه شده در فایل project_example.rar را تجزیه و تحلیل (و استفاده) کنید.

فایل اصلی Flask.py است که نان و کره این پروژه است:

  • یک برنامه Flask-SocketIO را اجرا می کند که پشتیبان وب سایت را کنترل می کند
  • ایجاد ارتباط بین پایگاه داده و Flask
  • تأیید ورود و ثبت نام کاربر را ارائه می دهد
  • کد لازم را در مورد نحوه انجام بازی با استفاده از socketio برای به روز رسانی وب سایت در زمان بازی ارائه می دهد
  • نتایج بازی را در پایگاه داده قرار می دهد

در پوشه های استاتیک و الگوها می توانید HTML/CSS/JS را پیدا کنید که بخش جلویی وب سایت را ارائه می دهد. با خیال راحت این موارد را مطابق میل خود تغییر دهید.

مرحله 10: اتصال به شبکه جهانی وب

برای اتصال وب سایت ما به وب از nginx و uwsgi استفاده می کنیم. در مثال پروژه می توانید فایلهای لازم را در پوشه conf پیدا کنید.

اول از همه باید موارد زیر را در این فایل ها به روز کنید:

  • در uwsgi-flask.ini شما باید مسیر پارامتر virtualenv را به مترجم خود تغییر دهید
  • در project1-flask.service باید قسمت [Service] فایل را با اطلاعات کاربری خود و مسیرهای مربوط به فایل های مرتبط به روز کنید
  • در فایل nginx باید سرور و محل / مسیر را به سوکت مرتبط خود به روز کنید

در مرحله بعد باید فایل پیش فرض وب سرور nginx را با محل پیکربندی nginx جایگزین کنید ، در زیر نمونه ای از دستورات لینوکس برای انجام این کار آمده است

  • me@my-rpi:/project1 $ sudo cp conf/nginx/etc/nginx/sites-available/project1
  • me@my-rpi:/project1 $ sudo rm/etc/nginx/sites-enabled/defaul t
  • me@my-rpi:/project1 $ sudo ln -s/etc/nginx/sites-available/project1/etc/nginx/sites-enabled/project1
  • me@my-rpi: ~/project1 $ sudo systemctl راه اندازی مجدد nginx.service

در نهایت شما باید خدمات سفارشی را به پوشه systemd خود اضافه کنید ، این یک مثال در مورد نحوه انجام آن است:

  • me@my-rpi:/project1 $ sudo cp conf/project1-*. service/etc/systemd/system/
  • me@my-rpi: ~/project1 $ sudo systemctl daemon-reload
  • me@my-rpi: ~/project1 $ sudo systemctl شروع پروژه 1-*
  • me@my-rpi: ~/project1 $ sudo systemctl status status1-*

اگر می خواهید سرور وب با بوت شدن تمشک pi شما شروع به کار کند ، باید از دستور سرویس sudo systemctl enable project1-*.

در صورت انجام صحیح ، پس از راه اندازی مجدد سیستم ، وب سایت شما باید بر روی آدرس IP شما اجرا شود. اگر می خواهید یکی از این فایلهای پیکربندی را ویرایش کنید ، همیشه باید سرویس را متوقف کنید ، فایلها را مجددا بارگذاری کرده و از دستور daemon-reload و سپس شروع استفاده کنید ، در غیر این صورت تغییرات موثر نخواهد بود.

مرحله 11: پایان کار

اتمام خاموش
اتمام خاموش

در حین تایپ قسمت پایانی این دستورالعمل ، این پروژه مدرسه کوچک هنوز در حال پیشرفت است.

من ساعتهای بیشماری را صرف انجام این کار در 2.5 هفته کرده ام. با وجود اینکه همه چیز کمی عجله داشت ، من هنوز به آنچه به دست آورده ام افتخار می کنم. در مرحله مونتاژ با اشکالات/خطاها/سنسورهای معیوب بیشماری روبرو شدم ، بنابراین اگر همه چیز در اولین تلاش کار نمی کند ، خیلی ناامید نشوید.

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

در آخر اما از همه مهمتر می خواهم از معلمان خود در رسانه های جدید و فناوری ارتباطات تشکر کنم که توصیه های زیادی به من کردند و به من کمک کردند تا این پروژه را به پایان برسانم.

توصیه شده: