Indholdsfortegnelse:

Sporingsmodul til cyklister: 5 trin
Sporingsmodul til cyklister: 5 trin

Video: Sporingsmodul til cyklister: 5 trin

Video: Sporingsmodul til cyklister: 5 trin
Video: 5 trin til at pleje din cykel 2024, November
Anonim
Sporingsmodul til cyklister
Sporingsmodul til cyklister

Dette sporingsmodul for cyklister er et modul, der automatisk registrerer nedbrud i et løb, og som registrerer et mekanisk sammenbrud ved at røre ved en berøringssensor. Når en af disse hændelser sker, sender modulet hændelsen til en database på en hindbær pi via LoRa. Denne begivenhed vil blive vist på et LCD -display og på et websted. Du kan også søge på webstedet efter et specifikt cykelløb med begivenhederne og tilføje cykelløb eller cyklister til databasen. Jeg lavede dette projekt, fordi jeg er meget interesseret i cykling og IOT, så at kombinere disse to emner var bare meget spændende for mig.

Inden du kan lave et sporingsmodul til cyklister, skal du indsamle dine materialer. Du kan finde værktøjerne og forsyningerne på nedenstående lister, eller du kan downloade styklisten (Build Of Materials).

Tilbehør:

  • plexiglas (56 mm x 85 mm)
  • 10 X 2M bolte 10 mm og møtrikker
  • 10 X 3M bolte 10 mm og møtrikker
  • 2 X 3M bolte 50 mm og møtrikker
  • PLA-filament til 3D-print af dit LCD-etui
  • Varme krympe
  • Han til hunkabler
  • En grundlæggende print
  • Mandlige overskrifter
  • En Raspberry Pi 3b+
  • Et 16 GB SD-kort
  • En funklende 4X20 LCD
  • En kapacitiv berøringssensor
  • En summer
  • En 3-akset accelero + gyromåler
  • Et GPS -modul
  • Et SODAQ Mbili -bord
  • Et LoRa WAN -modul
  • Et 3,7V 1000mAh batteri
  • En Raspberry Pi 3b+ strømforsyning

Værktøjer:

  • Loddeform
  • Loddekolbe
  • Tænger
  • Skruetrækkere
  • Stiksav
  • Boremaskine
  • 2,5 og 3,5 øvelser
  • Lettere / varmluftspistol

Hvis du skal købe alle forsyninger, skal du bruge et budget på € 541,67. Dette projekt er meget dyrt, fordi jeg brugte et LoRa rappid udviklingssæt, der koster € 299 (jeg havde chancen for at bruge dette kit fra min skole). Du kan altid bruge en normal Arduino da spare mange penge, men programmerne vil da være anderledes.

Trin 1: Fritzing -ordning

Fritzing -ordning
Fritzing -ordning
Fritzing -ordning
Fritzing -ordning

Det første trin er at bygge kredsløbene. Til dette projekt har vi 2 elektriske kredsløb, et med en Raspberry Pi og et med et SADAQ Mbili -kort. Vi starter med Raspberry Pi kredsløbet.

Raspberry Pi Fritzing -ordning:

Raspberry Pi -ordningen er ret enkel, det eneste vi forbinder med Pi er et 4X20 Sparkfun LCD -display. Displayet fungerer med seriel kommunikation, SPI eller I2C. Hvilken kommunikationsprotokol du bruger er op til dig. Jeg brugte SPI -protokollen, fordi den er meget enkel. Hvis du bruger SPI ligesom mig, har du brug for følgende forbindelser:

  • VCC LCD VCC Raspberry Pi
  • GND LCD GND Raspberry Pi
  • SDI LCD MOSI (GPIO 10) Hindbær Pi
  • SDO LCD MISO (GPIO 9) Hindbær Pi
  • SCK LCD SCLK (GPIO 11) Hindbær Pi
  • CS LCD CS0 (GPIO 8) Hindbær Pi

På Fritzing -skemaet vil du se, at LCD -displayet er et 2X16 -display. Dette skyldes, at jeg ikke fandt et 4X20 LCD på frizting. Alle forbindelserne er dog nogle, så det er ikke ligegyldigt.

SODAQ Mbili Fritzing -ordning:

Vi forbinder 4 elektroniske komponenter med SODAQ Mbili -kortet, så dette elektriske skema er også meget enkelt. Vi starter med at tilslutte Capactive touch -sensoren. Denne sensor OUT-pin vil være HØJ, når sensoren berøres, og vil ellers være LAV. Det betyder, at OUT-stiften er en digital udgang, som vi kan forbinde med en digital indgang på Mbili-kortet. Forbindelserne er som følger:

  • OUT berøringssensor D5 Mbili
  • VCC berøringssensor 3,3V Mbili
  • GND Touch sensor GND Mbili

Den anden komponent er Triple acces + gyrosensoren. Jeg brugte GY-521-kortet, der bruger I2C-protokollen til at kommunikere med Mbili-kortet. Bemærk, at AD0-stiften på GY-521-kortet skal tilsluttes VCC på Mbili-kortet! Dette skyldes, at Mbili-kortet har et ur med den samme I2C-adresse som GY-521. Ved at tilslutte AD0-pin til VCC ændrer vi te I2C-adressen på GY-521. Forbindelserne er som følger:

  • 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

Derefter forbinder vi summeren. Jeg bruger standard summer, der giver en lyd, når der er en strøm. Det betyder, at vi bare kan slutte summeren til en digital pin på Mbili -kortet. Forbindelserne er som følger:

  • + Summer D4 Mbili
  • - summer GND Mbili

Sidst men ikke mindst vil vi forbinde GPS -modulet. GPS -modulet kommunikerer via RX og TX. Forbindelserne er som følger:

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

Trin 2: Normaliseret database

Normaliseret database
Normaliseret database

Det andet trin er at designe en normaliseret database. Jeg har designet mit ERD i Mysql. Du vil se min database er skrevet på det hollandske sprog, jeg vil forklare tabellerne her.

Tabel 'ploeg':

Dette bord er et bord til cyklingsklubberne. Den indeholder et cykelklub -id og et cykelklubnavn.

Tabel 'renners':

Denne tabel er en tabel for cyklisterne. Hver cyklist har et LoRaID, som også er tabellens primære nøgle. De har også et efternavn, fornavn, oprindelsesland og et cykelklub -id, der er knyttet til cykelklubbordet.

Tabel 'placerer':

Dette bord er et bord, der gemmer de steder i Belgien, hvor et cykelløb kan finde sted. Den indeholder navnet på byen (som er den primære nøgle) og provinsen, hvor byen er beliggende.

Bord 'konkurrence':

Dette bord gemmer alle cykelløb. Den primære nøgle i tabellen er et ID. Tabellen indeholder også navnet på cykelløbet, løbets by, der er knyttet til placeringsbordet, løbets afstand, kategorien af cyklisterne og løbets dato.

Tabel 'gebeurtenissen':

Denne tabel gemmer alle de begivenheder, der sker. Det betyder, at når en cyklist er involveret i et nedbrud eller har et mekanisk sammenbrud, vil hændelsen blive gemt i denne tabel. Den primære nøgle i tabellen er et ID. Tabellen indeholder også datoen for begivenheden, positionens breddegrad, positionens længdegrad, cyklistens LoRaID og hændelsestypen (nedbrud eller mekanisk sammenbrud).

Bord 'konkurrijdrenner':

Denne tabel er en tabel, der er nødvendig for et mange til mange forhold.

Trin 3: Registrer dit LoRa -modul

Registrer dit LoRa -modul
Registrer dit LoRa -modul

Inden du kan starte med koden, skal du registrere dit LoRa -modul i en LoRa -gateway. Jeg brugte et teleselskab i Belgien kaldet 'Proximus', der arrangerer kommunikationen til mit LoRa -modul. De data, jeg sender med min LoRa -knude, indsamles på webstedet fra AllThingsTalk. Hvis du også vil bruge AllThingsTalk API til at indsamle dine data, kan du registrere dig her.

Når du har registreret dig på AllThingsTalk, skal du registrere din LoRa -knude. For at gøre dette kan du følge disse trin, eller du kan se på billedet ovenfor.

  1. Gå til 'Enheder' i hovedmenuen
  2. Klik på 'Ny enhed'
  3. Vælg din LoRa -knude
  4. Udfyld alle nøglerne.

Nu er du færdig! Alle de data, du sender med din LoRa -knude, vises i din AllThingsTalk -maker. Hvis du har problemer med registreringen, kan du altid se AllThingsTalk -dokumenterne.

Trin 4: Koden

Koden
Koden
Koden
Koden
Koden
Koden
Koden
Koden

Til dette projekt skal vi bruge 5 kodningssprog: HTML, CSS, Java Script, Python (Flask) og Arduino -sproget. Først vil jeg forklare Arduino -programmet.

Arduino -programmet:

I begyndelsen af programmet erklærer jeg nogle globale variabler. Du vil se, at jeg bruger SoftwareSerial til forbindelsen med min GPS. Dette skyldes, at Mbili -kortet kun har 2 serielle porte. Du kan slutte GPS'en til Serial0, men du vil ikke kunne bruge Arduino -terminalen til fejlfinding derefter. Dette er grunden til, at jeg bruger en SoftwareSerial.

Efter de globale variabler erklærer jeg nogle funktioner, der gør det let at læse programmet. De læser GPS -koordinaterne op, får summeren til at lyde, sender værdier via LoRa, …

Den tredje blok er opsætningsblokken. Denne blok er begyndelsen på programmet, der opsætter benene, seriel kommunikation og I2C -kommunikationen.

Efter installationsblokken kommer hovedprogrammet. I begyndelsen af denne hovedsløjfe kontrollerer jeg, om berøringsføleren er aktiv. I så fald får jeg summeren til at hente, får GPS -data og sender alle værdierne via LoRa eller Bluetooth til Raspberry PI. Efter berøringssensoren læste jeg værdierne for accelerometeret op. Med en formel beregner jeg den nøjagtige vinkel på X- og Y -aksen. Hvis disse værdier er for store, kan vi konkludere, at cyklisten styrtede ned. Når der sker et nedbrud, får jeg summeren til at lyde igen, får GPS -dataene og sender alle værdierne via LoRa eller Bluetooth til Raspberry PI.

Du tænker sikkert: 'Hvorfor bruger du bluetooth og LoRa?'. Dette skyldes, at jeg havde nogle problemer med licensen til LoRa -modulet, jeg brugte. Så for at få programmet til at fungere til min demo, måtte jeg bruge Bluetooth et stykke tid.

2. Bagenden:

Bagenden er en lille smule kompleks. Jeg bruger Kolbe til mine ruter, der er tilgængelige for frontend, jeg bruger socketio til at opdatere nogle af forsiderne automatisk, jeg bruger GPIO -benene til at vise meddelelser på et LCD -display og modtage beskeder via Bluetooth (ikke nødvendigt, hvis du bruger LoRa) og jeg bruger Threading and Timers til regelmæssigt at læse AllThinksTalk API og starte kolbe -serveren.

Jeg bruger også SQL -databasen til at gemme alle de forekommende nedbrud, læse cyklisternes personlige data og løbens data op. Denne database er forbundet til back-end og kører også på Raspberry Pi. Jeg bruger en klasse 'Database.py' til at interagere med databasen.

Som du kender fra Fritzing -ordningen, er lcd'en forbundet til Raspberry Pi via SPI -protokollen. For at gøre det lidt lettere skrev jeg en klasse 'LCD_4_20_SPI.py'. Med denne klasse kan du ændre kontrasten, ændre baggrundsbelysningsfarven, skrive beskeder på skærmen,…. Hvis du vil bruge Bluetooth, kan du bruge klassen 'SerialRaspberry.py'. Denne klasse styrer den serielle kommunikation mellem Bluetooth -modulet og Raspberry Pi. Det eneste du skal gøre er at tilslutte et Bluetooth -modul til Raspberry Pi ved at slutte RX til TX og virsa versa.

Ruterne til frontend er skrevet med @app.route -reglen. Her kan du lave din egen tilpassede rute for at indsætte eller hente data i eller fra databasen. Sørg for, at du altid har et svar ved slutningen af ruten. Jeg returnerer altid et JSON -objekt til frontenden, selvom der opstod en fejl. Du kan bruge en variabel i url'en ved at placere den rundt om variablen.

Jeg bruger socketio til websiden med et racers nedbrud. Når Raspberry Pi modtager et nedbrud, sender jeg en besked til frontenden via socketio. Frontenden ved så, at de skal læse databasen op igen, fordi der var et nyt nedbrud.

Du vil se, at LoRa -kommunikationen i min kode er sat i kommando. Hvis du vil bruge LoRa, skal du starte en timer, der gentagne gange sender en anmodning til AllThinksTalk API. Fra denne API modtager du sensorværdierne (GPS, Time, Crash kind), der sendes af en bestemt LoRa -knude. Du kan bruge disse værdier til at indsætte et nedbrud i databasen.

3. Frondenden:

Frondenden består af 3 sprog. HTML til webstedets tekst, CSS til webstedsmarkeringen og JavaScript til kommunikationen med bagenden. Jeg har 4 webstedssider til dette projekt:

  • Index.html hvor du kan finde alle cykelløbene.
  • En side med alle nedbrud og mekaniske sammenbrud til et særligt løb.
  • En side, hvor du kan tilføje cylister til databasen og redigere deres team.
  • En side, hvor du kan tilføje et nyt løb med alle dets deltagere til databasen.

Hvordan du designer dem er helt op til dig. Du kan få lidt inspiration fra min hjemmeside, hvis du vil. Desværre er mit websted lavet på det hollandske sprog, jeg er ked af det.

Jeg har en separat CSS -fil og JavaScript -fil for hver side. Hver JavaScript -fil bruger hente til at hente dataene fra databasen via bagenden. Når scriptet modtager dataene, ændres html dynamisk. På siden, hvor du kan finde nedbrud og mekaniske sammenbrud, finder du et kort, hvor alle begivenhederne fandt sted. Jeg brugte folder til at vise dette kort.

Du kan se alle mine koder her på min Github.

Trin 5: Byg konstruktionerne

Byg konstruktionerne
Byg konstruktionerne
Byg konstruktionerne
Byg konstruktionerne
Byg konstruktionerne
Byg konstruktionerne

Inden vi kan begynde med konstruktionen, skal du sørge for at have alle materialer fra styklisten eller fra siden 'Værktøjer + forbrugsvarer'.

Hindbær Pi + LCD

Vi starter med sagen til Raspberry Pi. Du kan altid 3D-printe en sag, dette var også min første idé. Men fordi min deadline var meget tæt på, besluttede jeg at lave en enkel sag. Jeg tog standardkassen fra Raspberry Pi, og jeg borede et hul i kabinettet til ledningerne fra min LCD -skærm. For at gøre dette skal du bare følge disse enkle trin:

  1. Bor et hul i dækslet på sagen. Jeg gjorde dette med en 7 mm boremaskine på siden af dækslet. Du kan se dette på billedet ovenfor.
  2. Tag ledningerne fra LCD -displayet, og skub et hoved, der krymper over ledningerne.
  3. Brug en lighter eller en varmluftspistol til at få hovedet til at krympe.
  4. Træk i ledningerne med hovedet krympet gennem hullet i sagen, og tilslut dem tilbage på LCD'et.

Nu hvor du er klar med etuiet til Raspberry Pi, kan du starte med etuiet til LCD -displayet. Jeg 3D-printede sagen til min LCD-skærm, fordi jeg fandt en sag online på dette link. Jeg måtte kun foretage en lille ændring i sagens højde. Når du synes, at din tegning er god, kan du eksportere filerne og begynde at udskrive. Hvis du ikke ved, hvordan du 3D-udskriver, kan du følge denne instruktion om, hvordan du 3D-udskriver med fusion 360.

SODAQ MBili konstruktion

Jeg lavede ikke rigtig en sag til SODAQ Mbili -kortet. Jeg brugte et plexiglas til at placere mine komponenter på uden en sag omkring konstruktionen. Hvis du også vil gøre dette, kan du følge disse trin:

  1. Afmærk plexiglasset med dimesnionerne på SODAQ Mbili -kortet. Dimensionerne er: 85 mm x 56 mm
  2. Skær plexiglasset med et stiksav.
  3. Læg de elektroniske komponenter på plexiglasset og afmærk hullerne med en blyant.
  4. Bor de huller, du lige har afmeldt, og hullerne til afstandene med et 3,5 mm bor.
  5. Monter alle elektroniske komponenter på plexiglas med 3M 10 mm bolte og møtrikker.
  6. Det sidste trin er at montere plexiglasset over Mbili -kortet. Du kan gøre dette med standoffs, men jeg brugte to 3M 50mm bolte og 8 3M møtrikker til at montere plexiglasset over brættet.

Anbefalede: