Sadržaj:
- Korak 1: Dijelovi i pribor
- Korak 2: Opis dijelova: Sense Hat
- Korak 3: Sklapanje: Snimač udara
- Korak 4: Sklapanje: Snimač udara na instrument tabli automobila
- Korak 5: Snimač udara: Rad i aplikacije
- Korak 6: Opis softvera: Node Red
- Korak 7: Osnove crvenog čvora
- Korak 8: Crveni čvor: Protok _1a
- Korak 9: Crveni čvor: Flow_1b
- Korak 10: Crveni čvor: Flow_2a
- Korak 11: Crveni čvor: Flow_2b
- Korak 12: Node Red; Flow_3
- Korak 13: MQTT
- Korak 14: MQTT: Pretplatnik
- Korak 15: MQTT: Uređivanje svojstava u crvenom čvoru
- Korak 16: Python kod:
- Korak 17: Završni kod
- Korak 18: Praćenje video zapisa uživo
Video: Snimač udara za vozila: 18 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:06
Uređaj za snimanje udara je dizajniran za snimanje udara na vozilo tokom vožnje ili stajanja. Uticaji se pohranjuju u bazu podataka u obliku očitanja, kao i videa/slike. Udaljeni korisnik se nakon udara može provjeriti u stvarnom vremenu, a udaljeni korisnik može pogledati snimljeni video ili uzeti daljinski pristup pi kameri i prema tome gledati događaje.
Korak 1: Dijelovi i pribor
(1) Raspberry Pi 3 ili bolji: Potrebna računarska snaga
(2) Šešir od maline pi sense
(3) Pi kamera od maline / USB kamera
(4) Memorijska kartica sa najnovijom raspbian slikom (trebala bi podržavati crveni čvor, radi skoro svaka najnovija slika)
(5) Napajanje najmanje 2,1 A (koristio sam bateriju za samostalni rad u automobilu)
Korak 2: Opis dijelova: Sense Hat
Sense HAT ima 8 × 8 RGB LED matricu, džojstik sa pet tastera i uključuje sledeće senzore:
- Žiroskop
- Akcelerometar
- Magnetometar
- Temperature
- Barometrijski
- pritisak
- Vlažnost
Više informacija o radu sa sense hatom može se dobiti na sljedećim linkovima: Sense_Hat
API za sense hat nalazi se na: Sense_hat_API
Kôd za programiranje sense-hat obrađen je u kasnijim koracima. Sense hat kod se takođe može simulirati na simulatoru koji se nalazi na: Sense-hat simulatoru
Korak 3: Sklapanje: Snimač udara
- Sklapanje je jednostavnije jer senzorski šešir mora biti složen preko pi (označeni pričvrsni vijci isporučuju se sa senzorskim šeširom).
- Mogu se spojiti USB kamera ili pi kamera. U vodiču se razmatra pi kamera i shodno tome vrši se kodiranje iste.
- Umetnite memorijsku karticu i konfigurirajte python kôd i crveni čvor (konfiguracija i kôd su obrađeni u daljnjim koracima)
Gornja slika prikazuje pi-kameru povezanu preko ravnog vrpcanog kabela na pi
Korak 4: Sklapanje: Snimač udara na instrument tabli automobila
Za montažu diktafona koristio sam dvostranu traku, prednost je što se diktafon može lako premjestiti u drugi položaj, ovisno o tome što najbolje odgovara vašem automobilu.
Dalje kamera je montirana okomito kao što je prikazano, koristeći istu dvostruku bočnu traku, Sljedeći na redu je povezivanje izvora napajanja (banka kapaciteta 10 000 mAH) zajedno sa spremnom internetskom vezom
Za MQTT aplikaciju bit će potrebna internetska veza (detalji za MQTT su obrađeni u daljnjim koracima)
Korak 5: Snimač udara: Rad i aplikacije
Iz senzorskog šešira, ubrzanje i žiroskop koriste se za provjeru jesu li sirove vrijednosti izvan zadanog ograničenja u kodu.
Akcelerometar: Akcelerometar govori o količini gravitacijske sile (G-sile) koja djeluje na svaku od osi x, y & z, ako bilo koja osa mjeri silu veću od 1G, tada se može otkriti brzo kretanje. (imajte na umu da bi os usmjerena prema dolje imala vrijednost 1g i treba je u skladu s tim uzeti u obzir u Python kodu).
Žiroskop; Žiroskop se koristi za mjerenje kutnog kretanja, tj. Pri oštrom zaokretu senzor se može aktivirati (ovisno o postavci u kodu), pa bi se osoba koja oštro okreće vozilo uhvatila !!
Svako aktiviranje postavljenog ograničenja također je prikazano na matrici LED senzora kao "!" crveno za ubrzanje i zeleno za aktivaciju žiroskopa
Korak 6: Opis softvera: Node Red
Node-RED je programski alat zasnovan na protoku, koji je prvobitno razvio IBM-ov tim Emerging Technology Servicesteam, a sada je dio JS Foundation.
Više informacija o čvoru crveno može se dobiti putem sljedeće veze: čvor-crveno
U našem slučaju koristili bismo node -red za sljedeće aktivnosti
(1) Interakcija s upravljačkim palicama za pokretanje funkcija kamere
(2) Nadgledanje utjecaja na vozilo i prenošenje informacija krajnjem korisniku primjenom MQTT -a i daljnjim prihvaćanjem naredbi krajnjeg korisnika putem MQTT -a i pokretanjem potrebne aplikacije na pi
(3) Izvođenje nekih osnovnih stvari poput isključivanja pi
Daljnji koraci daju detaljne informacije za dijagram toka implementiran na čvoru-crveno
Imajte na umu da dijagrami toka u crvenom čvoru stupaju u interakciju s python kodom, stoga posljednji dio pokriva aspekte python koda
Korak 7: Osnove crvenog čvora
Određeni osnovni koraci su istaknuti za početak Node-red-a u tren oka, ali da, node-red je previše jednostavan za početak i rad na aplikacijama.
- Pokretanje Node-red: https:// localhost: 1880.
- Pokretanje Node-red kada je pi spojen na internet https:// ip adresa>: 1880
Korak 8: Crveni čvor: Protok _1a
Flow _1a, prati sve promjene u CSV datoteci i na osnovu promjena, tj. Otkrivenog utjecaja, snimanje video zapisa kamerom postavljeno je na način rada i dalje se korisnik putem interneta obavještava da je došlo do udara
Korak 9: Crveni čvor: Flow_1b
U navedenom toku, snimanje video zapisa može se započeti u bilo kojem trenutku jednostavnim pritiskom na navigacijsku tipku
Korak 10: Crveni čvor: Flow_2a
U navedenom toku, kad god se neka nova slika ili video zapis pohrani/otpremi u direktorij, informacije se prenose registriranom korisniku putem interneta
Korak 11: Crveni čvor: Flow_2b
Ovaj tok je prvenstveno dizajniran za udaljenog korisnika, tako da kontrolira uređaj na sljedeći način
(a) uređaj za isključivanje
(b) slikati
(c) Snimanje video zapisa
(d) pokretanje glavnog koda (kôd zapisivača podataka je glavni kôd koji izračunava utjecaj)
Korak 12: Node Red; Flow_3
Tok je dizajniran za lokalni pristup, tako da pokreće glavni kod ili uređaj za isključivanje
Korak 13: MQTT
MQTT (telemetrijski transport u redu poruka) je TCP/IP protokol, u kojem izdavač i pretplatnik komuniciraju.
U našem slučaju Pi je izdavač, dok će aplikacija instalirana na našem mobilnom računaru biti pretplatnik.
Na ovaj način, pri stvaranju bilo kakvog utjecaja, informacije se daljinski prenose do korisnika (radna internetska veza je neophodna)
Više informacija o MQTT -u možete pristupiti sa sljedeće veze: MQTT
Da bismo počeli koristiti MQTT, prvo se moramo registrirati, za tutorial sam koristio cloudmqtt (www.cloudmqtt.com), postoji besplatni plan pod "slatka mačka", to je sve.
Nakon registracije stvorite instancu recite "pi" nakon čega ćete dobiti sljedeće detalje
- Ime servera
- port
- korisničko ime
- lozinka
Gore navedeno je potrebno prilikom pretplate putem mobilnog telefona/računara
Za svoju aplikaciju koristio sam aplikaciju MQTT iz google play trgovine (verzija za Android)
Korak 14: MQTT: Pretplatnik
Aplikacija MQTT radi na mobilnom uređaju (verzija za Android)
Uticaj otkriven na pi se prenosi nazad
Korak 15: MQTT: Uređivanje svojstava u crvenom čvoru
U crvenom čvoru nakon odabira čvora MQTT, treba spomenuti "naziv servera" i "temu". Ovo bi trebalo biti isto na pretplatničkom kraju
Korak 16: Python kod:
Funkcionalnost koda je prema priloženom dijagramu toka
Korak 17: Završni kod
Python kôd je priložen
Da bi se naša python skripta pokrenula s terminala, moramo ih učiniti izvršnim kao chmod +x datalogger.py, nego dalje vrh koda treba sadržavati sljedeći "shebang" red #! /usr/bin/python3 (ovo je potrebno za izvršavanje funkcija iz node-red)
#!/usr/bin/python3 // shebang linefrom sense_hat uvozi SenseHat iz datetime import datetime iz csv importer import RPi. GPIO kao GPIO iz time import time sleep
sense = SenseHat ()
import csv
vremenska oznaka = datetime.now ()
delay = 5 // kašnjenje je definirano za spremanje podataka u datoteku data.csv crveno = (255, 0, 0) zeleno = (0, 255, 0) žuto = (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"])
žiroskop = sense.get_gyroscope_raw ()
sense_impact.append (gyro ["x"]) sense_impact.append (gyro ["y"]) sense_impact.append (gyro ["z"])
return sense_impact
def impact (): // funkcija za otkrivanje udara #GPIO.setmode (GPIO. BCM) #GPIO.setup (4, GPIO. OUT) ubrzanje = sense.get_accelerometer_raw () x = ubrzanje ['x'] y = ubrzanje ['y'] z = ubrzanje ['z'] x = abs (x) y = abs (y) z = abs (z)
žiroskop = sense.get_gyroscope_raw ()
girox = gyro ["x"] gyroy = gyro ["y"] gyroz = gyro ["z"]
žiroskop = okrugli (žiroskop, 2)
giroy = okrugli (gyroy, 2) gyroz = okrugli (gyroz, 2)
utjecaj = get_sense_impact ()
ako je x> 1,5 ili y> 1,5 ili z> 1,5: // vrijednosti se postavljaju nakon iteracije na stvarnoj cesti mogu se shodno tome promijeniti za različite tipove i vozačke sposobnosti s otvorenim ('impact.csv', 'w', newline = ' ') kao f: data_writer = pisac (f) data_writer.writerow ([' acc x ',' acc y ',' acc z ',' giro x ',' žiro y ',' žiro z ']) #GPIO. izlaz (4, GPIO. HIGH) sense.clear () sense.show_letter ("!", crveno) data_writer.writerow (utjecaj)
elif gyrox> 1.5 ili gyroy> 1.5 ili gyroz> 1.5: // vrijednosti se postavljaju gledajući u brzinu pokretanja okretaja s otvorenim ('impact.csv', 'w', newline = '') kao f: data_writer = pisac (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 ("!", Zeleno) data_writer.writerow (utjecaj)
drugo:
# GPIO.output (4, GPIO. LOW) sense.clear ()
def get_sense_data (): // funkcija za snimanje i pohranjivanje vrijednosti sa senzora sense_data =
sense_data.append (sense.get_temperature ()) sense_data.append (sense.get_pressure ()) sense_data.append (sense.get_humidity ())
orijentacija = smisao.get_orientation ()
sense_data.append (orijentacija ["zakretanje"]) sense_data.append (orijentacija ["pitch"]) sense_data.append (orijentacija ["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"])
žiroskop = 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
s otvorenim ('data.csv', 'w', newline = '') kao f:
data_writer = pisac (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 '])
dok je True:
print (get_sense_data ()) za događaj u smislu.stick.get_events (): # Proverite da li je džojstik pritisnut ako je event.action == "pritisnuto": # Proverite u kom smeru je event.direction == "gore": # smisao.show_letter ("U") # Strelica nagore ubrzanje = sense.get_accelerometer_raw () x = ubrzanje ['x'] y = ubrzanje ['y'] z = ubrzanje ['z'] x = okruglo (x, 0) y = okruglo (y, 0) z = okruglo (z, 0)
# Ažurirajte rotaciju ekrana ovisno o tome u kojem smjeru ide 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 (message, text_colour = red, scroll_speed = 0.09) elif event.direction == "dolje": ubrzanje = sense.get_accelerometer_raw () x = ubrzanje ['x'] y = ubrzanje ['y'] z = ubrzanje ['z'] x = okruglo (x, 0) y = okruglo (y, 0) z = okruglo (z, 0)
# Ažurirajte rotaciju ekrana ovisno o tome u kojem smjeru ide 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") # Strelica prema dolje sense.clear () h = sense.get_humidity () h = okrugla (h, 1) message = "H:" + str (h) sense.show_message (message, text_colour = green, scroll_speed = 0.09) p = sense.get_pressure () p = round (p, 1) message = "P:" + str (p) sense.show_message (message, text_colour = žuta, scroll_speed = 0,09)
# elif event.direction == "lijevo":
#ubrzanje = sense.get_accelerometer_raw () #x = ubrzanje ['x'] #y = ubrzanje ['y'] #z = ubrzanje ['z'] #x = okruglo (x, 0) #y = okruglo (y, 0) #z = okruglo (z, 0)
#Ažurirajte rotaciju ekrana ovisno o smjeru gore // Ne koristi se i kontrolira 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") # strelica nalijevo # elif event.direction == "nadesno": # sense.show_letter ("K") # Strelica nadesno # elif event.direction == "middle": # sense.clear ()
utjecaj ()
data = get_sense_data ()
dt = data [-1] - vremenska oznaka ako je dt.seconds> kašnjenje: data_writer.writerow (data) timestamp = datetime.now ()
Korak 18: Praćenje video zapisa uživo
Snimač uticaja može se koristiti i za praćenje video zapisa uživo, jer se video zapis može pokrenuti bilo gdje i bilo gdje putem MQTT -a
koristili bismo VLC player za strujanje videozapisa, prema zadanim postavkama u najnovijem raspbian-u VLC je unaprijed instaliran, inače instalirajte vlc kao pod
Više informacija o gledanju mrežnog toka može se pristupiti putem VLC mrežnog toka
Hvala vam na čitanju !!
Rekorder može mnogo više učiniti.
Pazite na sljedeći prostor za analizu magnetskog polja u mapiranju prepreka
Preporučuje se:
Privjesak za bijeg vozila za hitne slučajeve: 11 koraka (sa slikama)
Privjesak za bijeg vozila u slučaju nužde: Saobraćajne nesreće. Bravo! Najbolji način da izbjegnete nesreću je korištenje tehnika sigurne vožnje i uvijek obratite pažnju na to kamo idete i na druge automobile oko sebe. Međutim, unatoč vašim najvećim naporima, ne kontrolirate drugi pogon
UREĐAJ ZA VARANJE VOZILA: 10 koraka (sa slikama)
WHEELIE CHEAT UREĐAJ: U ovom projektu napravit ćemo arduino uređaj koji će vam pomoći da naučite kotač. Pritisnut će zadnju kočnicu koja će vas uravnotežiti. Također će imati 2 gumba za povećanje ili smanjenje kuta u kojem će pritiskati vašu kočnicu pa će to biti mnogo više
Alarmni sistem za parkiranje vozila pomoću PIR senzora- Uradi sam: 7 koraka (sa slikama)
Alarmni sistem za parkiranje vozila pomoću PIR senzora- Uradi sam: Jeste li ikada imali problema prilikom parkiranja vozila poput automobila, kamiona, motornog ili bilo kojeg drugog, tada ću vam u ovom uputstvu pokazati kako riješiti ovaj problem pomoću jednostavnog alarma za parkiranje vozila sistem koji koristi PIR senzor. U ovom sistemu koji
Zadnji pogled vozila: 9 koraka (sa slikama)
Zadnji vid vozila: Zašto gradimo zadnji vid vozila? Rezervni sudar je bio veliki problem, Američki centar za kontrolu bolesti izvijestio je da je od 2001. do 2003. godine, prema procjenama, 7.475 djece (2.492 godišnje) mlađe od 15 godina liječen od automobilske upale
Kompletan GPS+GPRS sistem protiv krađe vozila baziran na Arduinu: 5 koraka (sa slikama)
Kompletan GPS+GPRS sistem protiv krađe za vozila baziran na Arduinu: Zdravo svima! Htio sam izgraditi cjelovito rješenje za uređaj protiv krađe vozila sa GPS-om, koji bi bio: što jeftiniji, što potpuniji, koliko funkcionira -ne postoji ništa drugo za učiniti pa sam završio sa izgradnjom rješenja zasnovanog na Arduinu