Turinys:

Dviratininkų sekimo modulis: 5 žingsniai
Dviratininkų sekimo modulis: 5 žingsniai

Video: Dviratininkų sekimo modulis: 5 žingsniai

Video: Dviratininkų sekimo modulis: 5 žingsniai
Video: TICWATCH PRO 5 Review: The BEST Wear OS Watch Yet?! // A Complete Guide 2024, Liepa
Anonim
Dviratininkų sekimo modulis
Dviratininkų sekimo modulis

Šis dviratininkų stebėjimo modulis yra modulis, kuris automatiškai nustato lenktynių avarijas ir liečia jutiklinį jutiklį. Kai įvyksta vienas iš šių įvykių, modulis siunčia įvykį į aviečių pi duomenų bazę per „LoRa“. Šis įvykis bus rodomas LCD ekrane ir svetainėje. Taip pat svetainėje galite ieškoti konkrečių dviračių lenktynių su įvykiais ir pridėti dviračių lenktynių ar dviratininkų prie duomenų bazės. Aš sukūriau šį projektą, nes mane labai domina dviračių sportas ir IOT, todėl šių dviejų dalykų derinimas man buvo labai įdomus.

Prieš kurdami dviratininkų stebėjimo modulį, turite surinkti savo medžiagą. Įrankius ir reikmenis rasite žemiau esančiuose sąrašuose arba galite atsisiųsti BOM (Build Of Materials).

Priedai:

  • Plexi stiklas (56 mm x 85 mm)
  • 10 X 2M varžtai 10 mm ir veržlės
  • 10 X 3M varžtai 10 mm ir veržlės
  • 2 x 3M varžtai 50 mm ir veržlės
  • PLA siūlai 3D spausdinimui jūsų LCD dėklui
  • šiluma susitraukia
  • Kabeliai nuo vyrų iki moterų
  • Pagrindinis PCB
  • Vyrų antraštės
  • „Raspberry Pi 3b+“
  • 16 GB SD kortelė
  • Sparkfun 4X20 LCD
  • Talpinis jutiklinis jutiklis
  • Garsinis signalas
  • 3 ašių akceleratoriaus + giroskopo matuoklis
  • GPS modulis
  • „SODAQ Mbili“lenta
  • „LoRa WAN“modulis
  • 3.7V 1000mAh baterija
  • „Raspberry Pi 3b+“maitinimo šaltinis

Įrankiai:

  • Lituoklio skarda
  • Lituoklis
  • Žnyplės
  • Atsuktuvai
  • Jigsaw
  • Gręžimo mašina
  • 2,5 ir 3,5 grąžtai
  • Lengvesnis / karšto oro pistoletas

Jei jums reikia nusipirkti visas atsargas, jums reikės 541,67 euro biudžeto. Šis projektas yra labai brangus, nes naudojau „LoRa rappid“kūrimo rinkinį, kuris kainuoja 299 eurus (turėjau galimybę naudoti šį rinkinį iš savo mokyklos). Visada galite naudoti įprastą „Arduino“ir sutaupyti daug pinigų, tačiau tada programos bus kitokios.

1 žingsnis: šlifavimo schema

Fritzavimo schema
Fritzavimo schema
Fritzavimo schema
Fritzavimo schema

Pirmasis žingsnis yra sukurti grandines. Šiam projektui mes turime 2 elektros grandines, vieną su „Raspberry Pi“ir kitą su „SADAQ Mbili“plokšte. Pradėsime nuo „Raspberry Pi“grandinės.

„Raspberry Pi Fritzing“schema:

„Raspberry Pi“schema yra gana paprasta, vienintelis dalykas, kurį mes prijungiame prie „Pi“, yra 4X20 „Sparkfun“LCD ekranas. Ekranas veikia su serijiniu ryšiu, SPI arba I2C. Kurį ryšio protokolą naudoti, priklauso nuo jūsų. Aš naudoju SPI protokolą, nes jis yra labai paprastas. Jei naudojate SPI kaip aš, jums reikia šių ryšių:

  • 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 schemoje pamatysite, kad LCD ekranas yra 2X16 ekranas. Taip yra todėl, kad neradau 4X20 skystųjų kristalų ekrano. Tačiau visos jungtys yra tam tikros, todėl tai tikrai nesvarbu.

„SODAQ Mbili Fritzing“schema:

Prie SODAQ Mbili plokštės prijungsime 4 elektroninius komponentus, todėl ši elektros schema taip pat labai paprasta. Mes pradėsime prijungti „Capactive touch“jutiklį. Šis jutiklių OUT-pin bus aukštas, kai jutiklis bus paliestas, ir kitaip bus LOW. Tai reiškia, kad OUT-pin yra skaitmeninė išvestis, kurią galime prijungti prie skaitmeninės „Mbili“plokštės įvesties. Ryšiai yra tokie:

  • OUT jutiklinis jutiklis D5 Mbili
  • VCC jutiklinis jutiklis 3.3V Mbili
  • GND jutiklinis jutiklis GND Mbili

Antrasis komponentas yra „Triple acces +“giroskopo jutiklis. Bendraudama su „Mbili“lenta naudojau GY-521 plokštę, kuri naudoja I2C protokolą. Atkreipkite dėmesį, kad GY-521 plokštės AD0 kištukas turi būti prijungtas prie „Mbili“plokštės VCC! Taip yra todėl, kad „Mbili“plokštėje yra laikrodis su tuo pačiu I2C adresu, kaip GY-521. Prijungę AD0 kaištį prie VCC, pakeisime GY-521 I2C adresą. Ryšiai yra tokie:

  • 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

Po to prijungsime „Buzzer“. Aš naudoju standartinį garsinį signalą, kuris skleidžia garsą esant srovei. Tai reiškia, kad mes galime tiesiog prijungti garso signalą prie skaitmeninio „Mbili“plokštės kaiščio. Ryšiai yra tokie:

  • + Garsinis signalas D4 Mbili
  • - Garsinis signalas GND Mbili

Paskutinis, bet ne mažiau svarbus dalykas - prijungsime GPS modulį. GPS modulis palaiko ryšį per RX ir TX. Ryšiai yra tokie:

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

2 veiksmas: normalizuota duomenų bazė

Normalizuota duomenų bazė
Normalizuota duomenų bazė

Antras žingsnis - sukurti normalizuotą duomenų bazę. Aš sukūriau savo ERD „Mysql“. Pamatysite, kad mano duomenų bazė parašyta olandų kalba, čia paaiškinsiu lenteles.

Lentelė „ploeg“:

Ši lentelė yra dviračių klubų stalas. Jame yra dviračių sporto klubo ID ir dviračių sporto klubo pavadinimas.

Lentelė „Rennai“:

Ši lentelė skirta dviratininkams. Kiekvienas dviratininkas turi „LoRaID“, kuris taip pat yra pagrindinis lentelės raktas. Jie taip pat turi pavardę, vardą, kilmės šalį ir dviračių sporto klubo ID, susietą su dviračių sporto klubo lentele.

Lentelė „plaatsen“:

Ši lentelė yra lentelė, kurioje saugomos Belgijos vietos, kuriose gali vykti dviračių lenktynės. Jame yra miesto pavadinimas (pirminis raktas) ir provincija, kurioje miestas yra.

Lentelė „wedstrijden“:

Šioje lentelėje saugomos visos dviračių lenktynės. Pagrindinis lentelės raktas yra ID. Lentelėje taip pat yra dviračių lenktynių pavadinimas, lenktynių miestas, susietas su vietų lentele, lenktynių atstumas, dviratininkų kategorija ir lenktynių data.

Lentelė „gebeurtenissen“:

Šioje lentelėje saugomi visi įvykiai. Tai reiškia, kad kai dviratininkas patenka į avariją arba susidaro mechaninis gedimas, įvykis bus išsaugotas šioje lentelėje. Pagrindinis lentelės raktas yra ID. Lentelėje taip pat nurodomas įvykio datos laikas, padėties platuma, padėties ilguma, dviratininko LoRaID ir įvykio tipas (avarija ar mechaninis gedimas).

Lentelė „wedstrijdrenner“:

Ši lentelė yra lentelė, reikalinga santykiams nuo daugelio iki daugelio.

3 veiksmas: užregistruokite „LoRa“modulį

Užregistruokite savo „LoRa“modulį
Užregistruokite savo „LoRa“modulį

Prieš pradėdami naudoti kodą, turite užregistruoti „LoRa“modulį „LoRa“šliuze. Aš naudojuosi Belgijos telekomunikacijų bendrove „Proximus“, kuri organizuoja mano „LoRa“modulio komunikaciją. Duomenys, kuriuos siunčiu su savo „LoRa“mazgu, renkami svetainėje iš „AllThingsTalk“. Jei taip pat norite naudoti „AllThingsTalk“API savo duomenims rinkti, galite užsiregistruoti čia.

Užregistravę „AllThingsTalk“, turite užregistruoti „LoRa“mazgą. Norėdami tai padaryti, galite atlikti šiuos veiksmus arba pažiūrėti aukščiau esančią nuotrauką.

  1. Eikite į „Įrenginiai“pagrindiniame meniu
  2. Spustelėkite „Naujas įrenginys“
  3. Pasirinkite savo „LoRa“mazgą
  4. Užpildykite visus raktus.

Dabar baigta! Visi duomenys, kuriuos siunčiate naudodami „LoRa“mazgą, bus rodomi „AllThingsTalk“kūrimo priemonėje. Jei turite kokių nors problemų dėl registracijos, visada galite peržiūrėti „AllThingsTalk“dokumentus.

4 žingsnis: Kodas

Kodas
Kodas
Kodas
Kodas
Kodas
Kodas
Kodas
Kodas

Šiam projektui mums reikės 5 kodavimo kalbų: HTML, CSS, „Java Script“, „Python“(kolba) ir „Arduino“kalbos. Pirmiausia paaiškinsiu „Arduino“programą.

„Arduino“programa:

Programos pradžioje aš skelbiu kai kuriuos pasaulinius kintamuosius. Pamatysite, kad naudoju „SoftwareSerial“ryšiui su GPS. Taip yra todėl, kad „Mbili“plokštėje yra tik 2 nuoseklieji prievadai. Galite prijungti GPS prie „Serial0“, bet tada negalėsite naudoti „Arduino“terminalo derinimui. Dėl šios priežasties naudoju programinę įrangą.

Po visuotinių kintamųjų paskelbiu kai kurias funkcijas, kurios palengvina programos skaitymą. Jie skaito GPS bendrinius, skleidžia garsinį signalą, siunčia vertes per „LoRa“,…

Trečiasis blokas yra sąrankos blokas. Šis blokas yra programos, kuri nustato kontaktus, nuoseklųjį ryšį ir I2C ryšį, pradžia.

Po sąrankos bloko ateina pagrindinė programa. Šios pagrindinės kilpos pradžioje aš patikrinu, ar jutiklinis jutiklis yra aktyvus. Jei taip, skleidžiu garsinį signalą, gaunu GPS duomenis ir siunčiu visas reikšmes per „LoRa“arba „Bluetooth“į Raspberry PI. Po jutiklinio jutiklio perskaičiau akselerometro reikšmes. Pagal formulę apskaičiuoju tikslų X ir Y ašių kampą. Jei šios vertės yra per didelės, galime daryti išvadą, kad dviratininkas sudužo. Įvykus avarijai, vėl išgirstu garsinį signalą, gaunu GPS duomenis ir visas vertes per „LoRa“arba „Bluetooth“siunčiu į Raspberry PI.

Tikriausiai galvojate: „Kodėl jūs naudojate„ Bluetooth “ir„ LoRa “?“. Taip yra todėl, kad turėjau tam tikrų problemų dėl naudojamo „LoRa“modulio licencijos. Taigi, kad programa veiktų mano demonstracinėje versijoje, kurį laiką turėjau naudoti „Bluetooth“.

2. Galinis galas:

Galinė dalis yra šiek tiek sudėtingas. Aš naudoju „Flask“savo maršrutui, kuris yra prieinamas priekinei daliai, naudoju „socketio“, kad kai kurie priekinio puslapio puslapiai būtų atnaujinti automatiškai, aš naudoju GPIO kaiščius, norėdamas rodyti pranešimus LCD ekrane ir gauti pranešimus per „Bluetooth“(nereikia, jei naudojate LoRa) ir aš naudoju „Threading“ir „Timers“, kad reguliariai skaityčiau „AllThinksTalk“API ir paleistumėte kolbos serverį.

Aš taip pat naudoju SQL duomenų bazę, kad galėčiau saugoti visas įvykius, perskaityti dviratininkų asmeninius duomenis ir lenktynių duomenis. Ši duomenų bazė yra prijungta prie „back-end“ir taip pat veikia „Raspberry Pi“. Aš naudoju klasę „Database.py“, kad galėčiau bendrauti su duomenų baze.

Kaip žinote iš „Fritzing“schemos, LCD yra prijungtas prie „Raspberry Pi“naudojant SPI protokolą. Kad tai būtų lengviau, parašiau klasę „LCD_4_20_SPI.py“. Naudodami šią klasę galite pakeisti kontrastą, pakeisti apšvietimo spalvą, rašyti pranešimus ekrane,…. Jei norite naudoti „Bluetooth“, galite naudoti klasę „SerialRaspberry.py“. Ši klasė valdo nuoseklųjį ryšį tarp „Bluetooth“modulio ir „Raspberry Pi“. Vienintelis dalykas, kurį jums reikia padaryti, yra prijungti „Bluetooth“modulį prie „Raspberry Pi“, prijungus RX prie TX ir atvirkščiai.

Priekinės dalies maršrutai parašyti naudojant @app.route taisyklę. Čia galite susikurti savo pasirinktinį maršrutą, kuriuo norite įterpti arba gauti duomenis į duomenų bazę arba iš jos. Įsitikinkite, kad maršruto pabaigoje visada turite atsakymą. Aš visada grąžinu JSON objektą į priekį, net jei įvyko klaida. Galite naudoti kintamąjį URL, įdėdami jį aplink kintamąjį.

Aš naudoju „Socketio“tinklalapiui su lenktynių avarijomis. Kai „Raspberry Pi“gauna avariją, aš siunčiu pranešimą į priekinį galą per „socketio“. Priekinė dalis žino, kad jie turi dar kartą perskaityti duomenų bazę, nes įvyko nauja avarija.

Pamatysite, kad mano kode „LoRa“ryšys yra nustatytas komandoje. Jei norite naudoti „LoRa“, turite paleisti laikmatį, kuris pakartotinai siunčia užklausą „AllThinksTalk“API. Iš šios API gausite jutiklio reikšmes (GPS, laikas, avarijos rūšis), kurias siunčia tam tikras LoRa mazgas. Galite naudoti šias reikšmes, kad įterptumėte strigtį į duomenų bazę.

3. Šakės galas:

Užpakalinę dalį sudaro 3 kalbos. HTML - svetainės tekstas, CSS - svetainės žymėjimas ir „JavaScript“- bendravimui su užpakaline dalimi. Aš turiu 4 šio projekto svetaines:

  • Index.html, kuriame rasite visas dviračių lenktynes.
  • Puslapis su visomis avarijomis ir mechaniniais gedimais pikantiškoms lenktynėms.
  • Puslapis, kuriame galite pridėti cilindrų prie duomenų bazės ir redaguoti jų komandą.
  • Puslapis, kuriame galite pridėti naują lenktynę su visais jos dalyviais prie duomenų bazės.

Kaip juos suprojektuoti, visiškai priklauso nuo jūsų. Jei norite, galite pasisemti įkvėpimo iš mano svetainės. Deja, mano svetainė sukurta olandų kalba, atsiprašau.

Kiekvienam puslapiui turiu atskirai CSS failą ir „JavaScript“failą. Kiekvienas „JavaScript“failas naudoja nuskaitymą, kad gautų duomenis iš duomenų bazės per užpakalinę dalį. Kai scenarijus gauna duomenis, html keičiasi dinamiškai. Puslapyje, kuriame galite rasti gedimus ir mechaninius gedimus, rasite žemėlapį, kuriame įvyko visi įvykiai. Šiam žemėlapiui parodyti naudojau lankstinuką.

Visą mano kodą galite peržiūrėti čia, mano „Github“.

5 žingsnis: sukurkite konstrukcijas

Sukurkite konstrukcijas
Sukurkite konstrukcijas
Sukurkite konstrukcijas
Sukurkite konstrukcijas
Sukurkite konstrukcijas
Sukurkite konstrukcijas

Prieš pradėdami statybą, įsitikinkite, kad turite visas medžiagas iš BOM arba iš puslapio „Įrankiai + reikmenys“.

Raspberry Pi + LCD

Pradėsime nuo „Raspberry Pi“dėklo. Jūs taip pat galite 3D spausdinti dėklą, tai taip pat buvo mano pirmoji idėja. Bet kadangi mano terminas artėjo labai arti, nusprendžiau pateikti paprastą atvejį. Aš paėmiau standartinį dėklą iš „Raspberry Pi“ir iš LCD ekrano išgręžiau skylę laidams. Norėdami tai padaryti, atlikite šiuos paprastus veiksmus:

  1. Gręžkite skylę į korpuso dangtelį. Aš tai padariau su 7 mm grąžtu dangtelio šone. Tai galite pamatyti aukščiau esančiame paveikslėlyje.
  2. Paimkite laidus iš skystųjų kristalų ekrano ir stumkite galvutę, kuri susitraukia virš laidų.
  3. Naudokite žiebtuvėlį ar karšto oro pistoletą, kad galvos susitraukimas susitrauktų.
  4. Ištraukite laidus, kai galvutė susitraukia per korpuso angą, ir vėl prijunkite juos prie LCD.

Dabar, kai esate pasiruošę su „Raspberry Pi“dėklu, galite pradėti nuo LCD ekrano dėklo. Aš atspausdinau 3D ekraną savo LCD ekranui, nes šioje nuorodoje radau dėklą internete. Aš turėjau tik pakeisti korpuso aukštį. Kai manote, kad piešiate gerai, galite eksportuoti failus ir pradėti spausdinti. Jei nežinote, kaip spausdinti 3D, galite vadovautis šia instrukcija, kaip spausdinti 3D naudojant „Fusion 360“.

SODAQ MBili konstrukcija

Aš tikrai nepadariau dėklo „SODAQ Mbili“lentai. Aš naudoju plexi stiklą, kad sudėčiau savo komponentus be dėklo aplink konstrukciją. Jei taip pat norite tai padaryti, galite atlikti šiuos veiksmus:

  1. Išskleiskite organinį stiklą naudodami „SODAQ Mbili“plokštės matmenis. Matmenys: 85 x 56 mm
  2. Supjaustykite organinį stiklą dėlionės pagalba.
  3. Padėkite elektroninius komponentus ant organinio stiklo ir pieštuku užrašykite skyles.
  4. 3,5 mm gręžtuvu gręžkite skyles, kurias ką tik pasirašėte, ir skyles, skirtas atramoms.
  5. Sumontuokite visus elektroninius komponentus ant organinio stiklo 3M 10 mm varžtais ir veržlėmis.
  6. Paskutinis žingsnis yra pritvirtinti organinį stiklą virš „Mbili“plokštės. Tai galite padaryti su atjungimais, bet aš naudoju du 3M 50 mm varžtus ir 8 3M veržles, kad pritvirtinčiau organinį stiklą virš lentos.

Rekomenduojamas: