Sisukord:
- Samm: osad ja tarvikud
- 2. samm: osade kirjeldus: Sense Hat
- 3. samm: kokkupanek: löögisalvesti
- Samm 4: kokkupanek: löögisalvesti auto armatuurlaual
- Samm 5: Mõju salvestaja: töö ja rakendused
- 6. samm: tarkvara kirjeldus: punane sõlm
- 7. samm: sõlmepunased põhitõed
- 8. samm: punane sõlm: voog _1a
- 9. samm: punane sõlm: voog_1b
- 10. samm: punane sõlm: voog_2a
- 11. samm: punane sõlm: voog_2b
- 12. samm: punane sõlm; Voog_3
- Samm 13: MQTT
- 14. samm: MQTT: tellija
- Samm 15: MQTT: atribuutide redigeerimine sõlmpunases
- 16. samm: Pythoni kood:
- 17. samm: lõplik kood
- 18. samm: reaalajas video jälgimine
Video: Sõidukite löögisalvesti: 18 sammu (koos piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
Löögisalvesti on ette nähtud sõidukile sõidu ajal või seisma jääva löögi registreerimiseks. Mõjud salvestatakse andmebaasi nii näitude kui ka video/pildi kujul. Mõju korral saab kaugkasutajat reaalajas kontrollida ja kaugkasutaja saab salvestatud videot vaadata või pi -kaamerale kaugjuurdepääsu vaadata ja sündmusi vastavalt vaadata.
Samm: osad ja tarvikud
(1) Raspberry Pi 3 või parem: nõutav arvutusvõimsus
(2) Vaarika pi sense müts
(3) Vaarika pi kaamera / USB -kaamera
(4) Mälukaart uusima raspiani pildiga (peaks toetama punast sõlme, peaaegu iga uusim pilt seda teeb)
(5) Toiteallikas vähemalt 2,1 A (olen kasutanud akupanka autonoomseks kasutamiseks)
2. samm: osade kirjeldus: Sense Hat
Sense HAT-il on 8 × 8 RGB LED-maatriks, viie nupuga juhtkang ja see sisaldab järgmisi andureid:
- Güroskoop
- Kiirendusmõõtur
- Magnetomeeter
- Temperatuur
- Baromeetriline
- surve
- Niiskus
Lisateavet sense -mütsiga töötamise kohta saate järgmistelt linkidelt: Sense_Hat
Sense mütsi API on hostitud aadressil: Sense_hat_API
Mõistliku mütsiga programmeerimise koodi käsitletakse hilisemates etappides. Sense mütsikoodi saab simuleerida ka simulaatoril, mis asub aadressil: Sense-hat simulator
3. samm: kokkupanek: löögisalvesti
- Kokkupanek on lihtsam, kuna sensomüts tuleb virnastada üle pi (ettenähtud kinnituspoldid on varustatud mütsimütsiga).
- Ühendada saab USB- või pi -kaamera. Õpetuses kaalutakse pi kaamerat ja vastavalt sellele kodeeritakse sama.
- Sisestage mälukaart ja konfigureerige pythoni kood ja sõlmepunane (konfiguratsiooni ja koodi käsitletakse järgmistes sammudes)
Ülaltoodud pilt näitab pi-kaamerat, mis on ühendatud tasase lintkaabli abil pi-ga
Samm 4: kokkupanek: löögisalvesti auto armatuurlaual
Diktofoni paigaldamiseks olen kasutanud kahepoolset teipi, eeliseks on see, et salvestajat saab hõlpsasti eri asendisse nihutada, olenevalt sellest, kumb teie autole kõige paremini sobib.
Edasine kaamera on paigaldatud vertikaalselt, nagu näidatud, kasutades sama kahepoolset teipi, Järgmisena ühendatakse toiteallikas (10 000 mAH toitepank) koos valmis Interneti -ühendusega
MQTT rakenduse jaoks on vajalik Interneti -ühendus (MQTT üksikasju käsitletakse järgmistes etappides)
Samm 5: Mõju salvestaja: töö ja rakendused
Mõistmütsi, kiirenduse ja güroskoobi abil kontrollitakse, kas toores väärtused ületavad koodis määratud piiri.
Kiirendusmõõtur: Kiirendusmõõtur näitab igale x, y & z teljele mõjuvat gravitatsioonijõudu (G-jõudu), kui mõni telg mõõdab rohkem kui 1G jõudu, kui kiiret liikumist on võimalik tuvastada. (pange tähele, et allapoole suunatud teljel on väärtus 1 g ja seda tuleb python -koodis vastavalt arvesse võtta).
Güroskoop; Güroskoopi kasutatakse nurkliikumiste mõõtmiseks, st järsul pöördel võib andur aktiveeruda (sõltub koodi seadistusest), nii et järsult sõidukit pöörlev inimene jääb vahele!
Seatud limiidi aktiveerimine kuvatakse ka sensori mütsi LED -maatriksil "!" punane kiirenduseks ja roheline güroskoobi aktiveerimiseks
6. samm: tarkvara kirjeldus: punane sõlm
Node-RED on voolupõhine programmeerimisvahend, mille töötas välja algselt IBMi areneva tehnoloogia teenuste meeskond ja mis on nüüd osa JS Foundationist.
Lisateavet punase sõlme kohta saate järgmise lingi kaudu: node-red
Meie puhul kasutaksime järgmistes tegevustes sõlme -red
(1) Kaamera funktsioonide käivitamiseks juhtnuppudega suhtlemine
(2) Mõju jälgimine sõidukile ja teabe edastamine lõppkasutajale, kasutades MQTT -d ja lõppkasutaja käskude edasine aktsepteerimine MQTT kaudu ja vajaliku rakenduse käivitamine pi
(3) Mõned põhilised asjad, näiteks pi väljalülitamine
Edasised sammud annavad üksikasjalikku teavet sõlmepunasele rakendatud vooskeemi kohta
Pange tähele, et sõlmepunased vooskeemid interakteeruvad püütoni koodiga, seega hõlmab viimane osa püütoni koodi aspekte
7. samm: sõlmepunased põhitõed
Sõlmepunase välklambiga alustamiseks on esile tõstetud mõned põhilised sammud, kuid jah, sõlmepunane on rakenduste käivitamiseks ja töötamiseks liiga lihtne.
- Algav sõlm punane: https:// localhost: 1880.
- Sõlme punane käivitamine, kui pi on Internetiga ühendatud https:// ip address>: 1880
8. samm: punane sõlm: voog _1a
Flow _1a jälgib kõiki CSV -faili muudatusi ja muudatuste alusel, st tuvastatud mõju, lülitatakse kaamera videosalvestus sisse ja seejärel teavitatakse kasutajat Interneti kaudu, et mõju on toimunud
9. samm: punane sõlm: voog_1b
Nimetatud voos saab videosalvestust igal ajal alustada, vajutades lihtsalt juhtkangi
10. samm: punane sõlm: voog_2a
Nimetatud voos edastatakse teave registreeritud kasutajale Interneti kaudu alati, kui uus pilt või video on kataloogi salvestatud/üles laaditud
11. samm: punane sõlm: voog_2b
See voog on mõeldud peamiselt kaugkasutajale, et seadet järgmiselt juhtida
a) väljalülitusseade
b) pildistada
c) Videote salvestamine
d) käivitage põhikood (andmete salvestamise kood on peamine kood, mis arvutab mõju)
12. samm: punane sõlm; Voog_3
Voo on loodud kohalikuks juurdepääsuks, et käivitada põhikood või väljalülitusseade
Samm 13: MQTT
MQTT (Message Queuing Telemetry Transport) on TCP/IP protokoll, milles kirjastaja ja tellija suhtlevad.
Meie puhul on kirjastaja Pi, samas kui meie mobiiltelefoni/arvutisse installitud rakendus on tellija.
Sel viisil edastatakse mis tahes mõju tekitamisel teave kasutajale eemalt (töötav Interneti -ühendus on kohustuslik)
Lisateavet MQTT kohta leiate järgmiselt lingilt: MQTT
MQTT kasutamise alustamiseks peame esmalt registreeruma, õpetuse jaoks, mida olen kasutanud cloudmqtt (www.cloudmqtt.com), on "armas kass" all tasuta plaan, see on kõik.
Pärast registreerimist looge eksemplar, öelge "pi", mille järel saate järgmisi üksikasju
- Serveri nimi
- sadam
- kasutajanimi
- parool
Ülaltoodut on vaja mobiilseadme/arvuti kaudu tellides
Oma rakenduse jaoks olen kasutanud Google Play poe rakendust MQTT (Androidi versioon)
14. samm: MQTT: tellija
Rakendus MQTT, mis töötab mobiilis (Androidi versioon)
Pi -le tuvastatud mõju edastatakse tagasi
Samm 15: MQTT: atribuutide redigeerimine sõlmpunases
Sõlmepunases pärast MQTT-sõlme valimist tuleb mainida "Serveri nimi" ja "teema". See peaks abonendi lõpus olema sama
16. samm: Pythoni kood:
Koodi funktsionaalsus vastab lisatud vooskeemile
17. samm: lõplik kood
Pythoni kood on lisatud
Selleks, et meie pythoni skript töötaks terminalist, peame need käivitama kui chmod +x datalogger.py, kuid koodi ülaosas peaks olema järgmine "shebang" rida #! /usr/bin/python3 (see on vajalik funktsioonide täitmiseks sõlmepunasest)
#!/usr/bin/python3 // shebang linefrom sense_hat impordi SenseHat kuupäevast ja kuupäevast importimise kuupäevast CSV -st impordikirjutajalt RPi importimine. GPIO GPIO -st ajast importimise unerežiimist
tunne = SenseHat ()
import csv
timestamp = datetime.now ()
viivitus = 5 // viivitus on määratud andmete salvestamiseks andmetesse. csv -fail punane = (255, 0, 0) roheline = (0, 255, 0) kollane = (255, 255, 0)
#GPIO.setmode (GPIO. BCM)
#GPIO.seadistus (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"])
güroskoop = sense.get_gyroscope_raw ()
sense_impact.append (gyro ["x"]) sense_impact.append (gyro ["y"]) sense_impact.append (gyro ["z"])
return sense_impact
def impact (): // mõju tuvastamise funktsioon #GPIO.setmode (GPIO. BCM) #GPIO.setup (4, GPIO. OUT) kiirendus = sense.get_accelerometer_raw () x = kiirendus ['x'] y = kiirendus ['y'] z = kiirendus ['z'] x = abs (x) y = abs (y) z = abs (z)
güroskoop = sense.get_gyroscope_raw ()
güroskoop = güroskoop ["x"] gyroy = güroskoop ["y"] gyros = güroskoop ["z"]
gyrox = ümmargune (gürox, 2)
gyroy = ümmargune (gyroy, 2) gyroz = ümmargune (gyroz, 2)
mõju = get_sense_impact ()
kui x> 1,5 või y> 1,5 või z> 1,5: // väärtusi seatakse pärast iteratsiooni tegelikul teel, saab vastavalt muuta erinevat tüüpi ja avatud sõiduoskustega ('impact.csv', 'w', newline = ' ') nagu f: andmete_kirjutaja = kirjutaja (f) andmete_kirjutaja.kirjutaja ([' acc x ',' acc y ',' acc z ',' gyro x ',' gyro y ',' gyro z ']) #GPIO. väljund (4, GPIO. HIGH) sense.clear () sense.show_letter ("!", punane) data_writer.writerow (mõju)
elif gyrox> 1.5 või gyroy> 1.5 või gyroz> 1.5: // väärtused määratakse, vaadates pöörete avamise kiirust ('impact.csv', 'w', newline = ") kui f: data_writer = kirjanik (f) data_writer.writerow (['acc x', 'acc y', 'acc z', 'gyro x', 'gyro y', 'gyro z']) #GPIO.väljund (4, GPIO. HIGH) sense.clear () sense.show_letter ("!", Roheline) data_writer.writerow (mõju)
muidu:
# GPIO.output (4, GPIO. LOW) sense.clear ()
def get_sense_data (): // funktsioon väärtuste salvestamiseks ja salvestamiseks sensorist sense_data =
sense_data.append (sense.get_temperature ()) sense_data.append (sense.get_pressure ()) sense_data.append (sense.get_humidity ())
orientatsioon = sense.get_orientation ()
sense_data.append (orientatsioon ["yaw"]) sense_data.append (orientatsioon ["pitch"]) sense_data.append (orientatsioon ["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"])
güroskoop = sense.get_gyroscope_raw ()
sense_data.append (gyro ["x"]) sense_data.append (gyro ["y"]) sense_data.append (gyro ["z"])
sense_data.append (datetime.now ())
tagastada sense_data
avatud ('data.csv', 'w', newline = '') kui f:
andmete_kirjutaja = kirjanik (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 '])
kuigi tõsi:
print (get_sense_data ()) sündmuse jaoks mõttes.stick.get_events (): # Kontrollige, kas juhtnuppu on vajutatud, kui event.action == "press": # Kontrollige, mis suunas if event.direction == "up": # sense.show_letter ("U") # Ülesnool kiirendus = sense.get_accelerometer_raw () x = kiirendus ['x'] y = kiirendus ['y'] z = kiirendus ['z'] x = ümmargune (x, 0) y = ümmargune (y, 0) z = ümmargune (z, 0)
# Värskendage ekraani pöörlemist sõltuvalt sellest, millises suunas ülespoole 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.clear () t = sense.get_temperature () t = ümmargune (t, 1) sõnum = "T:" + str (t) sense.show_message (sõnum, teksti_värv = punane, scroll_speed = 0.09) elif event.direction == "down": kiirendus = sense.get_accelerometer_raw () x = kiirendus ['x'] y = kiirendus ['y'] z = kiirendus ['z'] x = ümmargune (x, 0) y = ümmargune (y, 0) z = ümmargune (z, 0)
# Värskendage ekraani pöörlemist sõltuvalt sellest, millises suunas ülespoole 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 ("D") # Allanool sense.clear () h = sense.get_humidity () h = round (h, 1) message = "H:" + str (h) sense.show_message (sõnum, teksti_värv = roheline, scroll_speed = 0.09) p = sense.get_pressure () p = ümmargune (p, 1) sõnum = "P:" + str (p) sense.show_message (sõnum, teksti_värv = kollane, kerimiskiirus = 0,09)
# elif event.direction == "left":
#kiirendus = sense.get_accelerometer_raw () #x = kiirendus ['x'] #y = kiirendus ['y'] #z = kiirendus ['z'] #x = ümmargune (x, 0) #y = ümmargune (y, 0) #z = ümmargune (z, 0)
#Värskendage ekraani pöörlemist sõltuvalt sellest, millises suunas üles // Ei kasutata ja ei kontrolli sõlmepunane #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") # Vasaknool # elif event.direction == "right": # sense.show_letter ("K") # Paremale nool # elif event.direction == "keskel": # sense.clear ()
mõju ()
andmed = get_sense_data ()
dt = andmed [-1] - ajatempel, kui dt.seconds> delay: data_writer.writerow (data) timestamp = datetime.now ()
18. samm: reaalajas video jälgimine
Mõju salvestajat saab kasutada ka otsevideo jälgimiseks, kuna videot saab MQTT kaudu igal ajal ja igal pool käivitada
videote voogesitamiseks kasutaksime VLC-mängijat, vaikimisi on uusimas raspbianis VLC eelinstallitud, muidu installige vlc nagu allpool
Lisateavet võrguvoo vaatamise kohta leiate VLC võrguvoo kaudu
Aitäh, et lugesite !!
Löögisalvesti saab palju rohkem ära teha.
Jälgige takistuste kaardistamisel magnetvälja analüüsimiseks järgmist ruumi
Soovitan:
Castle Planter (koos Tinkercadi koodiplokkidega): 25 sammu (koos piltidega)
Castle Planter (koos Tinkercadi koodiplokkidega): selle disaini teostamine võttis mul üsna kaua aega ja kuna minu kodeerimisoskus on vähemalt öeldes piiratud, loodan, et see õnnestus hästi :) Kasutades juhiseid, peaksite saama taaslooge selle disaini kõik aspektid ilma
Diy makroobjektiiv koos teravustamisega (erinev kui kõik muud DIY makroobjektiivid): 4 sammu (koos piltidega)
Diy makroobjektiiv koos teravustamisega (erinev kui kõik muud DIY makroobjektiivid): olen näinud palju inimesi, kes teevad makroläätsi tavalise komplekti objektiiviga (tavaliselt 18–55 mm). Enamik neist on objektiiv, mis on lihtsalt tagurpidi kaamera külge kinnitatud või esielement eemaldatud. Mõlemal variandil on varjuküljed. Objektiivi kinnitamiseks
Kitroniku leiutajakomplekti kasutamine koos Adafruit CLUE -ga: 4 sammu (koos piltidega)
Kitroniku leiutajakomplekti kasutamine koos Adafruit CLUE -ga: Kitronik Leiutaja komplekt BBC micro: bit jaoks on suurepärane sissejuhatus elektroonikaga mikrokontrolleritele, kasutades leivaplaati. See komplekti versioon on mõeldud kasutamiseks koos odava BBC mikro: bitiga. Üksikasjalik õpetusraamat, mis tuleb
Aktiivse muusikapeo LED -latern ja Bluetooth -kõlar koos pimedas helendava PLA -ga: 7 sammu (koos piltidega)
Aktiivse muusikapeo LED -latern ja Bluetooth -kõlar koos helendusega pimedas PLA: Tere, ja aitäh, et häälestasite minu juhendatavaks! Igal aastal teen koos oma pojaga, kes on nüüd 14., huvitava projekti. Oleme ehitanud nelikopteri, ujumistempo. (mis on ka juhendatav), CNC korpuse pink ja Fidget Spinners
PCB: GPS- ja GSM -põhine sõidukite jälgimissüsteem: 3 sammu
PCB: GPS- ja GSM -põhine sõidukite jälgimissüsteem: GPS- ja GSM -põhine sõidukite jälgimissüsteem 30. juuni 2016, inseneriprojektid Projektis GPS ja GSM -põhine sõidukite jälgimissüsteem kasutatakse globaalset positsioneerimissüsteemi (GPS) ja globaalset mobiilside süsteemi (GSM), mis muudab selle projekti veelgi