Sisällysluettelo:

Iskutallennin ajoneuvoille: 18 vaihetta (kuvilla)
Iskutallennin ajoneuvoille: 18 vaihetta (kuvilla)

Video: Iskutallennin ajoneuvoille: 18 vaihetta (kuvilla)

Video: Iskutallennin ajoneuvoille: 18 vaihetta (kuvilla)
Video: Крушение трансатлантический французского судна Normandy 2024, Joulukuu
Anonim
Ajoneuvojen iskujen tallennin
Ajoneuvojen iskujen tallennin

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

Osien kuvaus: Sense Hat
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

Kokoaminen: Iskutallennin
Kokoaminen: Iskutallennin
Kokoaminen: Iskutallennin
Kokoaminen: Iskutallennin
Kokoaminen: Iskutallennin
Kokoaminen: Iskutallennin
Kokoaminen: Iskutallennin
Kokoaminen: 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

Kokoonpano: Iskutallennin auton kojelautaan
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

Solmunpunainen perusasiat
Solmunpunainen perusasiat
Solmunpunainen perusasiat
Solmunpunainen perusasiat
Solmunpunainen perusasiat
Solmunpunainen perusasiat

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

Solmu-punainen: Virtaus _1a
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

Solmu Punainen: Flow_1b
Solmu Punainen: Flow_1b

Mainitussa kulussa videotallennus voidaan aloittaa milloin tahansa painamalla ohjainta

Vaihe 10: Solmu Punainen: Flow_2a

Solmu Punainen: Flow_2a
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

Solmu Punainen: Flow_2b
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

Solmu Punainen; Virtaus_3
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: Tilaaja
MQTT: Tilaaja

MQTT -sovellus, joka toimii mobiililaitteella (Android -versio)

Pi: lle havaittu isku välitetään takaisin

Vaihe 15: MQTT: Ominaisuuksien muokkaaminen solmunpunaisena

MQTT: Ominaisuuksien muokkaaminen solmunpunaisena
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: