Sadržaj:
- Korak 1: Dijelovi i pribor
- Korak 2: Opis dijelova: Sense Hat
- Korak 3: Sastavljanje: Snimač utjecaja
- Korak 4: Sklapanje: Snimač udara na upravljačkoj ploči automobila
- Korak 5: Rekoder utjecaja: 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: Čvor crveni; Tijek_3
- Korak 13: MQTT
- Korak 14: MQTT: Pretplatnik
- Korak 15: MQTT: Uređivanje svojstava u Node-crvenoj boji
- 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 promjena: 2024-01-30 09:35
Uređaj za snimanje udara dizajniran je za snimanje udara na vozilo tijekom vožnje ili stajanja. Utjecaji se pohranjuju u bazu podataka u obliku očitanja, kao i videa/slike. Udaljeni korisnik nakon udara može se provjeriti u stvarnom vremenu, a udaljeni korisnik tada može pogledati spremljeni 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 je računalna snaga
(2) Šešir od maline pi sense
(3) Pi kamera od maline / USB kamera
(4) Memorijska kartica s najnovijom raspbian slikom (trebala bi podržavati crveni čvor, gotovo svaka najnovija slika radi)
(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, joystick s pet tipki i uključuje sljedeće senzore:
- Žiroskop
- Brzinomjer
- Magnetometar
- Temperatura
- Barometarski
- pritisak
- Vlažnost
Više informacija o radu s osjetilnim šeširom može se dobiti sa sljedećih veza: Sense_Hat
API za sense hat nalaze se na: Sense_hat_API
Kôd za programiranje sense-hat obrađen je u kasnijim koracima. Sense hat code također se može simulirati na simulatoru koji se nalazi na: Sense-hat simulatoru
Korak 3: Sastavljanje: Snimač utjecaja
- Sklapanje je jednostavnije jer senzorski šešir mora biti složen preko pi (označeni vijci za montažu isporučeni su s senzorskim šeširom).
- Mogu se spojiti USB kamera ili pi kamera. U vodiču se razmatra pi kamera te se prema tome vrši kodiranje iste.
- Umetnite memorijsku karticu i konfigurirajte python kôd i crveni čvor (konfiguracija i kôd su obrađeni u daljnjim koracima)
Na gornjoj slici prikazana je pi-kamera spojena ravnim vrpčanim kabelom na pi
Korak 4: Sklapanje: Snimač udara na upravljačkoj ploči automobila
Za montažu rekordera 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.
Daljnja kamera montirana je 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 o MQTT -u su obrađeni u daljnjim koracima)
Korak 5: Rekoder utjecaja: Rad i aplikacije
Iz senzorskog šešira, ubrzanje i žiroskop koriste se za provjeru jesu li sirove vrijednosti iznad 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 os 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. Tijekom oštrog zaokreta 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 se prikazuje na matrici osjetljivog šešira LED kao "!" crveno za ubrzanje i zeleno za aktivaciju žiroskopa
Korak 6: Opis softvera: Node Red
Node-RED je programski alat temeljen na protoku, koji je izvorno razvio IBM-ov 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) Praćenje utjecaja na vozilo i prijenos 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 node-red
Imajte na umu da dijagrami toka u crvenom čvoru stupaju u interakciju s python kodom, stoga potonji dio pokriva aspekte python koda
Korak 7: Osnove crvenog čvora
Određeni osnovni koraci označeni su za početak rada Node-red u trenu, ali da, node-red je previše jednostavan za početak i razradu aplikacija.
- 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 temelju promjena, tj. Otkrivenog utjecaja, snimanje videozapisa kamerom postavljeno je na način rada i dalje se korisnik putem interneta obavještava da je došlo do utjecaja
Korak 9: Crveni čvor: Flow_1b
U navedenom toku, video snimanje se može 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/učita u direktorij, informacije se prenose registriranom korisniku putem interneta
Korak 11: Crveni čvor: Flow_2b
Ovaj protok prvenstveno je dizajniran za udaljenog korisnika, tako da upravlja uređajem na sljedeći način
(a) uređaj za isključivanje
(b) fotografirati
(c) Snimite video zapise
(d) početak glavnog koda (kôd zapisivača podataka je glavni kôd koji izračunava utjecaj)
Korak 12: Čvor crveni; Tijek_3
Tok je dizajniran za lokalni pristup, tako da pokreće glavni kod ili uređaj za isključivanje
Korak 13: MQTT
MQTT (Telemetry Transport Message Queuing Telemetry Transport) 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čunalu 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 pronaći na sljedećoj poveznici: 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
- Naziv poslužitelja
- luka
- Korisničko ime
- lozinka
Gore navedeno potrebno je prilikom pretplate putem mobitela/računala
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)
Utjecaj otkriven na pi prenosi se natrag
Korak 15: MQTT: Uređivanje svojstava u Node-crvenoj boji
U crvenom čvoru nakon odabira čvora MQTT, trebaju se spomenuti "naziv poslužitelja" i "tema". 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 kod je u privitku
Da bi se naša python skripta pokrenula s terminala, moramo ih učiniti izvršnima kao chmod +x datalogger.py, nego dalje vrh koda treba sadržavati sljedeći "shebang" redak #! /usr/bin/python3 (to je potrebno za izvršavanje funkcija iz node-red)
#!/usr/bin/python3 // shebang linefrom sense_hat uvozi SenseHat iz datuma uvoza datum datetime iz csv unos pisača uvoz RPi. GPIO kao GPIO iz vremena uvoza sleep
sense = SenseHat ()
uvoz csv -a
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 = smisao.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 utjecaja #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 = smisao.get_gyroscope_raw ()
žiroskop = žiroskop ["x"] žiroskop = žiroskop "" y "] žiroskop = žiroskop" "z"]
žiroks = okrugli (žiroks, 2)
žiroskop = okrugli (žiroskop, 2) žiroskop = okrugli (žiroskop, 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 vrste 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 ',' gyro x ',' gyro y ',' gyro z ']) #GPIO. output (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 zavoja 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 pohranu 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 = smisao.get_gyroscope_raw ()
sense_data.append (gyro ["x"]) sense_data.append (gyro ["y"]) sense_data.append (gyro ["z"])
sense_data.append (datetime.now ())
vratiti 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 istina:
print (get_sense_data ()) za događaj u smislu.stick.get_events (): # Provjerite je li pritisnuta navigacijska tipka ako event.action == "pritisnuto": # Provjerite u kojem smjeru je event.direction == "gore": # smisao.show_letter ("U") # Strelica gore 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 zaslona ovisno o smjeru prema gore ako je 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 zaslona ovisno o smjeru prema gore ako je 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, brzina pomicanja = 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 zaslona 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 ulijevo # elif event.direction == "udesno": # sense.show_letter ("K") # Strelica udesno # elif event.direction == "middle": # sense.clear ()
udarac()
data = get_sense_data ()
dt = data [-1] - vremenska oznaka ako je dt.seconds> delay: data_writer.writerow (data) timestamp = datetime.now ()
Korak 18: Praćenje video zapisa uživo
Snimač utjecaja također se može koristiti 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 na čitanju!!
Snimač utjecaja može učiniti mnogo više.
Pazite na sljedeći prostor za analizu magnetskog polja u mapiranju prepreka
Preporučeni:
Tri aksijalna vučna vozila (cnc) - PLC: 4 koraka
Tri aksijalna vučna vozila (cnc)-PLC: Pozdrav Ova disertacija bavi se programiranjem PLC-PS3 KLOKNER MOELLER-a, s obje svrhe funkcionalnošću mehaničkog modela, takozvane troosne transportne dizalice, au našem slučaju prijevoz metalnih tereta. To je ess
Privjesak za bijeg vozila u nuždi: 11 koraka (sa slikama)
Privjesak za bijeg vozila u nuždi: automobilske nesreće. Jao! Najbolji način da izbjegnete nesreću je koristiti tehnike sigurne vožnje i uvijek paziti gdje idete i na druge automobile oko sebe. Međutim, unatoč vašim najvećim naporima, ne kontrolirate drugi pogon
Alarmni sustav za parkiranje vozila pomoću PIR senzora- Uradi sam: 7 koraka (sa slikama)
Sustav alarma za parkiranje vozila pomoću PIR senzora- Uradi sam: Jeste li ikada imali problema pri parkiranju vozila poput automobila, kamiona, motocikla ili bilo kojeg drugog, tada ću vam u ovom uputstvu pokazati kako riješiti ovaj problem pomoću jednostavnog alarma za parkiranje vozila sustav pomoću PIR senzora. U ovom sustavu koji
Stražnji pogled vozila: 9 koraka (sa slikama)
Stražnji vid vozila: Zašto gradimo stražnji vid vozila? Rezervni sudar bio je veliki problem, Američki centar za kontrolu bolesti izvijestio je da je od 2001. do 2003. godine procijenjeno 7 475 djece (2 492 godišnje) mlađe od 15 godina liječen od automobilske bolesti
Kompletan GPS+GPRS sustav protiv krađe vozila baziran na Arduinu: 5 koraka (sa slikama)
Cjeloviti GPS-GPRS sustav za zaštitu vozila od krađe baziran na Arduinu: Pozdrav svima! Htio sam izgraditi cjelovito rješenje za GPS uređaj protiv krađe vozila, koje bi bilo: što jeftinije što je moguće potpunije što funkcionira -ne postoji ništa drugo za učiniti pa sam na kraju izgradio rješenje na bazi Arduina