طاولة كرة قدم Raspberry Pi IoT: 11 خطوة
طاولة كرة قدم Raspberry Pi IoT: 11 خطوة
Anonim
طاولة كرة قدم Raspberry Pi IoT
طاولة كرة قدم Raspberry Pi IoT

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

الإعداد الرئيسي هو استخدام جدول كرة القدم المتصل بـ Raspberry Pi والذي يمكنه القيام بجميع المهام التالية:

  • يستخدم دبابيس GPIO لتشغيل مؤشر LED / مستقبلات IR ووحدات مصفوفة نقطية 8x8
  • يدير موقع Flask باستخدام nginx
  • يقوم بتشغيل قاعدة بيانات MySQL / MariaDB لتخزين البيانات

لتتمكن من إعادة إنشاء هذا المشروع ، ستحتاج إلى المهارات التالية:

الخلفية:

  • فهم HTML / CSS / Javascript لعميل الموقع
  • فهم لغة Python مع Flask / Flask-SocketIO / Jinja2 لجانب الخادم من موقع الويب
  • المعرفة الأساسية لـ MySQL
  • تعرف على كيفية تشغيل خادم الويب

النموذج المبدئي

  • المعرفة الأساسية حول كيفية توصيل دائرة كهربائية
  • لحام
  • الفهم الأساسي لكيفية كتابة نص بلغة بايثون
  • العمل مع Linux (Raspbian)
  • التحلي بالكثير من الصبر لأنه سيكون هناك الكثير من تصحيح الأخطاء

الخطوة 1: المواد

فيما يلي قائمة بجميع الأجزاء الضرورية للجدول:

  • Raspberry Pi موديل 3 (مع غلاف)
  • T-Cobbler لتوصيل Pi بلوح التجارب
  • طاولة فووسبالل (لقد استخدمت طاولة قديمة جدًا تشبه هذه. يجب أن تكون على استعداد لحفر ثقوب فيها)
  • MAX7219 وحدة مصفوفة نقطية لاردوينو (2)
  • بواعث IR LED (2+ لأنها تنكسر ، على غرار هذا)
  • مستقبلات الأشعة تحت الحمراء (2+ لأنها تتعطل أيضًا ، على غرار هذا)
  • لوح أساسي غير ملحوم
  • الكثير والكثير من الأسلاك (يعتمد على حجم طاولة كرة القدم)
  • موصلات ذكر (30+)
  • موصلات أنثى (+10)
  • 100-220 أوم مقاومات (4+)
  • مواد لحام
  • أحزمة الأسلاك
  • حاملي LED
  • بعض الخشب / البراغي في حالة رغبتك في ترحيل الكرة في الحضيض

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

الخطوة الثانية: الدائرة الكهربائية

الدائرة الكهربائية
الدائرة الكهربائية
الدائرة الكهربائية
الدائرة الكهربائية
الدائرة الكهربائية
الدائرة الكهربائية

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

في البداية حاولت تنفيذ مصفوفة 8x8 LED مع سجل التحول 74HC595 (الصورة الأولى) ومجموعة الترانزستور ولكن نظرًا للعديد من الأسلاك والإخراج المنخفض جدًا ، قمت بالتبديل إلى MAX7219 Dot Matrix Module لأنها تستغرق 5 أسلاك فقط ويتم تشغيلها مباشرة بواسطة حافلة SPI.

الدائرة التي استخدمتها في النهاية تم رسمها باستخدام Fritzing. يرجى ملاحظة أنه يمكن توصيل IR LEDS وأجهزة الاستقبال بأي من دبابيس GPIO المجانية.

يجب أن تكون أجهزة استقبال IR و LED متقاطعة مباشرة مع بعضها البعض ويجب توجيه الجزء العلوي من مؤشر LED نحو جهاز الاستقبال. لأننا نريد محاكاة شعاع مباشر يمكن كسره بحركة الكرة وفي هذه الحالة سيكون هناك تغيير في حالة خط البيانات الخاص بجهاز الاستقبال من 0 إلى 1.

الخطوة الثالثة: ترميز المستشعرات

ترميز أجهزة الاستشعار
ترميز أجهزة الاستشعار

