Obsah:

Sledovací modul pre cyklistov: 5 krokov
Sledovací modul pre cyklistov: 5 krokov

Video: Sledovací modul pre cyklistov: 5 krokov

Video: Sledovací modul pre cyklistov: 5 krokov
Video: [06] E-Bike Urlaub 2021 | Via Claudia Augusta | Innradweg | Landeck - Reschensee 2024, Júl
Anonim
Sledovací modul pre cyklistov
Sledovací modul pre cyklistov

Tento sledovací modul pre cyklistov je modul, ktorý automaticky detekuje zrážky v pretekoch a ktorý zisťuje mechanické poruchy dotykom dotykového senzora. Keď dôjde k jednej z týchto udalostí, modul odošle udalosť do databázy na malinovom pi prostredníctvom LoRa. Táto udalosť sa zobrazí na LCD displeji a na webovej stránke. Môžete tiež na webe vyhľadať konkrétne cyklistické preteky s udalosťami a pridať cyklistické preteky alebo cyklistov do databázy. Vytvoril som tento projekt, pretože ma veľmi zaujíma cyklistika a IOT, takže spojenie týchto dvoch predmetov bolo pre mňa veľmi vzrušujúce.

Predtým, ako budete môcť vytvoriť modul sledovania pre cyklistov, musíte zhromaždiť svoje materiály. Nástroje a spotrebný materiál nájdete v nižšie uvedených zoznamoch alebo si môžete stiahnuť rozpisku (Build Of Materials).

Zásoby:

  • sklo plexi (56 mm x 85 mm)
  • 10 x 2M skrutky 10 mm a matice
  • 10 x 3M skrutky 10 mm a matice
  • 2 x 3M skrutky 50 mm a matice
  • Vlákno PLA na 3D tlač vášho puzdra LCD
  • zmršťovacia
  • Kábel muž - žena
  • Základná doska plošných spojov
  • Mužské hlavičky
  • Raspberry Pi 3b+
  • 16 GB SD karta
  • Iskrový LCD displej 4X20
  • Kapacitný dotykový senzor
  • Bzučiak
  • Trojosový akcelerometr + gyroskop
  • GPS modul
  • Doska SODAQ Mbili
  • Modul LoRa WAN
  • Batéria 3,7 V 1 000 mAh
  • Napájací zdroj Raspberry Pi 3b+

Náradie:

  • Spájkovací cín
  • Spájkovačka
  • Kliešte
  • Skrutkovače
  • Skladačka
  • Vŕtačka
  • 2,5 a 3,5 vŕtačky
  • Zapaľovacia / teplovzdušná pištoľ

Ak potrebujete kúpiť všetky zásoby, budete potrebovať rozpočet 541,67 EUR. Tento projekt je veľmi drahý, pretože som použil vývojovú súpravu LoRa rappid, ktorá stojí 299 EUR (mal som šancu použiť túto súpravu z mojej školy). Vždy môžete použiť bežné Arduino, aby ste ušetrili veľa peňazí, ale programy sa potom budú líšiť.

Krok 1: Fritzingova schéma

Fritzingova schéma
Fritzingova schéma
Fritzingova schéma
Fritzingova schéma

Prvým krokom je výstavba obvodov. Pre tento projekt máme 2 elektrické obvody, jeden s Raspberry Pi a jeden s doskou SADAQ Mbili. Začneme obvodom Raspberry Pi.

Schéma fritzovania Raspberry Pi:

Schéma Raspberry Pi je veľmi jednoduchá, jediná vec, ktorú s Pi spájame, je LCD displej 4X20 Sparkfun. Displej pracuje so sériovou komunikáciou, SPI alebo I2C. Aký komunikačný protokol použijete, je na vás. Použil som protokol SPI, pretože je veľmi jednoduchý. Ak používate SPI ako ja, potrebujete nasledujúce pripojenia:

  • 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

Na schéme Fritzing uvidíte, že LCD displej je displej 2X16. Dôvodom je, že som nenašiel LCD displej 4X20 o kmitaní. Všetky spojenia sú však niektoré, takže na tom vlastne nezáleží.

Schéma Fritzing SODAQ Mbili:

K doske SODAQ Mbili prepojíme 4 elektronické súčiastky, takže aj táto elektrická schéma je veľmi jednoduchá. Začneme pripojením dotykového senzora Capactive. OUT-pin tohto senzora bude pri dotyku senzora VYSOKÝ a v opačnom prípade bude NÍZKY. To znamená, že OUT-pin je digitálny výstup, ktorý môžeme prepojiť s digitálnym vstupom dosky Mbili. Pripojenia sú nasledujúce:

  • OUT dotykový senzor D5 Mbili
  • VCC dotykový senzor 3,3 V Mbili
  • Dotykový snímač GND GND Mbili

Druhým komponentom je gyroskopický senzor Triple acces +. Na komunikáciu s doskou Mbili som použil dosku GY-521, ktorá používa protokol I2C. Všimnite si, že pin AD0 dosky GY-521 musí byť prepojený s VCC dosky Mbili! Je to spôsobené tým, že doska Mbili má hodiny s rovnakou adresou I2C ako GY-521. Pripojením kolíka AD0 k VCC zmeníme adresu I2C GY-521. Pripojenia sú nasledujúce:

  • VCC GY-521 3,3 V Mbili
  • GND GY-521 GND Mbili
  • SCL GY-521 SCL Mbili
  • SDA GY-521 SDA Mbili
  • AD0 GY-521 3,3 V Mbili

Potom pripojíme bzučiak. Používam štandardný bzučiak, ktorý vydáva zvuk, keď je k dispozícii prúd. To znamená, že bzučiak môžeme jednoducho pripojiť k digitálnemu kolíku dosky Mbili. Pripojenia sú nasledujúce:

  • + Bzučiak D4 Mbili
  • - Bzučiak GND Mbili

V neposlednom rade pripojíme modul GPS. GPS modul komunikuje cez RX a TX. Pripojenia sú nasledujúce:

  • VCC GPS 3,3 V Mbili
  • GND GPS GND Mbili
  • TX GPS RX Mbili
  • RX GPS TX Mbili

Krok 2: Normalizovaná databáza

Normalizovaná databáza
Normalizovaná databáza

Druhým krokom je návrh normalizovanej databázy. Navrhol som svoje ERD v MySQL. Uvidíte, že moja databáza je napísaná v holandskom jazyku, vysvetlím tu tabuľky.

Tabuľka „ploeg“:

Táto tabuľka je tabuľka pre cyklistické kluby. Obsahuje ID cyklistického klubu a názov cyklistického klubu.

Tabuľka „renners“:

Táto tabuľka je tabuľka pre cyklistov. Každý cyklista má LoRaID, ktorý je tiež primárnym kľúčom tabuľky. Majú tiež priezvisko, krstné meno, krajinu pôvodu a ID cyklistického klubu, ktoré je spojené so tabuľkou cyklistických klubov.

Tabuľka „plaatsen“:

Táto tabuľka je tabuľka, ktorá ukladá miesta v Belgicku, kde sa môžu konať cyklistické preteky. Obsahuje názov mesta (ktorý je primárnym kľúčom) a provinciu, kde sa mesto nachádza.

Tabuľka „wedstrijden“:

Táto tabuľka obsahuje všetky cyklistické preteky. Primárny kľúč tabuľky je ID. Tabuľka obsahuje aj názov cyklistických pretekov, mesto pretekov, ktoré je prepojené s tabuľkou miest, vzdialenosť pretekov, kategóriu cyklistov a dátum pretekov.

Tabuľka „gebeurtenissen“:

V tejto tabuľke sú uložené všetky udalosti, ktoré sa vyskytnú. To znamená, že keď sa cyklista zúčastní nehody alebo dôjde k mechanickému zlyhaniu, udalosť sa uloží do tejto tabuľky. Primárny kľúč tabuľky je ID. Tabuľka obsahuje aj dátum a čas udalosti, zemepisnú šírku polohy, zemepisnú dĺžku polohy, LoRaID cyklistu a typ udalosti (havária alebo mechanické zlyhanie).

Tabuľka „wedstrijdrenner“:

Táto tabuľka je tabuľka, ktorá je potrebná pre vzťah mnoho k mnohým.

Krok 3: Zaregistrujte svoj modul LoRa

Zaregistrujte svoj modul LoRa
Zaregistrujte svoj modul LoRa

Skôr ako začnete s kódom, musíte zaregistrovať svoj modul LoRa v bráne LoRa. Použil som telekomunikačnú spoločnosť v Belgicku s názvom „Proximus“, ktorá zabezpečuje komunikáciu pre môj modul LoRa. Údaje, ktoré odosielam so svojim uzlom LoRa, sa zhromažďujú na webovej stránke od AllThingsTalk. Ak chcete na zhromažďovanie svojich údajov používať aj API AllThingsTalk, môžete sa zaregistrovať tu.

Po registrácii na AllThingsTalk musíte zaregistrovať svoj uzol LoRa. Môžete to urobiť nasledovne alebo sa môžete pozrieť na obrázok vyššie.

  1. V hlavnej ponuke prejdite na položku „Zariadenia“
  2. Kliknite na „Nové zariadenie“
  3. Vyberte svoj uzol LoRa
  4. Vyplňte všetky kľúče.

Teraz ste hotoví! Všetky údaje, ktoré odosielate pomocou uzla LoRa, sa zobrazia vo vašom produkte AllThingsTalk. Ak máte problémy s registráciou, môžete sa kedykoľvek obrátiť na dokumenty AllThingsTalk.

Krok 4: Kód

Kód
Kód
Kód
Kód
Kód
Kód
Kód
Kód

Na tento projekt budeme potrebovať 5 kódovacích jazykov: HTML, CSS, Java Script, Python (Flask) a jazyk Arduino. Najprv vysvetlím program Arduino.

Program Arduino:

Na začiatku programu deklarujem niektoré globálne premenné. Uvidíte, že na pripojenie k systému GPS používam SoftwareSerial. Je to spôsobené tým, že doska Mbili má iba 2 sériové porty. GPS môžete pripojiť k Serial0, ale terminál Arduino potom nebudete môcť použiť na ladenie. To je dôvod, prečo používam SoftwareSerial.

Po globálnych premenných deklarujem niektoré funkcie, ktoré uľahčujú čítanie programu. Čítajú súradnice GPS, vydávajú bzučiak, odosielajú hodnoty cez LoRa, …

Tretí blok je blok nastavenia. Tento blok je začiatkom programu, ktorý nastavuje piny, sériovú komunikáciu a komunikáciu I2C.

Po bloku nastavení príde hlavný program. Na začiatku tejto hlavnej slučky skontrolujem, či je dotykový snímač aktívny. Ak je to tak, vydám bzučiak, získam údaje GPS a pošlem všetky hodnoty cez LoRa alebo Bluetooth do Raspberry PI. Po dotykovom senzore som prečítal hodnoty akcelerometra. Podľa vzorca vypočítam presný uhol osi X a Y. Ak sú tieto hodnoty príliš vysoké, môžeme usúdiť, že cyklista havaroval. Keď dôjde k havárii, znova zazvoním, zazvoním, získam údaje GPS a pošlem všetky hodnoty cez LoRa alebo Bluetooth do Raspberry PI.

Pravdepodobne si myslíte: „Prečo používate bluetooth a LoRa?“. Dôvodom je, že som mal problémy s licenciou modulu LoRa, ktorý som použil. Aby program fungoval aj pre moje ukážky, musel som chvíľu používať Bluetooth.

2. Zadná časť:

Zadná časť je trochu komplexná. Na svoje trasy používam banku, ktorá je prístupná pre frontend, pomocou socketio automaticky aktualizujem niektoré z frontend stránok, pomocou pinov GPIO zobrazujem správy na LCD displeji a prijímam správy cez Bluetooth (nie je potrebné, ak používate LoRa) a používam vlákno a časovače na pravidelné čítanie rozhrania AllThinksTalk API a spustenie bankového servera.

Databázu SQL používam aj na ukladanie všetkých nasledujúcich zlyhaní, čítanie osobných údajov o cyklistoch a údajov o pretekoch. Táto databáza je pripojená k back-endu a tiež beží na Raspberry Pi. Na interakciu s databázou používam triedu 'Database.py'.

Ako poznáte zo schémy Fritzing, LCD je k Raspberry Pi pripojený prostredníctvom protokolu SPI. Aby to bolo trochu jednoduchšie, napísal som triedu 'LCD_4_20_SPI.py'. V tejto triede môžete meniť kontrast, meniť farbu podsvietenia, písať správy na obrazovku, …. Ak chcete používať Bluetooth, môžete použiť triedu „SerialRaspberry.py“. Táto trieda riadi sériovú komunikáciu medzi modulom Bluetooth a Raspberry Pi. Jediná vec, ktorú musíte urobiť, je pripojiť modul Bluetooth k Raspberry Pi prepojením RX s TX a naopak.

Trasy pre klientske rozhranie sú napísané pomocou pravidla @app.route. Tu si môžete vytvoriť vlastnú cestu na vkladanie alebo získavanie údajov do alebo z databázy. Zaistite, aby ste na konci trasy vždy dostali odpoveď. Objekt JSON vždy vrátim na klientske rozhranie, aj keď sa vyskytne chyba. Premennú v adrese URL môžete použiť tak, že umiestnite premennú okolo.

Na webovej stránke používam socketio so zlyhaniami závodu. Keď Raspberry Pi príde k zlyhaniu, pošlem prostredníctvom rozhrania socketio správu na frontend. Frontend potom vie, že musia databázu znova prečítať, pretože došlo k novému zlyhaniu.

Uvidíte, že v mojom kóde je komunikácia LoRa nastavená príkazom. Ak chcete používať LoRa, musíte spustiť časovač, ktorý opakovane odosiela požiadavku do rozhrania AllThinksTalk API. Z tohto rozhrania API získate hodnoty senzorov (GPS, čas, druh zlyhania), ktoré odosiela konkrétny uzol LoRa. Tieto hodnoty môžete použiť na vloženie zlyhania do databázy.

3. Listový koniec:

Front -end sa skladá z 3 jazykov. HTML pre text webových stránok, CSS pre webové stránky a JavaScript pre komunikáciu so zadným koncom. Pre tento projekt mám 4 webové stránky:

  • Index.html, kde nájdete všetky cyklistické preteky.
  • Stránka so všetkými zrúteniami a mechanickými poruchami pre náročné preteky.
  • Stránka, na ktorej môžete pridať válcov do databázy a upravovať ich tím.
  • Stránka, na ktorej môžete do databázy pridať nový závod so všetkými jeho účastníkmi.

Ako ich navrhnete, je len na vás. Ak chcete, môžete sa inšpirovať na mojom webe. Bohužiaľ, moja webová stránka je vytvorená v holandskom jazyku, ospravedlňujem sa za to.

Pre každú stránku mám osobitný súbor CSS a súbor JavaScript. Každý súbor JavaScript používa na získanie údajov z databázy cez back -end načítanie. Keď skript prijme údaje, html sa dynamicky zmení. Na stránke, kde nájdete zlyhania a mechanické poruchy, nájdete mapu, kde sa stali všetky udalosti. Na zobrazenie tejto mapy som použil leták.

Môžete si pozrieť všetky moje kódy tu na mojom Githube.

Krok 5: Postavte stavby

Stavajte stavby
Stavajte stavby
Stavajte stavby
Stavajte stavby
Stavajte stavby
Stavajte stavby

Skôr ako začneme s konštrukciou, uistite sa, že máte k dispozícii všetok materiál z kusovníka alebo zo stránky „Nástroje + spotrebný materiál“.

Raspberry Pi + LCD

Začneme puzdrom pre Raspberry Pi. Môžete si tiež vytlačiť puzdro 3D, to bol tiež môj prvý nápad. Ale pretože sa môj termín blížil, rozhodol som sa urobiť jednoduchý prípad. Vzal som štandardné puzdro z Raspberry Pi a do puzdra som vyvŕtal dieru pre vodiče z môjho LCD displeja. Ak to chcete urobiť, postupujte podľa týchto jednoduchých krokov:

  1. Do krytu puzdra vyvŕtajte otvor. Urobil som to 7 mm vrtákom na boku krytu. Môžete to vidieť na obrázku vyššie.
  2. Vyberte káble z LCD displeja a posuňte hlavu, ktorá sa zmenšuje cez vodiče.
  3. Aby sa hlava zmenšila, použite zapaľovač alebo teplovzdušnú pištoľ.
  4. Pretiahnite vodiče so zmršťovacou hlavou cez otvor v puzdre a zapojte ich späť na LCD displej.

Teraz, keď ste pripravení na puzdro pre Raspberry Pi, môžete začať s puzdrom na LCD displej. Puzdro pre svoj LCD displej som vytlačil 3D, pretože som na tomto odkaze našiel puzdro online. Musel som urobiť iba malú zmenu výšky puzdra. Keď si myslíte, že kreslíte dobre, môžete súbory exportovať a začať tlačiť. Ak neviete, ako 3D tlačiť, môžete sa riadiť týmto návodom na to, ako tlačiť 3D pomocou programu fusion 360.

Konštrukcia SODAQ MBili

Skutočne som nevyrobil puzdro na dosku SODAQ Mbili. Na umiestnenie svojich komponentov bez puzdra okolo konštrukcie som použil sklo z plexi. Ak to chcete urobiť aj vy, môžete postupovať podľa týchto krokov:

  1. Odhláste sa z plexiskla pomocou rozmerov dosky SODAQ Mbili. Rozmery sú: 85 mm x 56 mm
  2. Plexisklo prerežte skladačkou.
  3. Položte elektronické súčiastky na plexisklo a diery vypíšte ceruzkou.
  4. Otvory, ktoré ste práve podpísali, a otvory pre stojky vyvŕtajte 3,5 mm vrtákom.
  5. Namontujte všetky elektronické súčiastky na plexisklo pomocou skrutiek a matíc 3M 10 mm.
  6. Posledným krokom je namontovanie plexiskla nad dosku Mbili. Môžete to urobiť pomocou dištančných stĺpikov, ale na pripevnenie plexiskla nad dosku som použil dva skrutky 3M 50 mm a 8 matíc 3M.

Odporúča: