Përmbajtje:

Regjistruesi i ndikimit për automjetet: 18 hapa (me fotografi)
Regjistruesi i ndikimit për automjetet: 18 hapa (me fotografi)

Video: Regjistruesi i ndikimit për automjetet: 18 hapa (me fotografi)

Video: Regjistruesi i ndikimit për automjetet: 18 hapa (me fotografi)
Video: Gjeniu i matematikës, 13-vjeçari që zgjidh ushtrimet më shpejt së makina llogaritëse 2024, Nëntor
Anonim
Regjistruesi i Ndikimit për Automjetet
Regjistruesi i Ndikimit për Automjetet

Regjistruesi i Ndikimit është krijuar për të regjistruar ndikimin e pësuar në automjet gjatë ngasjes ose stacionimit. Ndikimet ruhen në bazën e të dhënave në formën e leximeve, si dhe video/fotografi. Pas ndikimit, përdoruesi i largët mund të verifikohet në kohë reale, dhe përdoruesi në distancë mund të shikojë videon e ruajtur ose të ketë qasje në distancë në kamerën pi dhe të shikojë ngjarjet në përputhje me rrethanat Me

Hapi 1: Pjesë dhe pajisje shtesë

(1) Raspberry Pi 3 ose më mirë: Kërkohet fuqi llogaritëse

(2) Kapelë me kuptim pi mjedër

(3) Kamera mjedër pi / Kamera USB

(4) Kartë memorie me imazhin më të fundit raspbian (Duhet të mbështesë nyjen me ngjyrë të kuqe, pothuajse çdo imazh i fundit)

(5) Furnizimi me energji elektrike të paktën 2.1 A (kam përdorur bankën e baterisë për funksionim të pavarur në makinë)

Hapi 2: Përshkrimi i Pjesëve: Kapelë Sense

Përshkrimi i Pjesëve: Kapelë Sense
Përshkrimi i Pjesëve: Kapelë Sense

Sense HAT ka një matricë LED 8 × 8 RGB, një levë me pesë butona dhe përfshin sensorët e mëposhtëm:

  • Xhiroskop
  • Akselerometër
  • Magnetometër
  • Temperatura
  • Barometrike
  • presion
  • Lagështia

Më shumë informacion mbi punën me kapelën kuptimore mund të nxirren nga lidhjet e mëposhtme: Sense_Hat

API për kapelën kuptimore janë të strehuara në: Sense_hat_API

Kodi për programimin e sensit mbulohet në hapat e mëvonshëm. Kodi i kapelës shqisore gjithashtu mund të simulohet në një imitues të strehuar në: Sense-hat simulator

Hapi 3: Montimi: Regjistruesi i Ndikimit

Montimi: Regjistruesi i Ndikimit
Montimi: Regjistruesi i Ndikimit
Montimi: Regjistruesi i Ndikimit
Montimi: Regjistruesi i Ndikimit
Montimi: Regjistruesi i Ndikimit
Montimi: Regjistruesi i Ndikimit
Montimi: Regjistruesi i Ndikimit
Montimi: Regjistruesi i Ndikimit
  • Montimi është më i thjeshtë pasi kapela e kuptimit duhet të vendoset mbi pi (bulonat e caktuar të montimit pajisen me kapelë kuptimi).
  • Kamera USB ose kamera pi mund të lidhen. Në tutorial, kamera pi konsiderohet dhe në përputhje me rrethanat kodimi kryhet për të njëjtën.
  • Vendosni kartën e kujtesës dhe konfiguroni kodin python dhe nyjen -kuqe (konfigurimi dhe kodi mbulohen në hapa të mëtejshëm)

Fotografia e mësipërme tregon kamerën pi të lidhur përmes kabllit me shirit të sheshtë me pi

Hapi 4: Montimi: Regjistruesi i Ndikimit në Dash Board of Car

Montimi: Regjistruesi i Ndikimit në Dash Board of Car
Montimi: Regjistruesi i Ndikimit në Dash Board of Car

Për montimin e regjistruesit, kam përdorur shirit të dyanshëm, përparësia është që regjistruesi mund të zhvendoset lehtësisht në pozicione të ndryshme, cilado që i përshtatet më së miri makinës tuaj.

Kamera e mëtejshme është montuar vertikalisht siç tregohet, duke përdorur të njëjtën shirit anësor të dyfishtë, Tjetra në linjë është lidhja e një burimi energjie (banka energjie 10, 000 mAH) së bashku me një lidhje të gatshme në internet

Për aplikimin MQTT kërkohet lidhje interneti (detajet për MQTT mbulohen në hapa të mëtejshëm)

Hapi 5: Regjistruesi i Ndikimit: Puna & Aplikimet

Nga kapaku i kuptimit, nxitimi dhe xhiroskopi përdoren për të kontrolluar nëse vlerat e papërpunuara janë përtej kufirit të caktuar në kod.

Përshpejtuesi: Përshpejtuesi tregon sasinë e forcës gravitacionale (forca G) që vepron në secilin nga boshtet x, y & z, nëse ndonjë bosht mat më shumë se 1G forcë, atëherë mund të zbulohet lëvizja e shpejtë. (ju lutemi vini re boshtin drejtuar poshtë do të kishte një vlerë 1g dhe duhet të merret parasysh në përputhje me rrethanat në kodin python).

Xhiroskop; Xhiroskopi përdoret për të matur lëvizjen këndore, domethënë gjatë kthesës së mprehtë sensori mund të aktivizohet (varet nga vendosja në kod), kështu që një person që rrotullon ashpër automjetin do të kapet !!

Çdo aktivizim i kufirit të caktuar shfaqet gjithashtu në matricën LED të kapelës shqisore si "!" me të kuqe për nxitim dhe jeshile për aktivizimin e xhiroskopit

Hapi 6: Përshkrimi i Softuerit: Nyja e Kuqe

Node-RED është një mjet programimi i bazuar në rrjedhë, i zhvilluar fillimisht nga Ekipi i Shërbimit të Teknologjisë në Zhvillim të IBM dhe tani një pjesë e Fondacionit JS.

Më shumë informacion mbi nyjen e kuqe mund të merret përmes lidhjes në vijim: nyja-e kuqe

Për rastin tonë ne do të përdorim nyjen -red për aktivitetet e mëposhtme

(1) Ndërveprimi me levë për të filluar funksionet e kamerës

(2) Monitorimi i ndikimeve në automjet dhe transmetimi i informacionit tek përdoruesi përfundimtar duke përdorur MQTT dhe duke pranuar më tej komandat e përdoruesve përfundimtarë përmes MQTT dhe duke filluar aplikimin e nevojshëm në pi

(3) Kryerja e disa gjërave themelore si mbyllja e pi

Hapat e mëtejshëm japin informacionin e detajuar për diagramin e rrjedhës të zbatuar në nyjen e kuqe

Ju lutemi vini re se diagramet e rrjedhës nyje-të kuqe ndërveprojnë me kodin python, prandaj pjesa e fundit mbulon aspektet e kodit python

Hapi 7: Bazat e Nyjes së kuqe

Bazat e nyjës së kuqe
Bazat e nyjës së kuqe
Bazat e nyjës së kuqe
Bazat e nyjës së kuqe
Bazat e nyjës së kuqe
Bazat e nyjës së kuqe

Disa hapa bazë theksohen për të filluar Nyja-e kuqe në një ndezje, por po nyja-e kuqe është shumë e thjeshtë për të filluar dhe përpunuar aplikacione.

  • Nyja fillestare-e kuqe: https:// localhost: 1880.
  • Fillimi i Nyjes së kuqe kur pi është i lidhur me internetin https:// adresa ip>: 1880

Hapi 8: Nyja-e kuqe: Rrjedha _1a

Nyja-e kuqe: Rrjedha _1a
Nyja-e kuqe: Rrjedha _1a

Flow _1a, monitoron çdo ndryshim në skedarin CSV dhe në bazë të ndryshimeve, domethënë ndikimi i zbuluar, regjistrimi i videokamerës vendoset në modalitet dhe më tej përdoruesi informohet përmes internetit se ka ndodhur një ndikim

Hapi 9: Nyja e Kuqe: Flow_1b

Nyja e kuqe: Flow_1b
Nyja e kuqe: Flow_1b

Në rrjedhën e lartpërmendur, regjistrimi i videos mund të fillohet në çdo moment duke shtypur thjesht levën

Hapi 10: Nyja e Kuqe: Flow_2a

Nyja e Kuqe: Flow_2a
Nyja e Kuqe: Flow_2a

Në rrjedhën e përmendur, sa herë që ndonjë fotografi ose video e re ruhet/ngarkohet në drejtori, informacioni i transmetohet përdoruesit të regjistruar përmes internetit

Hapi 11: Nyja e Kuqe: Flow_2b

Nyja e kuqe: Flow_2b
Nyja e kuqe: Flow_2b

Ky rrjedhë është projektuar fillimisht për përdoruesit në distancë, në mënyrë që të kontrollojë pajisjen në mënyrën e mëposhtme

(a) pajisja e fikjes

(b) të bëjë fotografi

(c) Regjistroni video

(d) filloni kodin kryesor (kodi i regjistruesit të të dhënave është kodi kryesor që llogarit ndikimin)

Hapi 12: Nyja e Kuqe; Rrjedha_3

Nyja e Kuqe; Rrjedha_3
Nyja e Kuqe; Rrjedha_3

Rrjedha është projektuar për qasje lokale, në mënyrë që të fillojë kodin kryesor ose pajisjen e fikjes

Hapi 13: MQTT

MQTT (Message Queuing Telemetry Transport) është një protokoll TCP/IP, ku botuesi dhe pajtimtari ndërveprojnë.

Në rastin tonë Pi është botues, ndërsa aplikacioni i instaluar në celularin/kompjuterin tonë do të jetë pajtimtari.

Në këtë mënyrë në gjenerimin e çdo ndikimi, informacioni i transmetohet përdoruesit nga distanca (një lidhje interneti që funksionon është e domosdoshme)

Më shumë informacion në lidhje me MQTT mund të arrihet nga lidhja e mëposhtme: MQTT

Për të filluar përdorimin e MQTT, ne duhet të regjistrohemi së pari, për mësimin që kam përdorur cloudmqtt (www.cloudmqtt.com), ekziston një plan falas nën "mace e lezetshme", kjo është e gjitha.

Pas regjistrimit krijoni një shembull thoni "pi", pas së cilës do të merrnit detajet e mëposhtme

  • Emri i serverit
  • port
  • emrin e përdoruesit
  • fjalëkalimin

Sa më sipër kërkohet gjatë abonimit përmes celularit/pc

Për aplikimin tim, unë kam përdorur aplikacionin MQTT nga google play store (versioni Android)

Hapi 14: MQTT: Abonenti

MQTT: Abonent
MQTT: Abonent

Aplikacioni MQTT që funksionon në celular (versioni Android)

Ndikimi i zbuluar në pi transmetohet përsëri

Hapi 15: MQTT: Redaktimi i Karakteristikave në Node-red

MQTT: Redaktimi i Karakteristikave në Node-red
MQTT: Redaktimi i Karakteristikave në Node-red

Me nyje të kuqe pas zgjedhjes së nyjes MQTT, "Emri i serverit" dhe "tema" për t'u përmendur. Kjo duhet të jetë e njëjtë në fund të pajtimtarit

Hapi 16: Kodi Python:

Funksionaliteti i kodit është sipas diagramit të bashkangjitur

Hapi 17: Kodi Përfundimtar

Kodi i pitonit është i bashkangjitur

Në mënyrë që shkrimi ynë python të funksionojë nga terminali, ne duhet t'i bëjmë ato të ekzekutueshëm si chmod +x datalogger.py, sesa më tej pjesa e sipërme e kodit duhet të përmbajë rreshtin #shebang të mëposhtëm #! /usr/bin/python3 (kjo kërkohet në mënyrë që të ekzekutohen funksionet nga nyja-e kuqe)

#!/usr/bin/python3 // shebang linefrom sense_hat import SenseHat nga dataetime import dataetime nga csv import author import RPi. GPIO si GPIO nga koha e importimit të gjumit

sens = SenseHat ()

importo csv

timestamp = datetime.now ()

vonesa = 5 // vonesa është përcaktuar për të ruajtur të dhënat në të dhëna.csv skedari i kuq = (255, 0, 0) jeshil = (0, 255, 0) i verdhë = (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"])

gyro = sense.get_gyroscope_raw ()

sense_impact.append (gyro ["x"]) sense_impact.append (gyro ["y"]) sense_impact.append (gyro ["z"])

ktheje sensin_impakt

def ndikim (): // funksioni për të zbuluar ndikimin #GPIO.setmode (GPIO. BCM) #GPIO.setup (4, GPIO. OUT) nxitimi = sense.get_accelerometer_raw () x = nxitimi ['x'] y = nxitimi ['y'] z = nxitim ['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 = i rrumbullakët (gyrox, 2)

gyroy = e rrumbullakët (gyroy, 2) gyroz = e rrumbullakët (gyroz, 2)

ndikim = merr_sense_impact ()

nëse x> 1.5 ose y> 1.5 ose z> 1.5: // vlerat vendosen pasi përsëritja në rrugën aktuale mund të ndryshohet në përputhje me rrethanat për lloje të ndryshme dhe aftësi drejtimi me të hapur ('ndikimi.csv', 'w', newline = ' ') si f: data_writer = shkrimtar (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 ("!", red) data_writer.writerow (ndikim)

elif gyrox> 1.5 ose gyroy> 1.5 ose gyroz> 1.5: // vlerat vendosen duke parë shpejtësinë me të cilën inicimet fillojnë me hapje ('ndikimi.csv', 'w', newline = '') si f: data_writer = shkrimtar (f) data_writer.writerow (['acc x', 'acc y', 'acc z', 'gyro x', 'gyro y', 'gyro z']) #GPIO.putput (4, GPIO HIGH) sense.clear () sense.show_letter ("!", Green) data_writer.writerow (ndikim)

tjeter:

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

def get_sense_data (): // funksioni për të regjistruar dhe ruajtur vlerat nga sensori sens_data =

sense_data.append (sense.get_temperature ()) sense_data.append (sense.get_pressure ()) sense_data.append (sense.get_h lagështia ())

Orientimi = sensi. merrni_orientimin ()

sense_data.append (orientimi ["yaw"]) sense_data.append (orientimi ["pitch"]) sense_data.append (orientimi ["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 (dataetime.now ())

ktheni sensin_data

me hapur ('data.csv', 'w', newline = '') si f:

data_writer = shkrimtar (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 ',' dataetime '])

ndërsa e vërtetë:

printoni (merrni_sense_data ()) për ngjarjen në kuptimin.stick.get_events (): # Kontrolloni nëse xhojstiku është shtypur nëse event.action == "shtypet": # Kontrolloni drejtimin nëse event.direction == "up": # sense.shfaq_letër ("U") # Shigjeta për përshpejtim = ndjenjë. merrni_accelerometer_raw () x = nxitim ['x'] y = nxitim ['y'] z = nxitim ['z'] x = raund (x, 0) y = rrumbullak (y, 0) z = rrumbullak (z, 0)

# Përditësoni rrotullimin e ekranit në varësi të rrugës nëse x == -1: sense.set_rotation (90) elif y == 1: sense.set_rotation (270) elif y == -1: sense.set_rotation (180) tjetër: sense.set_rotation (0) sense.clear () t = sense.get_temperature () t = round (t, 1) message = "T:" + str (t) sense.show_message (mesazh, tekst_ngjyrë = e kuqe, scroll_speed = 0.09) elif event.direction == "down": acceleration = sense.get_accelerometer_raw () x = nxitim ['x'] y = nxitim ['y'] z = nxitim ['z'] x = raund (x, 0) y = raund (y, 0) z = raund (z, 0)

# Përditësoni rrotullimin e ekranit në varësi të rrugës nëse x == -1: sense.set_rotation (90) elif y == 1: sense.set_rotation (270) elif y == -1: sense.set_rotation (180) tjetër: sense.set_rotation (0) # sense.show_letter ("D") # Shigjetë shigjeta poshtë. e qartë () h = sense.get_humidity () h = raund (h, 1) mesazh = "H:" + str (h) sense.show_message (mesazh, tekst_ngjyrë = jeshile, scroll_speed = 0.09) p = sense.get_pressure () p = raund (p, 1) mesazh = "P:" + str (p) sense.show_message (mesazh, tekst_ngjyr = e verdhë, shpejtësia e lëvizjes = 0.09)

# elif event.direction == "majtas":

#përshpejtim = ndjenjë.get_accelerometer_raw () #x = nxitim ['x'] #y = nxitim ['y'] #z = nxitim ['z'] #x = raund (x, 0) #y = raund (y, 0) #z = raund (z, 0)

#Përditësoni rrotullimin e ekranit në varësi të shtegut // Nuk përdoret dhe kontrollohet nga nyja -e kuqe #nëse 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") # Shigjeta e majtë # elif event.direction == "right": # sense.show_letter ("K") # Shigjeta e djathtë # elif event.direction == "mes": # sense.clear ()

ndikim ()

të dhëna = merrni_data_sense_data ()

dt = data [-1] - shenja kohore nëse dt.sekonda> vonesë: data_writer.writerow (të dhëna) timestamp = datetime.now ()

Hapi 18: Monitorimi i videove të drejtpërdrejta

Regjistruesi i Ndikimit mund të përdoret gjithashtu për të monitoruar video të drejtpërdrejta, pasi video mund të fillohet në çdo kohë kudo përmes MQTT

ne do të përdorim VLC player për të transmetuar video, si parazgjedhje në raspbian-in e fundit VLC është para-instaluar, përndryshe instaloni vlc si më poshtë

Më shumë informacion në lidhje me shikimin e rrymës së rrjetit mund të arrihet përmes rrjedhës së Rrjetit VLC

Faleminderit qe lexuat !!

Ka shumë më tepër që regjistruesi i ndikimit mund të bëjë..

Kujdes nga hapësira tjetër për analizën e fushës magnetike në kryerjen e hartave të pengesave

Recommended: