Satura rādītājs:

Transportlīdzekļu triecienu reģistrators: 18 soļi (ar attēliem)
Transportlīdzekļu triecienu reģistrators: 18 soļi (ar attēliem)

Video: Transportlīdzekļu triecienu reģistrators: 18 soļi (ar attēliem)

Video: Transportlīdzekļu triecienu reģistrators: 18 soļi (ar attēliem)
Video: How To Fix Dents On A Bentley Without Painting | Paintless Dent Repair 2024, Decembris
Anonim
Transportlīdzekļu triecienu reģistrators
Transportlīdzekļu triecienu reģistrators

Triecienu reģistrators ir paredzēts, lai reģistrētu triecienu, kas transportlīdzeklim rodas braukšanas laikā vai stāvot. Ietekme tiek saglabāta datu bāzē nolasījumu, kā arī video/attēla veidā. Pēc ietekmes attālo lietotāju var pārbaudīt reālā laikā, un attālais lietotājs var nekā skatīties saglabāto video vai attāli piekļūt pi kamerai un attiecīgi skatīties notikumus.

1. darbība. Daļas un piederumi

(1) Raspberry Pi 3 vai labāka: nepieciešama skaitļošanas jauda

(2) Raspberry pi sense cepure

(3) Aveņu pi kamera / USB kamera

(4) Atmiņas karte ar jaunāko raspbian attēlu (jāatbalsta mezgls sarkanā krāsā, gandrīz katram jaunākajam attēlam)

(5) Barošanas avots vismaz 2,1 A (esmu izmantojis akumulatora bateriju autonomai darbībai automašīnā)

2. darbība. Daļu apraksts: Sense Hat

Daļu apraksts: Sense cepure
Daļu apraksts: Sense cepure

Sense HAT ir 8 × 8 RGB LED matrica, piecu pogu kursorsvira un ietver šādus sensorus:

  • Žiroskops
  • Akselerometrs
  • Magnetometrs
  • Temperatūra
  • Barometriskais
  • spiedienu
  • Mitrums

Plašāku informāciju par darbu ar maņu cepuri var iegūt, izmantojot šādas saites: Sense_Hat

Sapņu cepuru API ir izvietota vietnē: Sense_hat_API

Sense-hat programmēšanas kods ir apskatīts turpmākajos soļos. Sense cepuru kodu var simulēt arī simulatorā, kas atrodas vietnē: Sense-hat simulator

3. darbība: salikšana: triecienu reģistrators

Salikšana: triecienu reģistrators
Salikšana: triecienu reģistrators
Salikšana: triecienu reģistrators
Salikšana: triecienu reģistrators
Salikšana: triecienu reģistrators
Salikšana: triecienu reģistrators
Salikšana: triecienu reģistrators
Salikšana: triecienu reģistrators
  • Salikšana ir vienkāršāka, jo sensoru cepure ir jāsakrauj virs pi (norādītās stiprinājuma skrūves ir aprīkotas ar sensoru cepuri).
  • Var pievienot USB kameru vai pi kameru. Apmācībā tiek ņemta vērā pi kamera, un attiecīgi tiek kodēta tā pati.
  • Ievietojiet atmiņas karti un konfigurējiet pitona kodu un mezglu sarkano (konfigurācija un kods ir apskatīti turpmākajās darbībās)

Augšējā attēlā redzama pi-kamera, kas ar plakanu lentes kabeli savienota ar pi

4. solis: salikšana: triecienu reģistrators automašīnas paneļa panelī

Salikšana: triecienu reģistrators automašīnas paneļa panelī
Salikšana: triecienu reģistrators automašīnas paneļa panelī

Diktofona montāžai esmu izmantojis abpusēju lenti, priekšrocība ir tā, ka diktofonu var viegli pārvietot dažādās pozīcijās, atkarībā no tā, kas vislabāk atbilst jūsu automašīnai.

Turpmākā kamera ir uzstādīta vertikāli, kā parādīts attēlā, izmantojot to pašu dubultās puses lenti, Nākamais rindā ir pieslēgt barošanas avotu (10 000 mAH strāvas banku) kopā ar gatavu interneta savienojumu

MQTT lietojumprogrammai ir nepieciešams interneta savienojums (sīkāka informācija par MQTT ir apskatīta turpmākajos soļos)

5. darbība. Ietekmes ierakstītājs: darbs un lietojumprogrammas

No sensoru cepures, paātrinājuma un žiroskopa tiek izmantoti, lai pārbaudītu, vai neapstrādātās vērtības pārsniedz kodā noteikto robežu.

Akselerometrs: Akselerometrs norāda gravitācijas spēka (G-spēka) daudzumu, kas iedarbojas uz katru no x, y & z asīm, ja kāda ass mēra vairāk par 1G spēku, nekā var noteikt ātru kustību. (lūdzu, ņemiet vērā, ka asij, kas vērsta uz leju, būtu 1 g vērtība, un tā ir attiecīgi jāņem vērā python kodā).

Žiroskops; Žiroskopu izmanto leņķiskās kustības mērīšanai, ti, asa pagrieziena laikā sensors var tikt aktivizēts (atkarīgs no koda iestatījuma), tāpēc persona, kas strauji virpuļo transportlīdzekli, tiek pieķerta !!

Jebkura iestatītā limita aktivizēšana tiek parādīta arī sensoru cepures LED matricā kā "!" sarkanā krāsā paātrinājumam un zaļā krāsā žiroskopa aktivizēšanai

6. darbība. Programmatūras apraksts: Sarkans mezgls

Node-RED ir uz plūsmu balstīts programmēšanas rīks, ko sākotnēji izstrādāja IBM Emerging Technology Servicesteam un tagad ir daļa no JS fonda.

Plašāku informāciju par sarkano mezglu var iegūt, izmantojot šo saiti: node-red

Mūsu gadījumā šādām darbībām mēs izmantotu mezglu -red

(1) Mijiedarbība ar kursorsvirām, lai sāktu kameras funkcijas

(2) Ietekmes uz transportlīdzekli pārraudzība un informācijas nodošana galalietotājam, izmantojot MQTT un tālāk pieņemot galalietotāja komandas, izmantojot MQTT, un palaižot nepieciešamo lietojumprogrammu vietnē pi

(3) Dažu pamata darbību veikšana, piemēram, pi izslēgšana

Turpmākajos posmos ir sniegta detalizēta informācija par plūsmas diagrammu, kas ieviesta mezglā sarkans

Lūdzu, ņemiet vērā, ka mezgla sarkanās plūsmas diagrammas mijiedarbojas ar pitona kodu, tāpēc pēdējā daļa aptver pitona koda aspektus

7. solis: mezgli sarkans Pamati

Mezgli sarkani Pamati
Mezgli sarkani Pamati
Mezgli sarkani Pamati
Mezgli sarkani Pamati
Mezgli sarkani Pamati
Mezgli sarkani Pamati

Ir uzsvērtas dažas pamata darbības, lai zibspuldzi sāktu sarkans mezgls, bet jā, mezgls sarkans ir pārāk vienkāršs, lai sāktu un izstrādātu lietojumprogrammas.

  • Sākot sarkano mezglu: https:// localhost: 1880.
  • Sarkana mezgla sākšana, kad pi ir pievienots internetam https:// ip address>: 1880

8. darbība: sarkans mezgls: plūsma _1a

Sarkans mezgls: plūsma _1a
Sarkans mezgls: plūsma _1a

Plūsma _1a uzrauga visas izmaiņas CSV failā un, pamatojoties uz izmaiņām, ti, konstatēto ietekmi, kameras video ierakstīšana ir ieslēgta režīmā un tālāk lietotājs tiek informēts internetā, ka ir notikusi ietekme

9. darbība. Sarkanais mezgls: plūsma_1b

Sarkans mezgls: plūsma_1b
Sarkans mezgls: plūsma_1b

Minētajā plūsmā video ierakstīšanu var sākt jebkurā brīdī, vienkārši nospiežot kursorsviru

10. darbība: mezgls sarkans: plūsma_2a

Sarkans mezgls: plūsma_2a
Sarkans mezgls: plūsma_2a

Minētajā plūsmā ikreiz, kad tiek saglabāts/augšupielādēts katalogā jauns attēls vai videoklips, informācija tiek nodota reģistrētajam lietotājam internetā.

11. darbība. Sarkanais mezgls: plūsma_2b

Sarkans mezgls: plūsma_2b
Sarkans mezgls: plūsma_2b

Šī plūsma galvenokārt ir paredzēta attālinātam lietotājam, lai ierīci kontrolētu šādā veidā

a) izslēgšanas ierīce

b) fotografēt

c) ierakstīt video

d) sākuma galvenais kods (datu reģistratora kods ir galvenais kods, kas aprēķina ietekmi)

12. solis: mezgls sarkans; Plūsma_3

Mezgls sarkans; Plūsma_3
Mezgls sarkans; Plūsma_3

Plūsma ir paredzēta lokālai piekļuvei, lai sāktu galveno kodu vai izslēgšanas ierīci

13. darbība: MQTT

MQTT (Message Queuing Telemetry Transport) ir TCP/IP protokols, kurā izdevējs un abonents mijiedarbojas.

Mūsu gadījumā Pi ir izdevējs, bet mūsu mobilajā tālrunī/personālajā datorā instalētā lietojumprogramma ir abonents.

Šādā veidā, radot jebkādu ietekmi, informācija tiek attālināti nodota lietotājam (obligāts ir interneta savienojums)

Plašāku informāciju par MQTT var iegūt, izmantojot šo saiti: MQTT

Lai sāktu lietot MQTT, mums vispirms ir jāreģistrējas, apmācībai, kuru esmu izmantojis cloudmqtt (www.cloudmqtt.com), sadaļā "gudrs kaķis" ir bezmaksas plāns, tas arī viss.

Pēc reģistrācijas izveidojiet instanci, sakot "pi", pēc kura jūs saņemsiet šādu informāciju

  • Servera nosaukums
  • osta
  • lietotājvārds
  • parole

Iepriekš minētie ir nepieciešami, abonējot, izmantojot mobilo/datoru

Savai lietojumprogrammai esmu izmantojis MQTT lietojumprogrammu no Google Play veikala (Android versija)

14. darbība: MQTT: abonents

MQTT: abonents
MQTT: abonents

MQTT lietojumprogramma, kas darbojas mobilajās ierīcēs (Android versija)

Uz pi konstatētā ietekme tiek pārsūtīta atpakaļ

15. darbība: MQTT: rekvizītu rediģēšana sarkanā mezglā

MQTT: rekvizītu rediģēšana sarkanā mezglā
MQTT: rekvizītu rediģēšana sarkanā mezglā

Sarkanā mezglā pēc MQTT mezgla izvēles ir jānorāda "Servera nosaukums" un "tēma". Tam jābūt vienādam abonenta beigās

16. darbība: Python kods:

Koda funkcionalitāte atbilst pievienotajai blokshēmai

17. solis: galīgais kods

Python kods ir pievienots

Lai mūsu python skriptu palaistu no termināļa, mums tas jādara izpildāms kā chmod +x datalogger.py, bet tālāk koda augšpusē jābūt šādai "shebang" rindai #! /usr/bin/python3 (tas ir nepieciešams, lai izpildītu funkcijas no mezgla sarkanā)

#!/usr/bin/python3 // shebang linefree

sajūta = SenseHat ()

importēt csv

timestamp = datetime.now ()

aizkave = 5 // aizkave ir definēta datu glabāšanai datos. csv fails sarkans = (255, 0, 0) zaļš = (0, 255, 0) dzeltens = (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"])

žiroskops = sense.get_gyroscope_raw ()

sense_impact.append (žiroskops ["x"]) sense_impact.append (žiroskops ["y"]) sense_impact.append (žiroskops ["z"])

atgriezties sense_impact

def impact (): // funkcija trieciena noteikšanai #GPIO.setmode (GPIO. BCM) #GPIO.setup (4, GPIO. OUT) paātrinājums = sense.get_accelerometer_raw () x = paātrinājums ['x'] y = paātrinājums ['y'] z = paātrinājums ['z'] x = abs (x) y = abs (y) z = abs (z)

žiroskops = sense.get_gyroscope_raw ()

gyrox = žiroskops ["x"] gyroy = žiroskops ["y"] gyroz = žiroskops ["z"]

gyrox = apaļš (gyrox, 2)

gyroy = apaļš (gyroy, 2) gyroz = apaļš (gyroz, 2)

ietekme = get_sense_impact ()

ja x> 1,5 vai y> 1,5 vai z> 1,5: // vērtības tiek noteiktas pēc atkārtojuma uz faktiskā ceļa, un tās var attiecīgi mainīt dažādiem tipiem un braukšanas prasmēm ar atvērtu ('impact.csv', 'w', newline = ' ') kā f: data_writer = rakstnieks (f) data_writer.writerow ([' acc x ',' acc y ',' acc z ',' gyro x ',' gyro y ',' gyro z ']) #GPIO. izvade (4, GPIO. HIGH) sense.clear () sense.show_letter ("!", sarkans) data_writer.writerow (ietekme)

elif gyrox> 1.5 vai gyroy> 1.5 vai gyroz> 1.5: // vērtības tiek iestatītas, ņemot vērā pagriezienu uzsākšanas ātrumu ar atvērtu ('impact.csv', 'w', newline = '') kā f: data_writer = rakstnieks (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 ("!", Zaļa) data_writer.writerow (ietekme)

cits:

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

def get_sense_data (): // funkcija, lai ierakstītu un saglabātu vērtības no sensora sense_data =

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

orientācija = sense.get_orientation ()

sense_data.append (orientācija ["yaw"]) sense_data.append (orientācija ["pitch"]) sense_data.append (orientācija ["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"])

žiroskops = sense.get_gyroscope_raw ()

sense_data.append (žiroskops ["x"]) sense_data.append (žiroskops ["y"]) sense_data.append (žiroskops ["z"])

sense_data.append (datetime.now ())

atgriezt sense_data

ar atvērtu ('data.csv', 'w', newline = '') kā f:

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

kamēr taisnība:

print (get_sense_data ()) notikumam sense.stick.get_events (): # Pārbaudiet, vai ir nospiesta kursorsvira, ja event.action == "press": # Pārbaudiet, kurā virzienā, ja event.direction == "up": # sense.show_letter ("U") # Augšupvērstās bultiņas paātrinājums = sense.get_accelerometer_raw () x = paātrinājums ['x'] y = paātrinājums ['y'] z = paātrinājums ['z'] x = apaļš (x, 0) y = apaļa (y, 0) z = kārta (z, 0)

# Atjauniniet displeja rotāciju atkarībā no tā, uz augšu, ja 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 = apaļš (t, 1) ziņojums = "T:" + str (t) sense.show_message (ziņojums, text_colour = sarkans, scroll_speed = 0.09) elif event.direction == "uz leju": paātrinājums = sense.get_accelerometer_raw () x = paātrinājums ['x'] y = paātrinājums ['y'] z = paātrinājums ['z'] x = apaļš (x, 0) y = apaļa (y, 0) z = apaļa (z, 0)

# Atjauniniet displeja rotāciju atkarībā no tā, uz augšu, ja 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") # Lejupvērstā bultiņa sense.clear () h = sense.get_humidity () h = apaļa (h, 1) ziņa = "H:" + str (h) sense.show_message (ziņojums, text_colour = zaļš, scroll_speed = 0.09) p = sense.get_pressure () p = round (p, 1) message = "P:" + str (p) sense.show_message (ziņojums, text_colour = dzeltens, ritināšanas ātrums = 0,09)

# elif event.direction == "pa kreisi":

#paātrinājums = sense.get_accelerometer_raw () #x = paātrinājums ['x'] #y = paātrinājums ['y'] #z = paātrinājums ['z'] #x = apaļš (x, 0) #y = apaļš (y, 0) #z = apaļa (z, 0)

#Atjauniniet displeja rotāciju atkarībā no tā, uz augšu // // neizmanto un nekontrolē mezgls -sarkans #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") # Kreisā bultiņa # elif event.direction == "right": # sense.show_letter ("K") # Labā bultiņa # elif event.direction == "middle": # sense.clear ()

ietekme ()

dati = get_sense_data ()

dt = dati [-1] - laika zīmogs, ja dt.seconds> kavēšanās: data_writer.writerow (dati) timestamp = datetime.now ()

18. darbība: tiešraides video pārraudzība

Ietekmes ierakstītāju var izmantot arī tiešraides video novērošanai, jo video var sākt jebkurā laikā un vietā, izmantojot MQTT

mēs izmantotu VLC atskaņotāju, lai straumētu videoklipus, pēc noklusējuma jaunākajā raspbian versijā VLC ir iepriekš instalēts, pretējā gadījumā instalējiet vlc, kā norādīts sadaļā

Plašāku informāciju par tīkla straumes skatīšanu var iegūt, izmantojot VLC tīkla straumi

Paldies par lasīšanu!!

Ietekmes reģistrators var paveikt daudz vairāk.

Uzmanieties no nākamās vietas magnētiskā lauka analīzei, veicot šķēršļu kartēšanu

Ieteicams: