INHOUDSOPGAWE:

Impakopnemer vir voertuie: 18 stappe (met foto's)
Impakopnemer vir voertuie: 18 stappe (met foto's)

Video: Impakopnemer vir voertuie: 18 stappe (met foto's)

Video: Impakopnemer vir voertuie: 18 stappe (met foto's)
Video: Kleuters op familiefeest 😂 2024, Desember
Anonim
Impakopnemer vir voertuie
Impakopnemer vir voertuie

Impact Recorder is ontwerp om die impak wat die voertuig opdoen tydens die bestuur of stil te hou. Die impak word in die databasis gestoor in die vorm van lesings sowel as video/prentjie. Met 'n eksterne impakgebruiker kan u intyds geverifieer word, en 'n afstandgebruiker kan die gestoorde video kyk of toegang tot die pi -kamera neem en die gebeure dienooreenkomstig kyk.

Stap 1: Onderdele en bykomstighede

(1) Raspberry Pi 3 of beter: Rekenaarkrag benodig

(2) Framboos pi sense hoed

(3) Framboos -pi -kamera / USB -kamera

(4) Geheue kaart met die nuutste raspbian -beeld (Moet node rooi ondersteun, byna elke nuutste beeld doen)

(5) Kragtoevoer ten minste 2,1 A (ek het 'n batterybank gebruik vir selfstandige werking in die motor)

Stap 2: Onderdele Beskrywing: Sense Hat

Onderdele beskrywing: Sense Hat
Onderdele beskrywing: Sense Hat

Die Sense HAT het 'n 8 × 8 RGB LED-matriks, 'n joystick met vyf knoppies en bevat die volgende sensors:

  • Gyroscoop
  • Versnellingsmeter
  • Magnetometer
  • Temperatuur
  • Barometries
  • druk
  • Humiditeit

Meer inligting oor die werk met sinhoed kan verkry word uit die volgende skakels: Sense_Hat

API vir sense hat word aangebied by: Sense_hat_API

Kode vir sin-hoedprogrammering word in latere stappe behandel. Sense hoed kode kan ook gesimuleer word op 'n simulator wat aangebied word by: Sense-hat simulator

Stap 3: Montering: Impact Recorder

Montering: Impact Recorder
Montering: Impact Recorder
Montering: Impact Recorder
Montering: Impact Recorder
Montering: Impact Recorder
Montering: Impact Recorder
Montering: Impact Recorder
Montering: Impact Recorder
  • Die samestelling is eenvoudiger, aangesien die hoed oor die pi gestapel moet word (aangewese monteerboute word voorsien van 'n hoed).
  • USB -kamera of pi -kamera kan gekoppel word. In die tutoriaal word pi -kamera oorweeg en dienooreenkomstig word kodering daarvoor uitgevoer.
  • Plaas die geheue kaart en konfigureer python -kode en node -red (konfigurasie en kode word in verdere stappe behandel)

Die foto hierbo toon die pi-kamera wat deur 'n plat lintkabel aan die pi gekoppel is

Stap 4: Montering: Impact Recorder op die dashboard van die motor

Montering: Impact Recorder op die dashboard van die motor
Montering: Impact Recorder op die dashboard van die motor

Vir die montering van die blokfluit gebruik ek dubbelzijdige band; die voordeel is dat die blokfluit maklik in 'n ander posisie kan verskuif, wat die beste by u motor pas.

Die verdere kamera word vertikaal gemonteer soos aangedui met dieselfde dubbelband, Volgende in die ry is om 'n kragbron (10 000 mAH kragbank) aan te sluit, tesame met 'n gereed internetverbinding

Internetverbinding is nodig vir die MQTT -toepassing (die besonderhede vir MQTT word in verdere stappe behandel)

Stap 5: Impact Recoder: Working & Applications

Vanuit die hoed word versnelling en gyroscoop gebruik om te kyk of die rou waardes die vasgestelde limiet in die kode oorskry.

Versnellingsmeter: Die versnellingsmeter vertel die hoeveelheid gravitasiekrag (G-krag) wat op elk van die x-, y & z-as inwerk, as enige as meer as 1G krag meet, kan vinnige beweging waargeneem word. (let op dat die as wat afwaarts wys, 'n waarde van 1 g sal hê, en dat dit dienooreenkomstig in die python -kode in ag geneem moet word).

Gyroscoop; Die gyroscoop word gebruik om hoekbeweging te meet, dws tydens 'n skerp draai kan die sensor geaktiveer word (hang af van die instelling in die kode), sodat 'n persoon wat die voertuig skerp draai, vasgevang sal word !!

Enige aktivering van die vasgestelde limiet word ook op die LED -matriks van die hoed vertoon as "!" in rooi vir versnelling en groen vir aktivering van die gyroscoop

Stap 6: Beskrywing van sagteware: Node Red

Node-RED is 'n vloei-gebaseerde programmeerhulpmiddel, oorspronklik ontwikkel deur IBM's Emerging Technology Servicesteam en nou deel van die JS Foundation.

Meer inligting oor knooprooi kan verkry word deur die volgende skakel: node-red

In ons geval gebruik ons node -rooi vir die volgende aktiwiteite

(1) Interaksie met die joysticks om kamerafunksies te begin

(2) Monitering van die impak op die voertuig en die oordrag van die inligting aan die eindgebruiker deur MQTT te gebruik en die eindgebruiker se opdragte verder deur MQTT te aanvaar en die nodige toepassing op pi te begin

(3) Uitvoer van 'n paar basiese dinge soos die afsluiting van pi

Die verdere stappe gee die gedetailleerde inligting vir die vloeidiagram geïmplementeer op knooprooi

Let asseblief daarop dat die knooprooi vloeidiagramme met die luislangkode in wisselwerking tree, dus dek die laaste deel die aspekte van die luislangkode

Stap 7: Node-rooi basiese beginsels

Node-rooi basiese beginsels
Node-rooi basiese beginsels
Node-rooi basiese beginsels
Node-rooi basiese beginsels
Node-rooi basiese beginsels
Node-rooi basiese beginsels

Sekere basiese stappe word uitgelig om Node-rooi vinnig te begin, maar ja, node-rooi is te eenvoudig om programme te begin en uit te werk.

  • Begin Node-red: https:// localhost: 1880.
  • Begin Node-red wanneer pi aan die internet gekoppel is https:// ip adres>: 1880

Stap 8: Node-rooi: Flow _1a

Node-rooi: Vloei _1a
Node-rooi: Vloei _1a

Die Flow _1a monitor alle veranderinge in die CSV -lêer en op grond van die veranderinge, dit wil sê die impak wat opgespoor word, die opname van die kameravideo is ingestel op die modus en verder word die gebruiker via die internet ingelig dat 'n impak plaasgevind het

Stap 9: Node Rooi: Flow_1b

Node Rooi: Flow_1b
Node Rooi: Flow_1b

In die genoemde stroom kan video -opname op enige tydstip begin word deur net op die joystick te druk

Stap 10: Node Rooi: Flow_2a

Node Rooi: Flow_2a
Node Rooi: Flow_2a

In die genoemde vloei, wanneer enige nuwe prentjie of video na die gids gestoor/opgelaai word, word die inligting via die internet aan die geregistreerde gebruiker oorgedra

Stap 11: Knooprooi: Flow_2b

Node Rooi: Flow_2b
Node Rooi: Flow_2b

Hierdie vloei is hoofsaaklik ontwerp vir die afstandgebruiker om die toestel op die volgende manier te beheer

(a) afsluittoestel

(b) neem foto's

(c) Neem video's op

(d) begin hoofkode (dataloggerkode is die hoofkode wat die impak bereken)

Stap 12: Node Rooi; Vloei_3

Node Rooi; Vloei_3
Node Rooi; Vloei_3

Die stroom is ontwerp vir plaaslike toegang om die hoofkode of afsluitingstoestel te begin

Stap 13: MQTT

MQTT (Message Queuing Telemetry Transport) is 'n TCP/IP -protokol, waarin uitgewer en intekenaar interaksie het.

In ons geval is Pi 'n uitgewer, terwyl die toepassing wat in ons mobiel/rekenaar geïnstalleer is, die intekenaar is.

Op hierdie manier word inligting op afstand na die gebruiker oorgedra ('n werkende internetverbinding is noodsaaklik)

Meer inligting oor MQTT is verkrygbaar vanaf die volgende skakel: MQTT

Om MQTT te begin gebruik, moet ons eers registreer; vir die handleiding wat ek cloudmqtt (www.cloudmqtt.com) gebruik het, is daar 'n gratis plan onder 'cute cat', dit is alles.

Na registrasie, skep 'n instansie en sê 'pi', waarna u die volgende besonderhede kry

  • Bediener naam
  • hawe
  • gebruikersnaam
  • wagwoord

Bogenoemde word vereis tydens die inskrywing via mobiele/rekenaar

Vir my aansoek het ek die MQTT -toepassing van die Google Play -winkel gebruik (Android -weergawe)

Stap 14: MQTT: intekenaar

MQTT: intekenaar
MQTT: intekenaar

Die MQTT -toepassing op mobiele toestelle (Android -weergawe)

Die impak wat op pi opgespoor word, word teruggee

Stap 15: MQTT: Wysiging van eienskappe in Node-rooi

MQTT: Wysiging van eiendomme in Node-rooi
MQTT: Wysiging van eiendomme in Node-rooi

In node-rooi nadat die MQTT-knoop gekies is, moet die "bedienernaam" en "onderwerp" genoem word. Dit moet dieselfde wees op die einde van die intekenaar

Stap 16: Die Python -kode:

Die kodefunksies is volgens aangehegde vloeidiagram

Stap 17: Die finale kode

Die luislangkode is aangeheg

Om ons python -script vanaf die terminale te laat loop, moet ons dit uitvoerbaar maak as chmod +x datalogger.py, maar verder moet die bokant van die kode die volgende "shebang" -reël #bevat! /usr/bin/python3 (dit is nodig om funksies uit node-rooi uit te voer)

#!/usr/bin/python3 // shebang line from sense_hat import SenseHat from datetime import datetime from csv import writer import RPi. GPIO as GPIO from time import sleep

sense = SenseHat ()

invoer csv

tydstempel = datetime.now ()

vertraging = 5 // vertraging word gedefinieer om data in data.csv -lêer te stoor rooi = (255, 0, 0) groen = (0, 255, 0) geel = (255, 255, 0)

#GPIO.setmodus (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"])

gee sense_impact terug

def impact (): // funksie om impak op te spoor #GPIO.setmode (GPIO. BCM) #GPIO.setup (4, GPIO. OUT) versnelling = sense.get_accelerometer_raw () x = versnelling ['x'] y = versnelling ['y'] z = versnelling ['z'] x = abs (x) y = abs (y) z = abs (z)

gyro = sense.get_gyroscope_raw ()

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

gyrox = rond (gyrox, 2)

gyroy = rond (gyroy, 2) gyroz = rond (gyroz, 2)

impak = get_sense_impact ()

as x> 1.5 of y> 1.5 of z> 1.5: // die waardes gestel word nadat iterasie op die werklike pad dienooreenkomstig verander kan word vir verskillende tipes en bestuursvaardighede met oop ('impact.csv', 'w', newline = ' ') as f: data_writer = writer (f) data_writer.writerow ([' acc x ',' acc y ',' acc z ',' gyro x ',' gyro y ',' gyro z ']) #GPIO. uitvoer (4, GPIO. HIGH) sense.clear () sense.show_letter ("!", rooi) data_writer.writerow (impak)

elif gyrox> 1.5 of gyroy> 1.5 of gyroz> 1.5: // die waardes word ingestel om te kyk na die snelheid waarmee draaie met open ('impact.csv', 'w', newline = '') begin as f: data_writer = skrywer (f) data_writer.writerow (['acc x', 'acc y', 'acc z', 'gyro x', 'gyro y', 'gyro z']) #GPIO.output (4, GPIO. HOOG) sense.clear () sense.show_letter ("!", Groen) data_writer.writerow (impak)

anders:

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

def get_sense_data (): // funksie om waardes van sensor sense_data op te teken en op te slaan =

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

oriëntasie = sense.get_orientation ()

sense_data.append (oriëntasie ["yaw"]) sense_data.append (oriëntasie ["pitch"]) sense_data.append (oriëntasie ["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 ())

stuur sense_data terug

met open ('data.csv', 'w', newline = '') as f:

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

terwyl dit waar is:

print (get_sense_data ()) vir gebeurtenis in sense.stick.get_events (): # Kyk of die joystick ingedruk is as event.action == "ingedruk": # Kyk in watter rigting event.direction == "up": # sense.show_letter ("U") # Opwaartse pylversnelling = sense.get_accelerometer_raw () x = versnelling ['x'] y = versnelling ['y'] z = versnelling ['z'] x = rondte (x, 0) y = rond (y, 0) z = rond (z, 0)

# Werk die rotasie van die skerm op, afhangende van watter rigting die if x == -1: sense.set_rotation (90) elif y == 1: sense.set_rotation (270) elif y == -1: sense.set_rotation (180) anders: sense.set_rotation (0) sense.clear () t = sense.get_temperature () t = rond (t, 1) boodskap = "T:" + str (t) sense.show_message (boodskap, teks_kleur = rooi, scroll_speed = 0.09) elif event.direction == "af": versnelling = sense.get_accelerometer_raw () x = versnelling ['x'] y = versnelling ['y'] z = versnelling ['z'] x = rond (x, 0) y = rond (y, 0) z = rond (z, 0)

# Werk die rotasie van die skerm op, afhangende van watter rigting die if x == -1: sense.set_rotation (90) elif y == 1: sense.set_rotation (270) elif y == -1: sense.set_rotation (180) anders: sense.set_rotation (0) # sense.show_letter ("D") # pyltjie omlaag sense.clear () h = sense.get_humidity () h = round (h, 1) message = "H:" + str (h) sense.show_message (boodskap, text_colour = groen, scroll_speed = 0.09) p = sense.get_pressure () p = round (p, 1) message = "P:" + str (p) sense.show_message (boodskap, text_colour = geel, rolspoed = 0,09)

# elif event.direction == "links":

#versnelling = sense.get_accelerometer_raw () #x = versnelling ['x'] #y = versnelling ['y'] #z = versnelling ['z'] #x = rond (x, 0) #y = rond (y, 0) #z = rond (z, 0)

#Werk die rotasie van die skerm op, afhangende van watter kant op die // Nie gebruik nie en beheer deur knooprooi #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") # Pyl na links # elif event.direction == "regs": # sense.show_letter ("K") # Pyl regs # elif event.direction == "middel": # sense.clear ()

impak ()

data = get_sense_data ()

dt = data [-1] - tydstempel as dt.sekondes> vertraging: data_writer.writerow (data) tydstempel = datetime.now ()

Stap 18: Monitor live video

Impact Recorder kan ook gebruik word om lewendige video te monitor, aangesien video altyd en oral deur MQTT begin kan word

ons gebruik VLC-speler om video's te stroom, standaard in die nuutste raspbian is die VLC vooraf geïnstalleer, anders installeer vlc soos hieronder

Meer inligting oor die kyk na netwerkstroom is verkrygbaar via die VLC -netwerkstroom

Dankie dat u gelees het !!

Die impakopnemer kan veel meer doen..

Pas die volgende ruimte op vir magnetiese veldanalise by die uitvoering van hindernis kartering

Aanbeveel: