Mündəricat:

Velosipedçilər üçün İzləmə Modulu: 5 addım
Velosipedçilər üçün İzləmə Modulu: 5 addım

Video: Velosipedçilər üçün İzləmə Modulu: 5 addım

Video: Velosipedçilər üçün İzləmə Modulu: 5 addım
Video: Uşağın sözünüzə baxması üçün 5 qayda - Uşaq psixologiyası 2024, Iyul
Anonim
Velosipedçilər üçün İzləmə Modulu
Velosipedçilər üçün İzləmə Modulu

Velosipedçilər üçün bu izləmə modulu, bir yarışdakı qəzaları avtomatik olaraq təyin edən və toxunma sensoruna toxunaraq mexaniki bir qəza aşkar edən bir moduldur. Bu hadisələrdən biri baş verdikdə, modul hadisəni LoRa vasitəsi ilə moruq pi üzərindəki məlumat bazasına göndərir. Bu hadisə LCD displeydə və veb saytında göstəriləcək. Veb saytında hadisələrlə əlaqədar xüsusi bir velosiped yarışı üçün axtarış edə bilərsiniz və velosiped yarışlarını və ya velosipedçiləri verilənlər bazasına əlavə edə bilərsiniz. Bu layihəni Velosiped və IOT ilə çox maraqlandığım üçün hazırladım, buna görə də bu iki mövzunu birləşdirmək mənim üçün çox həyəcanlı idi.

Velosipedçilər üçün bir izləmə modulu hazırlamadan əvvəl, materiallarınızı toplamalısınız. Alətləri və təchizatı aşağıdakı siyahılarda tapa bilərsiniz və ya BOM -u yükləyə bilərsiniz.

Təchizat:

  • pleksi şüşə (56mm X 85mm)
  • 10 X 2M boltlar 10 mm və qoz -fındıq
  • 10 X 3M boltlar 10 mm və qoz -fındıq
  • 2 X 3M boltlar 50 mm və qoz -fındıq
  • LCD qutunuzu 3D çap etmək üçün PLA Filament
  • istilik daralır
  • Kişi -Qadın kabelləri
  • Əsas PCB
  • Kişi başlıqları
  • Raspberry Pi 3b+
  • 16 GB SD kart
  • Bir sparkfun 4X20 LCD
  • Kapasitiv toxunma sensoru
  • Səs siqnalı
  • 3 oxlu sürətləndirici + cayro metr
  • GPS modulu
  • SODAQ Mbili lövhəsi
  • LoRa WAN modulu
  • 3.7V 1000mAh batareya
  • Raspberry Pi 3b+ enerji təchizatı

Alətlər:

  • Lehim qalay
  • Lehimleme dəmir
  • Maşa
  • Tornavidalar
  • Yapboz
  • Qazma maşını
  • 2.5 və 3.5 matkaplar
  • Yüngül / isti hava silahı

Bütün təchizatı satın almalısınızsa, 541.67 avro büdcəyə ehtiyacınız olacaq. Bu layihə çox bahalıdır, çünki 299 avroya başa gələn LoRa sürətli inkişaf dəsti istifadə etdim (bu kiti məktəbimdən istifadə etmək şansım oldu). Həmişə çox pula qənaət etmək üçün normal bir Arduino istifadə edə bilərsiniz, ancaq o zaman proqramlar fərqli olacaq.

Addım 1: Dondurma Sxemi

Dondurucu Sxem
Dondurucu Sxem
Dondurucu Sxem
Dondurucu Sxem

İlk addım sxemlərin qurulmasıdır. Bu layihə üçün birində Raspberry Pi və birində SADAQ Mbili lövhəsi olan 2 elektrik dövrəsi var. Raspberry Pi dövrə ilə başlayacağıq.

Raspberry Pi Fritzing sxemi:

Raspberry Pi sxemi olduqca sadədir, Pi ilə bağladığımız tək şey 4X20 Sparkfun LCD ekrandır. Ekran Serial rabitə, SPI və ya I2C ilə işləyir. Hansı ünsiyyət protokolundan istifadə etməyiniz sizə bağlıdır. SPI protokolundan istifadə etdim, çünki çox sadədir. Mənim kimi SPI istifadə edirsinizsə, aşağıdakı əlaqələrə ehtiyacınız var:

  • VCC LCD VCC Moruq Pi
  • GND LCD GND Moruq 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 sxemində LCD ekranın 2X16 bir ekran olduğunu görəcəksiniz. Bunun səbəbi, 4X20 LCD -nin əyilməsində tapmadığımdır. Bununla birlikdə, bütün əlaqələr bir qədər fərqlidir, buna görə də heç bir əhəmiyyəti yoxdur.

SODAQ Mbili Fritzing sxemi:

SODAQ Mbili lövhəsi ilə 4 elektron komponenti birləşdirəcəyik, buna görə də bu elektrik sxemi də çox sadədir. Capactive toxunma sensorunu bağlamağa başlayacağıq. Sensora toxunduqda bu Çıxış pinləri YÜKSƏK olacaq və əks halda LOW olacaq. Bu, OUT pininin Mbili lövhəsinin rəqəmsal girişi ilə bağlaya biləcəyimiz rəqəmsal bir çıxış olduğu anlamına gəlir. Bağlantılar aşağıdakı kimidir:

  • Çıxış sensor D5 Mbili
  • VCC sensor 3.3V Mbili
  • GND Touch sensoru GND Mbili

İkinci komponent Triple acces + girro sensordur. Mbili lövhəsi ilə əlaqə yaratmaq üçün I2C protokolundan istifadə edən GY-521 lövhəsindən istifadə etdim. GY-521 lövhəsinin AD0 pininin Mbili lövhəsinin VCC ilə əlaqələndirilməsinə diqqət yetirin! Bunun səbəbi, Mbili lövhəsinin GY-521 kimi eyni I2C ünvanına malik bir saata sahib olmasıdır. AD0-pinini VCC-yə qoşaraq GY-521-in I2C ünvanını dəyişirik. Bağlantılar aşağıdakı kimidir:

  • 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

Bundan sonra Buzzer -i bağlayacağıq. Cərəyan olanda səs çıxaran standart səs siqnalından istifadə edirəm. Bu o deməkdir ki, siqnalı yalnız Mbili lövhəsinin rəqəmsal pininə bağlaya bilərik. Bağlantılar aşağıdakı kimidir:

  • + Buzzer D4 Mbili
  • - Buzzer GND Mbili

Son olaraq GPS modulunu bağlayacağıq. GPS modulu RX və TX vasitəsilə əlaqə qurur. Bağlantılar aşağıdakı kimidir:

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

Addım 2: Normallaşdırılmış verilənlər bazası

Normallaşdırılmış verilənlər bazası
Normallaşdırılmış verilənlər bazası

İkinci addım, normallaşdırılmış bir verilənlər bazası hazırlamaqdır. ERD -ni Mysql -də dizayn etdim. Verilənlər bazamın Holland dilində yazıldığını görəcəksiniz, burada cədvəlləri izah edəcəyəm.

"Ploeg" cədvəli:

Bu masa velosiped klubları üçün bir masadır. Velosiped klubu ID və velosiped klubu adı var.

"Renners" cədvəli:

Bu masa velosipedçilər üçün hazırlanmış bir masadır. Hər bir velosipedçinin masasının əsas açarı olan LoRaID var. Ayrıca soyad, ad, mənşə ölkəsi və velosiped klubu masası ilə əlaqəli bir velosiped klubu şəxsiyyəti var.

'Plaatsen' cədvəli:

Bu masa Belçikada velosiped yarışının keçirilə biləcəyi yerləri saxlayan bir masadır. Şəhərin adını (əsas açar olan) və şəhərin yerləşdiyi əyaləti ehtiva edir.

"Evlilik" cədvəli:

Bu masa bütün velosiped yarışlarını saxlayır. Cədvəlin əsas açarı şəxsiyyət vəsiqəsidir. Cədvəldə ayrıca velosiped yarışının adı, yerlər cədvəlinə bağlı olan yarış şəhəri, yarışın məsafəsi, velosipedçilərin kateqoriyası və yarışın tarixi göstərilir.

'Gebeurtenissen' cədvəli:

Bu cədvəllərdə baş verən bütün hadisələr saxlanılır. Bu, bir velosipedçinin qəzaya düşdüyü və ya mexaniki bir qəzaya uğradığı zaman, hadisənin bu cədvəldə saxlanılacağı deməkdir. Cədvəlin əsas açarı şəxsiyyət vəsiqəsidir. Cədvəldə həmçinin hadisənin tarixi, mövqeyin Enlemi, mövqenin Boylamı, velosipedçinin LoRaID və hadisənin növü (qəza və ya mexaniki qəza) var.

'Wedstrijdrenner' cədvəli:

Bu cədvəl bir çoxları ilə çoxlu əlaqələr üçün lazım olan bir cədvəldir.

Addım 3: LoRa Modulunuzu qeyd edin

LoRa Modulunuzu qeyd edin
LoRa Modulunuzu qeyd edin

Kodla işə başlamazdan əvvəl LoRa modulunuzu LoRa şlüzündə qeyd etməlisiniz. Belçikada LoRa modulum üçün əlaqəni tənzimləyən 'Proximus' adlı bir telekom şirkətindən istifadə etdim. LoRa node ilə göndərdiyim məlumatlar AllThingsTalk -dan veb saytında toplanır. Məlumatlarınızı toplamaq üçün AllThingsTalk API -dən də istifadə etmək istəyirsinizsə, burada qeydiyyatdan keçə bilərsiniz.

AllThingsTalk -da qeydiyyatdan keçdikdən sonra LoRa qovşağınızı qeyd etməlisiniz. Bunu etmək üçün bu addımları izləyə bilərsiniz və ya yuxarıdakı şəklə baxa bilərsiniz.

  1. Əsas menyuda 'Cihazlar' bölməsinə keçin
  2. 'Yeni Cihaz' düyməsini basın
  3. LoRa qovşağınızı seçin
  4. Bütün açarları doldurun.

İndi işiniz bitdi! LoRa qovşağınızla göndərdiyiniz bütün məlumatlar AllThingsTalk istehsalçınızda görünəcək. Qeydiyyatla bağlı hər hansı bir probleminiz varsa, həmişə AllThingsTalk sənədlərinə müraciət edə bilərsiniz.

Addım 4: Kod

Kod
Kod
Kod
Kod
Kod
Kod
Kod
Kod

Bu layihə üçün 5 kodlaşdırma dilinə ehtiyacımız olacaq: HTML, CSS, Java Script, Python (Flask) və Arduino dili. Əvvəlcə Arduino proqramını izah edəcəyəm.

Arduino proqramı:

Proqramın başlanğıcında bəzi Qlobal Dəyişənləri açıram. GPS ilə əlaqə üçün SoftwareSerial istifadə etdiyimi görəcəksiniz. Bunun səbəbi, Mbili lövhəsinin yalnız 2 seriyalı limana sahib olmasıdır. GPS -i Serial0 -a bağlaya bilərsiniz, ancaq Arduino terminalını ayıklama üçün istifadə edə bilməyəcəksiniz. Bir SoftwareSerial istifadə etməyimin səbəbi budur.

Qlobal Dəyişənlərdən sonra proqramı oxumağı asanlaşdıran bəzi funksiyaları açıram. GPS əlaqələndiricilərini oxuyurlar, səs siqnalı verirlər, LoRa vasitəsilə dəyərlər göndərirlər,…

Üçüncü blok, quraşdırma blokudur. Bu blok, sancaqlar, serial rabitə və I2C rabitə quran proqramın başlanğıcıdır.

Quraşdırma blokundan sonra əsas proqram gəlir. Bu əsas döngənin əvvəlində, sensorun aktiv olub olmadığını yoxlayıram. Əgər belədirsə, səs siqnalı verirəm, GPS məlumatlarını alıram və LoRa və ya Bluetooth vasitəsilə bütün dəyərləri Raspberry PI -yə göndərirəm. Toxunma sensorundan sonra Akselerometrin dəyərlərini oxudum. Bir düsturla X və Y oxunun dəqiq açısını hesablayıram. Bu dəyərlər böyükdürsə, velosipedçinin qəzaya uğradığı qənaətinə gələ bilərik. Bir qəza baş verdikdə yenidən səs siqnalı verirəm, GPS məlumatlarını alıram və LoRa və ya Bluetooth vasitəsilə bütün dəyərləri Raspberry PI -yə göndərirəm.

Yəqin düşünürsən: 'Niyə bluetooth və LoRa istifadə edirsən?'. Bunun səbəbi, istifadə etdiyim LoRa modulunun lisenziyasında bir az çətinlik çəkməyimdir. Proqramın demolarım üçün işləməsi üçün bir müddət Bluetooth istifadə etməli oldum.

2. Arxa ucu:

Arxa tərəfi bir az mürəkkəbdir. Marşrutumun ön tərəfi üçün əlçatan olan Flaskdan istifadə edirəm, ön səhifələrin bir hissəsini avtomatik olaraq yeniləmək üçün socketio istifadə edirəm, LCD ekranda mesajları göstərmək və Bluetooth vasitəsilə mesaj almaq üçün GPIO pinlərindən istifadə edirəm (istifadə etsəniz lazım deyil) LoRa) və AllThinksTalk API -ni mütəmadi olaraq oxumaq və balon serverini işə salmaq üçün Threading və Taymerlərdən istifadə edirəm.

SQL verilənlər bazasından bütün gələn qəzaları saxlamaq, velosipedçilərin şəxsi məlumatlarını və yarış məlumatlarını oxumaq üçün istifadə edirəm. Bu verilənlər bazası arxa tərəfə bağlıdır və eyni zamanda Raspberry Pi üzərində işləyir. Verilənlər bazası ilə qarşılıqlı əlaqə yaratmaq üçün 'Database.py' sinifindən istifadə edirəm.

Fritzing sxemindən bildiyiniz kimi, lcd SPI protokolu ilə Raspberry Pi -yə qoşulur. Daha asanlaşdırmaq üçün 'LCD_4_20_SPI.py' sinif yazdım. Bu siniflə kontrastı dəyişə, arxa işığın rəngini dəyişə, ekranda mesaj yaza bilərsiniz … Bluetooth istifadə etmək istəyirsinizsə, 'SerialRaspberry.py' sinifindən istifadə edə bilərsiniz. Bu sinif Bluetooth modulu ilə Raspberry Pi arasındakı serial ünsiyyəti idarə edir. Etməyiniz lazım olan tək şey, RX -ni TX -ə bağlayaraq Raspberry Pi -yə Bluetooth modulu bağlamaq və əksinə.

Ön tərəf üçün marşrutlar @app.route qaydası ilə yazılmışdır. Burada verilənlər bazasına məlumat daxil etmək və ya daxil etmək üçün öz xüsusi marşrutunuzu edə bilərsiniz. Marşrutun sonunda həmişə bir cavab aldığınızdan əmin olun. Bir səhv baş versə belə, həmişə bir JSON obyektini ön tərəfə qaytarıram. Dəyişəni ətrafa qoyaraq url -də bir dəyişəndən istifadə edə bilərsiniz.

Bir yarışın çöküşləri ilə veb səhifəsi üçün socketio istifadə edirəm. Raspberry Pi bir qəza aldıqda, socketio vasitəsilə ön tərəfə bir mesaj göndərirəm. Ön tərəf, yeni bir qəza olduğu üçün verilənlər bazasını yenidən oxumalı olduqlarını bilir.

Kodumda LoRa ünsiyyətinin əmr olaraq qurulduğunu görəcəksiniz. LoRa'dan istifadə etmək istəyirsinizsə, AllThinksTalk API -yə təkrarlanan bir sorğu göndərən bir taymer başlamalısınız. Bu API -dən, müəyyən bir LoRa qovşağı tərəfindən göndərilən sensor dəyərlərini (GPS, Zaman, Qəza növü) alacaqsınız. Verilənlər bazasına qəza əlavə etmək üçün bu dəyərlərdən istifadə edə bilərsiniz.

3. Qalın uc:

Arxa tərəf 3 dildən ibarətdir. Veb sayt mətni üçün HTML, veb saytı işarələməsi üçün CSS və arxa ucu ilə əlaqə üçün JavaScript. Bu layihə üçün 4 veb saytım var:

  • Bütün velosiped yarışlarını tapa biləcəyiniz index.html.
  • Xüsusi bir yarış üçün bütün qəzaların və mexaniki qəzaların olduğu bir səhifə.
  • Verilənlər bazasına silindrlər əlavə edə və komandalarını düzəldə biləcəyiniz bir səhifə.
  • Verilənlər bazasına bütün iştirakçıları ilə yeni bir yarış əlavə edə biləcəyiniz bir səhifə.

Onları necə dizayn edəcəyiniz tamamilə sizə bağlıdır. İstəyirsinizsə veb saytımdan bir az ilham ala bilərsiniz. Təəssüf ki, veb saytım Holland dilindədir, buna görə üzr istəyirəm.

Hər səhifə üçün ayrıca bir CSS faylı və JavaScript faylı var. Hər bir JavaScript faylı, verilənlər bazasından məlumatları arxa ucundan almaq üçün fetch istifadə edir. Skript məlumatları aldıqda html dinamik olaraq dəyişir. Qəzaları və mexaniki qəzaları tapa biləcəyiniz səhifədə bütün hadisələrin baş verdiyi bir xəritəni tapa bilərsiniz. Bu xəritəni göstərmək üçün vərəqədən istifadə etdim.

Bütün kodlarımı burada Githubumda görə bilərsiniz.

Addım 5: Konstruksiyaları qurun

Konstruksiyaları qurun
Konstruksiyaları qurun
Konstruksiyaları qurun
Konstruksiyaları qurun
Konstruksiyaları qurun
Konstruksiyaları qurun

Tikintiyə başlamazdan əvvəl, BOM -dan və ya 'Alətlər + Təchizat' səhifəsindən bütün materiallara sahib olduğunuzdan əmin olun.

Raspberry Pi + LCD

Raspberry Pi işi ilə başlayacağıq. Hər halda bir çantanı 3D çap edə bilərsiniz, bu da mənim ilk fikrim idi. Ancaq son tarixim çox yaxınlaşdığına görə sadə bir iş aparmaq qərarına gəldim. Standart çantanı Raspberry Pi -dən götürdüm və LCD displeyimdəki tellər üçün qutuda bir delik açdım. Bunu etmək üçün bu sadə addımları yerinə yetirməlisiniz:

  1. Kassanın qapağına bir delik açın. Bunu qapağın kənarındakı 7 mm -lik bir matkapla etdim. Bunu yuxarıdakı şəkildə görə bilərsiniz.
  2. Kabelləri LCD ekrandan götürün və tellərin üzərinə bir baş çəkin.
  3. Başın kiçilməsini təmin etmək üçün daha yüngül və ya isti hava tabancasından istifadə edin.
  4. Başı daralmış telləri qutudakı delikdən çəkin və yenidən LCD -yə bağlayın.

İndi Raspberry Pi üçün korpus hazır olduqda, LCD ekran üçün korpusdan başlaya bilərsiniz. LCD ekranım üçün korpusu 3D çap etdim, çünki bu linkdə bir iş tapdım. Davanın hündürlüyündə bir az dəyişiklik etməliydim. Rəsm çəkməyin yaxşı olduğunu düşündüyünüz zaman faylları ixrac edə və çap etməyə başlaya bilərsiniz. 3D çap etməyi bilmirsinizsə, fusion 360 ilə 3D çap etmənin bu təlimatına əməl edə bilərsiniz.

SODAQ MBili tikintisi

SODAQ Mbili lövhəsi üçün həqiqətən bir iş görmədim. Komplekslərimi konstruksiya ətrafında heç bir korpus olmadan yerləşdirmək üçün bir pleksi şüşə istifadə etdim. Bunu da etmək istəyirsinizsə, bu addımları izləyə bilərsiniz:

  1. SODAQ Mbili lövhəsinin dimesnions ilə pleksiglasdan çıxın. Ölçülər: 85mm X 56mm
  2. Pleksiglası yapbozla kəsin.
  3. Elektron komponentləri pleksiglasa qoyun və deşikləri qələmlə işarələyin.
  4. Yeni imzaladığınız delikləri və qalmaq üçün delikləri 3,5 mm -lik bir matkapla qazın.
  5. Bütün elektron komponentləri 3M 10mm bolt və qoz -fındıq ilə pleksiglasa quraşdırın.
  6. Son addım, pleksiglası Mbili lövhəsinin üstünə quraşdırmaqdır. Bunu duruşlarla edə bilərsiniz, amma pleksiglası lövhənin üstünə qoymaq üçün iki 3M 50mm bolt və 8 3M qoz istifadə etdim.

Tövsiyə: