Obsah:
- Krok 1: Diely a príslušenstvo
- Krok 2: Popis dielov: Sense Hat
- Krok 3: Zostavenie: záznamník nárazov
- Krok 4: Zostavenie: Záznamník nárazov na palubnú dosku automobilu
- Krok 5: Impact Recoder: Práca a aplikácie
- Krok 6: Popis softvéru: Node Red
- Krok 7: Základy červeného uzla
- Krok 8: Uzol červený: Flow _1a
- Krok 9: Uzol červený: Flow_1b
- Krok 10: Uzol červený: Flow_2a
- Krok 11: Uzol červený: Flow_2b
- Krok 12: Uzol červený; Flow_3
- Krok 13: MQTT
- Krok 14: MQTT: Predplatiteľ
- Krok 15: MQTT: Úprava vlastností v Node-red
- Krok 16: Pythonov kód:
- Krok 17: Konečný kód
- Krok 18: Monitorovanie živého videa
Video: Záznamník nárazov pre vozidlá: 18 krokov (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:58
Záznamník nárazov je navrhnutý tak, aby zaznamenával nárazy vozidla do vozidla počas jazdy alebo státia. Dopady sú uložené v databáze vo forme čítaní, ako aj videa/obrázku. Po náraze je možné vzdialeného používateľa overiť v reálnom čase a vzdialený používateľ môže potom sledovať uložené video alebo mať vzdialený prístup k pi kamere a podľa toho sledovať udalosti.
Krok 1: Diely a príslušenstvo
(1) Raspberry Pi 3 alebo lepší: Vyžaduje sa výpočtový výkon
(2) Raspberry pi sense hat
(3) Raspberry pi kamera / USB kamera
(4) Pamäťová karta s najnovším obrázkom raspbian (Malo by podporovať červený uzol, robí to takmer každý najnovší obrázok)
(5) Napájanie najmenej 2,1 A (batériu som použil na samostatnú prevádzku v aute)
Krok 2: Popis dielov: Sense Hat
Sense HAT má maticu LED 8 × 8 RGB, päťtlačidlový joystick a obsahuje nasledujúce senzory:
- Gyroskop
- Akcelerometer
- Magnetometer
- Teplota
- Barometrický
- tlak
- Vlhkosť
Viac informácií o práci so sense hat môžete získať z nasledujúcich odkazov: Sense_Hat
API pre sense hat je hostiteľom na adrese: Sense_hat_API
Kód pre programovanie sense-hat je popísaný v ďalších krokoch. Sense hat code je možné simulovať aj na simulátore umiestnenom na: Sense-hat simulator
Krok 3: Zostavenie: záznamník nárazov
- Zostavenie je jednoduchšie, pretože snímací klobúk je potrebné stohovať cez pi (určené montážne skrutky sú vybavené snímacím klobúkom).
- Je možné pripojiť USB alebo pi kameru. V tomto tutoriáli sa berie do úvahy pi kamera a podľa toho sa pre ne tiež kóduje.
- Vložte pamäťovú kartu a nakonfigurujte kód pythonu a uzol -červený (konfigurácia a kód sú popísané v ďalších krokoch)
Na obrázku vyššie je zobrazená pi-kamera pripojená pomocou plochého plochého kábla k pí
Krok 4: Zostavenie: Záznamník nárazov na palubnú dosku automobilu
Na montáž rekordéra som použil obojstrannú pásku, výhodou je, že rekordér je možné ľahko posúvať v rôznych polohách, podľa toho, čo najlepšie vyhovuje vášmu autu.
Ďalšia kamera je namontovaná vertikálne, ako je znázornené, pomocou rovnakej obojstrannej pásky, Ďalej v rade je pripojenie zdroja energie (power banka 10 000 mAh) spolu s pripraveným internetovým pripojením
Pre aplikáciu MQTT je potrebné internetové pripojenie (podrobnosti o MQTT sú uvedené v ďalších krokoch)
Krok 5: Impact Recoder: Práca a aplikácie
Z sense hat sa akcelerácia a gyroskop používajú na kontrolu, či sú surové hodnoty nad kódom stanoveným v kóde.
Akcelerometer: Akcelerometer udáva množstvo gravitačnej sily (sily G) pôsobiacej na každú z osí x, y & z, ak nejaká os meria silu väčšiu ako 1 G, potom je možné detekovať rýchly pohyb. (upozorňujeme, že os smerujúca nadol bude mať hodnotu 1 g a je potrebné ju zodpovedajúcim spôsobom zohľadniť v kóde pythonu).
Gyroskop; Gyroskop sa používa na meranie uhlových pohybov, t. J. Počas ostrej zákruty sa môže senzor aktivovať (závisí od nastavenia v kóde), takže by sa prudko otáčala osoba, ktorá krúti vozidlom !!
Akákoľvek aktivácia nastaveného limitu sa tiež zobrazí na matici LED snímača ako „!“červená na zrýchlenie a zelená na aktiváciu gyroskopu
Krok 6: Popis softvéru: Node Red
Node-RED je programovací nástroj založený na tokoch, pôvodne vyvinutý spoločnosťou IBM Emerging Technology Servicesteam a teraz je súčasťou nadácie JS Foundation.
Viac informácií o červenom uzle môžete získať prostredníctvom nasledujúceho odkazu: uzol-červený
V našom prípade by sme na nasledujúce činnosti používali node -red
(1) Interakcia s joystickmi na spustenie funkcií fotoaparátu
(2) Monitorovanie vplyvov na vozidlo a odovzdávanie informácií koncovému používateľovi pomocou MQTT a ďalšie akceptovanie príkazov koncového používateľa prostredníctvom MQTT a spustenie potrebnej aplikácie na pi
(3) Vykonávanie niektorých základných činností, ako je napríklad vypnutie funkcie pí
Ďalšie kroky poskytujú podrobné informácie o vývojovom diagrame implementovanom na uzle červenej farby
Upozorňujeme, že vývojové diagramy uzol-červená interagujú s kódom pythonu, preto druhá časť pokrýva aspekty kódu pythonu
Krok 7: Základy červeného uzla
Niektoré základné kroky sú zvýraznené na rýchle spustenie Node-red, ale áno, node-red je príliš jednoduché na spustenie a prácu s aplikáciami.
- Začínajúci Node-red: https:// localhost: 1880.
- Spustenie Node-red, keď je pi pripojené k internetu https:// adresa IP>: 1880
Krok 8: Uzol červený: Flow _1a
Flow _1a monitoruje všetky zmeny v súbore CSV a na základe týchto zmien, t. J. Zisteného nárazu, je nahrávanie videa z kamery zapnuté a ďalej je používateľ prostredníctvom internetu informovaný, že došlo k nárazu.
Krok 9: Uzol červený: Flow_1b
V uvedenom toku je možné nahrávanie videa začať v ľubovoľnom bode jednoduchým stlačením joysticku
Krok 10: Uzol červený: Flow_2a
V uvedenom toku, kedykoľvek je akýkoľvek nový obrázok alebo video uložený/odoslaný do adresára, sú informácie odoslané registrovanému používateľovi cez internet
Krok 11: Uzol červený: Flow_2b
Tento tok je primárne určený pre vzdialeného používateľa, aby bolo možné zariadenie ovládať nasledujúcim spôsobom
a) vypínacie zariadenie
b) fotografovať
c) Nahrávajte videá
d) spustite hlavný kód (kód záznamníka údajov je hlavný kód, ktorý vypočítava vplyv)
Krok 12: Uzol červený; Flow_3
Tok je navrhnutý pre lokálny prístup tak, aby sa spustil hlavný kód alebo vypínacie zariadenie
Krok 13: MQTT
MQTT (Message Queuing Telemetry Transport) je protokol TCP/IP, v ktorom interagujú vydavateľ a predplatiteľ.
V našom prípade je Pi vydavateľom, pričom predplatiteľom je aplikácia nainštalovaná v našom moblile/PC.
Týmto spôsobom pri vytváraní akéhokoľvek vplyvu sú informácie vzdialene zasielané používateľovi (nevyhnutné je funkčné internetové pripojenie)
Viac informácií o MQTT je prístupných z nasledujúceho odkazu: MQTT
Aby sme mohli začať používať MQTT, musíme sa najskôr zaregistrovať, pretože v rámci tutoriálu, ktorý som použil na cloudmqtt (www.cloudmqtt.com), je v časti „roztomilá mačka“bezplatný plán, to je všetko.
Po registrácii vytvorte inštanciu, povedzte „pi“, po ktorej by ste získali nasledujúce podrobnosti
- Názov servera
- prístav
- používateľské meno
- heslo
Vyššie uvedené sú potrebné pri predplatení prostredníctvom mobilného počítača/počítača
Na svoju aplikáciu som použil aplikáciu MQTT z obchodu Google Play (verzia pre Android)
Krok 14: MQTT: Predplatiteľ
Aplikácia MQTT bežiaca na mobile (verzia pre Android)
Náraz zistený na pí sa odošle späť
Krok 15: MQTT: Úprava vlastností v Node-red
V uzle červenej po výbere uzla MQTT sa uvedie „Názov servera“a „téma“. To by malo byť rovnaké na konci predplatiteľa.
Krok 16: Pythonov kód:
Funkčnosť kódu je podľa priloženého vývojového diagramu
Krok 17: Konečný kód
Python kód je priložený
Aby mohol byť náš python skript spustený z terminálu, musíme ho urobiť spustiteľným ako chmod +x datalogger.py, pretože horná časť kódu by mala obsahovať nasledujúci riadok „shebang“! /usr/bin/python3 (je to potrebné na spustenie funkcií z uzla červeného)
#!/usr/bin/python3 // shebang linefrom sense_hat import SenseHat z datetime import datetime z csv import spisovateľ import RPi. GPIO ako GPIO z času import spánku
zmysel = SenseHat ()
import csv
timestamp = datetime.now ()
delay = 5 // oneskorenie je definované na ukladanie údajov do súboru data.csv červená = (255, 0, 0) zelená = (0, 255, 0) žltá = (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"])
gyroskop = sense.get_gyroscope_raw ()
sense_impact.append (gyro
vrátiť sense_impact
def impact (): // funkcia na detekciu nárazu #GPIO.setmode (GPIO. BCM) #GPIO.setup (4, GPIO. OUT) acceleration = sense.get_accelerometer_raw () x = acceleration ['x'] y = acceleration ['y'] z = zrýchlenie ['z'] x = abs (x) y = abs (y) z = abs (z)
gyroskop = sense.get_gyroscope_raw ()
gyrox = gyro ["x"] gyroy = gyro ["y"] gyroz = gyro ["z"]
gyrox = okrúhly (gyrox, 2)
gyroy = guľatý (gyroy, 2) gyroz = okrúhly (gyroz, 2)
impact = get_sense_impact ()
ak x> 1,5 alebo y> 1,5 alebo z> 1,5: // hodnoty sú nastavené po iterácii na skutočnej ceste, je možné ich zodpovedajúcim spôsobom zmeniť pre rôzne typy a vodičské schopnosti s otvorenými ('impact.csv', 'w', newline = ' ') ako f: data_writer = Writer (f) data_writer.writerow ([' acc x ',' acc y ',' acc z ',' gyro x ',' gyro y ',' gyro z ']) #GPIO. výstup (4, GPIO. HIGH) sense.clear () sense.show_letter ("!", červený) data_writer.writerow (vplyv)
elif gyrox> 1,5 alebo gyroy> 1,5 alebo gyroz> 1,5: // hodnoty sa nastavia podľa rýchlosti, s akou sa otáčky začínajú otvorene ('impact.csv', 'w', newline = '') ako f: data_writer = Writer (f) data_writer.writerow (['acc x', 'acc y', 'acc z', 'gyro x', 'gyro y', 'gyro z'])) #GPIO.output (4, GPIO. VYSOKÉ) sense.clear () sense.show_letter ("!", Zelená) data_writer.writerow (vplyv)
inak:
# GPIO.output (4, GPIO. LOW) sense.clear ()
def get_sense_data (): // funkcia na záznam a ukladanie hodnôt zo senzora sense_data =
sense_data.append (sense.get_temperature ()) sense_data.append (sense.get_pressure ()) sense_data.append (sense.get_humidity ())
orientácia = sense.get_orientation ()
sense_data.append (orientácia ["vybočiť"]) sense_data.append (orientácia ["ihrisko"]) sense_data.append (orientácia ["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"])
gyroskop = sense.get_gyroscope_raw ()
sense_data.append (gyro
sense_data.append (datetime.now ())
vrátiť sense_data
s otvoreným ('data.csv', 'w', newline = '') ako f:
data_writer = zapisovateľ (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 '])
kým je pravda:
print (get_sense_data ()) pre udalosť v sense.stick.get_events (): # Skontrolujte, či bol joystick stlačený, ak event.action == "stlačené": # Skontrolujte, akým smerom sa event.direction == "hore": # zmysel.show_letter ("U") # Akcelerácia šípky hore = sense.get_accelerometer_raw () x = zrýchlenie ['x'] y = zrýchlenie ['y'] z = zrýchlenie ['z'] x = okrúhle (x, 0) y = kolo (y, 0) z = kolo (z, 0)
# Aktualizujte otočenie displeja v závislosti od toho, akým smerom hore 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 = guľatá (t, 1) správa = "T:" + str (t) sense.show_message (správa, text_colour = červená, scroll_speed = 0,09) elif event.direction == "down": acceleration = sense.get_accelerometer_raw () x = acceleration ['x'] y = acceleration ['y'] z = acceleration ['z'] x = round (x, 0) y = okrúhle (y, 0) z = okrúhle (z, 0)
# Aktualizujte otočenie displeja v závislosti od toho, akým smerom hore ak 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") # Šípka nadol sense.clear () h = sense.get_humidity () h = kolo (h, 1) správa = "H:" + str (h) sense.show_message (správa, text_colour = zelená, rýchlosť posúvania = 0,09) p = sense.get_pressure () p = okrúhla (p, 1) správa = "P:" + str (p) sense.show_message (správa, text_colour = žltá, rýchlosť posúvania = 0,09)
# elif event.direction == "vľavo":
#acceleration = sense.get_accelerometer_raw () #x = acceleration ['x'] #y = acceleration ['y'] #z = acceleration ['z'] #x = round (x, 0) #y = round (y, 0) #z = okrúhle (z, 0)
#Aktualizujte otočenie displeja podľa toho, akým smerom // // Nepoužívané a riadené uzlom červeným #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") # Šípka doľava # elif event.direction == "vpravo": # sense.show_letter ("K") # šípka doprava # elif event.direction == "stred": # sense.clear ()
náraz ()
data = get_sense_data ()
dt = data [-1] - časová pečiatka, ak dt.sekundy> oneskorenie: data_writer.writerow (data) timestamp = datetime.now ()
Krok 18: Monitorovanie živého videa
Impact Recorder je možné použiť aj na monitorovanie živého videa, pretože video je možné spustiť kedykoľvek a kdekoľvek prostredníctvom MQTT
Na streamovanie videí by sme použili prehrávač VLC, v predvolenom nastavení je v najnovšom raspbiane predinštalovaný VLC, inak nainštalujte vlc ako pod
K ďalším informáciám o sledovaní sieťového streamu je možné pristupovať prostredníctvom sieťového streamu VLC
Ďakujem za čítanie!!
Záznamník nárazov dokáže oveľa viac..
Pri mapovaní prekážok si dajte pozor na ďalší priestor na analýzu magnetického poľa
Odporúča:
Kľúčenka na útek z núdzového vozidla: 11 krokov (s obrázkami)
Kľúčenka na útek z núdzového vozidla: Autonehody. Fuj! Najlepším spôsobom, ako sa vyhnúť nehode, je používať techniky bezpečnej jazdy a vždy dávať pozor na to, kam idete, a na ostatné autá vo vašom okolí. Napriek všetkému úsiliu však nemôžete ovládať iný pohon
DIY záznamník údajov GPS pre vás na ďalšiu jazdu/turistickú trasu: 11 krokov (s obrázkami)
DIY záznamník údajov GPS pre vás Next Drive/turistický chodník: Toto je záznamník údajov GPS, ktorý môžete použiť na rôzne účely, povedzme, ak sa chcete prihlásiť na dlhú cestu, ktorú ste strávili cez víkend, aby ste si prezreli jesenné farby. alebo máte obľúbenú trasu, ktorú každoročne navštevujete na jeseň a
ScanUp NFC čítačka/zapisovačka a zvukový záznamník pre nevidomých, slabozrakých a všetkých ostatných: 4 kroky (s obrázkami)
ScanUp NFC čítačka/zapisovačka a zvukový záznamník pre nevidomých, slabozrakých a všetkých ostatných: Študujem priemyselný dizajn a projekt je dielom môjho semestra. Cieľom je podpora zrakovo postihnutých a nevidomých ľudí zariadením, ktoré umožňuje nahrávať zvuk vo formáte.WAV na kartu SD a volať tieto informácie pomocou značky NFC. Takže v
Snímač/merač teploty motora s bezdrôtovou sondou pre klasické vozidlá: 7 krokov
Snímač/merač teploty motora s bezdrôtovou sondou pre klasické vozidlá: Túto sondu som vyrobil pre svoj milý Çipitak. Auto fiat 126 s 2 -valcovým vzduchom chladeným motorom pod zadnou kapotou. Çipitak nemá ukazovateľ teploty, ktorý by ukazoval, ako je motor horúci, a tak som si myslel, že by pomohol senzor. Tiež som chcel, aby bol senzor drôtený
Lacné snímače nárazov pre roboty Arduino: 4 kroky (s obrázkami)
Lacné nárazové senzory pre roboty Arduino: Potrebujete lacné, ľahko získavateľné nárazové senzory na prevzatie robota- mám na mysli projekt Arduino? Tieto malé senzory sa ľahko používajú, ľahko vyrábajú a sú nenáročné na peňaženku (17 centov za kus!) A funguje skvele na jednoduchú detekciu prekážok na mikrokontroléri