لقد قمت بترميز معظم هذا المشروع باستخدام Pycharm لأنه يسمح بنشر SSH بسهولة إلى Raspberry Pi الخاص بك باستخدام مترجم فوري. لن أخوض في التفاصيل حول كيفية عمل هذا البرنامج ولكن يمكن العثور على الكثير من المعلومات على موقع pycharm.

ما زلت أعمل حاليًا في المشروع ولكن بمجرد الانتهاء من كل شيء ، سيكون المشروع بأكمله متاحًا في ملف التعريف الخاص بي على github

يتكون رمز المستشعرات من 3 فئات يتم تشغيلها في سلسلة رسائل خلفية على خادم Flask الخاص بي (والذي سيتم شرحه لاحقًا):

  1. فئة الهدف (رابط) - هذا الملف يبدأ جميع المكونات المنفصلة ، والتي يمكن استدعاؤها عن طريق إدخال جهاز SPI الصحيح / ناقل ورقم التعريف الشخصي
  2. فئة المصفوفة (رابط) - هذه هي الفئة الرئيسية لتشغيل وحدة MAX7219
  3. فئة LED وجهاز الاستقبال (رابط) - هذه هي الفئة الرئيسية لتشغيل شعاع كسر الأشعة تحت الحمراء باستخدام خيوط منفصلة لتقليل حمل وحدة المعالجة المركزية على RPi

يعمل كل من LED وجهاز الاستقبال على تردد 38 كيلو هرتز وتتوقع أجهزة الاستقبال دائمًا ارتفاعًا بنسبة 50 ٪ ونبضًا لأسفل بنسبة 50 ٪ للعمل بشكل صحيح.

الخطوة 4: تحضير المستشعرات ووضعها

تحضير المستشعرات ووضعها
تحضير المستشعرات ووضعها
تحضير المستشعرات ووضعها
تحضير المستشعرات ووضعها
تحضير المستشعرات ووضعها
تحضير المستشعرات ووضعها

الآن سنقوم بإعداد IR LED وجهاز الاستقبال. في صورة الجدول ، يمكنك العثور على مواقع حيث يجب وضع RPi وأجهزة الاستشعار.

لكن علينا أولاً تحضير الأسلاك:

  1. تأكد من قياس مقدار السلك المطلوب من موقع RPi / اللوح إلى موقع المستشعر
  2. قم بلحام دبابيس مستقبل الأشعة تحت الحمراء في أحد طرفي السلك (COM / GND / V +)
  3. قم بلحام قطع الموصل الذكر على الطرف الآخر من السلك

الآن سنقوم بإعداد الجدول:

  1. قم بعمل رسم أساسي (بناءً على الصورة) حول مكان الحفر. من المهم جدًا أن يتم محاذاة الفتحتين عبر بعضهما البعض لأن هذا سيكون موقع الحزمة.
  2. حفر الثقوب
  3. إذا كان لديك بعض حاملات LED (رابط) ، فيمكنك وضعها داخل الفتحة لجعلها أكثر متانة
  4. أدخل + شريط LED + المستقبل على كلا الجانبين
  5. قم بربط الأسلاك + الصقها على الخشب حتى لا تتقاطع كثيرًا
  6. أدخل دبابيس الذكور على اللوح وفقًا للدائرة المقدمة مسبقًا

الخطوة 5: تحضير وحدة المصفوفة ووضعها

تحضير وحدة المصفوفة ووضعها
تحضير وحدة المصفوفة ووضعها

بعد ذلك ، سنقوم بتوصيل وحدتي مصفوفة LED

ملحوظة:

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

لتحضير الأسلاك:

  1. قم بقياس السلك من اللوح باتجاه الجزء العلوي من الطاولة
  2. جندى بعض الموصلات الأنثوية بالطرف الأول من السلك
  3. جند بعض الموصلات الذكور بالطرف الآخر من السلك

وضع المصفوفة:

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

في مرحلة ما ، سأضيف خطوة DIY صغيرة لإضافة غلاف لوحدة المصفوفة ، لكنهم الآن عراة.

الخطوة 6: جعله إنترنت الأشياء

جعله إنترنت الأشياء
جعله إنترنت الأشياء

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

ومع ذلك ، إذا كنت تريد توصيل طاولتك بالإنترنت ، فيجب أن تصل الخطوات القليلة التالية إلى زقاقك.

في الخطوات القليلة التالية سنتناول ما يلي:

  • تكوين Raspberry Pi
  • عمل قاعدة بيانات للتخزين
  • إنشاء الموقع
  • وضعه على الإنترنت

في هذه المرحلة ، إذا كنت معتادًا على git ، فإنني أوصيك بإنشاء مستودع على GitHub / GitLab لتتبع ملفاتك. إذا لم تكن كذلك ، يمكنك إنشاء مجلد بنفس البنية كما في الصورة.

سيكون المشروع الكامل متاحًا قريبًا على GitHub. ومع ذلك ، يتوفر ملف rar مؤقت يحتوي على جميع الملفات الضرورية.

الخطوة 7: توصيل Raspberry Pi

بعد ذلك ، سنقوم بإعداد بيئة raspberry pi ، للقيام بذلك تحتاج إلى تنفيذ الخطوات التالية:

  • قم بالاتصال عبر SSH بـ Rasberry Pi الخاص بك (يمكنك استخدام PuTTY)
  • قم بإنشاء مجلد (مثال مشروع mkdir) وانتقل إلى هذا المجلد باستخدام الأمر cd
  • قم بإنشاء بيئة Python افتراضية في هذا المجلد باستخدام الأمر python3 -m venv --system-site-packs 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

الخطوة التاسعة: إنشاء الموقع

إنشاء الموقع
إنشاء الموقع
إنشاء الموقع
إنشاء الموقع
إنشاء الموقع
إنشاء الموقع

بعد ذلك يمكنك تحليل (واستخدام) الكود المقدم في ملف project_example.rar.

الملف الرئيسي هو Flask.py وهو خبز وزبدة هذا المشروع:

  • يقوم بتشغيل تطبيق Flask-SocketIO الذي يتعامل مع الواجهة الخلفية لموقع الويب
  • يقوم بإنشاء اتصال بين قاعدة البيانات و Flask
  • يوفر التحقق من صحة تسجيل الدخول وتسجيل المستخدم
  • يوفر الكود اللازم حول كيفية لعب لعبة يستخدم socketio لتحديث موقع الويب في الوقت الفعلي أثناء اللعبة
  • يضع نتائج اللعبة في قاعدة البيانات

في المجلدات الثابتة والقوالب ، يمكنك العثور على HTML / CSS / JS التي توفر الجزء الأمامي من موقع الويب. لا تتردد في تعديلها وفقًا لرغباتك الخاصة.

الخطوة 10: الاتصال بشبكة الويب العالمية

لربط موقعنا بالويب سنستخدم nginx و uwsgi. في مثال المشروع ، يمكنك العثور على الملفات الضرورية في مجلد conf.

بادئ ذي بدء ، تحتاج إلى تحديث ما يلي في هذه الملفات:

  • في uwsgi-flask.ini ، تحتاج إلى تغيير مسار معلمة virtualenv إلى مترجمك الفوري
  • في project1-flask.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 start project1- *
  • me @ my-rpi: ~ / project1 $ sudo systemctl status project1- *

إذا كنت تريد أن يبدأ خادم الويب عند بدء تشغيل raspberry pi ، فأنت بحاجة إلى استخدام sudo systemctl enable project1 - *. service command.

إذا تم القيام به بشكل صحيح ، بعد إعادة تشغيل النظام ، يجب أن يعمل موقع الويب الخاص بك على عنوان IP الخاص بك. إذا كنت تريد تحرير أحد ملفات التكوين هذه ، فأنت بحاجة دائمًا إلى إيقاف الخدمة ، وأعد تحميل الملفات واستخدم الأمر daemon-reload متبوعًا بـ start ، وإلا فلن تكون التغييرات فعالة.

الخطوة 11: الإنهاء

التشطيب
التشطيب

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

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

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

أخيرًا وليس آخرًا ، أود أن أشكر أساتذتي من New Media and Communication Technology لإعطائي الكثير من النصائح ومساعدتي في إنهاء هذا المشروع.

موصى به: