Indholdsfortegnelse:
- Trin 1: Fritzing -ordning
- Trin 2: Normaliseret database
- Trin 3: Registrer dit LoRa -modul
- Trin 4: Koden
- Trin 5: Byg konstruktionerne
Video: Sporingsmodul til cyklister: 5 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
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
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
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
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.
- Gå til 'Enheder' i hovedmenuen
- Klik på 'Ny enhed'
- Vælg din LoRa -knude
- 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
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
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:
- 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.
- Tag ledningerne fra LCD -displayet, og skub et hoved, der krymper over ledningerne.
- Brug en lighter eller en varmluftspistol til at få hovedet til at krympe.
- 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:
- Afmærk plexiglasset med dimesnionerne på SODAQ Mbili -kortet. Dimensionerne er: 85 mm x 56 mm
- Skær plexiglasset med et stiksav.
- Læg de elektroniske komponenter på plexiglasset og afmærk hullerne med en blyant.
- Bor de huller, du lige har afmeldt, og hullerne til afstandene med et 3,5 mm bor.
- Monter alle elektroniske komponenter på plexiglas med 3M 10 mm bolte og møtrikker.
- 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:
Billig NMEA/AIS Hub - RS232 til Wifi Bridge til brug ombord: 6 trin
Billig NMEA /AIS Hub - RS232 til Wifi Bridge til brug ombord: Opdater 9. januar 2021 - Tilføjet ekstra TCP -forbindelse og genbrug sidste forbindelse, hvis flere klienter opretter Opdatering 13. december 2020 - Tilføjet ingen konfigurationsversion af koden til både med eksisterende routere Introduktion Denne NMEA / AIS RS232 til WiFi -bro er
LoRa Messenger til to enheder til distancer Op til 8 km: 7 trin
LoRa Messenger til to enheder til afstande Op til 8 km: Tilslut projektet til din bærbare computer eller telefon, og chat derefter mellem enhederne uden internet eller SMS ved hjælp af bare LoRa.Hey, hvad sker der gutter? Akarsh her fra CETech. I dag skal vi lave et projekt, der kan forbindes til din smartphone eller en hvilken som helst
1A til 40A nuværende BOOST -konverter til op til 1000W DC -motor: 3 trin
1A til 40A Current BOOST-konverter til op til 1000W DC-motor: Hej! I denne video lærer du, hvordan du laver et strømforstærkerkredsløb til dine høj ampere DC-motorer op til 1000W og 40 ampere med transistorer og en center-tap-transformer. Selvom, strømmen ved udgangen er meget høj, men spændingen bliver r
Overbevis dig selv om bare at bruge en 12V-til-AC-line inverter til LED-lysstrenge i stedet for at genoprette dem til 12V .: 3 trin
Overbevis dig selv om bare at bruge en 12V-til-AC-line inverter til LED-lysstrenge i stedet for at genoprette dem til 12V .: Min plan var enkel. Jeg ville skære en væg-drevet LED-lysstreng i stykker og derefter genkoble den til at køre 12 volt. Alternativet var at bruge en strømomformer, men vi ved alle, at de er frygtelig ineffektive, ikke? Ret? Eller er de det?
12v til USB Adapter 12v til 5v Transformer (fantastisk til biler): 6 trin
12v til USB Adapter 12v til 5v Transformer (fantastisk til biler): Dette viser dig, hvordan du laver en 12v til USB (5v) adapter. Den mest oplagte anvendelse af dette er til 12v biladaptere, men hvor som helst du har 12v kan du bruge det! Hvis du har brug for 5v til andet end USB, skal du blot springe trinene om tilføjelse af USB -porte over