Turinys:
- 1 žingsnis: dalys ir priedai
- 2 žingsnis: dalių aprašymas: „Sense Hat“
- 3 žingsnis: Surinkimas: smūgio registratorius
- 4 žingsnis: Surinkimas: smūgio registratorius ant automobilio prietaisų skydelio
- 5 žingsnis: Poveikio atkūrimo įrenginys: darbas ir programos
- 6 veiksmas: programinės įrangos aprašymas: Raudonas mazgas
- 7 veiksmas: raudonos mazgo pagrindai
- 8 žingsnis: raudonas mazgas: srautas _1a
- 9 veiksmas: mazgas raudonas: srautas_1b
- 10 veiksmas: mazgas raudonas: srautas_2a
- 11 veiksmas: mazgas raudonas: srautas_2b
- 12 žingsnis: mazgas raudonas; Srautas_3
- 13 žingsnis: MQTT
- 14 žingsnis: MQTT: abonentas
- 15 veiksmas: MQTT: ypatybių redagavimas raudonu mazgu
- 16 veiksmas: „Python“kodas:
- 17 žingsnis: galutinis kodas
- 18 veiksmas: tiesioginio vaizdo stebėjimas
Video: Transporto priemonių smūgio registratorius: 18 žingsnių (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:46
Smūgio registratorius skirtas užfiksuoti smūgį, patiriamą transporto priemonei vairuojant ar stovint. Poveikis saugomas duomenų bazėje rodmenų, taip pat vaizdo įrašų/paveikslėlių pavidalu. Po smūgio nuotolinis vartotojas gali būti patikrintas realiuoju laiku, o nuotolinis vartotojas gali žiūrėti išsaugotą vaizdo įrašą arba nuotoliniu būdu pasiekti pi kamerą ir atitinkamai žiūrėti įvykius..
1 žingsnis: dalys ir priedai
(1) „Raspberry Pi 3“arba geresnė: reikalinga skaičiavimo galia
(2) Raspberry pi sense skrybėlė
(3) Raspberry pi kamera / USB kamera
(4) Atminties kortelė su naujausiu raspbian vaizdu (turėtų palaikyti raudoną mazgą, beveik kiekvienas naujausias vaizdas veikia)
(5) Maitinimo šaltinis ne mažesnis kaip 2,1 A (aš naudoju akumuliatoriaus banką savarankiškam darbui automobilyje)
2 žingsnis: dalių aprašymas: „Sense Hat“
„Sense HAT“turi 8 × 8 RGB LED matricą, penkių mygtukų vairasvirtę ir apima šiuos jutiklius:
- Giroskopas
- Akselerometras
- Magnetometras
- Temperatūra
- Barometrinis
- spaudimas
- Drėgmė
Daugiau informacijos apie darbą su „sense hat“galite gauti iš šių nuorodų: „Sense_Hat“
„Sense“skrybėlių API yra prieinama adresu: Sense_hat_API
„Sense-hat“programavimo kodas aprašytas vėlesniuose žingsniuose. Sense hat kodą taip pat galima imituoti simuliatoriuje, esančiame adresu: Sense-hat simulator
3 žingsnis: Surinkimas: smūgio registratorius
- Surinkimas yra paprastesnis, nes skrybėlę reikia sukrauti virš pi (paskirti tvirtinimo varžtai pateikiami kartu su skrybėlėmis).
- Galima prijungti USB ar pi kamerą. Pamokoje atsižvelgiama į pi kamerą ir atitinkamai koduojama.
- Įdėkite atminties kortelę ir sukonfigūruokite python kodą bei mazgą raudoną (konfigūracija ir kodas aprašyti tolesniuose veiksmuose)
Aukščiau esančiame paveikslėlyje parodyta pi-kamera, prijungta plokščiu juostiniu kabeliu prie pi
4 žingsnis: Surinkimas: smūgio registratorius ant automobilio prietaisų skydelio
Diktofono montavimui naudojau dvipusę juostą, privalumas yra tas, kad diktofoną galima lengvai perkelti į skirtingą padėtį, atsižvelgiant į tai, kas geriausiai tinka jūsų automobiliui.
Kita kamera sumontuota vertikaliai, kaip parodyta, naudojant tą pačią dvigubą šoninę juostą, Kitas žingsnis yra prijungti maitinimo šaltinį (10 000 mAH maitinimo banką) ir paruoštą interneto ryšį
Norint naudotis MQTT, reikalingas interneto ryšys (išsami informacija apie MQTT pateikiama tolesniuose veiksmuose)
5 žingsnis: Poveikio atkūrimo įrenginys: darbas ir programos
Iš jutiklio skrybėlės, pagreičio ir giroskopo naudojami patikrinti, ar neapdorotos vertės neviršija nustatytos kodo ribos.
Akselerometras: Akselerometras nurodo gravitacinės jėgos (G jėgos), veikiančios kiekvieną x, y ir z ašį, kiekį, jei kuri nors ašis matuoja daugiau nei 1G jėgą, nei galima aptikti greitą judesį. (atkreipkite dėmesį, kad ašis, nukreipta žemyn, turėtų 1 g reikšmę ir į ją reikia atsižvelgti python kodu).
Giroskopas; Giroskopas naudojamas kampiniam judesiui matuoti, t. Y. Staigaus posūkio metu jutiklis gali būti suaktyvintas (priklauso nuo kodo nustatymo), todėl žmogus, staigiai sukdamasis transporto priemone, bus sugautas!
Bet koks nustatytos ribos aktyvinimas taip pat rodomas „sense hat“LED matricoje kaip „!“raudona - pagreitis, o žalia - giroskopui įjungti
6 veiksmas: programinės įrangos aprašymas: Raudonas mazgas
„Node-RED“yra srautinis programavimo įrankis, kurį iš pradžių sukūrė „IBM Emerging Technology Servicesteam“ir dabar yra „JS Foundation“dalis.
Daugiau informacijos apie mazgą raudoną galima gauti per šią nuorodą: node-red
Mūsų atveju toliau veiklai naudosime mazgą -red
(1) Sąveika su kreiptukais, kad paleistumėte fotoaparato funkcijas
(2) Poveikio transporto priemonei stebėjimas ir informacijos perdavimas galutiniam vartotojui naudojant MQTT ir toliau priimant galutinio vartotojo komandas per MQTT ir paleidžiant reikiamą programą pi
(3) Atlikite keletą pagrindinių dalykų, pvz., „Pi“išjungimą
Tolesniuose veiksmuose pateikiama išsami informacija apie srauto schemą, įdiegtą raudoname mazge
Atkreipkite dėmesį, kad mazgo raudonojo srauto diagramos sąveikauja su python kodu, todėl paskutinė dalis apima python kodo aspektus
7 veiksmas: raudonos mazgo pagrindai
Tam tikri pagrindiniai veiksmai yra paryškinti, kad žaibiškai prasidėtų raudonas mazgas, bet taip, raudonas mazgas yra per paprastas, kad būtų galima pradėti ir dirbti su programomis.
- Pradedant raudoną mazgą: https:// localhost: 1880.
- Raudonojo mazgo paleidimas, kai pi yra prijungtas prie interneto https:// ip address>: 1880
8 žingsnis: raudonas mazgas: srautas _1a
„Flow _1a“stebi visus CSV failo pakeitimus ir, remdamasis pakeitimais, t. Y. Aptiktu poveikiu, vaizdo įrašymas fotoaparatu yra įjungtas ir toliau vartotojas informuojamas internetu, kad įvyko poveikis.
9 veiksmas: mazgas raudonas: srautas_1b
Esant minėtam srautui, vaizdo įrašymą galima pradėti bet kuriuo metu, tiesiog paspaudus vairasvirtę
10 veiksmas: mazgas raudonas: srautas_2a
Minėtame sraute, kai bet kuri nauja nuotrauka ar vaizdo įrašas yra saugomas/įkeliamas į katalogą, informacija perduodama registruotam vartotojui internetu
11 veiksmas: mazgas raudonas: srautas_2b
Šis srautas pirmiausia skirtas nuotoliniam vartotojui, kad būtų galima valdyti įrenginį taip
a) išjungimo įtaisas
b) fotografuoti
c) įrašyti vaizdo įrašus
d) pradžios pagrindinis kodas (duomenų registravimo kodas yra pagrindinis kodas, kuris apskaičiuoja poveikį)
12 žingsnis: mazgas raudonas; Srautas_3
Srautas skirtas vietinei prieigai, kad būtų galima paleisti pagrindinį kodą arba išjungimo įrenginį
13 žingsnis: MQTT
MQTT (Message Queuing Telemetry Transport) yra TCP/IP protokolas, kuriame leidėjas ir abonentas sąveikauja.
Mūsų atveju Pi yra leidėjas, o mūsų mobiliajame telefone/kompiuteryje įdiegta programa yra abonentas.
Tokiu būdu, sukuriant bet kokį poveikį, informacija nuotoliniu būdu perduodama vartotojui (būtinas veikiantis interneto ryšys)
Daugiau informacijos apie MQTT galite rasti šioje nuorodoje: MQTT
Norėdami pradėti naudoti MQTT, pirmiausia turime užsiregistruoti, nes pamoka, kurią naudojau „cloudmqtt“(www.cloudmqtt.com), yra nemokamas planas „miela katė“, viskas.
Užregistravę sukurkite egzempliorių, pasakykite „pi“, po kurio gausite šią informaciją
- Serverio pavadinimas
- uostas
- Vartotojo vardas
- Slaptažodis
Pirmiau nurodyti privalomi prenumeruojant per mobilųjį/kompiuterį
Savo programai naudojau MQTT programą iš „Google Play“parduotuvės („Android“versija)
14 žingsnis: MQTT: abonentas
„MQTT“programa, veikianti mobiliajame telefone („Android“versija)
Pi aptiktas poveikis perduodamas atgal
15 veiksmas: MQTT: ypatybių redagavimas raudonu mazgu
Raudoname mazge pasirinkus MQTT mazgą reikia paminėti „Serverio pavadinimą“ir „temą“. Tai turėtų būti tas pats abonento gale
16 veiksmas: „Python“kodas:
Kodo funkcionalumas atitinka pridėtą schemą
17 žingsnis: galutinis kodas
Python kodas pridedamas
Kad mūsų „python“scenarijus būtų paleistas iš terminalo, turime padaryti, kad jie būtų vykdomi kaip chmod +x datalogger.py, o toliau kodo viršuje turėtų būti ši „shebang“eilutė #! /usr/bin/python3 (tai reikalinga norint atlikti funkcijas iš mazgo raudono)
#!/usr/bin/python3 // shebang linefrom sense_hat import SenseHat from datetime import data datetime from csv import write import import RPi. GPIO as GPIO from time import sleep
jausmas = „SenseHat“()
importuoti csv
timestamp = datetime.now ()
uždelsimas = 5 // uždelsimas yra nustatytas duomenims saugoti duomenyse. csv failas raudonas = (255, 0, 0) žalias = (0, 255, 0) geltonas = (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"])
giroskopas = sense.get_gyroscope_raw ()
sense_impact.append (giroskopas ["x"]) sense_impact.append (giroskopas ["y"]) sense_impact.append (giroskopas ["z"])
grįžti sense_impact
def impact (): // funkcija aptikti smūgį #GPIO.setmode (GPIO. BCM) #GPIO.setup (4, GPIO. OUT) pagreitis = sense.get_accelerometer_raw () x = pagreitis ['x'] y = pagreitis ['y'] z = pagreitis ['z'] x = abs (x) y = abs (y) z = abs (z)
giroskopas = sense.get_gyroscope_raw ()
gyrox = giroskopas ["x"] gyroy = gyro ["y"] gyroz = gyro ["z"]
gyrox = apvalus (gyrox, 2)
gyroy = apvalus (gyroy, 2) gyroz = apvalus (gyroz, 2)
poveikis = get_sense_impact ()
jei x> 1,5 arba y> 1,5 arba z> 1,5: // reikšmės nustatomos po iteracijos realiame kelyje gali būti atitinkamai pakeistos, atsižvelgiant į skirtingus tipus ir vairavimo įgūdžius, esant atviram ('impact.csv', 'w', newline = ' ') kaip f: data_writer = rašytojas (f) data_writer.writerow ([' acc x ',' acc y ',' acc z ',' gyro x ',' gyro y ',' gyro z ']) #GPIO. išvestis (4, GPIO. HIGH) sense.clear () sense.show_letter ("!", raudona) data_writer.writerow (poveikis)
elif gyrox> 1.5 arba gyroy> 1.5 arba gyroz> 1.5: // vertės nustatomos atsižvelgiant į greitį, kuriuo posūkiai pradedami atidarius ('impact.csv', 'w', newline = '') kaip f: data_writer = rašytojas (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 ("!", Žalia) data_writer.writerow (poveikis)
Kitas:
# GPIO.output (4, GPIO. LOW) sense.clear ()
def get_sense_data (): // funkcija, skirta įrašyti ir saugoti vertes iš jutiklio sense_data =
sense_data.append (sense.get_temperature ()) sense_data.append (sense.get_pressure ()) sense_data.append (sense.get_humidity ())
orientacija = sense.get_orientation ()
sense_data.append (orientacija ["yaw"]) sense_data.append (orientacija ["pitch"]) sense_data.append (orientacija ["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"])
giroskopas = sense.get_gyroscope_raw ()
sense_data.append (giroskopas ["x"]) sense_data.append (giroskopas ["y"]) sense_data.append (giroskopas ["z"])
sense_data.append (datetime.now ())
grąžinti sense_data
su atvira ('data.csv', 'w', newline = '') kaip f:
duomenų_rašytojas = rašytojas (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 '])
nors tiesa:
print (get_sense_data ()) įvykiui sense.stick.get_events (): # Patikrinkite, ar buvo paspausta vairasvirtė, jei event.action == "press": # Patikrinkite, kuria kryptimi, jei event.direction == "up": # sense.show_letter ("U") # Rodyklės aukštyn pagreitis = sense.get_accelerometer_raw () x = pagreitis ['x'] y = pagreitis ['y'] z = pagreitis ['z'] x = apvalus (x, 0) y = apvalus (y, 0) z = apvalus (z, 0)
# Atnaujinkite ekrano sukimąsi, priklausomai nuo to, į kurią pusę aukštyn, jei 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 (pranešimas, text_colour = raudona, scroll_speed = 0.09) elif event.direction == "žemyn": pagreitis = sense.get_accelerometer_raw () x = pagreitis ['x'] y = pagreitis ['y'] z = pagreitis ['z'] x = apvalus (x, 0) y = apvalus (y, 0) z = apvalus (z, 0)
# Atnaujinkite ekrano sukimąsi priklausomai nuo to, į kurią pusę aukštyn, jei 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") # Rodyklė žemyn sense.clear () h = sense.get_humidity () h = round (h, 1) message = "H:" + str (h) sense.show_message (pranešimas, text_colour = žalia, scroll_speed = 0.09) p = sense.get_pressure () p = round (p, 1) message = "P:" + str (p) sense.show_message (pranešimas, text_colour = geltona, slinkties greitis = 0,09)
# elif event.direction == "left":
#pagreitis = sense.get_accelerometer_raw () #x = pagreitis ['x'] #y = pagreitis ['y'] #z = pagreitis ['z'] #x = apvalus (x, 0) #y = apvalus (y, 0) #z = apvalus (z, 0)
#Atnaujinkite ekrano sukimąsi, priklausomai nuo to, į kurią pusę aukštyn // Nenaudojama ir valdoma mazgo -raudono #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") # Rodyklė į kairę # elif event.direction == "right": # sense.show_letter ("K") # rodyklė į dešinę # elif event.direction == "middle": # sense.clear ()
poveikis ()
duomenys = get_sense_data ()
dt = duomenys [-1] - laiko žyma, jei dt.seconds> delay: data_writer.writerow (data) timestamp = datetime.now ()
18 veiksmas: tiesioginio vaizdo stebėjimas
„Impact Recorder“taip pat gali būti naudojamas tiesioginiam vaizdo įrašo stebėjimui, nes vaizdo įrašą galima pradėti bet kada ir bet kur per MQTT
vaizdo įrašams transliuoti naudosime VLC grotuvą, pagal numatytuosius nustatymus naujausioje raspbian sistemoje VLC yra iš anksto įdiegta, kitaip įdiekite vlc, kaip nurodyta
Daugiau informacijos apie tinklo srauto peržiūrą galima pasiekti naudojant „VLC Network stream“
Ačiū, kad skaitėte!!
Smūgio registratorius gali padaryti daug daugiau.
Saugokitės kitos erdvės magnetinio lauko analizei atliekant kliūčių kartografavimą
Rekomenduojamas:
PCB: GPS ir GSM pagrįsta transporto priemonių sekimo sistema: 3 žingsniai
PCB: GPS ir GSM pagrįsta transporto priemonių sekimo sistema: GPS ir GSM pagrįsta transporto priemonių sekimo sistema daro šį projektą patogesnį
„AtticTemp“- temperatūros / klimato registratorius: 10 žingsnių (su nuotraukomis)
„AtticTemp“- temperatūros / klimato registratorius: aukšto tolerancijos temperatūros matuoklis ir klimato registratorius jūsų palėpėje ar kitose lauko konstrukcijose
„Raspberry Pi“GPS registratorius: 10 žingsnių (su nuotraukomis)
„Raspberry Pi GPS Logger“: šioje instrukcijoje paaiškinta, kaip sukurti kompaktišką GPS registratorių su aviečių pi nuliu. Pagrindinis šios sistemos pranašumas yra tai, kad joje yra baterija, todėl ji yra labai kompaktiška. Įrenginys saugo duomenis a.nmea faile. Šie duomenys apie
„Raspberry Pi“smūgio jėgos monitorius!: 16 žingsnių (su nuotraukomis)
„Raspberry Pi“smūgio jėgos monitorius !: Kokį poveikį gali atlaikyti žmogaus kūnas? Nesvarbu, ar tai būtų futbolas, ar laipiojimas uolomis, ar dviračio avarija, labai svarbu žinoti, kada po susidūrimo reikia nedelsiant kreiptis į gydytoją, ypač jei nėra akivaizdžių traumos požymių
„WiFi“temperatūros registratorius (su ESP8266): 11 žingsnių (su nuotraukomis)
„WiFi“temperatūros registravimo įrenginys (su ESP8266): Sveiki, malonu matyti jus čia. Tikiuosi, kad šioje pamokoje rasite naudingos informacijos. Nedvejodami atsiųskite man pasiūlymų, klausimų, … Čia yra keletas pagrindinių duomenų ir greita projekto apžvalga. Mobiliesiems naudotojams: vaizdo įrašas. Praneškite man