Sisällysluettelo:
- Vaihe 1: Osat ja lisävarusteet
- Vaihe 2: Osien kuvaus: Sense Hat
- Vaihe 3: Kokoonpano: Iskutallennin
- Vaihe 4: Kokoonpano: Iskutallennin auton kojelautaan
- Vaihe 5: Impact Recoder: Työskentely ja sovellukset
- Vaihe 6: Ohjelmiston kuvaus: Solmu punainen
- Vaihe 7: Solmunpunaiset perusteet
- Vaihe 8: Solmu-punainen: Virtaus _1a
- Vaihe 9: Solmu Punainen: Flow_1b
- Vaihe 10: Solmu Punainen: Flow_2a
- Vaihe 11: Solmu Punainen: Flow_2b
- Vaihe 12: Solmu Punainen; Virtaus_3
- Vaihe 13: MQTT
- Vaihe 14: MQTT: Tilaaja
- Vaihe 15: MQTT: Ominaisuuksien muokkaaminen solmunpunaisena
- Vaihe 16: Python -koodi:
- Vaihe 17: Lopullinen koodi
- Vaihe 18: Live -videon seuranta
Video: Iskutallennin ajoneuvoille: 18 vaihetta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
Impact Recorder on suunniteltu tallentamaan ajoneuvoon ajon aikana tai paikallaan pysyviä iskuja. Vaikutukset tallennetaan tietokantaan lukemien sekä videoiden/kuvien muodossa..
Vaihe 1: Osat ja lisävarusteet
(1) Raspberry Pi 3 tai parempi: vaaditaan laskentatehoa
(2) Vadelma pi sense hattu
(3) Vadelma pi -kamera / USB -kamera
(4) Muistikortti, jossa on uusin raspbian -kuva (pitäisi tukea solmun punaista, lähes jokainen uusin kuva tukee)
(5) Virtalähde vähintään 2,1 A (olen käyttänyt akkupankkia auton itsenäiseen käyttöön)
Vaihe 2: Osien kuvaus: Sense Hat
Sense HAT -laitteessa on 8 × 8 RGB-LED-matriisi, viiden painikkeen ohjaussauva ja seuraavat anturit:
- Gyroskooppi
- Kiihtyvyysmittari
- Magnetometri
- Lämpötila
- Ilmanpaine
- paine
- Kosteus
Lisätietoja sense -hatun käytöstä voi saada seuraavista linkeistä: Sense_Hat
Sense hatun sovellusliittymä on osoitteessa: Sense_hat_API
Sense-hat-ohjelmoinnin koodi on käsitelty myöhemmissä vaiheissa. Sense hat -koodi voidaan simuloida myös simulaattorilla, joka sijaitsee osoitteessa: Sense-hat simulator
Vaihe 3: Kokoonpano: Iskutallennin
- Kokoonpano on yksinkertaisempaa, koska sensori on pinottava pi: n päälle (merkityt kiinnityspultit toimitetaan sense hatulla).
- USB -kamera tai pi -kamera voidaan liittää. Opetusohjelmassa pi -kamera otetaan huomioon ja sen mukaisesti koodaus suoritetaan.
- Aseta muistikortti paikalleen ja määritä python -koodi ja solmunpunainen (kokoonpano ja koodi käsitellään lisävaiheissa)
Yllä olevassa kuvassa on pi-kamera, joka on kytketty litteällä nauhakaapelilla pi: hen
Vaihe 4: Kokoonpano: Iskutallennin auton kojelautaan
Tallentimen kiinnittämiseen olen käyttänyt kaksipuolista teippiä, etu on, että tallennin voidaan helposti siirtää eri asentoon sen mukaan, kumpi sopii autollesi parhaiten.
Toinen kamera on asennettu pystysuoraan kuvan mukaisesti käyttämällä samaa kaksipuolista teippiä, Seuraavaksi on liitettävä virtalähde (10 000 mAH: n virtapankki) ja valmis Internet -yhteys
Internet -yhteys vaaditaan MQTT -sovellukseen (MQTT: n yksityiskohdat käsitellään lisävaiheissa)
Vaihe 5: Impact Recoder: Työskentely ja sovellukset
Sense -hatusta, kiihtyvyydestä ja gyroskoopista käytetään tarkistamaan, ovatko raaka -arvot koodissa asetetun rajan yläpuolella.
Kiihtyvyysmittari: Kiihtyvyysmittari kertoo jokaiseen x-, y & z-akseliin vaikuttavan painovoiman (G-voiman) määrän, jos jokin akseli mittaa enemmän kuin 1G-voiman, kuin nopeaa liikettä voidaan havaita. (Huomaa, että alaspäin osoittavalla akselilla olisi 1 g arvo ja se on otettava huomioon vastaavasti python -koodissa).
Gyroskooppi; Gyroskooppia käytetään kulmaliikkeen mittaamiseen, eli jyrkän käännöksen aikana anturi saattaa aktivoitua (riippuu koodin asetuksesta), joten henkilö, joka pyörittää voimakkaasti ajoneuvoa, jää kiinni!
Mikä tahansa asetetun rajan aktivointi näkyy myös sense hat -LED -matriisissa "!" punaisella kiihtyvyydellä ja vihreällä gyroskoopin aktivoinnilla
Vaihe 6: Ohjelmiston kuvaus: Solmu punainen
Node-RED on virtauspohjainen ohjelmointityökalu, jonka on alun perin kehittänyt IBM: n Emerging Technology Servicesteam ja joka on nyt osa JS-säätiötä.
Lisätietoja solmun punaisesta saa seuraavan linkin kautta: node-red
Meidän tapauksessamme käytämme solmu -red seuraaviin toimintoihin
(1) Kameran toimintojen käynnistäminen ohjaussauvojen kanssa
(2) Ajoneuvovaikutusten seuraaminen ja tietojen välittäminen loppukäyttäjälle käyttämällä MQTT: tä ja hyväksymällä edelleen loppukäyttäjäkomennot MQTT: n kautta ja käynnistämällä tarvittava sovellus pi
(3) Joidenkin perustoimintojen suorittaminen, kuten pi: n sammuttaminen
Seuraavat vaiheet antavat yksityiskohtaiset tiedot solmupunaiselle toteutetulle vuokaavioon
Huomaa, että solmunpunaiset vuokaaviot ovat vuorovaikutuksessa python-koodin kanssa, joten jälkimmäinen osa kattaa python-koodin näkökohdat
Vaihe 7: Solmunpunaiset perusteet
Tietyt perusvaiheet on korostettu solmun punaisen aloittamiseksi salamannopeasti, mutta kyllä, solmu-punainen on liian yksinkertainen sovellusten aloittamiseksi ja kehittämiseksi.
- Alkaen solmu-punainen: https:// localhost: 1880.
- Solmun punainen aloitus, kun pi on yhteydessä Internetiin https:// ip address>: 1880
Vaihe 8: Solmu-punainen: Virtaus _1a
Flow _1a valvoo CSV -tiedoston muutoksia ja niiden perusteella, esim. Havaitut vaikutukset, kameran videotallennus on kytketty päälle ja lisäksi käyttäjälle ilmoitetaan Internetissä vaikutuksesta
Vaihe 9: Solmu Punainen: Flow_1b
Mainitussa kulussa videotallennus voidaan aloittaa milloin tahansa painamalla ohjainta
Vaihe 10: Solmu Punainen: Flow_2a
Mainitussa kulussa aina, kun uusi kuva tai video tallennetaan/ladataan hakemistoon, tiedot välitetään rekisteröidylle käyttäjälle Internetin kautta
Vaihe 11: Solmu Punainen: Flow_2b
Tämä virtaus on suunniteltu ensisijaisesti etäkäyttäjälle laitteen ohjaamiseksi seuraavalla tavalla
a) sammutuslaite
b) ottaa kuvia
(c) Tallenna videoita
d) aloita pääkoodi (datalogger -koodi on pääkoodi, joka laskee vaikutuksen)
Vaihe 12: Solmu Punainen; Virtaus_3
Virtaus on suunniteltu paikallista käyttöä varten pääkoodin tai sammutuslaitteen käynnistämiseksi
Vaihe 13: MQTT
MQTT (Message Queuing Telemetry Transport) on TCP/IP -protokolla, jossa julkaisija ja tilaaja ovat vuorovaikutuksessa.
Meidän tapauksessamme Pi on julkaisija, kun taas matkapuhelimeemme/tietokoneeseemme asennettu sovellus on tilaaja.
Tällä tavalla vaikutusten synnyttyä tiedot välitetään etänä käyttäjälle (toimiva Internet -yhteys on pakollinen)
Lisätietoja MQTT: stä löydät seuraavasta linkistä: MQTT
Jotta voimme aloittaa MQTT: n käytön, meidän on ensin rekisteröidyttävä, opetusohjelmassa olen käyttänyt cloudmqttia (www.cloudmqtt.com), "söpö kissa" -kohdassa on ilmainen suunnitelma, siinä kaikki.
Luo rekisteröinnin jälkeen sanomalla "pi", jonka jälkeen saat seuraavat tiedot
- Palvelimen nimi
- satamaan
- käyttäjätunnus
- Salasana
Edellä mainitut vaaditaan, kun tilaat matkapuhelimen/tietokoneen kautta
Sovelluksessani olen käyttänyt Google Play Kaupan MQTT -sovellusta (Android -versio)
Vaihe 14: MQTT: Tilaaja
MQTT -sovellus, joka toimii mobiililaitteella (Android -versio)
Pi: lle havaittu isku välitetään takaisin
Vaihe 15: MQTT: Ominaisuuksien muokkaaminen solmunpunaisena
Solmu-punaisessa MQTT-solmun valinnan jälkeen mainitaan "Palvelimen nimi" ja "aihe". Tämän pitäisi olla sama tilaajan päässä
Vaihe 16: Python -koodi:
Kooditoiminto on liitteenä olevan vuokaavion mukainen
Vaihe 17: Lopullinen koodi
Python -koodi on liitetty
Jotta python -skriptimme toimisi päätelaitteesta, meidän on tehtävä ne suoritettaviksi nimellä chmod +x datalogger.py, ennen kuin koodin yläosassa tulisi olla seuraava "shebang" -rivi #! /usr/bin/python3 (tämä vaaditaan toimintojen suorittamiseen solmu-punaisesta)
#!/usr/bin/python3 // shebang linefrom sense_hat tuoda SenseHat päivämäärän ja ajan tuonnista päivämäärän csv -tuontikirjoittajasta tuoda RPi. GPIO GPIO: na tuonnin lepotilasta
tunne = SenseHat ()
tuo csv
timestamp = datetime.now ()
delay = 5 // viive määritetään tietojen tallentamiseen dataan. csv -tiedosto punainen = (255, 0, 0) vihreä = (0, 255, 0) keltainen = (255, 255, 0)
#GPIO.setmode (GPIO. BCM)
#GPIO.setup (17, GPIO. OUT)
def get_sense_impact ():
sense_impact = acc = sense.get_accelerometer_raw () sense_impact.append (acc ["x"]) sense_impact.append (acc ["y"]) sense_impact.append (acc ["z"])
gyro = sense.get_gyroscope_raw ()
sense_impact.append (gyro ["x"]) sense_impact.append (gyro ["y"]) sense_impact.append (gyro ["z"])
return sense_impact
def vaikutus (): // toiminto havaita vaikutus #GPIO.setmode (GPIO. BCM) #GPIO.setup (4, GPIO. OUT) kiihtyvyys = sense.get_accelerometer_raw () x = kiihtyvyys ['x'] y = kiihtyvyys ['y'] z = kiihtyvyys ['z'] x = abs (x) y = abs (y) z = abs (z)
gyro = sense.get_gyroscope_raw ()
gyrox = gyro ["x"] gyroy = gyro ["y"] gyroz = gyro ["z"]
gyrox = pyöreä (gyrox, 2)
gyroy = pyöreä (gyroy, 2) gyroz = pyöreä (gyroz, 2)
vaikutus = get_sense_impact ()
jos x> 1.5 tai y> 1.5 tai z> 1.5: // arvot asetetaan iteraation jälkeen todellisella tiellä, voidaan muuttaa vastaavasti eri tyyppisille ja ajotaidoille avoimilla ('impact.csv', 'w', newline = ' ') kuten f: data_writer = kirjoittaja (f) data_writer.writerow ([' acc x ',' acc y ',' acc z ',' gyro x ',' gyro y ',' gyro z ']) #GPIO. lähtö (4, GPIO. HIGH) sense.clear () sense.show_letter ("!", punainen) data_writer.writerow (vaikutus)
elif gyrox> 1.5 tai gyroy> 1.5 tai gyroz> 1.5: // arvot asetetaan tarkastelemalla nopeutta, jolla käännökset aloitetaan auki ('impact.csv', 'w', newline = '') muodossa f: data_writer = kirjoittaja (f) data_writer.writerow (['acc x', 'acc y', 'acc z', 'gyro x', 'gyro y', 'gyro z']) #GPIO. output (4, GPIO. HIGH) sense.clear () sense.show_letter ("!", Vihreä) data_writer.writerow (vaikutus)
muu:
# GPIO.output (4, GPIO. LOW) sense.clear ()
def get_sense_data (): // -toiminto, joka tallentaa ja tallentaa arvot sensorista sense_data =
sense_data.append (sense.get_temperature ()) sense_data.append (sense.get_pressure ()) sense_data.append (sense.get_humidity ())
suunta = sense.get_orientation ()
sense_data.append (suunta ["yaw"]) sense_data.append (suunta ["pitch"]) sense_data.append (suunta ["roll"])
acc = sense.get_accelerometer_raw ()
sense_data.append (acc ["x"]) sense_data.append (acc ["y"]) sense_data.append (acc ["z"]) mag = sense.get_compass_raw () sense_data.append (mag ["x"]) sense_data.append (mag ["y"]) sense_data.append (mag ["z"])
gyro = sense.get_gyroscope_raw ()
sense_data.append (gyro ["x"]) sense_data.append (gyro ["y"]) sense_data.append (gyro ["z"])
sense_data.append (datetime.now ())
palauta sense_data
avoimena ('data.csv', 'w', newline = '') muodossa f:
data_writer = kirjoittaja (f)
data_writer.writerow (['temp', 'pres', 'hum', 'yaw', 'pitch', 'roll', 'acc x', 'acc y', 'acc z', 'mag x', ' mag y ',' mag z ',' gyro x ',' gyro y ',' gyro z ',' datetime '])
vaikka totta:
print (get_sense_data ()) tapahtumalle sense.stick.get_events (): # Tarkista, painettiinko ohjaussauvaa, jos event.action == "press": # Tarkista mihin suuntaan jos event.direction == "up": # sense.show_letter ("U") # Ylänuoli kiihtyvyys = sense.get_accelerometer_raw () x = kiihtyvyys ['x'] y = kiihtyvyys ['y'] z = kiihtyvyys ['z'] x = pyöreä (x, 0) y = pyöreä (y, 0) z = pyöreä (z, 0)
# Päivitä näytön kierto riippuen siitä, mihin suuntaan ylös jos if = = -1: sense.set_rotation (90) elif y == 1: sense.set_rotation (270) elif y == -1: sense.set_rotation (180)) else: sense.set_rotation (0) sense.clear () t = sense.get_temperature () t = pyöreä (t, 1) message = "T:" + str (t) sense.show_message (viesti, text_colour = punainen, scroll_speed = 0.09) elif event.direction == "alas": kiihtyvyys = sense.get_accelerometer_raw () x = kiihtyvyys ['x'] y = kiihtyvyys ['y'] z = kiihtyvyys ['z'] x = pyöreä (x, 0) y = pyöreä (y, 0) z = pyöreä (z, 0)
# Päivitä näytön kierto riippuen siitä, mihin suuntaan ylös jos if = = -1: sense.set_rotation (90) elif y == 1: sense.set_rotation (270) elif y == -1: sense.set_rotation (180)) else: sense.set_rotation (0) # sense.show_letter ("D") # Alanuoli sense.clear () h = sense.get_humidity () h = pyöreä (h, 1) message = "H:" + str (h) sense.show_message (viesti, teksti_väri = vihreä, scroll_speed = 0.09) p = sense.get_pressure () p = pyöreä (p, 1) message = "P:" + str (p) sense.show_message (viesti, text_colour = keltainen, scroll_speed = 0,09)
# elif event.direction == "left":
#kiihtyvyys = sense.get_accelerometer_raw () #x = kiihtyvyys ['x'] #y = kiihtyvyys ['y'] #z = kiihtyvyys ['z'] #x = pyöreä (x, 0) #y = pyöreä (y, 0) #z = pyöreä (z, 0)
#Päivitä näytön kierto riippuen siitä, mihin suuntaan ylös // // Ei käytä ja ohjaa solmu -punainen #jos x == -1: sense.set_rotation (90) #elif y == 1: sense.set_rotation (270) #elif y == -1: sense.set_rotation (180) #else: sense.set_rotation (0) # sense.show_letter ("L") # Vasen nuoli # elif event.direction == "right": # sense.show_letter ("K") # Oikea nuoli # elif event.direction == "middle": # sense.clear ()
vaikutus()
data = get_sense_data ()
dt = data [-1] - aikaleima, jos dt.seconds> delay: data_writer.writerow (data) timestamp = datetime.now ()
Vaihe 18: Live -videon seuranta
Impact Recorderia voidaan käyttää myös live -videon seurantaan, koska video voidaan käynnistää milloin tahansa missä tahansa MQTT: n kautta
käytämme VLC-soitinta videoiden suoratoistoon, oletuksena uusimmassa raspbianissa VLC on esiasennettu, muuten asenna vlc kuten alla
Lisätietoja verkkovirran katsomisesta on saatavilla VLC -verkkovirran kautta
Kiitos, että luit!!
Iskutallennin voi tehdä paljon muutakin.
Varo magneettikenttäanalyysin seuraavaa tilaa esteiden kartoittamisessa
Suositeltava:
DIY 37 Leds Arduino -rulettipeli: 3 vaihetta (kuvilla)
DIY 37 Leds Arduino Roulette Peli: Ruletti on kasinopeli, joka on nimetty ranskalaisen sanan mukaan, joka tarkoittaa pientä pyörää
Covid -suojakypärä, osa 1: johdanto Tinkercad -piireihin!: 20 vaihetta (kuvilla)
Covid -suojakypärä, osa 1: johdanto Tinkercad -piireihin!: Hei, ystävä! Tässä kaksiosaisessa sarjassa opimme käyttämään Tinkercadin piirejä - hauskaa, tehokasta ja opettavaista työkalua piirien toiminnasta! Yksi parhaista tavoista oppia on tehdä. Joten suunnittelemme ensin oman projektimme: th
Weasleyn sijaintikello neljällä kädellä: 11 vaihetta (kuvilla)
Weasleyn sijaintikello neljällä kädellä: Joten Raspberry Pi: n kanssa, joka oli pyörinyt jonkin aikaa, halusin löytää mukavan projektin, jonka avulla voisin hyödyntää sitä parhaalla mahdollisella tavalla. Löysin ppeters0502 tämän upean Instructable Build Your Own Weasley Location Clockin ja ajattelin, että
Moottorin lämpötila -anturi/mittari langattomalla anturilla klassisille ajoneuvoille: 7 vaihetta
Moottorin lämpötila -anturi/mittari langattomalla anturilla klassisiin ajoneuvoihin: Tein tämän anturin ihanalle Çipitakilleni. Fiat 126 -auto, jossa on 2 -sylinterinen ilmajäähdytteinen moottori takakannen alla. Cipitakissa ei ole lämpötilamittaria, joka näyttää kuinka kuuma moottori on, joten ajattelin, että anturi olisi hyödyllinen. Halusin myös anturin olevan lanka
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