Tartalomjegyzék:
- 1. lépés: Alkatrészek és tartozékok
- 2. lépés: Alkatrészleírás: Sense Hat
- 3. lépés: Összeszerelés: ütésrögzítő
- 4. lépés: Összeszerelés: Ütésrögzítő az autó műszerfalán
- 5. lépés: Hatásrekorder: Munka és alkalmazások
- 6. lépés: Szoftverleírás: Node Red
- 7. lépés: Csomópont-vörös alapok
- 8. lépés: Piros csomópont: Áramlás _1a
- 9. lépés: Csomópont piros: Flow_1b
- 10. lépés: Piros csomópont: Flow_2a
- 11. lépés: Piros csomópont: Flow_2b
- 12. lépés: Csomópont piros; Folyamat_3
- 13. lépés: MQTT
- 14. lépés: MQTT: Előfizető
- 15. lépés: MQTT: Tulajdonságok szerkesztése csomó-piros színben
- 16. lépés: A Python -kód:
- 17. lépés: A végső kód
- 18. lépés: Az élő videó megfigyelése
Videó: Ütésrögzítő járművekhez: 18 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
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
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ő
- 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
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
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
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
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
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
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
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ő
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
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:
DIY 37 LED Arduino rulett játék: 3 lépés (képekkel)
DIY 37 Leds Arduino Roulette Játék: A rulett egy kaszinójáték, amelyet a francia szóról neveztek el, jelentése kis kerék
Útmutató: A Raspberry PI 4 fej nélküli (VNC) telepítése Rpi-képalkotóval és képekkel: 7 lépés (képekkel)
Útmutató: A Raspberry PI 4 fej nélküli (VNC) telepítése Rpi-képalkotóval és képekkel: Ezt a Rapsberry PI-t tervezem használni egy csomó szórakoztató projektben a blogomban. Nyugodtan nézd meg. Vissza akartam kezdeni a Raspberry PI használatát, de nem volt billentyűzetem vagy egér az új helyen. Rég volt, hogy beállítottam egy málnát
Motorhőmérséklet -érzékelő/-mérő vezeték nélküli szondával klasszikus járművekhez: 7 lépés
Motorhőmérséklet -érzékelő/-mérő vezeték nélküli szondával klasszikus járművekhez: Ezt a szondát a kedves Çipitak -hoz készítettem. Fiat 126 autó, kéthengeres, léghűtéses motorral a hátsó motorháztető alatt. A Cipitak nem rendelkezik hőmérővel, amely megmutatja, hogy milyen forró a motor, ezért úgy gondoltam, hogy egy érzékelő hasznos lehet. Azt is akartam, hogy az érzékelő huzal legyen
Bolt - DIY vezeték nélküli töltő éjszakai óra (6 lépés): 6 lépés (képekkel)
Bolt - DIY vezeték nélküli töltés éjszakai óra (6 lépés): Az induktív töltés (más néven vezeték nélküli töltés vagy vezeték nélküli töltés) a vezeték nélküli áramátvitel egyik típusa. Elektromágneses indukciót használ a hordozható eszközök áramellátásához. A leggyakoribb alkalmazás a Qi vezeték nélküli töltő
A számítógép szétszerelése egyszerű lépésekkel és képekkel: 13 lépés (képekkel)
A számítógép szétszerelése egyszerű lépésekkel és képekkel: Ez az utasítás a számítógép szétszereléséről szól. A legtöbb alapvető alkatrész moduláris és könnyen eltávolítható. Fontos azonban, hogy szervezett legyen ezzel kapcsolatban. Ez segít elkerülni az alkatrészek elvesztését, és az újra összerakást is