Përmbajtje:
- Hapi 1: Kërkesat
- Hapi 2: Ndërtimi dhe ndezja e firmuerit të sensorit
- Hapi 3: Konfigurimi i reve
- Hapi 4: Vendosni AWS Lambda
- Hapi 5: Vendosni AWS Kinesis Firehose Stream Data
- Hapi 6: Vendosni rolin e IAM për Kinesis
- Hapi 7: Vendosni AWS EC2
- Hapi 8: Vendosni rolin e sigurisë të IAM për EC2
- Hapi 9: Qasuni në shembullin tuaj EC2
- Hapi 10: Merrni Google Maps API
- Hapi 11: Nis serverin
- Hapi 12: Kryeni Integrimin HTTP në Rrjetin e Gjërave
- Hapi 13: Përpunimi i të dhënave
- Hapi 14: Vizualizimi
- Hapi 15: Kredite dhe Lidhje të Jashtme
Video: Monitorimi i Rrugës: 15 Hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:20
Sot do t'ju tregojmë se si kemi ngritur një sistem të monitorimit të anomalive rrugore bazuar në akselerometra, LoRaWAN, Amazon Web Services dhe Google Cloud API.
Hapi 1: Kërkesat
- Bordi DISCO-L072CZ-LRWAN1
- Moduli i zgjerimit X-NUCLEO-IKS01A2 (për shpejtësimatësin)
- X-NUCLEO-GNSS1A1 (për lokalizim)
- Një llogari AWS
- Një llogari e Google Cloud Platform
Hapi 2: Ndërtimi dhe ndezja e firmuerit të sensorit
Lidhni IKS01A2 dhe GNSS1A1 në krye të tabelës përmes kunjave GPIO. Shkarkoni kodin e firmware -it nga GitHub. Krijoni (nëse nuk e keni tashmë) një llogari në ARM Mbed dhe importoni kodin në repo në përpiluesin online. Vendosni platformën e synuar në DISCO-L072CZ-LRWAN1 dhe ruani projektin. Tani drejtohuni në The Things Network dhe krijoni një llogari nëse nuk e keni tashmë. Krijoni një aplikacion, krijoni një pajisje të re brenda aplikacionit dhe vendosni mënyrën e lidhjes në OTAA. Merrni parametrat e duhur për të mbushur fushat e mëposhtme në skedarin mbed_app.json: "lora.appskey", "lora.nwkskey", "lora.device-address".
Sensori periodikisht do të regjistrojë të dhënat e përshpejtuesit dhe GNSS dhe do t'i dërgojë ato përmes lidhjes LoRa në portën më të afërt, e cila do t'i përcjellë ato në aplikacionin tonë në The Things Network. Hapi tjetër është krijimi i një serveri cloud dhe një integrim HTTP në TTN.
Hapi 3: Konfigurimi i reve
Tani ne jemi gati për të ngritur infrastrukturën cloud që do të mbledhë dhe grumbullojë të dhënat nga të gjitha bordet e vendosura. Kjo infrastrukturë është treguar në figurën më poshtë dhe përbëhet nga:
- Kinesis, për të trajtuar rrjedhën e të dhënave hyrëse;
- Lambda, për të filtruar dhe përpunuar të dhënat para se t'i ruani ato;
- S3, për të ruajtur të gjitha të dhënat;
- EC2, për të analizuar të dhënat dhe për të pritur front-endin tonë.
Hapi 4: Vendosni AWS Lambda
Ne do të ilustrojmë hapat e nevojshëm për ngritjen e kësaj infrastrukture, duke filluar me Lambda.
- Hyni me llogarinë tuaj AWS, dhe nga faqja kryesore e tastierës dhe shkoni te Lambda
- Klikoni në Krijo funksion
- Në pjesën e sipërme të faqes duhet të zgjidhet Author from Scratch. Pastaj plotësoni fushat e tjera si në foto dhe pastaj klikoni Krijo funksion
- Tani që keni krijuar një funksion AWS Lambda, shkoni te https://github.com/roadteam/data-server dhe kopjoni përmbajtjen e skedarit aws_lambda.py në redaktuesin që gjeni në gjysmën e dytë të faqes. Funksioni juaj Lambda tani është gati:)
Hapi 5: Vendosni AWS Kinesis Firehose Stream Data
- Kthehuni tani në faqen kryesore të tastierës AWS dhe në Shërbimet shkoni te Kinesis
- Tani ju jeni në faqen kryesore të Kinesis. Në të djathtë të faqes, nën 'Rrjedhat e dorëzimit të Kinesis Firehose', zgjidhni 'Krijo një rrjedhë të re të dorëzimit'
- Në "Emri i rrjedhës së dorëzimit" shkruani "rruga-monitorimi i rrugës". Lërini fushat e tjera të paracaktuara dhe klikoni tjetër
- Tani nën 'Transformoni regjistrimet e burimit me AWS Lambda' zgjidhni Enabled, dhe si funksion Lambda klikoni në 'road-monitoring-lambda' të krijuar rishtazi. Mos u shqetësoni nëse shfaqet një paralajmërim në lidhje me afatin e funksionimit, pasi operacioni që ne po bëjmë nuk është i shtrenjtë nga ana llogaritëse. Lërini fushat e tjera të paracaktuara dhe klikoni tjetër
- Si destinacion zgjidhni Amazon S3, dhe si destinacion S3 zgjidhni Krijo të re. Si emri i kovës futni 'kovën e monitorimit të rrugës' dhe pastaj shkoni. Tani lërini fushat e tjera të paracaktuara dhe klikoni Next
- Ju mund të dëshironi të vendosni madhësinë e tamponit në 1MB dhe intervalin e tamponit në 60 sekonda. Tamponi do të shpëlahet në S3 sa herë që plotësohet njëra nga dy kushtet. Mos e lini faqen, shihni hapin tjetër
Hapi 6: Vendosni rolin e IAM për Kinesis
Tani ne vendosim lejet e sigurisë për Kinesis, pasi ai duhet të thërrasë funksionin Lambda për përpunim paraprak dhe më pas do të shkruajë në S3
- Në fund të faqes që jeni në 'rolin IAM' zgjidhni 'Krijo të re të zgjedhur', krijoni një rol të ri IAM si në foto dhe klikoni Lejo
- Tani jeni kthyer në faqen e mëparshme, klikoni tjetër. Tani mund të dëshironi të kontrolloni dy herë të gjithë parametrat. Kur të përfundoni, klikoni në "Krijo rrjedhën e dorëzimit"
Tubacioni Kinesis-Lambda-S3 është duke funksionuar!
Hapi 7: Vendosni AWS EC2
Tani do të krijojmë një shembull EC2 me disa API që do të na lejojnë të shtyjmë dhe tërheqim të dhëna nga cloud AWS dhe gjithashtu serveri ku të presim aplikacionin tonë të përparuar. Në mjedisin e prodhimit, ju mund të dëshironi të publikoni API duke përdorur Portën më të shkallëzuar të AWS API.
- Nga faqja kryesore e tastierës AWS, shkoni te shërbimi EC2
- Klikoni në Launch Instance
- Në shiritin e sipërm të kërkimit ngjisni këtë kod: ‘ami-08935252a36e25f85’, ky është kodi identifikues i makinës virtuale të parakonfiguruar për t’u përdorur. Klikoni Zgjidh në të djathtë
- Zgjidhni t2.micro nga kolona ‘Type’ dhe klikoni ‘Review and start’. Mos e hapni shembullin akoma, shkoni në hapin tjetër
Hapi 8: Vendosni rolin e sigurisë të IAM për EC2
- Para fillimit ne duam të modifikojmë grupin e sigurisë të shembullit tonë. Për ta bërë këtë, në të djathtën ekstreme të seksionit "Grupet e Sigurisë" klikoni "Ndrysho grupet e sigurisë" Krijoni një grup të ri sigurie si më poshtë. Kjo në thelb konfiguron murin mbrojtës të shembullit tuaj duke ekspozuar portin 22 për lidhjen SSH dhe portin 80 për shërbimet
- Klikoni përsëri 'Rishikoni dhe Nisni'. Tani kontrolloni që të gjithë parametrat janë vendosur. Kur të përfundoni, klikoni në Launch
- Me klikimin do të shfaqet një dritare e re për të krijuar një palë çelësash për lidhje ssh me shembullin. Zgjidhni "Krijo çift të ri çelësash" dhe si emër futni "ec2-road-monitorim". Klikoni Shkarkoni çiftin e çelësave. Extremelyshtë jashtëzakonisht e rëndësishme që ky skedar të humbasë ose (më keq) të ruhet në mënyrë të pasigurt: nuk do të jeni në gjendje të shkarkoni përsëri çelësin. Pasi të keni shkarkuar çelësin.pem, shembulli është gati për t'u nisur
Hapi 9: Qasuni në shembullin tuaj EC2
Shembulli juaj i freskët EC2 është në cloud AWS. Mund të lidheni me të me skedarin kryesor të shkarkuar më parë (për këtë tutorial supozojmë se i dini bazat e ssh). Ju mund të merrni IP -në e shembullit duke e zgjedhur atë në pult në seksionin "Përshkrimi" si më poshtë: Ju mund të përdorni IP -në tuaj publike ose DNS -në tuaj publike është e njëjtë. Me një klient ssh tani futni komandën:
ssh -i ec2-road-monitor.pem ec2-user@YOUR-IP-ADDR-OR-DNS
ku ec2-road-monitoring.pem është çelësi juaj i krijuar më parë.
Tani vazhdoni të tërhiqni kodin nga ana e serverit
Hapi 10: Merrni Google Maps API
Ne pothuajse kemi mbaruar. Tani duhet të vendosim API -në e Google Maps në faqen tonë html në mënyrë që t'i shfaqim përdoruesit hartën me pikat e rrugës:
- Hyni në llogarinë tuaj të Google dhe shkoni te
- Klikoni për të ‘Filluar’ në të majtë të faqes
- Zgjidhni "Hartat" në menunë dhe pastaj klikoni vazhdoni
- Si emri i projektit futni 'monitorimin e rrugës' dhe klikoni Next
- Vendosni të dhënat tuaja të faturimit dhe klikoni Vazhdo
- Tani projekti juaj është gati dhe ne do të marrim çelësin API duke klikuar te API dhe Shërbimet -> Kredencialet
Hapi 11: Nis serverin
Dhe atje është çelësi juaj API. Gjëja e fundit që duhet të bëni është të shkoni te data_visualization/anomalies_map.html dhe të kopjoni çelësin tuaj deri në fund të skedarit ashtu, duke zëvendësuar 'ÇELEYSIN TUAJ-KERTU'
Tani gjithçka është gati dhe gati për të shkuar! Për ta bërë atë të fillojë të ekzekutohet në shembullin EC2: 'cd data-server' 'python flask_app.py'
Shkruani në shfletuesin tuaj adresën IP ose dns të shembullit tuaj EC2, duhet të shihni hartën e anomalive me disa të dhëna falsifikuese
Hapi 12: Kryeni Integrimin HTTP në Rrjetin e Gjërave
Tani që kemi të gjithë infrastrukturën mbështetëse në funksionim, ne mund të përpunojmë për të kryer integrimin
- Krijoni një aplikacion të ri dhe regjistroni pajisjen tuaj. Ne supozojmë njohuri themelore të TTN, nëse jo referojuni udhëzuesit të fillimit të shpejtë
- Në menunë e aplikacionit tuaj zgjidhni "Integrimet" dhe më pas "shtoni integrimin"
- Zgjidhni integrimin
- Vendosni fushat pas figurës dhe zëvendësoni me IP2 tuaj EC2 ose DNS publike
Hapi 13: Përpunimi i të dhënave
Për çdo tufë të dhënash T të mbledhura nga sensori duhet të kryeni hapat e mëposhtëm:
- Merrni grupin e tufave që kanë koordinatat GPS që bien në zonën lokale të T. Zona lokale janë të gjitha tufat që janë 100 metra rreth T.
- Për secilën tufë më të afërt N llogarisni mesataren katrore të aksit Z të akselerometrit në N. Në pseudokod: mesatarja = shuma ([x. Z_accel ** 2 për x në afërsi]) / pranë. Madhësia
- Llogaritni devijimin standard në katror. Në pseudokod: std = shuma ([(x. Z_accel ** 2 - mesatarja) ** 2 për x në afërsi])
- Dalja në këtë format: lat, e gjatë, Z_accel ** 2, e mesme, std
Për të llogaritur zonën lokale përdorni distancën GPS në metra. Në C ++:
#përcakto D2R (M_PI / 180.0)
#përcakto EARTH_RAY 6371 distancë të dyfishtë (dyshe lat1, dyshe e gjatë1, dyshe lat2, dyshe e gjatë2) {double dlong = (long2 - long1) * D2R; dyfishtë dlat = (lat2 - lat1) * D2R; dyfish a = pow (sin (dlat/2.0), 2) + cos (lat1 * D2R) * cos (lat2 * D2R) * pow (sin (dlong/2.0), 2); dyshe c = 2 * atan2 (sqrt (a), sqrt (1-a));
Tani, duke përdorur të dhënat e ndërmjetme të krijuara në hapin e mëparshëm, zbuloni anomalitë dhe bëni një klasifikim naiv duke përdorur këtë fragment të aplikuar për secilën rresht:
linjë = hartë (noton, line.split (","))
v = rreshti [2] mesatarja = rreshti [3] std = rreshti [4] nëse v (mesatarja + std*3): nëse v (mesatarja + std*2): nëse v (mesatarja + std): o.append ([1, rreshti [0], rreshti [1]) tjetër: o.append ([2, line [0], line [1]) tjetër: o.append ([3, line [0], line [1])
Anomalitë klasifikohen duke përdorur rregullin 68–95–99.7
Tani ju keni një koleksion me këtë format [tip, lat, i gjatë].
Kuptimi i llojit është si më poshtë:
- Anomali e lehtë, ndoshta e parëndësishme
- Anomali e mesme
- Anomali kritike
Hapi 14: Vizualizimi
Për të kuptuar dhe ndoshta për të ndryshuar pjesën e vizualizimit, duhet të mësojmë se si të përdorim shënuesit e personalizuar, një veçori e Google Maps API
Së pari, harta duhet të inilizohet në një përgjigje thirrjeje:
funksioni initMap () {
të dhëna = queryData (); hartë = google.maps. new hartë (document.getElementById ('hartë'), {zmadhimi: 15, qendra: {lat: data [0] [1], lng: të dhënat [0] [2]}}); vërejtje (); }
Specifikoni emrin e kësaj thirrjeje në url (e futëm këtu para çelësit tonë API) në një etiketë HTML:
script async defer src = "https://maps.googleapis.com/maps/api/js?key= [KEY]&callback=initMap"
Një shënues mund të futet në hartë kur krijohet objekti:
google.maps. Marker i ri ({pozicioni: {lat: LATITUDE, lng: LONGITUDE}, harta: harta, ikona: “/path/to/icon.png”})
Ju mund të shihni në kodin se për secilën të dhënë në grupin e të dhënave të anomalive futet një shënues (shiko funksionin vërejtje ()) dhe ikona bazohet në klasën e anomalisë. Kur e ekzekutojmë këtë në shfletues, ne mund të eksplorojmë një hartë në të cilën anomalitë mund të filtrohen duke përdorur kutitë e kontrollit, siç shihet në foto.
Hapi 15: Kredite dhe Lidhje të Jashtme
Ky projekt u bë nga Giovanni De Luca, Andrea Fioraldi dhe Pietro Spadaccino, studentë të vitit të parë MSc në Inxhinieri në Shkencat Kompjuterike në Universitetin Sapienza të Romës.
-
Rrëshqitjet që autorët përdorën për të paraqitur këtë dëshmi të konceptit:
www.slideshare.net/PietroSpadaccino/road-m…
-
Depot e GitHub me të gjithë kodin:
github.com/roadteam
Recommended:
Dritat automatike të rrugës duke përdorur sensorin tejzanor: 3 hapa
Dritat automatike të rrugës duke përdorur sensorin tejzanor: A keni menduar ndonjëherë se si dritat e rrugës ndizen automatikisht gjatë natës dhe fiken automatikisht në mëngjes? A ka ndonjë person që ndizet/fiket këto drita? Ka disa mënyra për të ndezur dritat e rrugës, por c
DIY Ndriçimi automatik i rrugës me energji diellore: 3 hapa
DIY Solar Powered Automatic Lighting Street: Shtëpia ime është e vendosur në zonat rurale, kështu që rruga para shtëpisë sime është krejtësisht e errët kur nuk ka fare dritë. Kështu që këtu kam bërë një dritë rruge me energji diellore që ndizet automatikisht në perëndim të diellit dhe fiket në lindjen e diellit. Ai përdor panelin diellor si
Gjurmimi i rrugës GPS V2: 4 hapa (me fotografi)
Gjurmimi i Rrugës GPS V2: Projekti: Gjurmimi i Rrugës GPS V2 Data: Maj - Qershor 2020 PPRDITSIM Versioni i parë i këtij projekti, ndërsa funksiononte në parim, kishte një numër defektesh të cilat duheshin rregulluar. Së pari nuk më pëlqeu kutia, kështu që e zëvendësova me një tjetër. Së dyti th
Lëvizje me Efiçencë të Energjisë Dritat e Rrugës të Aktivizuara: 8 Hapa
Llambat e Rrugës të Aktivizuara me Lëvizje me Efiçiencë të Energjisë: Qëllimi ynë me këtë projekt ishte të krijonim diçka që do të kursente energjinë dhe burimet financiare të komuniteteve. Dritat e rrugës të aktivizuara nga lëvizja do t'i bënin të dyja këto gjëra. Në të gjithë vendin energjia po harxhohet në dritat e rrugëve që ndriçojnë rrugët
Si të bëni dritë automatike të rrugës duke përdorur IC LM555: 8 hapa
Si të bëni dritë automatike të rrugës duke përdorur IC LM555: Hii mik, sot do të bëj një qark të dritës automatike të rrugës duke përdorur IC LM555. Ky qark po funksionon kështu Kur Drita do të bjerë në LDR (Në Ditë) atëherë LED nuk do të ndriçojë dhe kur drita nuk do të jetë në LDR, atëherë LED do të shkëlqejë automatikisht