Tartalomjegyzék:

Ütésrögzítő járművekhez: 18 lépés (képekkel)
Ütésrögzítő járművekhez: 18 lépés (képekkel)

Videó: Ütésrögzítő járművekhez: 18 lépés (képekkel)

Videó: Ütésrögzítő járművekhez: 18 lépés (képekkel)
Videó: Голубая стрела (1958) фильм 2024, November
Anonim
Ütésrögzítő járművekhez
Ütésrögzítő járművekhez

Az ütközésrögzítőt úgy tervezték, hogy rögzítse a járművet ütközés közben vezetés közben vagy álló helyzetben. A hatásokat az adatbázisban olvasmányok, valamint videó/kép formájában tárolják. Hatása esetén a távoli felhasználó valós időben ellenőrizhető, a távoli felhasználó pedig megnézheti a mentett videót, vagy távolról hozzáférhet a pi kamerához, és ennek megfelelően nézheti az eseményeket.

1. lépés: Alkatrészek és tartozékok

(1) Raspberry Pi 3 vagy jobb: Számítási teljesítmény szükséges

(2) Málna pi sense kalap

(3) Málna pi kamera / USB kamera

(4) Memóriakártya legújabb raspbian képpel (támogatnia kell a piros csomópontot, szinte minden legújabb kép támogatja)

(5) Tápellátás legalább 2,1 A (akkumulátor akkumulátort használtam önálló működéshez autóban)

2. lépés: Alkatrészleírás: Sense Hat

Alkatrészleírás: Sense Hat
Alkatrészleírás: Sense Hat

A Sense HAT 8 × 8 RGB LED-mátrixszal, ötgombos joystickkal és a következő érzékelőkkel rendelkezik:

  • Giroszkóp
  • Gyorsulásmérő
  • Magnetométer
  • Hőfok
  • Barometrikus
  • nyomás
  • páratartalom

Az érzékkalap kezelésével kapcsolatos további információk a következő linkekből származhatnak: Sense_Hat

A sense kalap API -ja a Sense_hat_API webhelyen található

A sense-hat programozás kódját a későbbi lépések tárgyalják. Az érzék kalap kódja szimulátoron is szimulálható: Sense-hat szimulátor

3. lépés: Összeszerelés: ütésrögzítő

Összeszerelés: Ütésrögzítő
Összeszerelés: Ütésrögzítő
Összeszerelés: Ütésrögzítő
Összeszerelés: Ütésrögzítő
Összeszerelés: Ütésrögzítő
Összeszerelés: Ütésrögzítő
Összeszerelés: Ütésrögzítő
Összeszerelés: Ütésrögzítő
  • Az összeszerelés egyszerűbb, mivel az érzékelő kalapot pi fölé kell halmozni (a kijelölt rögzítőcsavarokat érzékelő kalap biztosítja).
  • USB vagy pi kamera csatlakoztatható. Az oktatóanyagban a pi kamerát veszik figyelembe, és ennek megfelelően ugyanazt kódolják.
  • Helyezze be a memóriakártyát, és konfigurálja a python -kódot és a csomópont -vöröset (a konfiguráció és a kód a további lépésekben található)

A fenti képen látható a pi-kamera, amely lapos szalagkábellel csatlakozik a pi-hez

4. lépés: Összeszerelés: Ütésrögzítő az autó műszerfalán

Összeszerelés: Ütésrögzítő az autó műszerfalán
Összeszerelés: Ütésrögzítő az autó műszerfalán

A felvevő felszereléséhez kétoldalas szalagot használtam, előnye, hogy a felvevő könnyen eltolható különböző helyzetekben, attól függően, hogy melyik illik legjobban az autójához.

A további kamera az ábrán látható módon függőlegesen van felszerelve, ugyanazzal a kettős oldalsó szalaggal, A következő sorban egy áramforrás (10 000 mAH teljesítménybank) és egy kész internetkapcsolat csatlakoztatása szükséges

Az MQTT alkalmazáshoz internetkapcsolat szükséges (az MQTT részleteit a további lépések tartalmazzák)

5. lépés: Hatásrekorder: Munka és alkalmazások

Az érzékelő kalapból gyorsítást és giroszkópot használnak annak ellenőrzésére, hogy a nyers értékek meghaladják -e a kódban beállított határértéket.

Gyorsulásmérő: A gyorsulásmérő megmondja az egyes x, y & z tengelyekre ható gravitációs erő (G-erő) mennyiségét, ha bármely tengely 1G-nál nagyobb erőt mér, mint a gyors mozgás. (kérjük, vegye figyelembe, hogy a lefelé mutató tengely 1 g értékű lenne, és ezt megfelelően figyelembe kell venni a python kódban).

Giroszkóp; A giroszkóp a szögmozgás mérésére szolgál, azaz éles kanyarodáskor az érzékelő aktiválódhat (a kód beállításától függ), így a gépjárművet élesen forgó személy elkapja !!

A beállított korlát aktiválása az érzékelő kalap LED mátrixán is "!" pirossal a gyorsításhoz és zölddel a giroszkóp aktiválásához

6. lépés: Szoftverleírás: Node Red

A Node-RED egy folyamat-alapú programozó eszköz, amelyet eredetileg az IBM Emerging Technology Servicesteam fejlesztett ki, és most a JS Foundation része.

További információ a csomópont vörösről a következő linken keresztül érhető el: node-red

Esetünkben a node -red paramétert használnánk a következő tevékenységekhez

(1) A joystickokkal való együttműködés a fényképezőgép funkcióinak elindításához

(2) A járművekre gyakorolt hatások nyomon követése és az információk továbbítása a végfelhasználóhoz az MQTT alkalmazásával, valamint a végfelhasználói parancsok további elfogadása az MQTT -n keresztül és a szükséges alkalmazás elindítása a pi -n

(3) Néhány alapvető feladat végrehajtása, például a pi leállítása

A további lépések részletes információkat nyújtanak a csomópont-vörösön megvalósított folyamatábrához

Kérjük, vegye figyelembe, hogy a csomópont-vörös folyamatábrák kölcsönhatásba lépnek a python-kóddal, ezért az utóbbi rész a python-kód szempontjait tárgyalja

7. lépés: Csomópont-vörös alapok

Csomópiros alapok
Csomópiros alapok
Csomópiros alapok
Csomópiros alapok
Csomópiros alapok
Csomópiros alapok

Bizonyos alapvető lépések kiemelve jelennek meg, hogy a Node-red egy pillanat alatt elkezdődjön, de igen a node-red túl egyszerű az alkalmazások elindításához és kidolgozásához.

  • Kezdő csomópont-piros: https:// localhost: 1880.
  • Piros csomópont indítása, ha pi csatlakozik az internethez https:// ip address>: 1880

8. lépés: Piros csomópont: Áramlás _1a

Piros csomópont: Áramlás _1a
Piros csomópont: Áramlás _1a

A Flow _1a figyeli a CSV -fájlban bekövetkezett változásokat, és a változások alapján, azaz észlelt ütközés, a kamera által készített videofelvétel bekapcsolt módba van állítva, és a felhasználót az interneten keresztül tájékoztatják arról, hogy hatás történt

9. lépés: Csomópont piros: Flow_1b

Piros csomópont: Flow_1b
Piros csomópont: Flow_1b

Az említett folyamatban a videofelvétel bármikor elindítható a joystick megnyomásával

10. lépés: Piros csomópont: Flow_2a

Piros csomópont: Flow_2a
Piros csomópont: Flow_2a

Az említett folyamat során, amikor új képet vagy videót tárolnak/töltenek fel a könyvtárba, az információkat az interneten keresztül továbbítják a regisztrált felhasználónak.

11. lépés: Piros csomópont: Flow_2b

Piros csomópont: Flow_2b
Piros csomópont: Flow_2b

Ezt az áramlást elsősorban a távoli felhasználó számára tervezték, hogy a következő módon vezérelje az eszközt

a) leállító eszköz

b) fotózni

(c) Videók rögzítése

d) indítsa el a fő kódot (az adatgyűjtő kód a fő kód, amely kiszámítja a hatást)

12. lépés: Csomópont piros; Folyamat_3

Csomópont Piros; Folyamat_3
Csomópont Piros; Folyamat_3

A folyamatot helyi hozzáférésre tervezték, hogy elindítsa a fő kódot vagy a leállító eszközt

13. lépés: MQTT

Az MQTT (Message Queuing Telemetry Transport) egy TCP/IP protokoll, amelyben a kiadó és az előfizető kölcsönhatásba lép.

Esetünkben a Pi kiadó, míg a mobiltelefonunkba/PC -nkbe telepített alkalmazás az előfizető.

Ily módon bármilyen hatás generálásakor az információ távolról továbbításra kerül a felhasználó számára (működő internetkapcsolat szükséges)

Az MQTT -ről további információk az alábbi linken érhetők el: MQTT

Az MQTT használatának megkezdéséhez először regisztrálnunk kell, az oktatóanyaghoz, amelyet a cloudmqtt (www.cloudmqtt.com) használtam, van egy ingyenes terv az "aranyos macska" alatt, ez minden.

A regisztráció után hozzon létre egy példányt, és mondja ki a „pi” szót, amely után a következő részleteket kapja

  • Szerver név
  • kikötő
  • felhasználónév
  • Jelszó

A fentiekre van szükség mobil/pc -n keresztül történő előfizetéskor

Alkalmazásomhoz az MQTT alkalmazást használtam a Google Play Áruházból (Android verzió)

14. lépés: MQTT: Előfizető

MQTT: Előfizető
MQTT: Előfizető

Az MQTT alkalmazás mobilon fut (Android verzió)

A pi -n észlelt ütközés visszaküldésre kerül

15. lépés: MQTT: Tulajdonságok szerkesztése csomó-piros színben

MQTT: Tulajdonságok szerkesztése csomó-piros színben
MQTT: Tulajdonságok szerkesztése csomó-piros színben

A csomópirosban az MQTT csomópont kiválasztása után a "Szerver neve" és a "téma" említésre kerül. Ennek azonosnak kell lennie az előfizetői oldalon

16. lépés: A Python -kód:

A kód funkció a mellékelt folyamatábra szerint történik

17. lépés: A végső kód

A python kód csatolva van

Annak érdekében, hogy a python szkriptünket a terminálról futtassuk, futtathatóvá kell tennünk őket chmod +x datalogger.py néven, mint tovább, a kód tetején a következő "shebang" sort kell tartalmaznia! /usr/bin/python3 (erre azért van szükség, hogy a függvényeket a csomópont-vörösből végrehajtsa)

#!/usr/bin/python3 // shebang linefrom sense_hat

sense = SenseHat ()

import csv

timestamp = datetime.now ()

késleltetés = 5 // a késleltetés az adatok adatokban való tárolására szolgál. csv fájl piros = (255, 0, 0) zöld = (0, 255, 0) sárga = (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"])

giroszkóp = sense.get_gyroscope_raw ()

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

return sense_impact

def impact (): // hatás észlelésére szolgáló funkció #GPIO.setmode (GPIO. BCM) #GPIO.setup (4, GPIO. OUT) gyorsulás = sense.get_accelerometer_raw () x = gyorsulás ['x'] y = gyorsulás ['y'] z = gyorsulás ['z'] x = abs (x) y = abs (y) z = abs (z)

giroszkóp = sense.get_gyroscope_raw ()

gyrox = gyro ["x"] gyroy = gyro ["y"] gyroz = gyro ["z"]

gyrox = kerek (gyrox, 2)

gyroy = kerek (gyroy, 2) gyroz = kerek (gyroz, 2)

hatás = get_sense_impact ()

ha x> 1,5 vagy y> 1,5 vagy z> 1,5: // az értékeket a tényleges úton történő iteráció után állítják be, ennek megfelelően módosíthatók a különböző típusú és vezetési képességek esetén nyitva ('impact.csv', 'w', newline = ' ') as f: data_writer = író (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 ("!", piros) data_writer.writerow (hatás)

elif gyrox> 1.5 vagy gyroy> 1.5 vagy gyroz> 1.5: // az értékeket a fordulatok nyitási sebességének figyelembevételével állítják be ('impact.csv', 'w', newline = "), mint f: data_werer = író (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 ("!", Zöld) data_writer.writerow (hatás)

más:

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

def get_sense_data (): // függvény az érzékelő értékeinek rögzítésére és tárolására sense_data =

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

orientáció = sense.get_orientation ()

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

giroszkóp = sense.get_gyroscope_raw ()

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

sense_data.append (datetime.now ())

return sense_data

nyitott ('data.csv', 'w', newline = '') mint f:

adatíró = író (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 '])

míg igaz:

print (get_sense_data ()) eseményhez értelemben.stick.get_events (): # Ellenőrizze, hogy megnyomta -e a joystickot, ha event.action == "press": # Ellenőrizze, hogy melyik irányba, ha event.direction == "up": # sense.show_letter ("U") # Fel nyíl gyorsulás = sense.get_accelerometer_raw () x = gyorsulás ['x'] y = gyorsulás ['y'] z = gyorsulás ['z'] x = kerek (x, 0) y = kerek (y, 0) z = kerek (z, 0)

# Frissítse a kijelző elforgatását attól függően, hogy melyik irányban felfelé az 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 = round (t, 1) message = "T:" + str (t) sense.show_message (üzenet, text_colour = piros, scroll_speed = 0.09) elif event.direction == "le": gyorsulás = sense.get_accelerometer_raw () x = gyorsulás ['x'] y = gyorsulás ['y'] z = gyorsulás ['z'] x = kerek (x, 0) y = kerek (y, 0) z = kerek (z, 0)

# Frissítse a kijelző elforgatását attól függően, hogy felfelé milyen irányba halad az 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") # Lefelé mutató nyíl sense.clear () h = sense.get_humidity () h = round (h, 1) message = "H:" + str (h) sense.show_message (üzenet, text_colour = zöld, scroll_speed = 0.09) p = sense.get_pressure () p = round (p, 1) message = "P:" + str (p) sense.show_message (üzenet, text_colour = sárga, görgetési sebesség = 0,09)

# elif event.direction == "left":

#gyorsulás = sense.get_accelerometer_raw () #x = gyorsulás ['x'] #y = gyorsulás ['y'] #z = gyorsulás ['z'] #x = kerek (x, 0) #y = kerek (y, 0) #z = kerek (z, 0)

#Frissítse a kijelző forgását attól függően, hogy felfelé // // Nem használja és nem vezérli a node -red #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") # Balra nyíl # elif event.direction == "right": # sense.show_letter ("K") # Jobb nyíl # elif event.direction == "middle": # sense.clear ()

hatás()

data = get_sense_data ()

dt = adatok [-1] - időbélyeg, ha dt.seconds> delay: data_writer.writerow (data) timestamp = datetime.now ()

18. lépés: Az élő videó megfigyelése

Az Impact Recorder az élő videó megfigyelésére is használható, mivel a videó bármikor és bárhol elindítható az MQTT -n keresztül

videók streamelésére VLC lejátszót használnánk, alapértelmezés szerint a legújabb raspbianban a VLC előre telepítve van, különben telepítse a vlc-t

További információ a hálózati adatfolyam megtekintéséről a VLC Network streamen keresztül érhető el

Köszönöm, hogy elolvasta!!

Az ütközésrögzítő sokkal többre képes.

Vigyázzon a mágneses tér elemzésének következő helyére az akadályok feltérképezése során

Ajánlott: