Kazalo:

Sledilni modul za kolesarje: 5 korakov
Sledilni modul za kolesarje: 5 korakov

Video: Sledilni modul za kolesarje: 5 korakov

Video: Sledilni modul za kolesarje: 5 korakov
Video: Instinct® 2: Whatever you do, own it – Garmin® Retail Training 2024, November
Anonim
Sledilni modul za kolesarje
Sledilni modul za kolesarje

Ta modul za sledenje kolesarjem je modul, ki samodejno zazna trke na dirki in zazna mehansko okvaro z dotikom senzorja na dotik. Ko se zgodi eden od teh dogodkov, modul pošlje dogodek v bazo podatkov na maline pi prek LoRa. Ta dogodek bo prikazan na LCD zaslonu in na spletni strani. Na spletnem mestu lahko iščete tudi določeno kolesarsko dirko z dogodki in v bazo podatkov dodate kolesarske dirke ali kolesarje. Ta projekt sem naredil, ker me zelo zanimata kolesarjenje in IOT, zato je bila kombinacija teh dveh predmetov zame zelo vznemirljiva.

Preden lahko naredite modul za sledenje kolesarjem, morate zbrati material. Orodja in potrebščine najdete na spodnjih seznamih ali pa prenesete BOM (Build Of Materials).

Zaloge:

  • pleksi steklo (56 mm x 85 mm)
  • 10 X 2M vijaki 10 mm in matice
  • 10 X 3M vijaki 10 mm in matice
  • 2 X 3M vijaka 50 mm in matice
  • PLA Filament za 3D-tiskanje ohišja LCD
  • toplotno krčenje
  • Moški in ženski kabli
  • Osnovno tiskano vezje
  • Moške glave
  • Malina Pi 3b+
  • 16 GB SD kartica
  • Sparkfun 4X20 LCD
  • Kapacitivni senzor na dotik
  • Zvočnik
  • 3-osni merilnik pospeška + žiroskop
  • GPS modul
  • Deska SODAQ Mbili
  • Modul LoRa WAN
  • 3.7V 1000mAh baterija
  • Napajalnik Raspberry Pi 3b+

Orodja:

  • Spajkalnik
  • Spajkalnik
  • Klešče
  • Izvijači
  • Sestavljanka
  • Vrtalni stroj
  • 2,5 in 3,5 svedri
  • Vžigalnik / pištola za vroč zrak

Če morate kupiti vse zaloge, boste potrebovali 541,67 € proračuna. Ta projekt je zelo drag, ker sem uporabil razvojni komplet LoRa rappid, ki stane 299 EUR (ta komplet sem imel možnost uporabiti že v svoji šoli). Vedno lahko uporabite običajen Arduino in prihranite veliko denarja, vendar bodo programi takrat drugačni.

1. korak: Shema zmrzovanja

Shema zmrzovanja
Shema zmrzovanja
Shema zmrzovanja
Shema zmrzovanja

Prvi korak je izdelava vezij. Za ta projekt imamo 2 električna vezja, enega z Raspberry Pi in enega s ploščo SADAQ Mbili. Začeli bomo z vezjem Raspberry Pi.

Shema zmrzovanja Raspberry Pi:

Shema Raspberry Pi je precej preprosta, edino, kar povežemo s Pi, je 4X20 Sparkfun LCD zaslon. Zaslon deluje s serijsko komunikacijo, SPI ali I2C. Kateri komunikacijski protokol boste uporabili, je odvisno od vas. Uporabil sem protokol SPI, ker je zelo preprost. Če uporabljate SPI kot jaz, potrebujete naslednje povezave:

  • 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 shemi Fritzing boste videli, da je LCD zaslon 2X16. To je zato, ker nisem našel LCD -ja 4X20 pri vpenjanju. Vse povezave pa so nekatere, zato to sploh ni pomembno.

SODAQ Mbili Frizerska shema:

S ploščo SODAQ Mbili bomo povezali 4 elektronske komponente, zato je tudi ta električna shema zelo preprosta. Začeli bomo s povezovanjem senzorja dotika Capactive. OUT-pin teh senzorjev bo ob dotiku senzorja VISOK, v nasprotnem primeru pa NIZKI. To pomeni, da je OUT-pin digitalni izhod, ki ga lahko povežemo z digitalnim vhodom plošče Mbili. Povezave so naslednje:

  • OUT senzor na dotik D5 Mbili
  • Senzor na dotik VCC 3.3V Mbili
  • GND Senzor na dotik GND Mbili

Druga komponenta je trojni dostop + žiroskopski senzor. Za komunikacijo s ploščo Mbili sem uporabil ploščo GY-521, ki uporablja protokol I2C. Upoštevajte, da je treba AD0-pin plošče GY-521 povezati z VCC plošče Mbili! To je zato, ker ima plošča Mbili uro z istim naslovom I2C, kot je GY-521. S priključitvijo AD0-pina na VCC spremenimo naslov I2C GY-521. Povezave so naslednje:

  • 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

Nato bomo povezali zvočni signal. Uporabljam standardni zvočni signal, ki oddaja zvok, ko je tok. To pomeni, da lahko samo zvočni signal povežemo z digitalnim zatičem plošče Mbili. Povezave so naslednje:

  • + Zvočni signal D4 Mbili
  • - Zvočni signal GND Mbili

Ne nazadnje bomo povezali modul GPS. Modul GPS komunicira prek RX in TX. Povezave so naslednje:

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

2. korak: Normalizirana baza podatkov

Normalizirana baza podatkov
Normalizirana baza podatkov

Drugi korak je oblikovanje normalizirane baze podatkov. ERD sem oblikoval v Mysqlu. Videli boste, da je moja baza podatkov napisana v nizozemskem jeziku, tukaj bom razložil tabele.

Tabela "ploeg":

Ta miza je miza za kolesarske klube. Vsebuje ID kolesarskega kluba in ime kolesarskega kluba.

Tabela "renners":

Ta miza je miza za kolesarje. Vsak kolesar ima LoRaID, ki je hkrati tudi primarni ključ tabele. Imajo tudi priimek, ime, državo porekla in ID kolesarskega kluba, ki je povezan z mizo kolesarskega kluba.

Tabela "plaatsen":

Ta miza je miza, v kateri so shranjena mesta v Belgiji, kjer lahko poteka kolesarska dirka. Vsebuje ime mesta (ki je primarni ključ) in pokrajino, kjer se mesto nahaja.

Tabela "wedstrijden":

Na tej mizi so shranjene vse kolesarske dirke. Primarni ključ tabele je ID. Tabela vsebuje tudi ime kolesarske dirke, mesto dirke, ki je povezano s tabelo mest, razdaljo dirke, kategorijo kolesarjev in datum dirke.

Tabela "gebeurtenissen":

V tej tabeli so shranjeni vsi dogodki. To pomeni, da ko se kolesar udeleži trka ali ima mehansko okvaro, bo dogodek shranjen v tej tabeli. Primarni ključ tabele je ID. Tabela vsebuje tudi datum in čas dogodka, zemljepisno širino položaja, dolžino položaja, LoRaID kolesarja in vrsto dogodka (trčenje ali mehanska okvara).

Tabela "wedstrijdrenner":

Ta miza je miza, ki je potrebna za razmerje med mnogimi in mnogimi.

3. korak: Registrirajte svoj modul LoRa

Registrirajte svoj modul LoRa
Registrirajte svoj modul LoRa

Preden začnete s kodo, morate svoj modul LoRa registrirati v prehodu LoRa. V Belgiji sem uporabil telekomunikacijsko podjetje, imenovano "Proximus", ki ureja komunikacijo za moj modul LoRa. Podatki, ki jih pošljem z vozliščem LoRa, se zbirajo na spletnem mestu iz AllThingsTalk. Če želite za zbiranje podatkov uporabiti tudi API AllThingsTalk, se lahko registrirate tukaj.

Ko se registrirate na AllThingsTalk, morate registrirati svoje vozlišče LoRa. Če želite to narediti, sledite tem korakom ali pa si oglejte zgornjo sliko.

  1. V glavnem meniju pojdite na 'Naprave'
  2. Kliknite »Nova naprava«
  3. Izberite svoje vozlišče LoRa
  4. Izpolnite vse ključe.

Zdaj ste končali! Vsi podatki, ki jih pošljete z vozliščem LoRa, bodo prikazani v napravi AllThingsTalk. Če imate težave z registracijo, se lahko vedno obrnete na dokumente AllThingsTalk.

4. korak: Koda

Kodeks
Kodeks
Kodeks
Kodeks
Kodeks
Kodeks
Kodeks
Kodeks

Za ta projekt bomo potrebovali 5 kodirnih jezikov: HTML, CSS, Java Script, Python (Flask) in jezik Arduino. Najprej bom razložil program Arduino.

Program Arduino:

Na začetku programa razglasim nekaj globalnih spremenljivk. Videli boste, da za povezavo z GPS uporabljam SoftwareSerial. To je zato, ker ima plošča Mbili samo 2 serijska vrata. GPS lahko priključite na Serial0, vendar za odpravljanje napak ne boste mogli uporabiti terminala Arduino. To je razlog, zakaj uporabljam SoftwareSerial.

Po globalnih spremenljivkah razglasim nekatere funkcije, ki olajšajo branje programa. Preberejo koordinate GPS, oddajo zvočni signal, pošljejo vrednosti prek LoRa, …

Tretji blok je namestitveni blok. Ta blok je začetek programa, ki nastavi zatiče, serijsko komunikacijo in komunikacijo I2C.

Po nastavitvenem bloku pride glavni program. Na začetku te glavne zanke preverim, če je senzor na dotik aktiven. Če je tako, sprožim zvočni signal, dobim podatke GPS in pošljem vse vrednosti prek LoRa ali Bluetooth na Raspberry PI. Po senzorju na dotik sem prebral vrednosti merilnika pospeška. S formulo izračunam točen kot osi X in Y. Če so te vrednosti prevelike, lahko sklepamo, da je kolesar trčil. Ko pride do zrušitve, znova zaslišim zvočni signal, dobim podatke GPS in pošljem vse vrednosti prek LoRa ali Bluetooth na Raspberry PI.

Verjetno razmišljate: 'Zakaj uporabljate bluetooth in LoRa?'. To je zato, ker sem imel nekaj težav z licenco modula LoRa, ki sem ga uporabljal. Da bi program deloval v mojih predstavitvah, sem moral nekaj časa uporabljati Bluetooth.

2. Zadnji del:

Zadnji del je nekoliko zapleten. Za svoje poti uporabljam Flask, ki je dostopen za sprednji del, uporabljam socketio za samodejno posodabljanje nekaterih sprednjih strani, z zatiči GPIO prikazujem sporočila na LCD zaslonu in prejemam sporočila prek Bluetootha (ni potrebno, če uporabljate LoRa) in uporabljam Threading in Timers za redno branje API -ja AllThinksTalk in zagon strežnika za bučke.

Uporabljam tudi bazo podatkov SQL za shranjevanje vseh prihajajočih zrušitev, branje osebnih podatkov kolesarjev in podatkov o dirkah. Ta zbirka podatkov je povezana z zadnjo stranjo in deluje tudi na Raspberry Pi. Za interakcijo z bazo podatkov uporabljam razred 'Database.py'.

Kot veste iz sheme Fritzing, je lcd povezan s Raspberry Pi prek protokola SPI. Da bi bilo malo lažje, sem napisal razred 'LCD_4_20_SPI.py'. S tem razredom lahko spremenite kontrast, spremenite barvo osvetlitve ozadja, pišete sporočila na zaslon,…. Če želite uporabljati Bluetooth, lahko uporabite razred 'SerialRaspberry.py'. Ta razred ureja serijsko komunikacijo med modulom Bluetooth in Raspberry Pi. Edino, kar morate storiti, je, da modul Bluetooth povežete z Raspberry Pi tako, da priključite RX na TX in virsa obratno.

Poti za sprednji del so zapisane s pravilom @app.route. Tu lahko ustvarite svojo pot po meri za vstavljanje ali pridobivanje podatkov v zbirko podatkov ali iz nje. Poskrbite, da boste vedno imeli odziv na koncu poti. Vedno vrnem predmet JSON na sprednji del, tudi če je prišlo do napake. Spremenljivko v URL -ju lahko uporabite tako, da spremenljivko postavite okrog.

Za spletno stran s trki dirke uporabljam socketio. Ko Raspberry Pi prejme zrušitev, pošljem sporočilo na sprednji del prek vtičnice. Sprednji del takrat ve, da morajo znova prebrati bazo podatkov, ker je prišlo do nove nesreče.

Videli boste, da je v moji kodi komunikacija LoRa nastavljena na ukaz. Če želite uporabljati LoRa, morate zagnati časovnik, ki ponavljajoče pošilja zahtevo API -ju AllThinksTalk. Iz tega API -ja boste prejeli vrednosti senzorjev (GPS, čas, vrsta nesreče), ki jih pošlje določeno vozlišče LoRa. Te vrednosti lahko uporabite za vstavljanje zrušitve v bazo podatkov.

3. Sprednji del:

Sprednji del je sestavljen iz 3 jezikov. HTML za besedilo spletnega mesta, CSS za označevanje spletnega mesta in JavaScript za komunikacijo z zadnjim delom. Za ta projekt imam 4 strani spletnega mesta:

  • Indeks.html, kjer najdete vse kolesarske dirke.
  • Stran z vsemi zrušitvami in mehanskimi okvarami za začinjeno dirko.
  • Stran, na katero lahko v zbirko podatkov dodate cilindre in uredite njihovo ekipo.
  • Stran, na katero lahko v bazo dodate novo dirko z vsemi njenimi udeleženci.

Kako jih boste oblikovali, je v celoti vaša odločitev. Če želite, lahko dobite navdih na moji spletni strani. Na žalost je moja spletna stran v nizozemskem jeziku, žal mi je za to.

Za vsako stran imam ločeno datoteko CSS in datoteko JavaScript. Vsaka datoteka JavaScript uporablja pridobivanje za pridobivanje podatkov iz baze podatkov prek zadnje strani. Ko skript prejme podatke, se html dinamično spremeni. Na strani, kjer najdete nesreče in mehanske okvare, boste našli zemljevid, kjer so se zgodili vsi dogodki. Za prikaz tega zemljevida sem uporabil letak.

Vso mojo kodo si lahko ogledate tukaj na mojem Githubu.

5. korak: Zgradite konstrukcije

Zgradite konstrukcije
Zgradite konstrukcije
Zgradite konstrukcije
Zgradite konstrukcije
Zgradite konstrukcije
Zgradite konstrukcije

Preden začnemo z gradnjo, se prepričajte, da imate vse materiale iz BOM ali s strani 'Tools + Supplies'.

Raspberry Pi + LCD

Začeli bomo s primerom za Raspberry Pi. Lahko vedno natisnete ohišje s 3D-tiskom, to je bila tudi moja prva ideja. Ker pa se je moj rok zelo približal, sem se odločil za preprost primer. Standardno ohišje sem vzel iz Raspberry Pi, v ohišju pa sem izvrtal luknjo za žice z LCD zaslona. Če želite to narediti, sledite tem preprostim korakom:

  1. V pokrov ohišja izvrtajte luknjo. To sem naredil s 7 -milimetrskim svedrom ob strani pokrova. To lahko vidite na zgornji sliki.
  2. Vzemite žice z LCD zaslona in potisnite glavo, ki se skrči nad žicami.
  3. Za zmanjšanje krčenja glave uporabite vžigalnik ali pištolo z vročim zrakom.
  4. Povlecite žice s skrčeno glavo skozi luknjo v ohišju in jih povežite nazaj na LCD.

Zdaj, ko ste pripravljeni na ohišje za Raspberry Pi, lahko začnete z ohišjem za LCD zaslon. Ohišje za LCD zaslon sem 3D natisnil, ker sem na tej povezavi našel kovček na spletu. Moral sem le nekoliko spremeniti višino ohišja. Ko menite, da dobro risate, lahko datoteke izvozite in začnete tiskati. Če ne veste, kako 3D-tiskanje, lahko sledite tem navodilom, kako 3D-tiskanje s Fusion 360.

SODAQ MBili konstrukcija

Za ploščo SODAQ Mbili nisem prav nič utemeljil. Za pritrditev komponent brez ohišja okoli konstrukcije sem uporabil pleksi steklo. Če želite narediti tudi to, lahko sledite tem korakom:

  1. Odpišite se iz pleksi stekla z dimenzijami plošče SODAQ Mbili. Dimenzije: 85 x 56 mm
  2. Izrežite pleksi steklo z vbodno žago.
  3. Elektronske komponente položite na pleksi steklo in luknje podpišite s svinčnikom.
  4. Izvrtajte luknje, ki ste jih pravkar podpisali, in luknje za odmike s svedrom 3,5 mm.
  5. Vse elektronske komponente namestite na pleksi steklo s 3M 10 mm vijaki in maticami.
  6. Zadnji korak je namestitev pleksi stekla nad ploščo Mbili. To lahko storite z odmiki, vendar sem uporabil dva 3M 50 mm vijaka in 8 3M matice za montažo pleksi stekla nad ploščo.

Priporočena: