Satura rādītājs:
- 1. darbība. Daļas un piederumi
- 2. darbība. Daļu apraksts: Sense Hat
- 3. darbība: salikšana: triecienu reģistrators
- 4. solis: salikšana: triecienu reģistrators automašīnas paneļa panelī
- 5. darbība. Ietekmes ierakstītājs: darbs un lietojumprogrammas
- 6. darbība. Programmatūras apraksts: Sarkans mezgls
- 7. solis: mezgli sarkans Pamati
- 8. darbība: sarkans mezgls: plūsma _1a
- 9. darbība. Sarkanais mezgls: plūsma_1b
- 10. darbība: mezgls sarkans: plūsma_2a
- 11. darbība. Sarkanais mezgls: plūsma_2b
- 12. solis: mezgls sarkans; Plūsma_3
- 13. darbība: MQTT
- 14. darbība: MQTT: abonents
- 15. darbība: MQTT: rekvizītu rediģēšana sarkanā mezglā
- 16. darbība: Python kods:
- 17. solis: galīgais kods
- 18. darbība: tiešraides video pārraudzība
Video: Transportlīdzekļu triecienu reģistrators: 18 soļi (ar attēliem)
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:55
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
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 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ī
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
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
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
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
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
Šī 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
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 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ā
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:
PCB: uz GPS un GSM balstīta transportlīdzekļu izsekošanas sistēma: 3 soļi
PCB: GPS un GSM balstīta transportlīdzekļu izsekošanas sistēma: GPS un GSM balstīta transportlīdzekļu izsekošanas sistēma padara šo projektu daudz
Aļaskas datu reģistrators: 5 soļi (ar attēliem)
Aļaskas datu reģistrators: Aļaska atrodas uz klimata pārmaiņu progresēšanas robežas. Tā unikālā atrašanās vieta ar diezgan neskartu ainavu, kas apdzīvota ar dažādām akmeņogļu raktuvju kanārijputniņām, paver daudzas izpētes iespējas. Mūsu draugs Montijs ir arheologs, kurš palīdz
Arduino datu reģistrators: 8 soļi (ar attēliem)
Arduino Datalogger: Šajā apmācībā mēs izveidosim vienkāršu datu reģistrētāju, izmantojot Arduino. Mērķis ir iemācīties pašus Arduino lietošanas pamatus, lai uztvertu informāciju un drukātu terminālī. Mēs varam izmantot šo pamata iestatījumu, lai pabeigtu virkni uzdevumu. Lai sāktu
Magnētiskā viedā slēdzene ar slepenu triecienu, IR sensoru un tīmekļa lietotni: 7 soļi (ar attēliem)
Magnētiskā viedā slēdzene ar slepeno triecienu, IR sensoru un tīmekļa lietotni: ja jums patīk šis projekts, lūdzu, sekojiet man Instagram un YouTube. Šajā projektā es izveidošu sava mājas biroja magnētisko slēdzeni, kas atveras, ja jūs zināt slepens klauvējiens. Ak… un tam būs arī daži citi triki, arī uzmavā. Magnēts
Raspberry Pi Zero W datu reģistrators: 8 soļi (ar attēliem)
Raspberry Pi Zero W datu reģistrators: izmantojot Raspberry Pi Zero W, jūs varat izveidot lētu un viegli lietojamu datu reģistratoru, ko var savienot ar vietējo wifi tīklu vai kalpot kā piekļuves punktu laukā, kas ļauj lejupielādēt datus bezvadu režīmā, izmantojot viedtālruni. Es prezentēju