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

وحدة التتبع لراكبي الدراجات: 5 خطوات
وحدة التتبع لراكبي الدراجات: 5 خطوات

فيديو: وحدة التتبع لراكبي الدراجات: 5 خطوات

فيديو: وحدة التتبع لراكبي الدراجات: 5 خطوات
فيديو: خمس اخطاء خطيرة يرتكبها المبتدئين على الدراجات النارية 2024, يوليو
Anonim
وحدة تتبع لراكبي الدراجات
وحدة تتبع لراكبي الدراجات

وحدة التتبع لراكبي الدراجات هي وحدة تكتشف تلقائيًا الأعطال في السباق ، وتكتشف حدوث عطل ميكانيكي عن طريق لمس مستشعر يعمل باللمس. عند حدوث أحد هذه الأحداث ، ترسل الوحدة الحدث إلى قاعدة بيانات على raspberry pi عبر LoRa. سيتم عرض هذا الحدث على شاشة LCD وعلى موقع ويب. يمكنك أيضًا البحث على موقع الويب عن سباق دراجات محدد مع الأحداث ، وإضافة سباقات ركوب الدراجات أو راكبي الدراجات إلى قاعدة البيانات. لقد أنشأت هذا المشروع لأنني مهتم جدًا بركوب الدراجات وإنترنت الأشياء ، لذا كان الجمع بين هذين الموضوعين أمرًا مثيرًا للغاية بالنسبة لي.

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

اللوازم:

  • زجاج شبكي (56 مم × 85 مم)
  • 10 × 2 م مسامير 10 مم وصواميل
  • 10 X 3M مسامير 10 مم وصواميل
  • مسامير 2 × 3 متر مقاس 50 مم وصواميل
  • PLA Filament لطباعة ثلاثية الأبعاد لحالة LCD الخاصة بك
  • الانكماش الحراري
  • ذكر للكابلات النسائية
  • ثنائي الفينيل متعدد الكلور الأساسية
  • رؤوس الذكور
  • A Raspberry Pi 3b +
  • بطاقة SD سعة 16 جيجا بايت
  • شاشة LCD 4X20
  • حساس لمس سعوي
  • جرس
  • 3 محاور تسريع + مقياس جيروسكوبي
  • وحدة GPS
  • مجلس إدارة SODAQ Mbili
  • وحدة LoRa WAN
  • بطارية 3.7 فولت 1000 مللي أمبير
  • مزود طاقة Raspberry Pi 3b +

أدوات:

  • جندى القصدير
  • لحام حديد
  • ملقط
  • المفكات
  • بانوراما
  • اله للثقب
  • تدريبات 2.5 و 3.5
  • ولاعة / بندقية الهواء الساخن

إذا كنت بحاجة لشراء جميع المستلزمات ، فستحتاج إلى ميزانية قدرها 541.67 يورو. هذا المشروع مكلف للغاية لأنني استخدمت مجموعة أدوات تطوير LoRa rappid التي تكلف 299 يورو (أتيحت لي الفرصة لاستخدام هذه المجموعة من مدرستي). يمكنك دائمًا استخدام Arduino عادي وتوفير الكثير من المال ، ولكن البرامج ستكون مختلفة بعد ذلك.

الخطوة 1: مخطط فريتزينج

مخطط فريتزينج
مخطط فريتزينج
مخطط فريتزينج
مخطط فريتزينج

الخطوة الأولى هي بناء الدوائر. لهذا المشروع لدينا دائرتان كهربائيتان ، واحدة بها Raspberry Pi والأخرى بها لوحة SADAQ Mbili. سنبدأ بدائرة Raspberry Pi.

مخطط Raspberry Pi Fritzing:

مخطط Raspberry Pi بسيط للغاية ، الشيء الوحيد الذي نربطه بـ Pi هو شاشة LCD 4X20 Sparkfun. تعمل الشاشة مع الاتصال التسلسلي أو SPI أو I2C. إن بروتوكول الاتصال الذي تستخدمه متروك لك. لقد استخدمت بروتوكول SPI لأنه بسيط للغاية. إذا كنت تستخدم SPI مثلي ، فأنت بحاجة إلى الاتصالات التالية:

  • VCC LCD VCC Raspberry Pi
  • GND LCD GND Raspberry Pi
  • SDI LCD MOSI (GPIO 10) Raspberry Pi
  • SDO LCD MISO (GPIO 9) Raspberry Pi
  • SCK LCD SCLK (GPIO 11) Raspberry Pi
  • CS LCD CS0 (GPIO 8) Raspberry Pi

في مخطط Fritzing ، سترى أن شاشة LCD عبارة عن شاشة 2X16. هذا لأنني لم أجد شاشة LCD مقاس 4 × 20 في حالة التفريز. ومع ذلك ، فإن جميع الاتصالات هي بعضها ، لذا لا يهم حقًا.

مخطط SODAQ Mbili Fritzing:

سنقوم بتوصيل 4 مكونات إلكترونية بلوحة SODAQ Mbili ، لذا فإن هذا المخطط الكهربائي بسيط جدًا أيضًا. سنبدأ بتوصيل مستشعر اللمس Capactive. ستكون أجهزة الاستشعار OUT-pin عالية عند لمس المستشعر ، وستكون منخفضة بخلاف ذلك. هذا يعني أن OUT-pin هو إخراج رقمي يمكننا توصيله بإدخال رقمي للوحة Mbili. الاتصالات كالتالي:

  • جهاز استشعار يعمل باللمس D5 Mbili
  • مستشعر اللمس VCC 3.3V Mbili
  • مستشعر GND Touch GND Mbili

المكون الثاني هو Triple acces + مستشعر الدوران. لقد استخدمت لوحة GY-521 التي تستخدم بروتوكول I2C للتواصل مع لوحة Mbili. لاحظ أن AD0-pin للوحة GY-521 يجب أن يكون متصلاً بـ VCC للوحة Mbili! هذا لأن لوحة Mbili بها ساعة بنفس عنوان I2C مثل GY-521. من خلال توصيل AD0-pin بـ VCC ، نقوم بتغيير عنوان te I2C الخاص بـ GY-521. الاتصالات كالتالي:

  • VCC GY-521 3.3V Mbili
  • GND GY-521 GND Mbili
  • SCL GY-521 SCL Mbili
  • SDA GY-521 SDA Mbili
  • AD0 GY-521 3.3V Mbili

بعد ذلك سنقوم بتوصيل الجرس. أستخدم الجرس القياسي الذي يصدر صوتًا عندما يكون هناك تيار. هذا يعني أنه يمكننا فقط توصيل الجرس بدبوس رقمي للوحة Mbili. الاتصالات كالتالي:

  • + الجرس D4 Mbili
  • - الجرس GND Mbili

أخيرًا وليس آخرًا ، سنقوم بتوصيل وحدة GPS. تتواصل وحدة GPS عبر RX و TX. الاتصالات كالتالي:

  • VCC GPS 3.3V Mbili
  • GND GPS GND Mbili
  • TX GPS RX Mbili
  • RX GPS TX Mbili

الخطوة 2: قاعدة البيانات المقيسة

قاعدة بيانات تمت تسويتها
قاعدة بيانات تمت تسويتها

الخطوة الثانية هي تصميم قاعدة بيانات موحدة. لقد صممت ERD الخاص بي في Mysql. سترى أن قاعدة البيانات الخاصة بي مكتوبة باللغة الهولندية ، وسأشرح الجداول هنا.

الجدول "ploeg":

هذا الجدول عبارة عن طاولة لنوادي السيكلنج. يحتوي على معرف نادي الدراجات واسم نادي الدراجات.

طاولة "رينرز":

هذا الجدول عبارة عن طاولة لراكبي الدراجات. كل راكب دراجة لديه LoRaID وهو أيضًا المفتاح الأساسي للجدول. لديهم أيضًا اسم العائلة والاسم الأول وبلد أوريجين ومعرف نادي ركوب الدراجات المرتبط بطاولة نادي ركوب الدراجات.

طاولة "بلاتسن":

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

طاولة wedstrijden:

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

طاولة 'gebeurtenissen':

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

الجدول "wedstrijdrenner":

هذا الجدول هو جدول مطلوب لعلاقة أطراف بأطراف.

الخطوة 3: تسجيل وحدة LoRa الخاصة بك

سجل وحدة LoRa الخاصة بك
سجل وحدة LoRa الخاصة بك

قبل أن تبدأ بالرمز ، تحتاج إلى تسجيل وحدة LoRa في بوابة LoRa. لقد استخدمت شركة اتصالات في بلجيكا تسمى "Proximus" تقوم بترتيب الاتصال لوحدة LoRa الخاصة بي. يتم تجميع البيانات التي أرسلها مع عقدة LoRa الخاصة بي على موقع الويب من AllThingsTalk. إذا كنت تريد أيضًا استخدام واجهة برمجة تطبيقات AllThingsTalk لجمع بياناتك ، فيمكنك التسجيل هنا.

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

  1. انتقل إلى "الأجهزة" في القائمة الرئيسية
  2. انقر فوق "جهاز جديد"
  3. حدد عقدة LoRa الخاصة بك
  4. املأ جميع المفاتيح.

الآن انتهيت! ستظهر جميع البيانات التي ترسلها باستخدام عقدة LoRa في صانع AllThingsTalk الخاص بك. إذا كانت لديك أية مشكلات في التسجيل ، فيمكنك دائمًا الرجوع إلى مستندات AllThingsTalk.

الخطوة 4: الكود

الرمز
الرمز
الرمز
الرمز
الرمز
الرمز
الرمز
الرمز

بالنسبة لهذا المشروع ، سنحتاج إلى 5 لغات ترميز: HTML و CSS و Java Script و Python (Flask) ولغة Arduino. أولاً سأشرح برنامج Arduino.

برنامج Arduino:

في بداية البرنامج ، أعلن بعض المتغيرات العالمية. سترى أنني أستخدم SoftwareSerial للاتصال بـ GPS الخاص بي. هذا لأن لوحة Mbili بها منفذين تسلسليين فقط. يمكنك توصيل GPS بـ Serial0 ، لكنك لن تتمكن من استخدام محطة Arduino لتصحيح الأخطاء بعد ذلك. هذا هو سبب استخدامي SoftwareSerial.

بعد المتغيرات العالمية ، أعلن عن بعض الوظائف التي تسهل قراءة البرنامج. قرأوا إحداثيات GPS ، وأصدروا صوت الجرس ، وأرسلوا القيم عبر LoRa ، …

الكتلة الثالثة هي كتلة الإعداد. هذه الكتلة هي بداية البرنامج الذي يقوم بإعداد المسامير والاتصال التسلسلي واتصال I2C.

بعد كتلة الإعداد يأتي البرنامج الرئيسي. في بداية هذه الحلقة الرئيسية ، أتحقق مما إذا كان مستشعر اللمس نشطًا. إذا كان الأمر كذلك ، فأنا أجعل صوت الجرس ، وأحصل على بيانات GPS وأرسل جميع القيم عبر LoRa أو Bluetooth إلى Raspberry PI. بعد حساس اللمس ، قرأت قيم مقياس التسارع. باستخدام الصيغة ، أحسب الزاوية الدقيقة للمحور X و Y. إذا كانت هذه القيم كبيرة ، فيمكننا أن نستنتج أن راكب الدراجة تحطم. عندما يحدث عطل ، أقوم بإصدار صوت الجرس مرة أخرى ، وأحصل على بيانات GPS وأرسل جميع القيم عبر LoRa أو Bluetooth إلى Raspberry PI.

ربما تفكر في: "لماذا تستخدم البلوتوث و LoRa؟". هذا لأنني واجهت بعض المشاكل مع ترخيص وحدة LoRa التي استخدمتها. لذا لجعل البرنامج يعمل مع العرض التوضيحي الخاص بي ، كان علي استخدام Bluetooth لفترة من الوقت.

2. النهاية الخلفية:

النهاية الخلفية معقدة قليلا. أستخدم Flask لمسارتي التي يمكن الوصول إليها من الواجهة الأمامية ، وأستخدم socketio لتحديث بعض صفحات الواجهة الأمامية تلقائيًا ، وأستخدم دبابيس GPIO لعرض الرسائل على شاشة LCD وتلقي الرسائل عبر البلوتوث (ليس ضروريًا إذا كنت تستخدم LoRa) وأنا أستخدم Threading and Timers لقراءة واجهة برمجة تطبيقات AllThinksTalk بانتظام وبدء تشغيل خادم القارورة.

أستخدم أيضًا قاعدة بيانات SQL لتخزين جميع الأعطال التي تحدث ، وقراءة البيانات الشخصية لراكبي الدراجات وبيانات السباقات. قاعدة البيانات هذه متصلة بالخلفية وتعمل أيضًا على Raspberry Pi. أستخدم فئة "Database.py" للتفاعل مع قاعدة البيانات.

كما تعلم من مخطط Fritzing ، فإن شاشة LCD متصلة بـ Raspberry Pi عبر بروتوكول SPI. لجعله أكثر سهولة ، كتبت فئة "LCD_4_20_SPI.py". مع هذه الفئة يمكنك تغيير التباين وتغيير لون الإضاءة الخلفية وكتابة الرسائل على الشاشة…. إذا كنت تريد استخدام Bluetooth ، فيمكنك استخدام فئة "SerialRaspberry.py". تحكم هذه الفئة الاتصال التسلسلي بين وحدة Bluetooth و Raspberry Pi. الشيء الوحيد الذي عليك القيام به هو توصيل وحدة Bluetooth بـ Raspberry Pi عن طريق توصيل RX بـ TX والعكس بالعكس.

تتم كتابة مسارات الواجهة الأمامية باستخدام قاعدة @ app.route. هنا يمكنك إنشاء مسارك المخصص لإدراج البيانات أو الحصول عليها في قاعدة البيانات أو منها. تأكد من حصولك دائمًا على رد في نهاية المسار. أقوم دائمًا بإرجاع كائن JSON إلى الواجهة الأمامية ، حتى عند حدوث خطأ. يمكنك استخدام متغير في عنوان url بوضعه حول المتغير.

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

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

3. النهاية السعفة:

تتكون نهاية السعفة من 3 لغات. HTML لنص موقع الويب و CSS لترميز موقع الويب وجافا سكريبت للتواصل مع النهاية الخلفية. لدي 4 صفحات موقع لهذا المشروع:

  • index.html حيث يمكنك العثور على جميع سباقات الدراجات.
  • صفحة بها جميع الأعطال والأعطال الميكانيكية لسباق رائع.
  • صفحة يمكنك من خلالها إضافة أسطوانات إلى قاعدة البيانات وتحرير فريقهم.
  • صفحة يمكنك من خلالها إضافة سباق جديد مع جميع الحاضرين إلى قاعدة البيانات.

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

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

يمكنك إلقاء نظرة على جميع الكود الخاص بي هنا على جيثب الخاص بي.

الخطوة الخامسة: بناء الانشاءات

بناء الانشاءات
بناء الانشاءات
بناء الانشاءات
بناء الانشاءات
بناء الانشاءات
بناء الانشاءات

قبل أن نبدأ في البناء ، تأكد من حصولك على جميع المواد من BOM أو من صفحة "الأدوات + المستلزمات".

Raspberry Pi + LCD

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

  1. اصنع ثقبًا في غطاء العلبة. لقد فعلت ذلك باستخدام مثقاب 7 مم على جانب الغطاء. يمكنك أن ترى هذا في الصورة أعلاه.
  2. خذ الأسلاك من شاشة LCD وحرك رأس يتقلص فوق الأسلاك.
  3. استخدم قداحة أو مسدس هواء ساخن لتقليص الرأس.
  4. اسحب الأسلاك مع تقلص الرأس من خلال الفتحة الموجودة في العلبة ، وأعد توصيلها على شاشة LCD.

الآن بعد أن أصبحت جاهزًا مع حقيبة Raspberry Pi ، يمكنك البدء بحافظة شاشة LCD. لقد قمت بطباعة العلبة ثلاثية الأبعاد لشاشة LCD الخاصة بي لأنني وجدت حالة عبر الإنترنت على هذا الرابط. كان علي فقط إجراء تغيير بسيط في ذروة القضية. عندما تعتقد أن الرسم جيد ، يمكنك تصدير الملفات والبدء في الطباعة. إذا كنت لا تعرف كيفية الطباعة ثلاثية الأبعاد ، فيمكنك اتباع هذا التوجيه حول كيفية الطباعة ثلاثية الأبعاد باستخدام fusion 360.

صوداق مبيلي للإنشاءات

لم أقم حقًا بصنع قضية لمجلس إدارة SODAQ Mbili. لقد استخدمت زجاجًا من نوع plexi لوضع المكونات الخاصة بي بدون غلاف حول البناء. إذا كنت تريد القيام بذلك أيضًا ، فيمكنك اتباع الخطوات التالية:

  1. وقع على زجاج شبكي مع القطع المعدنية من لوحة SODAQ Mbili. الأبعاد: 85 مم × 56 مم
  2. قطع زجاج شبكي مع بانوراما.
  3. ضع المكونات الإلكترونية على زجاج شبكي وقم بتوقيع الفتحات بقلم رصاص.
  4. قم بحفر الثقوب التي قمت بتسجيل الخروج منها للتو وثقوب المواجهات باستخدام مثقاب مقاس 3.5 مم.
  5. قم بتركيب جميع المكونات الإلكترونية على زجاج شبكي باستخدام البراغي والصواميل 3M 10 مم.
  6. الخطوة الأخيرة هي تركيب زجاج شبكي فوق لوحة Mbili. يمكنك القيام بذلك باستخدام المواجهات ، لكنني استخدمت اثنين من البراغي مقاس 3 م 50 مم وصواميل 8 م 3 لتركيب زجاج شبكي فوق اللوحة.

موصى به: