Sisällysluettelo:
- Vaihe 1: Fritzing Scheme
- Vaihe 2: Normalisoitu tietokanta
- Vaihe 3: Rekisteröi LoRa -moduulisi
- Vaihe 4: Koodi
- Vaihe 5: Rakenna rakenteet
Video: Seurantamoduuli pyöräilijöille: 5 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
Tämä pyöräilijöille tarkoitettu seurantamoduuli on moduuli, joka tunnistaa automaattisesti kaatumiset kilpailussa ja joka havaitsee mekaanisen vian koskettamalla kosketusanturia. Kun jokin näistä tapahtumista tapahtuu, moduuli lähettää tapahtuman vadelmapiran tietokantaan LoRan kautta. Tämä tapahtuma näytetään nestekidenäytöllä ja verkkosivustolla. Voit myös etsiä verkkosivustolta tiettyä pyöräilykilpailua tapahtumien kanssa ja lisätä pyöräilykilpailuja tai pyöräilijöitä tietokantaan. Tein tämän projektin, koska olen erittäin kiinnostunut pyöräilystä ja IOT: sta, joten näiden kahden aiheen yhdistäminen oli minulle erittäin jännittävää.
Ennen kuin voit tehdä seurantamoduulin pyöräilijöille, sinun on kerättävä materiaalisi. Löydät työkalut ja tarvikkeet alla olevista luetteloista tai voit ladata BOM (Build Of Materials).
Tarvikkeet:
- pleksilasi (56 mm x 85 mm)
- 10 X 2M pultit 10 mm ja mutterit
- 10 X 3M pultit 10 mm ja mutterit
- 2 x 3M pultti 50 mm ja mutterit
- PLA-filamentti 3D-tulostukseen nestekidenäytöllesi
- kuumuus kutistuu
- Uros -naaraskaapelit
- Peruspiirilevy
- Urosotsikot
- Raspberry Pi 3b+
- 16 Gt: n SD-kortti
- Sparkfun 4X20 LCD
- Kapasitiivinen kosketusanturi
- Summeri
- 3-akselinen kiihdytin + gyro-mittari
- GPS -moduuli
- SODAQ Mbili -levy
- LoRa WAN -moduuli
- 3,7 V 1000 mAh akku
- Raspberry Pi 3b+ -virtalähde
Työkalut:
- Juotospurkki
- Juotin
- Pihdit
- Ruuvimeisselit
- Palapeli
- Porakone
- 2,5 ja 3,5 poraa
- Sytytin / kuumailmapistooli
Jos sinun on ostettava kaikki tarvikkeet, tarvitset 541,67 euron budjetin. Tämä projekti on erittäin kallis, koska käytin LoRa rappid -kehityspakettia, joka maksaa 299 euroa (minulla oli mahdollisuus käyttää tätä sarjaa koulustani). Voit aina käyttää tavallista Arduinoa ja säästää paljon rahaa, mutta ohjelmat ovat silloin erilaisia.
Vaihe 1: Fritzing Scheme
Ensimmäinen askel on rakentaa piirit. Tätä projektia varten meillä on 2 sähköpiiriä, toisessa Raspberry Pi ja toisessa SADAQ Mbili -kortti. Aloitamme Raspberry Pi -piirillä.
Raspberry Pi Fritzing -kaavio:
Raspberry Pi -järjestelmä on melko yksinkertainen, ainoa asia, jonka yhdistämme Pi: hen, on 4X20 Sparkfun LCD -näyttö. Näyttö toimii sarjaliikenteen, SPI: n tai I2C: n kanssa. Käyttämäsi viestintäprotokolla on sinun valintasi. Käytin SPI -protokollaa, koska se on hyvin yksinkertainen. Jos käytät SPI: tä kuten minä, tarvitset seuraavat yhteydet:
- 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
Fritzing -mallissa näet, että LCD -näyttö on 2X16 -näyttö. Tämä johtuu siitä, että en löytänyt 4X20 -nestekidenäytettä. Kaikki liitännät ovat kuitenkin joitain, joten sillä ei ole väliä.
SODAQ Mbili Fritzing -ohjelma:
Yhdistämme 4 elektronista komponenttia SODAQ Mbili -korttiin, joten tämä sähköjärjestelmä on myös hyvin yksinkertainen. Aloitamme liittämällä Capactive touch -anturin. Tämä anturien OUT-nasta on KORKEA, kun anturia kosketetaan, ja muutoin MATALA. Tämä tarkoittaa, että OUT-pin on digitaalinen lähtö, jonka voimme liittää Mbili-kortin digitaalituloon. Liitännät ovat seuraavat:
- OUT -kosketusanturi D5 Mbili
- VCC -kosketusanturi 3.3V Mbili
- GND Kosketusanturi GND Mbili
Toinen komponentti on Triple acces + gyrosensori. Käytin GY-521-korttia, joka käyttää I2C-protokollaa kommunikoidakseen Mbili-levyn kanssa. Huomaa, että GY-521-kortin AD0-nasta on liitettävä Mbili-kortin VCC: hen! Tämä johtuu siitä, että Mbili-kortilla on kello, jolla on sama I2C-osoite kuin GY-521: llä. Yhdistämällä AD0-nastainen VCC muutamme GY-521: n I2C-osoitteen. Liitännät ovat seuraavat:
- 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
Yhdistämme sen jälkeen summerin. Käytän tavallista summeria, joka antaa äänen, kun virta on. Tämä tarkoittaa, että voimme vain liittää summerin Mbili -levyn digitaaliseen nastaan. Liitännät ovat seuraavat:
- + Summeri D4 Mbili
- - summeri GND Mbili
Viimeisenä mutta ei vähäisimpänä, yhdistämme GPS -moduulin. GPS -moduuli kommunikoi RX: n ja TX: n kautta. Liitännät ovat seuraavat:
- VCC GPS 3.3V Mbili
- GND GPS GND Mbili
- TX GPS RX Mbili
- RX GPS TX Mbili
Vaihe 2: Normalisoitu tietokanta
Toinen vaihe on suunnitella normalisoitu tietokanta. Olen suunnitellut ERD: n MySQL: ssä. Näet, että tietokantani on kirjoitettu hollannin kielellä, selitän taulukot täällä.
Taulukko 'ploeg':
Tämä taulukko on pyöräilykerhojen pöytä. Se sisältää pyöräilykerhon tunnuksen ja pyöräilykerhon nimen.
Taulukko 'renners':
Tämä taulukko on pöytä pyöräilijöille. Jokaisella pyöräilijällä on LoRaID, joka on myös taulukon ensisijainen avain. Heillä on myös sukunimi, etunimi, alkuperämaa ja pyöräilykerhon tunnus, joka on linkitetty pyöräilyklubipöytään.
Taulukko 'plaatsen':
Tämä taulukko on taulukko, joka tallentaa Belgian paikat, joissa pyöräilykilpailu voidaan järjestää. Se sisältää kaupungin nimen (joka on ensisijainen avain) ja maakunnan, jossa kaupunki sijaitsee.
Taulukko 'wedstrijden':
Tämä taulukko tallentaa kaikki pyöräilykilpailut. Taulukon ensisijainen avain on tunnus. Taulukko sisältää myös pyöräilykilpailun nimen, kilpailukaupungin, joka liittyy paikataulukkoon, kilpailun matkan, pyöräilijöiden luokan ja kilpailupäivän.
Taulukko 'gebeurtenissen':
Tämä taulukko tallentaa kaikki tapahtumat. Tämä tarkoittaa, että kun pyöräilijä joutuu kolariin tai hänellä on mekaaninen vika, tapahtuma tallennetaan tähän taulukkoon. Taulukon ensisijainen avain on tunnus. Taulukko sisältää myös tapahtuman päivämäärän, sijainnin leveysasteen, sijainnin pituuden, pyöräilijän LoRaID -tunnuksen ja tapahtuman tyypin (kaatuminen tai mekaaninen vika).
Taulukko 'wedstrijdrenner':
Tämä taulukko on taulukko, jota tarvitaan monien ja monien suhteisiin.
Vaihe 3: Rekisteröi LoRa -moduulisi
Ennen kuin voit aloittaa koodin käytön, sinun on rekisteröitävä LoRa -moduulisi LoRa -yhdyskäytävään. Käytin Belgiassa Proximus -nimistä teleyritystä, joka järjestää viestinnän LoRa -moduulilleni. Tiedot, jotka lähetän LoRa -solmuni kanssa, kerätään verkkosivustolle AllThingsTalkista. Jos haluat myös käyttää AllThingsTalk -sovellusliittymää tietojen keräämiseen, voit rekisteröityä täällä.
Kun olet rekisteröitynyt AllThingsTalk -palveluun, sinun on rekisteröitävä LoRa -solmusi. Voit tehdä tämän noudattamalla näitä ohjeita tai katsomalla yllä olevaa kuvaa.
- Siirry päävalikon Laitteet -kohtaan
- Napsauta 'Uusi laite'
- Valitse LoRa -solmu
- Täytä kaikki avaimet.
Nyt olet valmis! Kaikki LoRa -solmun kanssa lähettämäsi tiedot näkyvät AllThingsTalk Makerissa. Jos sinulla on ongelmia rekisteröinnin kanssa, voit aina tutustua AllThingsTalk -asiakirjoihin.
Vaihe 4: Koodi
Tätä projektia varten tarvitsemme viisi koodauskieltä: HTML, CSS, Java Script, Python (Flask) ja Arduino -kieli. Ensin selitän Arduino -ohjelman.
Arduino -ohjelma:
Ohjelman alussa julistan joitain globaaleja muuttujia. Näet, että käytän SoftwareSerialia yhteyden muodostamiseen GPS -laitteeni kanssa. Tämä johtuu siitä, että Mbili -kortissa on vain 2 sarjaporttia. Voit liittää GPS: n Serial0: een, mutta et voi sitten käyttää Arduino -päätelaitetta virheenkorjaukseen. Tästä syystä käytän SoftwareSerialia.
Yleisten muuttujien jälkeen ilmoitan joitakin toimintoja, jotka helpottavat ohjelman lukemista. He lukevat GPS -coördinaatit, antavat summerin äänen, lähettävät arvoja LoRan kautta,…
Kolmas lohko on asennuslohko. Tämä lohko on ohjelman alku, joka asettaa nastat, sarjaliikenteen ja I2C -tiedonsiirron.
Asennuslohkon jälkeen tulee pääohjelma. Tämän pääsilmukan alussa tarkistan, onko kosketusanturi aktiivinen. Jos näin on, kuulen summerin, haen GPS -tiedot ja lähetän kaikki arvot LoRan tai Bluetoothin kautta Raspberry PI: lle. Kosketusanturin jälkeen luin kiihtyvyysmittarin arvot. Lasken kaavan avulla X- ja Y -akselin tarkan kulman. Jos nämä arvot ovat liian suuria, voimme päätellä, että pyöräilijä kaatui. Kun onnettomuus tapahtuu, annan summerin äänen uudelleen, haen GPS -tiedot ja lähetän kaikki arvot LoRan tai Bluetoothin kautta Raspberry PI: lle.
Ajattelet luultavasti: "Miksi käytät bluetoothia ja LoRaa?". Tämä johtuu siitä, että minulla oli joitain ongelmia käyttämäni LoRa -moduulin lisenssin kanssa. Joten jotta ohjelma toimisi demoillani, minun piti käyttää Bluetoothia jonkin aikaa.
2. Takapää:
Takaosa on hieman monimutkainen. Käytän Flask -reittiä reiteille, jotka ovat käyttöliittymän käytettävissä, päivitän socketion avulla joitain käyttöliittymän sivuja automaattisesti, käytän GPIO -nastoja viestien näyttämiseen nestekidenäytöllä ja viestien vastaanottamiseen Bluetoothin kautta (ei tarvita, jos käytät LoRa) ja minä käytämme Threadingia ja ajastimia AllThinksTalk API: n säännölliseen lukemiseen ja pullo -palvelimen käynnistämiseen.
Käytän myös SQL -tietokantaa kaikkien saapuvien kaatumisten tallentamiseen, pyöräilijöiden henkilökohtaisten tietojen ja kilpailutietojen lukemiseen. Tämä tietokanta on yhdistetty taustaosaan ja toimii myös Raspberry Pi: llä. Käytän luokkaa "Database.py" vuorovaikutuksessa tietokannan kanssa.
Kuten Fritzing -järjestelmästä tiedät, lcd on yhdistetty Raspberry Pi -laitteeseen SPI -protokollan kautta. Jotta siitä olisi helpompaa, kirjoitin luokan LCD_4_20_SPI.py. Tällä luokalla voit muuttaa kontrastia, vaihtaa taustavalon väriä, kirjoittaa viestejä näytölle,…. Jos haluat käyttää Bluetoothia, voit käyttää SerialRaspberry.py -luokkaa. Tämä luokka hallitsee Bluetooth -moduulin ja Raspberry Pi: n välistä sarjaliikennettä. Ainoa asia, joka sinun tarvitsee tehdä, on liittää Bluetooth -moduuli Raspberry Pi -laitteeseen yhdistämällä RX TX -laitteeseen ja päinvastoin.
Käyttöliittymän reitit on kirjoitettu @app.route -säännöllä. Täällä voit luoda oman mukautetun reitin tietojen lisäämiseksi tai hakemiseksi tietokantaan. Varmista, että sinulla on aina vastaus reitin lopussa. Palautan aina JSON -objektin käyttöliittymään, vaikka tapahtuisi virhe. Voit käyttää muuttujaa URL -osoitteessa asettamalla muuttujan ympärille.
Käytän socketioa verkkosivulle kilpailun kaatumisten kanssa. Kun Raspberry Pi saa kaatumisen, lähetän viestin käyttöliittymään socketion kautta. Käyttöliittymä tietää sitten, että heidän on luettava tietokanta uudelleen, koska tapahtui uusi kaatuminen.
Näet, että koodissani LoRa -viestintä on asetettu komentoon. Jos haluat käyttää LoRaa, sinun on käynnistettävä ajastin, joka toistaa lähettää pyynnön AllThinksTalk API: lle. Tästä sovellusliittymästä saat tietyn LoRa -solmun lähettämät anturiarvot (GPS, aika, kaatumistyyppi). Näiden arvojen avulla voit lisätä kaatumisen tietokantaan.
3. frondin pää:
Päätyosa koostuu 3 kielestä. HTML verkkosivuston tekstille, CSS verkkosivuston merkinnälle ja JavaScript kommunikoinnille taustapään kanssa. Minulla on 4 verkkosivua tälle projektille:
- Index.html, josta löydät kaikki pyöräilykilpailut.
- Sivu, jossa on kaikki kaatumiset ja mekaaniset rikkoutumiset mausteiseen kilpailuun.
- Sivu, jolla voit lisätä luetteloita tietokantaan ja muokata heidän tiimiään.
- Sivu, jossa voit lisätä uuden rodun kaikkien osallistujiensa kanssa tietokantaan.
Kuinka suunnittelet ne, on täysin sinun tehtäväsi. Voit saada inspiraatiota verkkosivustoltani, jos haluat. Valitettavasti verkkosivuni on tehty hollannin kielellä, olen pahoillani siitä.
Minulla on erikseen CSS -tiedosto ja JavaScript -tiedosto jokaiselle sivulle. Jokainen JavaScript -tiedosto käyttää noutoa tietojen hakemiseksi tietokannasta taustapään kautta. Kun komentosarja vastaanottaa tiedot, html muuttuu dynaamisesti. Sivulta, josta löydät kaatumiset ja mekaaniset viat, löydät kartan, jossa kaikki tapahtumat tapahtuivat. Näytin tämän kartan esitteellä.
Voit katsoa kaikki koodini täällä Githubissani.
Vaihe 5: Rakenna rakenteet
Ennen kuin voimme aloittaa rakentamisen, varmista, että sinulla on kaikki materiaalit BOM -tiedostosta tai Työkalut ja tarvikkeet -sivulta.
Raspberry Pi + LCD
Aloitamme Raspberry Pi -kotelon kanssa. Voit myös tulostaa kotelon 3D-muodossa, tämä oli myös ensimmäinen ajatukseni. Mutta koska määräaikani oli lähestymässä, päätin tehdä yksinkertaisen tapauksen. Otin vakiokotelon Raspberry Pi: stä ja porasin koteloon reiän LCD -näytön johtoja varten. Voit tehdä tämän noudattamalla seuraavia yksinkertaisia ohjeita:
- Poraa reikä kotelon kanteen. Tein tämän 7 mm: n poralla kannen sivussa. Näet tämän yllä olevassa kuvassa.
- Ota johdot LCD -näytöstä ja liu'uta pää, joka kutistuu johtimien päälle.
- Käytä kevyempää tai kuumailmapistoolia, jotta pää kutistuu.
- Vedä johdot pää kutistettuna kotelon reiän läpi ja liitä ne takaisin nestekidenäyttöön.
Nyt kun olet valmis Raspberry Pi -kotelon kanssa, voit aloittaa nestekidenäytön kotelosta. 3D-tulostin LCD-näytön kotelon, koska löysin kotelon verkossa tästä linkistä. Minun piti vain muuttaa kotelon korkeutta. Kun piirustus on mielestäsi hyvä, voit viedä tiedostot ja aloittaa tulostuksen. Jos et tiedä, miten 3D-tulostetaan, voit seurata tätä ohjeistusta 3D-tulostuksesta fusion 360: n avulla.
SODAQ MBili -rakenne
En todellakaan tehnyt koteloa SODAQ Mbili -levylle. Asensin komponentit plexi -lasille ilman koteloa rakennuksen ympärille. Jos haluat tehdä myös tämän, voit tehdä seuraavat toimet:
- Kirjoita pleksi pois SODAQ Mbili -levyn mitoilla. Mitat: 85 x 56 mm
- Leikkaa pleksilasi palapelillä.
- Aseta elektroniset komponentit pleksilasille ja merkitse reiät lyijykynällä.
- Poraa juuri allekirjoitetut reiät ja vastareikien reiät 3,5 mm: n poralla.
- Asenna kaikki elektroniset komponentit pleksilasiin 3M 10mm ruuveilla ja muttereilla.
- Viimeinen vaihe on asentaa pleksilasi Mbili -levyn yläpuolelle. Voit tehdä tämän pysäytyksillä, mutta käytin kahta 3M 50 mm ruuvia ja 8 3M mutteria plexiglassin kiinnittämiseen levyn yläpuolelle.
Suositeltava:
DIY Raspberry Pi Downloadbox: 4 vaihetta
DIY Raspberry Pi Downloadbox: Löydätkö usein itsesi lataamasta suuria tiedostoja, kuten elokuvia, torrentteja, kursseja, TV -sarjoja jne., Niin tulet oikeaan paikkaan. Tässä Instructable -ohjelmassa muuttaisimme Raspberry Pi zero -laitteemme latauskoneeksi. Joka voi ladata minkä tahansa
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): 8 vaihetta
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): ultraäänikaiuttimet L298N DC-naarasadapterin virtalähde urospuolisella dc-nastalla ja analogiset portit koodin muuntamiseksi (C ++)
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: 3 vaihetta
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: Seuraava opas auttaa sinua saamaan live-HD-videovirtoja lähes mistä tahansa DJI-dronesta. FlytOS -mobiilisovelluksen ja FlytNow -verkkosovelluksen avulla voit aloittaa videon suoratoiston droonilta
Pultti - DIY -langaton latauskello (6 vaihetta): 6 vaihetta (kuvilla)
Pultti - DIY -langaton latausyökello (6 vaihetta): Induktiiviset lataukset (tunnetaan myös nimellä langaton lataus tai langaton lataus) on langattoman voimansiirron tyyppi. Se käyttää sähkömagneettista induktiota sähkön tuottamiseen kannettaville laitteille. Yleisin sovellus on langaton Qi -latauslaite
4 vaihetta akun sisäisen vastuksen mittaamiseksi: 4 vaihetta
4 vaihetta akun sisäisen vastuksen mittaamiseksi: Tässä on 4 yksinkertaista vaihetta, joiden avulla voit mitata taikinan sisäisen vastuksen