Sisukord:

Sõidukite löögisalvesti: 18 sammu (koos piltidega)
Sõidukite löögisalvesti: 18 sammu (koos piltidega)

Video: Sõidukite löögisalvesti: 18 sammu (koos piltidega)

Video: Sõidukite löögisalvesti: 18 sammu (koos piltidega)
Video: Maanteeameti e-teeninduse kasutamine - Sõiduki ost-müük 2024, November
Anonim
Sõidukite kokkupõrkesalvesti
Sõidukite kokkupõrkesalvesti

Löögisalvesti on ette nähtud sõidukile sõidu ajal või seisma jääva löögi registreerimiseks. Mõjud salvestatakse andmebaasi nii näitude kui ka video/pildi kujul. Mõju korral saab kaugkasutajat reaalajas kontrollida ja kaugkasutaja saab salvestatud videot vaadata või pi -kaamerale kaugjuurdepääsu vaadata ja sündmusi vastavalt vaadata.

Samm: osad ja tarvikud

(1) Raspberry Pi 3 või parem: nõutav arvutusvõimsus

(2) Vaarika pi sense müts

(3) Vaarika pi kaamera / USB -kaamera

(4) Mälukaart uusima raspiani pildiga (peaks toetama punast sõlme, peaaegu iga uusim pilt seda teeb)

(5) Toiteallikas vähemalt 2,1 A (olen kasutanud akupanka autonoomseks kasutamiseks)

2. samm: osade kirjeldus: Sense Hat

Osade kirjeldus: Sense Hat
Osade kirjeldus: Sense Hat

Sense HAT-il on 8 × 8 RGB LED-maatriks, viie nupuga juhtkang ja see sisaldab järgmisi andureid:

  • Güroskoop
  • Kiirendusmõõtur
  • Magnetomeeter
  • Temperatuur
  • Baromeetriline
  • surve
  • Niiskus

Lisateavet sense -mütsiga töötamise kohta saate järgmistelt linkidelt: Sense_Hat

Sense mütsi API on hostitud aadressil: Sense_hat_API

Mõistliku mütsiga programmeerimise koodi käsitletakse hilisemates etappides. Sense mütsikoodi saab simuleerida ka simulaatoril, mis asub aadressil: Sense-hat simulator

3. samm: kokkupanek: löögisalvesti

Kokkupanek: löögisalvesti
Kokkupanek: löögisalvesti
Kokkupanek: löögisalvesti
Kokkupanek: löögisalvesti
Kokkupanek: löögisalvesti
Kokkupanek: löögisalvesti
Kokkupanek: löögisalvesti
Kokkupanek: löögisalvesti
  • Kokkupanek on lihtsam, kuna sensomüts tuleb virnastada üle pi (ettenähtud kinnituspoldid on varustatud mütsimütsiga).
  • Ühendada saab USB- või pi -kaamera. Õpetuses kaalutakse pi kaamerat ja vastavalt sellele kodeeritakse sama.
  • Sisestage mälukaart ja konfigureerige pythoni kood ja sõlmepunane (konfiguratsiooni ja koodi käsitletakse järgmistes sammudes)

Ülaltoodud pilt näitab pi-kaamerat, mis on ühendatud tasase lintkaabli abil pi-ga

Samm 4: kokkupanek: löögisalvesti auto armatuurlaual

Kokkupanek: löögisalvesti auto armatuurlaual
Kokkupanek: löögisalvesti auto armatuurlaual

Diktofoni paigaldamiseks olen kasutanud kahepoolset teipi, eeliseks on see, et salvestajat saab hõlpsasti eri asendisse nihutada, olenevalt sellest, kumb teie autole kõige paremini sobib.

Edasine kaamera on paigaldatud vertikaalselt, nagu näidatud, kasutades sama kahepoolset teipi, Järgmisena ühendatakse toiteallikas (10 000 mAH toitepank) koos valmis Interneti -ühendusega

MQTT rakenduse jaoks on vajalik Interneti -ühendus (MQTT üksikasju käsitletakse järgmistes etappides)

Samm 5: Mõju salvestaja: töö ja rakendused

Mõistmütsi, kiirenduse ja güroskoobi abil kontrollitakse, kas toores väärtused ületavad koodis määratud piiri.

Kiirendusmõõtur: Kiirendusmõõtur näitab igale x, y & z teljele mõjuvat gravitatsioonijõudu (G-jõudu), kui mõni telg mõõdab rohkem kui 1G jõudu, kui kiiret liikumist on võimalik tuvastada. (pange tähele, et allapoole suunatud teljel on väärtus 1 g ja seda tuleb python -koodis vastavalt arvesse võtta).

Güroskoop; Güroskoopi kasutatakse nurkliikumiste mõõtmiseks, st järsul pöördel võib andur aktiveeruda (sõltub koodi seadistusest), nii et järsult sõidukit pöörlev inimene jääb vahele!

Seatud limiidi aktiveerimine kuvatakse ka sensori mütsi LED -maatriksil "!" punane kiirenduseks ja roheline güroskoobi aktiveerimiseks

6. samm: tarkvara kirjeldus: punane sõlm

Node-RED on voolupõhine programmeerimisvahend, mille töötas välja algselt IBMi areneva tehnoloogia teenuste meeskond ja mis on nüüd osa JS Foundationist.

Lisateavet punase sõlme kohta saate järgmise lingi kaudu: node-red

Meie puhul kasutaksime järgmistes tegevustes sõlme -red

(1) Kaamera funktsioonide käivitamiseks juhtnuppudega suhtlemine

(2) Mõju jälgimine sõidukile ja teabe edastamine lõppkasutajale, kasutades MQTT -d ja lõppkasutaja käskude edasine aktsepteerimine MQTT kaudu ja vajaliku rakenduse käivitamine pi

(3) Mõned põhilised asjad, näiteks pi väljalülitamine

Edasised sammud annavad üksikasjalikku teavet sõlmepunasele rakendatud vooskeemi kohta

Pange tähele, et sõlmepunased vooskeemid interakteeruvad püütoni koodiga, seega hõlmab viimane osa püütoni koodi aspekte

7. samm: sõlmepunased põhitõed

Sõlmepunane põhitõed
Sõlmepunane põhitõed
Sõlmepunane põhitõed
Sõlmepunane põhitõed
Sõlmepunane põhitõed
Sõlmepunane põhitõed

Sõlmepunase välklambiga alustamiseks on esile tõstetud mõned põhilised sammud, kuid jah, sõlmepunane on rakenduste käivitamiseks ja töötamiseks liiga lihtne.

  • Algav sõlm punane: https:// localhost: 1880.
  • Sõlme punane käivitamine, kui pi on Internetiga ühendatud https:// ip address>: 1880

8. samm: punane sõlm: voog _1a

Sõlm-punane: voog _1a
Sõlm-punane: voog _1a

Flow _1a jälgib kõiki CSV -faili muudatusi ja muudatuste alusel, st tuvastatud mõju, lülitatakse kaamera videosalvestus sisse ja seejärel teavitatakse kasutajat Interneti kaudu, et mõju on toimunud

9. samm: punane sõlm: voog_1b

Punane sõlm: voog_1b
Punane sõlm: voog_1b

Nimetatud voos saab videosalvestust igal ajal alustada, vajutades lihtsalt juhtkangi

10. samm: punane sõlm: voog_2a

Punane sõlm: voog_2a
Punane sõlm: voog_2a

Nimetatud voos edastatakse teave registreeritud kasutajale Interneti kaudu alati, kui uus pilt või video on kataloogi salvestatud/üles laaditud

11. samm: punane sõlm: voog_2b

Punane sõlm: voog_2b
Punane sõlm: voog_2b

See voog on mõeldud peamiselt kaugkasutajale, et seadet järgmiselt juhtida

a) väljalülitusseade

b) pildistada

c) Videote salvestamine

d) käivitage põhikood (andmete salvestamise kood on peamine kood, mis arvutab mõju)

12. samm: punane sõlm; Voog_3

Sõlm punane; Voog_3
Sõlm punane; Voog_3

Voo on loodud kohalikuks juurdepääsuks, et käivitada põhikood või väljalülitusseade

Samm 13: MQTT

MQTT (Message Queuing Telemetry Transport) on TCP/IP protokoll, milles kirjastaja ja tellija suhtlevad.

Meie puhul on kirjastaja Pi, samas kui meie mobiiltelefoni/arvutisse installitud rakendus on tellija.

Sel viisil edastatakse mis tahes mõju tekitamisel teave kasutajale eemalt (töötav Interneti -ühendus on kohustuslik)

Lisateavet MQTT kohta leiate järgmiselt lingilt: MQTT

MQTT kasutamise alustamiseks peame esmalt registreeruma, õpetuse jaoks, mida olen kasutanud cloudmqtt (www.cloudmqtt.com), on "armas kass" all tasuta plaan, see on kõik.

Pärast registreerimist looge eksemplar, öelge "pi", mille järel saate järgmisi üksikasju

  • Serveri nimi
  • sadam
  • kasutajanimi
  • parool

Ülaltoodut on vaja mobiilseadme/arvuti kaudu tellides

Oma rakenduse jaoks olen kasutanud Google Play poe rakendust MQTT (Androidi versioon)

14. samm: MQTT: tellija

MQTT: tellija
MQTT: tellija

Rakendus MQTT, mis töötab mobiilis (Androidi versioon)

Pi -le tuvastatud mõju edastatakse tagasi

Samm 15: MQTT: atribuutide redigeerimine sõlmpunases

MQTT: atribuutide redigeerimine punases sõlmes
MQTT: atribuutide redigeerimine punases sõlmes

Sõlmepunases pärast MQTT-sõlme valimist tuleb mainida "Serveri nimi" ja "teema". See peaks abonendi lõpus olema sama

16. samm: Pythoni kood:

Koodi funktsionaalsus vastab lisatud vooskeemile

17. samm: lõplik kood

Pythoni kood on lisatud

Selleks, et meie pythoni skript töötaks terminalist, peame need käivitama kui chmod +x datalogger.py, kuid koodi ülaosas peaks olema järgmine "shebang" rida #! /usr/bin/python3 (see on vajalik funktsioonide täitmiseks sõlmepunasest)

#!/usr/bin/python3 // shebang linefrom sense_hat impordi SenseHat kuupäevast ja kuupäevast importimise kuupäevast CSV -st impordikirjutajalt RPi importimine. GPIO GPIO -st ajast importimise unerežiimist

tunne = SenseHat ()

import csv

timestamp = datetime.now ()

viivitus = 5 // viivitus on määratud andmete salvestamiseks andmetesse. csv -fail punane = (255, 0, 0) roheline = (0, 255, 0) kollane = (255, 255, 0)

#GPIO.setmode (GPIO. BCM)

#GPIO.seadistus (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"])

güroskoop = sense.get_gyroscope_raw ()

sense_impact.append (gyro ["x"]) sense_impact.append (gyro ["y"]) sense_impact.append (gyro ["z"])

return sense_impact

def impact (): // mõju tuvastamise funktsioon #GPIO.setmode (GPIO. BCM) #GPIO.setup (4, GPIO. OUT) kiirendus = sense.get_accelerometer_raw () x = kiirendus ['x'] y = kiirendus ['y'] z = kiirendus ['z'] x = abs (x) y = abs (y) z = abs (z)

güroskoop = sense.get_gyroscope_raw ()

güroskoop = güroskoop ["x"] gyroy = güroskoop ["y"] gyros = güroskoop ["z"]

gyrox = ümmargune (gürox, 2)

gyroy = ümmargune (gyroy, 2) gyroz = ümmargune (gyroz, 2)

mõju = get_sense_impact ()

kui x> 1,5 või y> 1,5 või z> 1,5: // väärtusi seatakse pärast iteratsiooni tegelikul teel, saab vastavalt muuta erinevat tüüpi ja avatud sõiduoskustega ('impact.csv', 'w', newline = ' ') nagu f: andmete_kirjutaja = kirjutaja (f) andmete_kirjutaja.kirjutaja ([' acc x ',' acc y ',' acc z ',' gyro x ',' gyro y ',' gyro z ']) #GPIO. väljund (4, GPIO. HIGH) sense.clear () sense.show_letter ("!", punane) data_writer.writerow (mõju)

elif gyrox> 1.5 või gyroy> 1.5 või gyroz> 1.5: // väärtused määratakse, vaadates pöörete avamise kiirust ('impact.csv', 'w', newline = ") kui f: data_writer = kirjanik (f) data_writer.writerow (['acc x', 'acc y', 'acc z', 'gyro x', 'gyro y', 'gyro z']) #GPIO.väljund (4, GPIO. HIGH) sense.clear () sense.show_letter ("!", Roheline) data_writer.writerow (mõju)

muidu:

# GPIO.output (4, GPIO. LOW) sense.clear ()

def get_sense_data (): // funktsioon väärtuste salvestamiseks ja salvestamiseks sensorist sense_data =

sense_data.append (sense.get_temperature ()) sense_data.append (sense.get_pressure ()) sense_data.append (sense.get_humidity ())

orientatsioon = sense.get_orientation ()

sense_data.append (orientatsioon ["yaw"]) sense_data.append (orientatsioon ["pitch"]) sense_data.append (orientatsioon ["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"])

güroskoop = sense.get_gyroscope_raw ()

sense_data.append (gyro ["x"]) sense_data.append (gyro ["y"]) sense_data.append (gyro ["z"])

sense_data.append (datetime.now ())

tagastada sense_data

avatud ('data.csv', 'w', newline = '') kui f:

andmete_kirjutaja = kirjanik (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 '])

kuigi tõsi:

print (get_sense_data ()) sündmuse jaoks mõttes.stick.get_events (): # Kontrollige, kas juhtnuppu on vajutatud, kui event.action == "press": # Kontrollige, mis suunas if event.direction == "up": # sense.show_letter ("U") # Ülesnool kiirendus = sense.get_accelerometer_raw () x = kiirendus ['x'] y = kiirendus ['y'] z = kiirendus ['z'] x = ümmargune (x, 0) y = ümmargune (y, 0) z = ümmargune (z, 0)

# Värskendage ekraani pöörlemist sõltuvalt sellest, millises suunas ülespoole if 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.clear () t = sense.get_temperature () t = ümmargune (t, 1) sõnum = "T:" + str (t) sense.show_message (sõnum, teksti_värv = punane, scroll_speed = 0.09) elif event.direction == "down": kiirendus = sense.get_accelerometer_raw () x = kiirendus ['x'] y = kiirendus ['y'] z = kiirendus ['z'] x = ümmargune (x, 0) y = ümmargune (y, 0) z = ümmargune (z, 0)

# Värskendage ekraani pöörlemist sõltuvalt sellest, millises suunas ülespoole if 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 ("D") # Allanool sense.clear () h = sense.get_humidity () h = round (h, 1) message = "H:" + str (h) sense.show_message (sõnum, teksti_värv = roheline, scroll_speed = 0.09) p = sense.get_pressure () p = ümmargune (p, 1) sõnum = "P:" + str (p) sense.show_message (sõnum, teksti_värv = kollane, kerimiskiirus = 0,09)

# elif event.direction == "left":

#kiirendus = sense.get_accelerometer_raw () #x = kiirendus ['x'] #y = kiirendus ['y'] #z = kiirendus ['z'] #x = ümmargune (x, 0) #y = ümmargune (y, 0) #z = ümmargune (z, 0)

#Värskendage ekraani pöörlemist sõltuvalt sellest, millises suunas üles // Ei kasutata ja ei kontrolli sõlmepunane #if 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") # Vasaknool # elif event.direction == "right": # sense.show_letter ("K") # Paremale nool # elif event.direction == "keskel": # sense.clear ()

mõju ()

andmed = get_sense_data ()

dt = andmed [-1] - ajatempel, kui dt.seconds> delay: data_writer.writerow (data) timestamp = datetime.now ()

18. samm: reaalajas video jälgimine

Mõju salvestajat saab kasutada ka otsevideo jälgimiseks, kuna videot saab MQTT kaudu igal ajal ja igal pool käivitada

videote voogesitamiseks kasutaksime VLC-mängijat, vaikimisi on uusimas raspbianis VLC eelinstallitud, muidu installige vlc nagu allpool

Lisateavet võrguvoo vaatamise kohta leiate VLC võrguvoo kaudu

Aitäh, et lugesite !!

Löögisalvesti saab palju rohkem ära teha.

Jälgige takistuste kaardistamisel magnetvälja analüüsimiseks järgmist ruumi

Soovitan: