Sisukord:
- 1. samm: Fritzeerimise skeem
- 2. etapp: normaliseeritud andmebaas
- Samm: registreerige oma LoRa moodul
- 4. samm: kood
- Samm: ehitage konstruktsioonid
Video: Jalgratturite jälgimismoodul: 5 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
See jalgratturite jälgimismoodul on moodul, mis tuvastab võistlusel automaatselt kokkujooksmised ja mis tuvastab puuteandurit puudutades mehaanilise rikke. Kui üks neist sündmustest juhtub, saadab moodul sündmuse LoRa kaudu vaarikapi andmebaasi. Seda sündmust näidatakse LCD -ekraanil ja veebisaidil. Samuti saate veebisaidilt otsida sündmustega kindlat jalgrattavõistlust ja lisada andmebaasi jalgrattavõistlusi või jalgrattureid. Tegin selle projekti, kuna olen väga huvitatud jalgrattasõidust ja IOT -st, nii et nende kahe teema ühendamine oli minu jaoks lihtsalt väga põnev.
Enne jalgratturitele jälgimismooduli tegemist peate oma materjalid kokku koguma. Tööriistad ja tarvikud leiate allolevast loendist või saate alla laadida BOM -i (Build Of Materials).
Tarvikud:
- pleksiklaas (56 mm x 85 mm)
- 10 X 2M poldid 10 mm ja mutrid
- 10 X 3M poldid 10 mm ja mutrid
- 2 x 3M poldid 50 mm ja mutrid
- PLA hõõgniit teie LCD-korpuse 3D-printimiseks
- kuumus kahaneb
- Naiste ja naiste kaablid
- Põhiline trükkplaat
- Meeste päised
- A Vaarika Pi 3b+
- 16 GB SD-kaart
- Sädelev 4X20 LCD
- Mahtuvuslik puutetundlik andur
- Sumin
- 3-teljeline kiirendus + güroskoopmõõtur
- GPS -moodul
- SODAQ Mbili plaat
- LoRa WAN moodul
- Aku on 3,7 V 1000 mAh
- Raspberry Pi 3b+ toiteallikas
Tööriistad:
- Jootekarp
- Jootekolb
- Tangid
- Kruvikeerajad
- Pusle
- Puurimismasin
- 2,5 ja 3,5 harjutust
- Kergem / kuumaõhupüstol
Kui teil on vaja osta kõik tarvikud, vajate 541,67 euro suurust eelarvet. See projekt on väga kallis, kuna kasutasin LoRa rappid arenduskomplekti, mis maksab 299 eurot (mul oli võimalus seda komplekti kasutada oma koolist). Saate alati kasutada tavalist Arduino et säästa palju raha, kuid programmid on siis erinevad.
1. samm: Fritzeerimise skeem
Esimene samm on ahelate ehitamine. Selle projekti jaoks on meil 2 elektriahelat, millest üks on Raspberry Pi ja teine SADAQ Mbili plaadiga. Alustame Raspberry Pi ringiga.
Vaarika Pi Fritzingu skeem:
Raspberry Pi skeem on üsna lihtne, ainus asi, millega Pi ühendame, on 4X20 Sparkfuni LCD -ekraan. Ekraan töötab jadakommunikatsiooni, SPI või I2C -ga. Millist suhtlusprotokolli te kasutate, on teie otsustada. Kasutasin SPI protokolli, kuna see on väga lihtne. Kui kasutate SPI -d nagu mina, vajate järgmisi ühendusi:
- 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
Fritzingu skeemil näete, et LCD -ekraan on 2X16 ekraan. Selle põhjuseks on asjaolu, et ma ei leidnud hõõrumisel 4X20 LCD -ekraani. Kuid kõik ühendused on mõned, nii et see pole tegelikult oluline.
SODAQ Mbili Fritzing skeem:
Ühendame SODAQ Mbili plaadiga 4 elektroonilist komponenti, seega on ka see elektriskeem väga lihtne. Alustame Capactive touch anduri ühendamisega. See andurite OUT-pin on anduri puudutamisel KÕRGE ja muidu LOW. See tähendab, et OUT-pin on digitaalne väljund, mille saame ühendada Mbili plaadi digitaalse sisendiga. Ühendused on järgmised:
- OUT puuteandur D5 Mbili
- VCC puuteandur 3.3V Mbili
- GND Puuteandur GND Mbili
Teine komponent on Triple acces + güroskoop. Kasutasin Mbili plaadiga suhtlemiseks GY-521 tahvlit, mis kasutab I2C protokolli. Pange tähele, et GY-521 tahvli AD0-pin tuleb ühendada Mbili tahvli VCC-ga! Seda seetõttu, et Mbili plaadil on sama I2C-aadressiga kell nagu GY-521. Ühendades AD0-pin VCC-ga, muudame GY-521 I2C aadressi. Ühendused on järgmised:
- 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
Seejärel ühendame helisignaali. Ma kasutan tavalist suminat, mis teeb voolu korral heli. See tähendab, et saame helisignaali lihtsalt ühendada Mbili plaadi digitaalse tihvtiga. Ühendused on järgmised:
- + Helisignaal D4 Mbili
- - helisignaal GND Mbili
Lõpuks ühendame GPS -mooduli. GPS -moodul suhtleb RX ja TX kaudu. Ühendused on järgmised:
- VCC GPS 3.3V Mbili
- GND GPS GND Mbili
- TX GPS RX Mbili
- RX GPS TX Mbili
2. etapp: normaliseeritud andmebaas
Teine samm on normaliseeritud andmebaasi kujundamine. Olen kujundanud oma ERD MySqlis. Näete, et minu andmebaas on kirjutatud hollandi keeles, selgitan tabeleid siin.
Tabel "ploeg":
See tabel on jalgrattaklubide laud. See sisaldab jalgrattaspordi klubi ID -d ja jalgrattaklubi nime.
Tabeli "renners":
See tabel on laud jalgratturitele. Igal jalgratturil on LoRaID, mis on ka tabeli esmane võti. Neil on ka perekonnanimi, eesnimi, päritoluriik ja jalgrattaspordi klubi tabeliga seotud jalgrattaspordi klubi ID.
Tabel "plaatsen":
See tabel on tabel, mis salvestab Belgia kohad, kus saab toimuda rattavõistlus. See sisaldab linna nime (esmane võti) ja provintsi, kus linn asub.
Tabel "wedstrijden":
See tabel salvestab kõik jalgrattavõistlused. Tabeli esmane võti on ID. Tabelis on ka jalgrattavõistluse nimi, võistluste linn, mis on seotud kohtade tabeliga, võistluse distants, jalgratturite kategooria ja võistluskuupäev.
Tabel "gebeurtenissen":
See tabel salvestab kõik toimuvad sündmused. See tähendab, et kui jalgrattur satub avariisse või tal on mehaaniline rike, salvestatakse sündmus sellesse tabelisse. Tabeli esmane võti on ID. Tabelis on ka sündmuse kuupäev ja kellaaeg, positsiooni laiuskraad, positsiooni pikkuskraad, jalgratturi LoRaID ja sündmuse tüüp (krahh või mehaaniline rike).
Tabel "wedstrijdrenner":
See tabel on tabel, mida on vaja paljude ja paljude suhete jaoks.
Samm: registreerige oma LoRa moodul
Enne koodiga alustamist peate oma LoRa mooduli LoRa lüüsis registreerima. Ma kasutasin Belgias telekommunikatsiooniettevõtet Proximus, mis korraldab minu LoRa mooduli suhtlust. Andmed, mille saadan oma LoRa sõlmega, kogutakse veebisaidilt saidilt AllThingsTalk. Kui soovite oma andmete kogumiseks kasutada ka AllThingsTalk API -d, saate siin registreeruda.
Kui olete AllThingsTalkis registreerunud, peate oma LoRa sõlme registreerima. Selleks võite järgida neid samme või vaadata ülaltoodud pilti.
- Minge peamenüüsse "Seadmed"
- Klõpsake "Uus seade"
- Valige oma LoRa sõlm
- Täitke kõik võtmed.
Nüüd olete valmis! Kõik LoRa sõlmega saadetud andmed kuvatakse teie AllThingsTalk tegijas. Kui teil on registreerimisel probleeme, võite alati tutvuda AllThingsTalki dokumentidega.
4. samm: kood
Selle projekti jaoks vajame 5 kodeerimiskeelt: HTML, CSS, Java Script, Python (Flask) ja Arduino keel. Kõigepealt selgitan Arduino programmi.
Arduino programm:
Programmi alguses kuulutan välja mõned globaalsed muutujad. Näete, et kasutan oma GPS -iga ühenduse loomiseks SoftwareSerialit. Seda seetõttu, et Mbili plaadil on ainult 2 jadaporti. Saate ühendada GPS -i Serial0 -ga, kuid siis ei saa te silumiseks kasutada Arduino terminali. See on põhjus, miks ma kasutan SoftwareSerialit.
Pärast globaalseid muutujaid kuulutan välja mõned funktsioonid, mis hõlbustavad programmi lugemist. Nad loevad ette GPS -i kaasnäidikud, panevad helisignaali, saadavad väärtusi LoRa kaudu …
Kolmas plokk on seadistusplokk. See plokk on programmi algus, mis seadistab tihvtid, jada- ja I2C -side.
Pärast seadistusplokki tuleb põhiprogramm. Selle põhiahela alguses kontrollin, kas puuteandur on aktiivne. Kui jah, siis teen helisignaali, saan GPS -andmed ja saadan kõik väärtused LoRa või Bluetoothi kaudu Raspberry PI -le. Pärast puuteandurit lugesin kiirendusmõõturi väärtused ette. Valemiga arvutan X ja Y telje täpse nurga. Kui need väärtused on liiga suured, võime järeldada, et jalgrattur kukkus alla. Kui krahh juhtub, panen uuesti helisignaali, saan GPS -andmed ja saadan kõik väärtused LoRa või Bluetoothi kaudu Raspberry PI -le.
Tõenäoliselt mõtlete: „Miks te kasutate Bluetoothi ja LoRa?”. Seda seetõttu, et mul oli probleeme kasutatud LoRa mooduli litsentsiga. Seega, et programm minu demode jaoks toimiks, pidin mõnda aega kasutama Bluetoothi.
2. Tagaots:
Tagaosa on natuke keeruline. Kasutan oma marsruudil Flaski, mis on esipaneeli jaoks juurdepääsetav, kasutan socketio -d mõnede esikülgede lehtede automaatseks värskendamiseks, GPIO -nööpnõelte abil LCD -ekraanil sõnumite kuvamiseks ja Bluetoothi kaudu sõnumite vastuvõtmiseks (pole vaja, kui kasutate LoRa) ja mina kasutan Threadingu ja taimerite abil regulaarselt AllThinksTalk API lugemist ja kolviserveri käivitamist.
Samuti kasutan SQL -andmebaasi kõigi saabuvate krahhide salvestamiseks, jalgratturite isikuandmete ja võistluste andmete lugemiseks. See andmebaas on ühendatud taustaga ja töötab ka Raspberry Pi-ga. Ma kasutan andmebaasiga suhtlemiseks klassi „Database.py”.
Nagu Fritzingi skeemist teate, on LCD ühendatud Raspberry Pi -ga SPI -protokolli kaudu. Selle lihtsamaks muutmiseks kirjutasin klassi „LCD_4_20_SPI.py”. Selle klassiga saate muuta kontrastsust, taustvalgustuse värvi, kirjutada ekraanile sõnumeid jne. Kui soovite Bluetoothi kasutada, võite kasutada klassi „SerialRaspberry.py”. See klass reguleerib Bluetooth -mooduli ja Raspberry Pi vahelist jadaühendust. Ainus, mida peate tegema, on ühendada Bluetooth -moodul Raspberry Pi -ga, ühendades RX -i TX -iga ja vastupidi.
Esiotsa marsruudid on kirjutatud reegliga @app.route. Siin saate koostada oma kohandatud marsruudi andmete sisestamiseks või andmebaasi sisestamiseks või sealt hankimiseks. Veenduge, et teil oleks marsruudi lõpus alati vastus. Tagastan JSON -objekti alati esiotsa, isegi kui ilmnes tõrge. Muutujat saab kasutada URL -is, asetades selle ümber.
Kasutan võistluse krahhide korral veebilehe jaoks socketio -d. Kui Raspberry Pi saab krahhi, saadan socketio kaudu esiotsa sõnumi. Esiosa teab siis, et nad peavad andmebaasi uuesti ette lugema, kuna juhtus uus krahh.
Näete, et minu koodis on käsk LoRa side seatud. Kui soovite kasutada LoRa -d, peate käivitama taimeri, mis korduvalt saadab taotluse AllThinksTalk API -le. Sellelt API -lt saate anduri väärtused (GPS, aeg, krahhi liik), mille saadab konkreetne LoRa sõlm. Nende väärtuste abil saate krahhi andmebaasi lisada.
3. Fronti ots:
Esikülg koosneb 3 keelest. HTML veebisaidi teksti jaoks, CSS veebisaidi märgistamiseks ja JavaScript tagaküljega suhtlemiseks. Selle projekti jaoks on mul 4 veebisaiti:
- Index.html, kust leiate kõik rattavõistlused.
- Leht, kus on kõik kokkujooksmised ja mehaanilised rikked vürtsika võistluse jaoks.
- Leht, kus saate andmebaasi lisada silindreid ja muuta nende meeskonda.
- Leht, kus saate andmebaasi lisada uue võistluse koos kõigi osalejatega.
Kuidas neid kujundada, on täielikult teie otsustada. Soovi korral saate inspiratsiooni minu veebisaidilt. Kahjuks on minu veebisait tehtud hollandi keeles, mul on sellest kahju.
Mul on iga lehe jaoks eraldi CSS -fail ja JavaScripti fail. Iga JavaScripti fail kasutab andmebaasist andmete hankimiseks tagakülje kaudu tõmbamist. Kui skript võtab andmed vastu, muutub html dünaamiliselt. Lehelt, kust leiate krahhid ja mehaanilised rikked, leiate kaardi, kus kõik sündmused toimusid. Kasutasin selle kaardi näitamiseks infolehte.
Saate vaadata kõiki minu koodi siin Githubis.
Samm: ehitage konstruktsioonid
Enne ehitustöödega alustamist veenduge, et teil on kõik materjalid, mis on pärit BOM -ist või lehelt „Tools + Supplies”.
Vaarika Pi + LCD
Alustame Raspberry Pi juhtumiga. Saate ka korpuse 3D-printida, see oli ka minu esimene idee. Aga kuna minu tähtaeg oli väga lähedal, otsustasin teha lihtsa juhtumi. Võtsin Raspberry Pi standardkorpuse ja puurisin oma LCD -ekraanilt juhtmete jaoks auku. Selleks järgige neid lihtsaid samme:
- Puurige korpuse kaane sisse auk. Ma tegin seda 7 mm puuriga kaane küljel. Seda näete ülaltoodud pildil.
- Võtke juhtmed LCD -ekraanilt ja libistage juht kaablite kohal kokku.
- Kasutage tulemasina või kuumaõhupüstolit, et pea kahaneb.
- Tõmmake juhtmed koos pea kokkutõmbumisega läbi korpuse augu ja ühendage need tagasi LCD -ekraanile.
Nüüd, kui olete Raspberry Pi ümbrisega valmis, võite alustada LCD -ekraani ümbrisega. Trükkisin oma LCD-ekraani korpuse 3D-vormingus, kuna leidsin selle lingi kaudu veebist ümbrise. Ma pidin ainult korpuse kõrgust muutma. Kui arvate, et joonistate hästi, saate failid eksportida ja printimist alustada. Kui te ei tea, kuidas 3D-printida, saate järgida seda juhendit, kuidas fusion 360 abil 3D-printida.
SODAQ MBili ehitus
Ma ei teinud tegelikult SODAQ Mbili pardale ümbrist. Ma kasutasin pleksiklaasi, et paigutada oma komponendid ilma korpuse ümber konstruktsiooni. Kui soovite ka seda teha, saate järgida neid samme.
- Logige pleksiklaas SODAQ Mbili plaadi mõõtmetega välja. Mõõdud: 85 x 56 mm
- Lõika pleksiklaas mosaiigi abil.
- Asetage elektroonilised komponendid pleksiklaasile ja märkige augud pliiatsiga maha.
- Puurige 3,5 mm puuriga augud, mille äsja maha kirjutasite, ja avad takistuste jaoks.
- Paigaldage kõik elektroonilised komponendid pleksiklaasile 3M 10 mm poltide ja mutritega.
- Viimane samm on pleksiklaasi paigaldamine Mbili plaadi kohale. Seda saab teha vaheseintega, kuid pleksiklaasi paigaldamiseks tahvli kohale kasutasin kahte 3M 50 mm poldi ja 8 3M mutrit.
Soovitan:
Atari punkkonsool beebiga 8 sammu järjestus: 7 sammu (piltidega)
Atari punkkonsool koos beebi 8-astmelise sekveneerijaga: see vaheehitus on kõik-ühes Atari punk-konsool ja beebi 8-astmeline järjestus, mida saate freesida Bantam Tools töölaua PCB-freespingis. See koosneb kahest trükkplaadist: üks on kasutajaliidese (UI) plaat ja teine on utiliit
Akustiline levitatsioon Arduino Unoga samm-sammult (8 sammu): 8 sammu
Akustiline levitatsioon Arduino Uno abil samm-sammult (8 sammu): ultraheliheli muundurid L298N DC-naissoost adapteri toiteallikas isase alalisvoolupistikuga Arduino UNOBreadboard ja analoogpordid koodi teisendamiseks (C ++)
4G/5G HD -video otseülekanne DJI droonilt madala latentsusega [3 sammu]: 3 sammu
4G/5G HD-video otseülekanne DJI droonilt madala latentsusega [3 sammu]: Järgnev juhend aitab teil saada HD-kvaliteediga otseülekandeid peaaegu igalt DJI droonilt. FlytOSi mobiilirakenduse ja veebirakenduse FlytNow abil saate alustada drooni video voogesitust
Polt - DIY juhtmeta laadimise öökell (6 sammu): 6 sammu (piltidega)
Bolt - DIY juhtmeta laadimise öökell (6 sammu): Induktiivsed laadimised (tuntud ka kui juhtmeta laadimine või juhtmeta laadimine) on traadita jõuülekande tüüp. See kasutab kaasaskantavatele seadmetele elektrit pakkumiseks elektromagnetilist induktsiooni. Kõige tavalisem rakendus on Qi traadita laadimisst
4 sammu aku sisemise takistuse mõõtmiseks: 4 sammu
4 sammu aku sisemise takistuse mõõtmiseks: Siin on 4 lihtsat sammu, mis aitavad mõõta taigna sisemist takistust