فهرست مطالب:

ماژول ردیابی برای دوچرخه سواران: 5 مرحله
ماژول ردیابی برای دوچرخه سواران: 5 مرحله

تصویری: ماژول ردیابی برای دوچرخه سواران: 5 مرحله

تصویری: ماژول ردیابی برای دوچرخه سواران: 5 مرحله
تصویری: گوشی قاپی که عن شد 😂😂😂| دوربین مخفی 2024, جولای
Anonim
ماژول ردیابی برای دوچرخه سواران
ماژول ردیابی برای دوچرخه سواران

این ماژول ردیابی برای دوچرخه سواران ماژولی است که به طور خودکار تصادفات را در یک مسابقه تشخیص می دهد و با لمس یک سنسور لمسی ، خرابی مکانیکی را تشخیص می دهد. هنگامی که یکی از این رویدادها اتفاق می افتد ، ماژول رویداد را از طریق LoRa به پایگاه داده روی تمشک pi ارسال می کند. این رویداد بر روی صفحه نمایش LCD و وب سایت نشان داده می شود. همچنین می توانید یک مسابقه دوچرخه سواری خاص با رویدادها را در وب سایت جستجو کنید و مسابقات دوچرخه سواری یا دوچرخه سواران را به پایگاه داده اضافه کنید. من این پروژه را ساختم زیرا علاقه زیادی به دوچرخه سواری و IOT دارم ، بنابراین ترکیب این دو موضوع فقط برای من بسیار هیجان انگیز بود.

قبل از اینکه بتوانید یک ماژول ردیابی برای دوچرخه سواران بسازید ، باید مواد خود را جمع آوری کنید. می توانید ابزارها و ملزومات را در لیست های زیر بیابید ، یا می توانید BOM (ساخت مواد) را بارگیری کنید.

تدارکات:

  • شیشه پلکسی (56 میلی متر در 85 میلی متر)
  • 10 پیچ 2 X 10 میلی متر و مهره
  • پیچ و مهره 10 X 3M 10 میلی متر و مهره
  • 2 پیچ 3 X 3M 50 میلی متر و مهره
  • PLA Filament جهت چاپ سه بعدی قاب LCD شما
  • انقباض حرارتی
  • کابل های نر به ماده
  • یک PCB اولیه
  • سربرگ های مردانه
  • رزبری پای 3b+
  • کارت SD 16 گیگابایتی
  • LCD sparkfun 4X20
  • سنسور لمسی خازنی
  • یک زنگ
  • متر شتاب سنج + ژیروسکوپ 3 محوره
  • یک ماژول GPS
  • یک برد SODAQ Mbili
  • ماژول LoRa WAN
  • باتری 3.7 ولت 1000 میلی آمپر ساعتی
  • منبع تغذیه رزبری پای 3b+

ابزارها:

  • قلع لحیم کاری
  • آهن لحیم کاری
  • تانگ
  • پیچ گوشتی ها
  • اره منبت کاری اره مویی
  • دستگاه حفاری
  • مته های 2.5 و 3.5
  • تفنگ سبک تر / هوای گرم

اگر شما نیاز به خرید تمام لوازم دارید ، به بودجه 541.67 یورو نیاز دارید. این پروژه بسیار گران است زیرا من از یک کیت توسعه LoRa rappid استفاده کردم که 299 یورو هزینه دارد (من این شانس را داشتم که از مدرسه خود استفاده کنم). شما همیشه می توانید از Arduino معمولی استفاده کنید و در هزینه های زیادی صرفه جویی کنید ، اما برنامه ها در آن زمان متفاوت خواهند بود.

مرحله 1: طرح خرد کردن

طرح فریتزینگ
طرح فریتزینگ
طرح فریتزینگ
طرح فریتزینگ

اولین قدم ساخت مدارها است. برای این پروژه ما 2 مدار الکتریکی داریم ، یکی با Raspberry Pi و دیگری با برد SADAQ Mbili. ما با مدار رزبری پای شروع می کنیم.

طرح فریتزینگ رزبری پای:

طرح رزبری پای بسیار ساده است ، تنها چیزی که ما با Pi متصل می کنیم یک صفحه نمایش 4X20 Sparkfun LCD است. صفحه نمایش با ارتباط سریال ، SPI یا I2C کار می کند. پروتکل ارتباطی که استفاده می کنید بستگی به شما دارد. من از پروتکل SPI استفاده کردم زیرا بسیار ساده است. اگر از SPI مانند من استفاده می کنید ، به اتصالات زیر نیاز دارید:

  • VCC LCD VCC تمشک پای
  • GND LCD GND تمشک پای
  • تمشک پای SDI LCD MOSI (GPIO 10)
  • تمشک SDO LCD MISO (GPIO 9) رزبری پای
  • SCK LCD SCLK (GPIO 11) رزبری پای
  • CS LCD CS0 (GPIO 8) رزبری پای

در طرح Fritzing خواهید دید که صفحه LCD یک صفحه نمایش 2X16 است. این به این دلیل است که من یک LCD 4X20 در فر کردن پیدا نکردم. با این حال ، همه اتصالات برخی هستند بنابراین واقعاً مهم نیست.

طرح SODAQ Mbili Fritzing:

ما 4 قطعه الکترونیکی را با برد SODAQ Mbili متصل می کنیم ، بنابراین این طرح الکتریکی نیز بسیار ساده است. ما با اتصال سنسور لمسی Capactive شروع می کنیم. این سنسور OUT-pin هنگام لمس سنسور HIGH خواهد بود و در غیر این صورت LOW خواهد بود. این بدان معناست که پین OUT یک خروجی دیجیتالی است که می توانیم با ورودی دیجیتالی برد Mbili به آن متصل شویم. اتصالات به شرح زیر است:

  • سنسور لمسی OUT D5 Mbili
  • سنسور لمسی VCC 3.3V Mbili
  • سنسور لمسی GND GND Mbili

دومین م isلفه سنسور Triple acces + gyro است. من از برد GY-521 که از پروتکل I2C برای ارتباط با برد Mbili استفاده می کند ، استفاده کردم. توجه داشته باشید که پین AD0 برد GY-521 باید با VCC برد Mbili متصل شود! این به این دلیل است که برد Mbili دارای یک ساعت با آدرس I2C مشابه GY-521 است. با اتصال AD0-pin به VCC آدرس te I2C GY-521 را تغییر می دهیم. اتصالات به شرح زیر است:

  • VCC GY-521 3.3V مگبی
  • GND GY-521 GND مگبی
  • SCL GY-521 SCL مبیلی
  • SDA GY-521 SDA Mbili
  • AD0 GY-521 3.3V مگبی

پس از آن ما Buzzer را وصل می کنیم. من از زنگ استاندارد استفاده می کنم که در صورت وجود جریان صدا ایجاد می کند. این بدان معناست که ما فقط می توانیم زنگ را به یک پین دیجیتالی برد Mbili متصل کنیم. اتصالات به شرح زیر است:

  • + Buzzer D4 Mbili
  • - Buzzer 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":

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

جدول "renners":

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

جدول 'plaatsen':

این میز یک میز است که مکانهایی را در بلژیک ذخیره می کند که می تواند در آن دوچرخه سواری انجام شود. این شامل نام شهر (که کلید اصلی است) و استانی است که شهر در آن واقع شده است.

جدول "wedstrijden":

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

جدول "gebeurtenissen":

این جداول همه رویدادهای رخ داده را ذخیره می کند. این بدان معناست که وقتی دوچرخه سواری در تصادف قرار می گیرد یا دچار خرابی مکانیکی می شود ، این رویداد در این جدول ذخیره می شود. کلید اصلی جدول یک شناسه است. جدول همچنین شامل تاریخ زمان رویداد ، عرض موقعیت ، طول موقعیت ، LoRaID دوچرخه سوار و نوع رویداد (تصادف یا خرابی مکانیکی) است.

جدول "wedstrijdrenner":

این جدول جدولی است که برای روابط بسیار زیاد مورد نیاز است.

مرحله 3: ماژول LoRa خود را ثبت کنید

ماژول LoRa خود را ثبت کنید
ماژول LoRa خود را ثبت کنید

قبل از شروع به کار با کد ، باید ماژول LoRa خود را در یک دروازه LoRa ثبت کنید. من از یک شرکت مخابراتی در بلژیک به نام "Proximus" استفاده کردم که ارتباط ماژول LoRa من را تنظیم می کند. داده هایی که من با گره LoRa خود ارسال می کنم در وب سایت AllThingsTalk جمع آوری می شود. اگر می خواهید از API AllThingsTalk برای جمع آوری داده های خود استفاده کنید ، می توانید اینجا ثبت نام کنید.

پس از ثبت نام در AllThingsTalk ، باید گره LoRa خود را ثبت کنید. برای انجام این کار ، می توانید مراحل زیر را دنبال کنید یا می توانید به تصویر بالا نگاه کنید.

  1. در منوی اصلی به قسمت "Devices" بروید
  2. روی "دستگاه جدید" کلیک کنید
  3. گره LoRa خود را انتخاب کنید
  4. همه کلیدها را پر کنید.

حالا کارتان تمام شد! تمام داده هایی که با گره LoRa ارسال می کنید در سازنده AllThingsTalk شما ظاهر می شود. اگر در ثبت نام مشکلی دارید ، همیشه می توانید از اسناد AllThingsTalk مشورت کنید.

مرحله 4: کد

کد
کد
کد
کد
کد
کد
کد
کد

برای این پروژه به 5 زبان برنامه نویسی نیاز داریم: HTML ، CSS ، Java Script ، Python (Flask) و زبان آردوینو. ابتدا برنامه آردوینو را توضیح می دهم.

برنامه آردوینو:

در ابتدای برنامه ، برخی متغیرهای جهانی را اعلام می کنم. خواهید دید که من از SoftwareSerial برای اتصال با GPS خود استفاده می کنم. این به این دلیل است که برد Mbili فقط 2 پورت سریال دارد. می توانید GPS را به Serial0 متصل کنید ، اما در آن صورت نمی توانید از ترمینال آردوینو برای اشکال زدایی استفاده کنید. این دلیل استفاده از SoftwareSerial است.

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

بلوک سوم بلوک راه اندازی است. این بلاک شروع برنامه ای است که پین ها ، ارتباط سریال و ارتباط I2C را تنظیم می کند.

پس از بلوک راه اندازی ، برنامه اصلی می آید. در ابتدای این حلقه اصلی ، بررسی می کنم که آیا حسگر لمسی فعال است یا خیر. اگر چنین است ، من صدای زنگ را می زنم ، داده های GPS را دریافت می کنم و همه مقادیر را از طریق LoRa یا بلوتوث به Raspberry PI ارسال می کنم. بعد از حسگر لمسی ، مقادیر شتاب سنج را خواندم. با فرمول زاویه دقیق محور X و Y را محاسبه می کنم. اگر این مقادیر زیاد باشد ، می توان نتیجه گرفت که دوچرخه سوار سقوط کرده است. هنگامی که تصادف رخ می دهد ، دوباره زنگ را صدا می کنم ، داده های GPS را دریافت می کنم و همه مقادیر را از طریق LoRa یا بلوتوث به Raspberry PI ارسال می کنم.

احتمالاً به این فکر می کنید که "چرا از بلوتوث و LoRa استفاده می کنید؟". این به این دلیل است که من با مجوز ماژول LoRa که استفاده کردم مشکل داشتم. بنابراین برای اینکه برنامه برای نسخه نمایشی من کار کند ، مجبور شدم مدتی از بلوتوث استفاده کنم.

2. انتهای پشت:

قسمت پشتی کمی پیچیده است. من از Flask برای مسیرهای خود استفاده می کنم که برای قسمت جلویی قابل دسترسی است ، از socketio برای به روز رسانی خودکار برخی از صفحات جلویی ، از پین های GPIO برای نشان دادن پیامها بر روی صفحه LCD و دریافت پیام ها از طریق بلوتوث استفاده می کنم (در صورت استفاده نیازی نیست LoRa) و من از Threading و Timers برای خواندن منظم API AllThinksTalk و راه اندازی سرور فلاسک استفاده می کنیم.

من همچنین از پایگاه داده SQL برای ذخیره همه تصادفات ناگهانی ، خواندن اطلاعات شخصی دوچرخه سواران و داده های مسابقات استفاده می کنم. این پایگاه داده به قسمت پشتی متصل است و همچنین بر روی رزبری پای اجرا می شود. من از کلاس "Database.py" برای تعامل با پایگاه داده استفاده می کنم.

همانطور که از طرح Fritzing می دانید ، LCD از طریق پروتکل SPI به Raspberry Pi متصل می شود. برای سهولت کار ، کلاس «LCD_4_20_SPI.py» نوشتم. با استفاده از این کلاس می توانید کنتراست را تغییر دهید ، رنگ نور پس زمینه را تغییر دهید ، پیامها را روی صفحه بنویسید ،…. اگر می خواهید از بلوتوث استفاده کنید ، می توانید از کلاس 'SerialRaspberry.py' استفاده کنید. این کلاس ارتباط سری بین ماژول بلوتوث و رزبری پای را کنترل می کند. تنها کاری که باید انجام دهید اتصال یک ماژول بلوتوث به رزبری پای با اتصال RX به TX و برعکس است.

مسیرهای قسمت جلویی با قانون @app.route نوشته شده است. در اینجا می توانید مسیر سفارشی خود را برای درج یا دریافت داده ها در یا از پایگاه داده ایجاد کنید. اطمینان حاصل کنید که همیشه پاسخی در انتهای مسیر دارید. من همیشه یک شی JSON را به قسمت جلویی باز می گردانم ، حتی در صورت بروز خطا. با قرار دادن دور متغیر می توانید از یک متغیر در url استفاده کنید.

من از socketio برای صفحه وب با خرابی های یک مسابقه استفاده می کنم. وقتی Raspberry Pi تصادف می کند ، من یک پیام را از طریق socketio به قسمت جلویی ارسال می کنم. سپس قسمت جلویی می داند که باید دوباره پایگاه داده را بخوانند زیرا تصادف جدیدی رخ داده است.

خواهید دید که در کد من ارتباط LoRa به صورت فرمان تنظیم شده است. اگر می خواهید از LoRa استفاده کنید ، باید یک تایمر را راه اندازی کنید که تکراری درخواست را به API AllThinksTalk ارسال کند. از طریق این API ، مقادیر حسگر (GPS ، Time ، Crash) که توسط یک گره LoRa خاص ارسال می شود را دریافت خواهید کرد. می توانید از این مقادیر برای وارد کردن خرابی به پایگاه داده استفاده کنید.

3. پایان لبه:

پایان صفحه شامل 3 زبان است. HTML برای متن وب سایت ، CSS برای نشانه گذاری وب سایت و جاوا اسکریپت برای ارتباط با قسمت پایانی. من 4 صفحه وب سایت برای این پروژه دارم:

  • index.html که در آن می توانید همه مسابقات دوچرخه سواری را بیابید.
  • صفحه ای با تمام خرابی ها و خرابی های مکانیکی برای یک مسابقه اسپیکیفیک.
  • صفحه ای که در آن می توانید استوانه ها را به پایگاه داده اضافه کنید و تیم آنها را ویرایش کنید.
  • صفحه ای که در آن می توانید یک مسابقه جدید با همه شرکت کنندگان آن را به پایگاه داده اضافه کنید.

نحوه طراحی آنها کاملاً به شما بستگی دارد. در صورت تمایل می توانید از وب سایت من الهام بگیرید. متأسفانه وب سایت من به زبان هلندی ساخته شده است ، برای آن یکی متاسفم.

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

می توانید به همه کد های من در Github من نگاه کنید.

مرحله 5: ساخت سازه ها

ساخت و سازها را بسازید
ساخت و سازها را بسازید
ساخت و سازها را بسازید
ساخت و سازها را بسازید
ساخت و سازها را بسازید
ساخت و سازها را بسازید

قبل از شروع ساخت و ساز ، مطمئن شوید که همه مواد را از BOM یا از صفحه "Tools + Supplies" در اختیار دارید.

رزبری پای + LCD

ما در مورد Raspberry Pi شروع می کنیم. شما می توانید یک قاب را به صورت سه بعدی چاپ کنید ، این اولین ایده من نیز بود. اما چون مهلت من بسیار نزدیک بود ، تصمیم گرفتم یک پرونده ساده بسازم. من قاب استاندارد را از رزبری پای برداشتم و سوراخ سیم را از روی صفحه نمایش LCD خود سوراخ کردم. برای انجام این کار ، کافی است مراحل ساده زیر را دنبال کنید:

  1. سوراخی را روی جلد کیس سوراخ کنید. من این کار را با یک مته 7 میلی متری در کنار جلد انجام دادم. این را در تصویر بالا مشاهده می کنید.
  2. سیمها را از صفحه LCD بردارید و سر را روی سیمها بکشید.
  3. از فندک یا تفنگ هوای گرم برای کوچک شدن سر استفاده کنید.
  4. سیمها را بکشید و سر را از طریق سوراخ در قاب کوچک کنید و آنها را دوباره به LCD وصل کنید.

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

ساخت و ساز SODAQ MBili

من واقعاً برای هیئت مدیره SODAQ Mbili پرونده ای ایجاد نکردم. من از شیشه پلکسی برای قرار دادن اجزای خود بدون قاب در اطراف ساختمان استفاده کردم. اگر می خواهید این کار را نیز انجام دهید ، می توانید مراحل زیر را دنبال کنید:

  1. پلکسی گلاس را با سایزهای برد SODAQ Mbili امضا کنید. ابعاد: 85 میلی متر در 56 میلی متر
  2. پلکسی گلاس را با اره مویی برش دهید.
  3. اجزای الکترونیکی را روی پلکسی گلاس قرار دهید و سوراخ ها را با مداد امضا کنید.
  4. سوراخ هایی را که به تازگی امضا کرده اید و سوراخ هایی را که با آنها مواجه شده اید با یک مته 3.5 میلی متری سوراخ کنید.
  5. تمام قطعات الکترونیکی را با پیچ و مهره 3M 10 میلی متری روی پلکسی نصب کنید.
  6. آخرین مرحله این است که پلکسی گلاس را بالای برد Mbili نصب کنید. شما می توانید این کار را با ایستاده انجام دهید ، اما من از دو پیچ 3M 50 میلی متری و 8 مهره 3M برای نصب پلکسی گلاس بالای تخته استفاده کردم.

توصیه شده: