Kazalo:
- 1. korak: Deli in dodatki
- 2. korak: Opis delov: Sense Hat
- 3. korak: Sestavljanje: snemalnik udarcev
- 4. korak: Sestavljanje: snemalnik udarcev na armaturni plošči avtomobila
- 5. korak: Rekoder udarca: delo in aplikacije
- 6. korak: Opis programske opreme: Node Red
- 7. korak: Osnove rdečega vozlišča
- 8. korak: Node-red: Flow _1a
- 9. korak: vozlišče rdeče: Flow_1b
- 10. korak: Rdeče vozlišče: Flow_2a
- 11. korak: Rdeče vozlišče: Flow_2b
- 12. korak: vozlišče rdeče; Pretok_3
- Korak: MQTT
- Korak 14: MQTT: Naročnik
- Korak 15: MQTT: Urejanje lastnosti v rdečem vozlišču
- Korak: Koda Python:
- 17. korak: Končna koda
- 18. korak: Spremljajte video v živo
Video: Snemalnik udarcev za vozila: 18 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:04
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
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 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
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
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
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
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
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
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
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
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
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:
Snemalnik spomina - božično darilo: 8 korakov (s slikami)
Snemalnik spomina - božično darilo: Ciao a tutti! In vista del Natale arriva il momento dei regali, sono sicuro quindi che molti di voi sentiranno la neophodità di donare qualcosa di speciale. In questo periodo così difficile certamente sono mancate molte dogodioni per condividere e
Robot za absorpcijo udarcev 6WD za Arduino: 8 korakov (s slikami)
Robot za absorpcijo udarcev 6WD za Arduino: Nova zasnova mobilne platforme 6WD, vozilo uporablja 2 mm aluminijasto zlitino, površinsko obdelavo z aluminijem. 6 hitrih enosmernih motorjev z enosmernim tokom (prvotno 17000 vrt / min), s polno kovinskim menjalnikom 1:34, tako da avtomobil doseže močne terenske zmogljivosti
Poceni senzorji udarcev za Arduino robote: 4 koraki (s slikami)
Poceni senzorji udarcev za robote Arduino: potrebujete poceni senzorje udarcev, ki jih je mogoče enostavno nabaviti za prevzem robota- mislim, projekt Arduino? Ti majhni senzorji so enostavni za uporabo, enostavni za izdelavo in enostavni za denarnico (17 centov na kos!), In odlično deluje za preprosto odkrivanje ovir na mikrokrmilniku-ba
Shanzhai Remix: Prikazna stena udarcev: 7 korakov (s slikami)
Shanzhai Remix: Prikazna stena udarcev: Shanzhai Remix raziskuje razširjen pomen shanzhai 山寨, kitajska beseda, ki se običajno nanaša na ponarejene izdelke, ki posnemajo znane blagovne znamke. Čeprav lahko beseda na površju pomeni negativen pomen, ima lastnosti hitrega obnavljanja
Stikalo za ploskanje (40 udarcev v 5 sekundah): 4 koraki (s slikami)
Stikalo s ploskanjem (40 udarcev v 5 sekundah): Stikalo s ploskanjem lahko vklopi/izklopi katero koli električno komponento s priključitvijo izhoda vezja na relejno stikalo. Tukaj bomo naredili stikalo z nekaj komponentami z zelo dobrimi razlagami. V primerjavi z vsemi drugimi stikalnimi ploskvami