Kazalo:

Snemalnik udarcev za vozila: 18 korakov (s slikami)
Snemalnik udarcev za vozila: 18 korakov (s slikami)

Video: Snemalnik udarcev za vozila: 18 korakov (s slikami)

Video: Snemalnik udarcev za vozila: 18 korakov (s slikami)
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, November
Anonim
Snemalnik udarcev za vozila
Snemalnik udarcev za vozila

Snemalnik udarcev je zasnovan za beleženje udarcev, ki jih utrpi vozilo med vožnjo ali mirovanjem. Vplivi so shranjeni v zbirki podatkov v obliki odčitkov in videa/slike. Oddaljenega uporabnika lahko ob udarcu preverimo v realnem času, oddaljeni uporabnik pa lahko nato gleda shranjeni video ali vzame oddaljeni dostop do kamere pi in si ustrezno ogleda dogodke.

1. korak: Deli in dodatki

(1) Raspberry Pi 3 ali boljši: potrebna je računalniška moč

(2) Klobuk maline pi sense

(3) Raspberry pi kamera / USB kamera

(4) Pomnilniška kartica z najnovejšo podobo Rasbian (Če podpira vozlišče rdeče, skoraj vsaka zadnja slika podpira)

(5) Napajanje najmanj 2,1 A (uporabil sem akumulatorsko baterijo za samostojno delovanje v avtomobilu)

2. korak: Opis delov: Sense Hat

Opis delov: Sense Hat
Opis delov: Sense Hat

Sense HAT ima LED matriko 8 × 8 RGB, krmilno palico s petimi gumbi in vključuje naslednje senzorje:

  • Žiroskop
  • Merilnik pospeška
  • Magnetometer
  • Temperatura
  • Barometrično
  • pritisk
  • Vlažnost

Več informacij o delu s čutilnim klobukom je na voljo na naslednjih povezavah: Sense_Hat

API za sense hat gostuje na naslovu: Sense_hat_API

Koda za programiranje sense-hat je obravnavana v naslednjih korakih. Kodo Sense hat lahko simulirate tudi na simulatorju, ki gostuje na naslovu: Sense-hat simulator

3. korak: Sestavljanje: snemalnik udarcev

Sestavljanje: snemalnik udarcev
Sestavljanje: snemalnik udarcev
Sestavljanje: snemalnik udarcev
Sestavljanje: snemalnik udarcev
Sestavljanje: snemalnik udarcev
Sestavljanje: snemalnik udarcev
Sestavljanje: snemalnik udarcev
Sestavljanje: snemalnik udarcev
  • Sestavljanje je enostavnejše, saj je treba senzorski klobuk zložiti na pi (določeni pritrdilni vijaki so opremljeni s senzorskim klobukom).
  • Lahko priključite kamero USB ali pi kamero. V vadnici je obravnavana pi kamera in ustrezno kodiranje za isto.
  • Vstavite pomnilniško kartico in konfigurirajte kodo python in rdeče vozlišče (konfiguracija in koda sta obravnavani v nadaljnjih korakih)

Na zgornji sliki je prikazana pi-kamera, ki je s ploskim tračnim kablom povezana s pi

4. korak: Sestavljanje: snemalnik udarcev na armaturni plošči avtomobila

Sestavljanje: snemalnik udarcev na armaturni plošči avtomobila
Sestavljanje: snemalnik udarcev na armaturni plošči avtomobila

Za montažo snemalnika sem uporabil dvostranski trak, prednost je, da lahko snemalnik enostavno prestavimo v drug položaj, kar najbolj ustreza vašemu avtomobilu.

Nadaljnja kamera je nameščena navpično, kot je prikazano, z istim dvojnim stranskim trakom, Naslednja na vrsti je priključitev vira napajanja (10 000 mAH napajalna banka) skupaj s pripravljeno internetno povezavo

Za uporabo MQTT je potrebna internetna povezava (podrobnosti o MQTT so zajete v nadaljnjih korakih)

5. korak: Rekoder udarca: delo in aplikacije

S čutnega klobuka se pospešek in žiroskop preverita, ali surove vrednosti presegajo nastavljeno mejo v kodi.

Merilnik pospeška: Merilnik pospeška pove količino gravitacijske sile (sile G), ki deluje na vsako od osi x, y & z, če katera koli os meri silo več kot 1G, je mogoče zaznati hitro gibanje. (upoštevajte, da bi os, obrnjena navzdol, imela vrednost 1g in jo je treba ustrezno upoštevati v kodi python).

Žiroskop; Žiroskop se uporablja za merjenje kotnega gibanja, tj. Med ostrim zavojem se lahko senzor aktivira (odvisno od nastavitve v kodi), zato bi se oseba, ki bi močno vrtela vozilo, ujela !!

Vsaka aktivacija nastavljene meje je prikazana tudi na matrici senzorja LED kot "!" rdeče za pospešek in zeleno za aktiviranje žiroskopa

6. korak: Opis programske opreme: Node Red

Node-RED je programsko orodje, ki temelji na toku, prvotno ga je razvil IBM-ov Emerging Technology Servicesteam, zdaj pa je del fundacije JS.

Več informacij o vozlišču rdeče lahko dobite na naslednji povezavi: vozlišče-rdeče

V našem primeru bi za naslednje dejavnosti uporabili node -red

(1) Interakcija z igralnimi palicami za zagon funkcij kamere

(2) Spremljanje vplivov na vozilo in posredovanje informacij končnemu uporabniku z uporabo MQTT in nadaljnjim sprejemanjem ukazov končnega uporabnika prek MQTT in zagonom potrebne aplikacije na pi

(3) Izvajanje nekaterih osnovnih stvari, kot je zaustavitev pi

Nadaljnji koraki podajajo podrobne informacije za diagram poteka, ki je izveden na vozlišču-rdeče

Upoštevajte, da diagrami toka v rdečih vozliščih delujejo s kodo python, zato slednji del zajema vidike kode python

7. korak: Osnove rdečega vozlišča

Osnove rdeče vozlišča
Osnove rdeče vozlišča
Osnove rdeče vozlišča
Osnove rdeče vozlišča
Osnove rdeče vozlišča
Osnove rdeče vozlišča

Določeni osnovni koraki so označeni za zagon Node-red v trenutku, vendar da je node-red preveč preprost za začetek in razvijanje aplikacij.

  • Zagon Node-red: https:// localhost: 1880.
  • Zagon Node-red, ko je pi povezan z internetom https:// ip naslov>: 1880

8. korak: Node-red: Flow _1a

Rdeče vozlišče: Pretok _1a
Rdeče vozlišče: Pretok _1a

Flow _1a, spremlja vse spremembe v datoteki CSV in na podlagi sprememb, to je zaznanega vpliva, snemanje videa s kamere je nastavljeno na način delovanja, uporabnik pa je prek interneta obveščen, da je prišlo do vpliva

9. korak: vozlišče rdeče: Flow_1b

Rdeče vozlišče: Flow_1b
Rdeče vozlišče: Flow_1b

V omenjenem toku se lahko snemanje videa kadar koli začne s pritiskom na krmilno palčko

10. korak: Rdeče vozlišče: Flow_2a

Rdeče vozlišče: Flow_2a
Rdeče vozlišče: Flow_2a

V omenjenem toku, kadar koli je katera koli nova slika ali video posnetek shranjen/naložen v imenik, se podatki posredujejo registriranemu uporabniku po internetu

11. korak: Rdeče vozlišče: Flow_2b

Rdeče vozlišče: Flow_2b
Rdeče vozlišče: Flow_2b

Ta tok je predvsem zasnovan za oddaljenega uporabnika, tako da upravlja napravo na naslednji način

(a) naprava za zaustavitev

(b) fotografirajte

(c) snemanje videoposnetkov

(d) zagon glavne kode (koda zapisovalnika podatkov je glavna koda, ki izračuna vpliv)

12. korak: vozlišče rdeče; Pretok_3

Vozlišče rdeče; Pretok_3
Vozlišče rdeče; Pretok_3

Tok je zasnovan za lokalni dostop, tako da se zažene glavna koda ali naprava za zaustavitev

Korak: MQTT

MQTT (Message Queuing Telemetry Transport) je protokol TCP/IP, pri katerem založnik in naročnik komunicirata.

V našem primeru je Pi založnik, medtem ko je aplikacija, nameščena v našem mobilnem telefonu/osebnem računalniku, naročnik.

Na ta način se ob ustvarjanju kakršnega koli vpliva uporabniku na daljavo posredujejo informacije (potrebna je delujoča internetna povezava)

Več informacij o MQTT je na voljo na naslednji povezavi: MQTT

Za začetek uporabe MQTT se moramo najprej registrirati, za vadnico sem uporabil cloudmqtt (www.cloudmqtt.com), na voljo je brezplačen načrt pod "cute cat", to je vse.

Po registraciji ustvarite primerek, recite "pi", nakar boste dobili naslednje podrobnosti

  • Ime strežnika
  • pristanišče
  • uporabniško ime
  • geslo

Navedeno je potrebno pri naročanju prek mobilnega telefona/računalnika

Za svojo aplikacijo sem uporabil aplikacijo MQTT iz trgovine Google Play (različica Android)

Korak 14: MQTT: Naročnik

MQTT: Naročnik
MQTT: Naročnik

Aplikacija MQTT, ki deluje na mobilnem telefonu (različica Android)

Učinek, zaznan na pi, se posreduje nazaj

Korak 15: MQTT: Urejanje lastnosti v rdečem vozlišču

MQTT: Urejanje lastnosti v rdečem vozlišču
MQTT: Urejanje lastnosti v rdečem vozlišču

V rdečem vozlišču po izbiri vozlišča MQTT je treba omeniti "ime strežnika" in "temo". To bi moralo biti enako na strani naročnika

Korak: Koda Python:

Funkcija kode je v skladu s priloženim diagramom poteka

17. korak: Končna koda

Koda python je priložena

Če želimo, da se naš skript python zažene iz terminala, jih moramo narediti izvedljive kot chmod +x datalogger.py, nato pa mora vrh kode vsebovati naslednjo vrstico "shebang" #! /usr/bin/python3 (to je potrebno za izvajanje funkcij iz rdečega vozlišča)

#!/usr/bin/python3 // shebang linefrom sense_hat uvozi SenseHat iz datuma uvoza datetimetime iz csv uvoz zapisovalnika uvoz RPi. GPIO kot GPIO iz časovnega uvoza

sense = SenseHat ()

uvoz csv

časovni žig = datetime.now ()

zakasnitev = 5 // zakasnitev je določena za shranjevanje podatkov v datoteki data.csv rdeča = (255, 0, 0) zelena = (0, 255, 0) rumena = (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"])

gyro = sense.get_gyroscope_raw ()

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

vrni sense_impact

def impact (): // funkcija za zaznavanje vpliva #GPIO.setmode (GPIO. BCM) #GPIO.setup (4, GPIO. OUT) pospešek = sense.get_accelerometer_raw () x = pospešek ['x'] y = pospešek ['y'] z = pospešek ['z'] x = abs (x) y = abs (y) z = abs (z)

gyro = sense.get_gyroscope_raw ()

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

žiroskop = okrogel (žiroskop, 2)

gyroy = okrogel (gyroy, 2) gyroz = okrogel (gyroz, 2)

vpliv = get_sense_impact ()

če je x> 1,5 ali y> 1,5 ali z> 1,5: // se vrednosti po ponovitvi na dejanski cesti lahko ustrezno spremenijo za različne tipe in vozne sposobnosti z odprto ('impact.csv', 'w', newline = ' ') kot f: data_writer = pisalec (f) data_writer.writerow ([' acc x ',' acc y ',' acc z ',' giro x ',' giro y ',' giro z ']) #GPIO. output (4, GPIO. HIGH) sense.clear () sense.show_letter ("!", rdeče) data_writer.writerow (vpliv)

elif gyrox> 1,5 ali gyroy> 1,5 ali gyroz> 1,5: // vrednosti so nastavljene tako, da gledajo na hitrost, s katero se zavoji sprožijo z odprtostjo ('impact.csv', 'w', newline = '') kot f: data_writer = pisatelj (f) data_writer.writerow (['acc x', 'acc y', 'acc z', 'gyro x', 'gyro y', 'giro z']) #GPIO.output (4, GPIO. HIGH) sense.clear () sense.show_letter ("!", Zelena) data_writer.writerow (vpliv)

drugače:

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

def get_sense_data (): // funkcija za snemanje in shranjevanje vrednosti iz senzorja sense_data =

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

usmerjenost = smisel.get_orientation ()

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

gyro = sense.get_gyroscope_raw ()

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

sense_data.append (datetime.now ())

vrni sense_data

z odprto ('data.csv', 'w', newline = '') kot f:

data_writer = pisatelj (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 '])

medtem ko je res:

print (get_sense_data ()) za dogodek v sense.stick.get_events (): # Preverite, ali je bila krmilna palica pritisnjena, če je event.action == "pritisnjeno": # Preverite, v katero smer, če event.direction == "navzgor": # smiselno.show_letter ("U") # Puščica navzgor pospešek = sense.get_accelerometer_raw () x = pospešek ['x'] y = pospešek ['y'] z = pospešek ['z'] x = okrogel (x, 0) y = okroglo (y, 0) z = okroglo (z, 0)

# Posodobite zasuk zaslona glede na smer navzgor, če 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 = rdeča, scroll_speed = 0,09) elif event.direction == "dol": pospešek = sense.get_accelerometer_raw () x = pospešek ['x'] y = pospešek ['y'] z = pospešek ['z'] x = okrogel (x, 0) y = okroglo (y, 0) z = okroglo (z, 0)

# Posodobite zasuk zaslona glede na smer navzgor, če 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") # Puščica navzdol sense.clear () h = sense.get_humidity () h = round (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 = rumena, scroll_speed = 0,09)

# elif event.direction == "levo":

#pospešek = sense.get_accelerometer_raw () #x = pospešek ['x'] #y = pospešek ['y'] #z = pospešek ['z'] #x = okrogel (x, 0) #y = okrogel (y, 0) #z = okroglo (z, 0)

#Posodobite vrtenje zaslona glede na smer navzgor // Ni uporabljeno in nadzorovano z vozliščem rdeče #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") # puščica levo # elif event.direction == "desno": # sense.show_letter ("K") # Puščica desno # elif event.direction == "middle": # sense.clear ()

vpliv ()

data = get_sense_data ()

dt = podatki [-1] - časovni žig, če je dt.seconds> zakasnitev: data_writer.writerow (data) časovni žig = datetime.now ()

18. korak: Spremljajte video v živo

Snemalnik vplivov se lahko uporablja tudi za spremljanje videa v živo, saj se video lahko kadar koli zažene kjer koli prek MQTT

za pretakanje videoposnetkov bi uporabili predvajalnik VLC, privzeto je v najnovejšem jeziku raspbian VLC vnaprej nameščen, drugače pa namestite vlc kot pod

Več informacij o ogledu omrežnega toka lahko dostopate prek omrežnega toka VLC

Hvala za branje !!

Snemalnik udarcev lahko naredi še veliko več.

Bodite pozorni na naslednji prostor za analizo magnetnega polja pri kartiranju ovir

Priporočena: