INHOUDSOPGAWE:

Opsporingsmodule vir fietsryers: 5 stappe
Opsporingsmodule vir fietsryers: 5 stappe

Video: Opsporingsmodule vir fietsryers: 5 stappe

Video: Opsporingsmodule vir fietsryers: 5 stappe
Video: Растяжка на все тело за 20 минут. Стретчинг для начинающих 2024, Julie
Anonim
Opsporingsmodule vir fietsryers
Opsporingsmodule vir fietsryers

Hierdie opsporingsmodule vir fietsryers is 'n module wat ineenstortings in 'n wedloop outomaties opspoor en 'n meganiese onderbreking opspoor deur aan 'n raaksensor te raak. As een van hierdie gebeurtenisse gebeur, stuur die module die gebeurtenis via 'n framboos -pi na 'n databasis op LoRa. Hierdie geleentheid word op 'n LCD -skerm en op 'n webwerf vertoon. U kan ook op die webwerf 'n spesifieke fietswedren met die byeenkomste soek en fietswedrenne of fietsryers by die databasis voeg. Ek het hierdie projek gemaak omdat ek baie geïnteresseerd was in fietsry en IOT, en die kombinasie van hierdie twee vakke was vir my baie opwindend.

Voordat u 'n opsporingsmodule vir fietsryers kan maak, moet u u materiaal versamel. U kan die gereedskap en voorrade in die onderstaande lyste vind, of u kan die stuklijst (boumateriaal) aflaai.

Benodighede:

  • plexiglas (56 mm x 85 mm)
  • 10 X 2M boute 10 mm en moere
  • 10 X 3M boute 10 mm en moere
  • 2 X 3M boute 50 mm en moere
  • PLA-filament om u LCD-koffer 3D te druk
  • hitte krimp
  • Manlik tot vroulik kabels
  • 'N Basiese PCB
  • Manlike opskrifte
  • 'N Framboos Pi 3b+
  • 'N 16 GB SD-kaart
  • 'N Vonkfunksionele 4X20 LCD
  • 'N Kapasitiewe aanraaksensor
  • 'N Gonser
  • 'N Drie-as accelero + gyro meter
  • 'N GPS -module
  • 'N SODAQ Mbili -bord
  • 'N LoRa WAN -module
  • 'N 3.7V 1000mAh battery
  • 'N Raspberry Pi 3b+ kragtoevoer

Gereedskap:

  • Soldeer blik
  • Soldeerbout
  • Tange
  • Skroewedraaiers
  • Legkaart
  • Boormasjien
  • 2.5 en 3.5 bore
  • Aansteker / warmluggeweer

As u al die benodigdhede wil koop, benodig u 'n begroting van € 541,67. Hierdie projek is baie duur, want ek het 'n LoRa rappid -ontwikkelingsstel gebruik wat € 299 kos (ek het die kans gehad om hierdie kit van my skool af te gebruik). U kan altyd 'n normale Arduino gebruik en baie geld bespaar, maar die programme sal dan anders wees.

Stap 1: Fritzing -skema

Fritzing -skema
Fritzing -skema
Fritzing -skema
Fritzing -skema

Die eerste stap is om die stroombane te bou. Vir hierdie projek het ons 2 elektriese stroombane, een met 'n Framboos Pi en een met 'n SADAQ Mbili -bord. Ons begin met die Raspberry Pi -kring.

Framboos Pi Fritzing -skema:

Die Raspberry Pi -skema is redelik eenvoudig; die enigste ding wat ons met die Pi verbind, is 'n 4X20 Sparkfun LCD -skerm. Die skerm werk met seriële kommunikasie, SPI of I2C. Die kommunikasieprotokol wat u gebruik, is aan u. Ek het die SPI -protokol gebruik omdat dit baie eenvoudig is. As u SPI soos ek gebruik, benodig u die volgende verbindings:

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

Op die Fritzing -skema sal u sien dat die LCD -skerm 'n 2X16 -skerm is. Dit is omdat ek nie 'n 4X20 LCD op frizting gevind het nie. Al die verbindings is egter 'n paar, so dit maak nie regtig saak nie.

SODAQ Mbili Fritzing -skema:

Ons verbind 4 elektroniese komponente met die SODAQ Mbili -bord, so hierdie elektriese skema is ook baie eenvoudig. Ons sal begin met die koppeling van die Capactive touch sensor. Hierdie OUT-pen van die sensors sal HOOG wees as die sensor aangeraak word, en andersins LAAG. Dit beteken dat die OUT-pin 'n digitale uitset is wat ons kan koppel met 'n digitale ingang van die Mbili-bord. Die verbindings is soos volg:

  • OUT raaksensor D5 Mbili
  • VCC -aanraaksensor 3.3V Mbili
  • GND Touch sensor GND Mbili

Die tweede komponent is die Triple acces + gyrosensor. Ek het die GY-521-bord gebruik wat die I2C-protokol gebruik om met die Mbili-bord te kommunikeer. Let op dat die AD0-pen van die GY-521-bord gekoppel moet wees aan die VCC van die Mbili-kaart! Dit is omdat die Mbili-bord 'n horlosie het met dieselfde I2C-adres soos die GY-521. Deur die AD0-pin aan die VCC te koppel verander ons die I2C adres van die GY-521. Die verbindings is soos volg:

  • 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

Daarna sal ons die Buzzer verbind. Ek gebruik die standaard gonser wat 'n geluid maak as daar 'n stroom is. Dit beteken dat ons die zoemer net aan 'n digitale pen van die Mbili -bord kan koppel. Die verbindings is soos volg:

  • + Gonser D4 Mbili
  • - Gonser GND Mbili

Laastens, maar nie die minste nie, verbind ons die GPS -module. Die GPS -module kommunikeer via RX en TX. Die verbindings is soos volg:

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

Stap 2: Genormaliseerde databasis

Genormaliseerde databasis
Genormaliseerde databasis

Die tweede stap is om 'n genormaliseerde databasis te ontwerp. Ek het my ERD in Mysql ontwerp. U sal sien dat my databasis in die Nederlandse taal geskryf is; ek sal die tabelle hier verduidelik.

Tabel 'ploeg':

Hierdie tafel is 'n tafel vir die fietsry klubs. Dit bevat 'n fietsklub -ID en 'n fietsryklubnaam.

Tabel 'renners':

Hierdie tabel is 'n tabel vir die fietsryers. Elke fietsryer het 'n LoRaID wat ook die primêre sleutel van die tabel is. Hulle het ook 'n van, voornaam, land van herkoms en 'n fietsryklub -ID wat aan die tafel van die fietsryklub gekoppel is.

Tabel 'plekke':

Hierdie tabel is 'n tafel wat die plekke in België waar 'n fietswedren kan plaasvind, stoor. Dit bevat die naam van die stad (wat die primêre sleutel is) en die provinsie waar die stad geleë is.

Tabel 'wedstryde':

Hierdie tafel stoor al die fietswedrenne. Die primêre sleutel van die tabel is 'n ID. Die tabel bevat ook die naam van die fietswedren, die stad van die wedloop wat gekoppel is aan die plekke tafel, die afstand van die wedloop, die kategorie van die fietsryers en die datum van die wedren.

Tabel 'gebeurtenissen':

Hierdie tabelle stoor alle gebeure wat plaasvind. Dit beteken dat die gebeurtenis in hierdie tabel gestoor word as 'n fietsryer in 'n ongeluk betrokke is of 'n meganiese onderbreking het. Die primêre sleutel van die tabel is 'n ID. Die tabel bevat ook die datatyd van die gebeurtenis, die breedtegraad van die posisie, die lengte van die posisie, die LoRaID van die fietsryer en die tipe gebeurtenis (ongeluk of meganiese ineenstorting).

Tabel 'wedstrijdrenner':

Hierdie tabel is 'n tabel wat nodig is vir 'n baie tot baie verhouding.

Stap 3: Registreer u LoRa -module

Registreer u LoRa -module
Registreer u LoRa -module

Voordat u met die kode kan begin, moet u u LoRa -module in 'n LoRa -gateway registreer. Ek het 'n telekommunikasiemaatskappy in België genaamd 'Proximus' gebruik wat die kommunikasie vir my LoRa -module reël. Die data wat ek met my LoRa -knoop stuur, versamel op die webwerf van AllThingsTalk. As u ook die AllThingsTalk API wil gebruik om u data te versamel, kan u hier registreer.

Nadat u op AllThingsTalk geregistreer het, moet u u LoRa -knoop registreer. Om dit te kan doen, kan u hierdie stappe volg, of u kan op die prent hierbo kyk.

  1. Gaan na die 'Toestelle' in die hoofkieslys
  2. Klik op 'Nuwe toestel'
  3. Kies u LoRa -knoop
  4. Vul al die sleutels in.

Nou is jy klaar! Al die data wat u met u LoRa -knoop stuur, sal in u AllThingsTalk -vervaardiger verskyn. As u probleme ondervind met die registrasie, kan u altyd die AllThingsTalk -dokumente raadpleeg.

Stap 4: Die kode

Die kode
Die kode
Die kode
Die kode
Die kode
Die kode
Die kode
Die kode

Vir hierdie projek benodig ons 5 koderingstale: HTML, CSS, Java Script, Python (Flask) en die Arduino -taal. Eerstens sal ek die Arduino -program verduidelik.

Die Arduino -program:

In die begin van die program verklaar ek 'n paar globale veranderlikes. U sal sien dat ek SoftwareSerial gebruik vir die verbinding met my GPS. Dit is omdat die Mbili -bord slegs 2 seriële poorte het. U kan die GPS aan Serial0 koppel, maar u kan dan nie die Arduino -terminale gebruik vir ontfouting nie. Dit is die rede waarom ek 'n SoftwareSerial gebruik.

Na die Global Variables verklaar ek 'n paar funksies wat dit maklik maak om die program te lees. Hulle lees die GPS -koördinate uit, laat die gonser klink, stuur waardes via LoRa, …

Die derde blok is die opstelblok. Hierdie blok is die begin van die program wat die penne, seriële kommunikasie en die I2C -kommunikasie opstel.

Na die opstelblok kom die hoofprogram. In die begin van hierdie hooflus, kyk ek of die aanraaksensor aktief is. As dit die geval is, laat ek die gonser hoor, kry ek die GPS -data en stuur ek al die waardes via LoRa of Bluetooth na die Raspberry PI. Na die aanraaksensor lees ek die waardes van die versnellingsmeter. Met 'n formule bereken ek die presiese hoek van die X- en Y -as. As hierdie waardes te groot is, kan ons tot die gevolgtrekking kom dat die fietsryer neergestort het. As 'n ongeluk gebeur, laat ek weer die gonser hoor, kry die GPS -data en stuur al die waardes via LoRa of Bluetooth na die Raspberry PI.

U dink waarskynlik: 'Waarom gebruik u bluetooth en LoRa?'. Dit is omdat ek probleme ondervind het met die lisensie van die LoRa -module wat ek gebruik het. Om die program vir my demo's te laat werk, moes ek 'n rukkie Bluetooth gebruik.

2. Die agterkant:

Die agterkant is 'n bietjie kompleks. Ek gebruik Flask vir my roetes wat vir die voorkant toeganklik is, ek gebruik socketio om sommige van die voorkantblaaie outomaties op te dateer, ek gebruik die GPIO -penne om boodskappe op 'n LCD -skerm te wys en boodskappe via Bluetooth te ontvang (nie nodig as u dit gebruik nie LoRa) en ek gebruik Threading and Timers om gereeld die AllThinksTalk API te lees en die kolfbediener te begin.

Ek gebruik ook die SQL -databasis om al die inkomende ongelukke op te slaan, die persoonlike data van die fietsryers en die wedrenne te lees. Hierdie databasis is aan die agterkant gekoppel en werk ook op die Raspberry Pi. Ek gebruik 'n klas 'Database.py' om met die databasis te kommunikeer.

Soos u van die Fritzing -skema weet, is die lcd via die SPI -protokol aan die Raspberry Pi gekoppel. Om dit makliker te maak, het ek 'n klas 'LCD_4_20_SPI.py' geskryf. Met hierdie klas kan u die kontras verander, die kleur van die agtergrond verander, boodskappe op die skerm skryf, … As u Bluetooth wil gebruik, kan u die klas 'SerialRaspberry.py' gebruik. Hierdie klas reël die seriële kommunikasie tussen die Bluetooth -module en die Raspberry Pi. Die enigste ding wat u hoef te doen, is om 'n Bluetooth -module aan die Raspberry Pi te koppel deur die RX aan die TX en virsa versa te koppel.

Die roetes vir die voorkant is geskryf met die @app.route -reël. Hier kan u u eie aangepaste roete maak om data in of uit die databasis in te voeg of te kry. Maak seker dat u altyd 'n antwoord het aan die einde van die roete. Ek stuur altyd 'n JSON -voorwerp terug na die voorkant, selfs as daar 'n fout is. U kan 'n veranderlike in die url gebruik deur rondom die veranderlike te plaas.

Ek gebruik socketio vir die webblad met die ineenstorting van 'n wedloop. As die Raspberry Pi 'n ongeluk ontvang, stuur ek 'n boodskap aan die voorkant via socketio. Die voorkant weet dan dat hulle die databasis weer moet voorlees omdat daar 'n nuwe ongeluk was.

U sal sien dat die LoRa -kommunikasie in my kode in opdrag is. As u LoRa wil gebruik, moet u 'n timer begin wat herhaaldelik 'n versoek na die AllThinksTalk API stuur. Vanuit hierdie API ontvang u die sensorwaardes (GPS, tyd, soort crash) wat deur 'n spesifieke LoRa -knoop gestuur word. U kan hierdie waardes gebruik om 'n ongeluk in die databasis in te voeg.

3. Die randkant:

Die voorkant bestaan uit 3 tale. HTML vir die webwerf -teks, CSS vir die webwerf -opmerking en JavaScript vir die kommunikasie met die agterkant. Ek het 4 webwerfbladsye vir hierdie projek:

  • Die index.html waar u al die fietswedrenne kan vind.
  • 'N Bladsy met al die ongelukke en meganiese ineenstortings vir 'n besondere wedloop.
  • 'N Bladsy waar u siliste by die databasis kan voeg en hul span kan wysig.
  • 'N Bladsy waar u 'n nuwe wedren met al die deelnemers by die databasis kan voeg.

Hoe u dit ontwerp, is heeltemal aan u. U kan inspirasie op my webwerf kry as u wil. Ongelukkig is my webwerf in die Nederlandse taal gemaak, ek is jammer daarvoor.

Ek het 'n afsonderlike CSS -lêer en JavaScript -lêer vir elke bladsy. Elke JavaScript -lêer gebruik haal om die data uit die databasis via die agterkant te kry. As die script die data ontvang, verander die html dinamies. Op die bladsy waar u die ongelukke en meganiese ineenstortings kan vind, vind u 'n kaart waar al die gebeure plaasgevind het. Ek het die pamflet gebruik om hierdie kaart te wys.

U kan na al my kode hier op my Github kyk.

Stap 5: Bou die konstruksies

Bou die konstruksies
Bou die konstruksies
Bou die konstruksies
Bou die konstruksies
Bou die konstruksies
Bou die konstruksies

Voordat ons met die konstruksie kan begin, moet u seker maak dat u al die materiaal van die stuklijst of die 'Tools + Supplies' -bladsy het.

Framboos Pi + LCD

Ons begin met die saak vir die Raspberry Pi. U kan 'n saak 3D-druk, dit was ook my eerste idee. Maar omdat my spertyd baie naby kom, het ek besluit om 'n eenvoudige saak te maak. Ek het die standaardkas van die Raspberry Pi geneem, en ek het 'n gat in die omhulsel vir die drade van my LCD -skerm geboor. Om dit te doen, volg slegs die eenvoudige stappe:

  1. Boor 'n gaatjie in die omslag van die kas. Ek het dit gedoen met 'n 7 mm boor aan die kant van die omslag. U kan dit op die foto hierbo sien.
  2. Haal die drade van die LCD -skerm af en skuif 'n kop wat oor die drade krimp.
  3. Gebruik 'n aansteker of 'n warmluggeweer om die kop te laat krimp.
  4. Trek die drade met die kop krimp deur die gat in die omhulsel en koppel dit weer op die LCD.

Noudat u die tas vir die Raspberry Pi gereed het, kan u met die saak vir die LCD -skerm begin. Ek het die koffer vir my LCD-skerm 3D gedruk omdat ek 'n saak aanlyn op hierdie skakel gevind het. Ek moes net 'n klein verandering in die hoogte van die kas aanbring. As u dink dat u teken goed is, kan u die lêers uitvoer en begin druk. As u nie weet hoe om 3D-af te druk nie, kan u hierdie instruksie volg oor hoe om 3D-te druk met fusion 360.

SODAQ MBili konstruksie

Ek het nie regtig 'n saak gemaak vir die SODAQ Mbili -bord nie. Ek het 'n plexiglas gebruik om my komponente op te sit sonder 'n omhulsel rondom die konstruksie. As u dit ook wil doen, kan u die volgende stappe volg:

  1. Teken die plexiglas af met die dimensies van die SODAQ Mbili -bord. Die afmetings is: 85 mm x 56 mm
  2. Sny die pleksiglas met 'n figuursaag.
  3. Plaas die elektroniese komponente op die plexiglas en teken die gate af met 'n potlood.
  4. Boor die gate wat u pas afgeteken het en die gate vir die afstande met 'n boor van 3,5 mm.
  5. Monteer al die elektroniese komponente op die plexiglas met die 3M 10mm boute en moere.
  6. Die laaste stap is om die plexiglas bo die Mbili -bord te monteer. U kan dit doen met afstande, maar ek het twee 3M 50mm -boute en 8 3M -moere gebruik om die plexiglas bo die bord te monteer.

Aanbeveel: