Indholdsfortegnelse:
- Trin 1: Krav
- Trin 2: Opbygning og blinkning af sensorens firmware
- Trin 3: Opsætning af skyen
- Trin 4: Konfigurer AWS Lambda
- Trin 5: Konfigurer AWS Kinesis Firehose -datastrøm
- Trin 6: Konfigurer IAM -rolle for Kinesis
- Trin 7: Konfigurer AWS EC2
- Trin 8: Konfigurer IAM -sikkerhedsrolle til EC2
- Trin 9: Få adgang til din EC2 -instans
- Trin 10: Hent Google Maps API
- Trin 11: Start server
- Trin 12: Udfør HTTP -integration på Things -netværket
- Trin 13: Databehandling
- Trin 14: Visualisering
- Trin 15: Kreditter og eksterne links
Video: Vejovervågning: 15 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
I dag viser vi dig, hvordan vi opretter et overvågningssystem til vejanomalier baseret på accelerometre, LoRaWAN, Amazon Web Services og Google Cloud API.
Trin 1: Krav
- DISCO-L072CZ-LRWAN1 bord
- X-NUCLEO-IKS01A2 udvidelsesmodul (til accellerometer)
- X-NUCLEO-GNSS1A1 (til lokalisering)
- En AWS -konto
- En Google Cloud Platform -konto
Trin 2: Opbygning og blinkning af sensorens firmware
Tilslut IKS01A2 og GNSS1A1 oven på brættet gennem GPIO -benene. Download firmwarekoden fra GitHub. Opret (hvis du ikke allerede har en) en konto på ARM Mbed, og importer koden i repoen på online kompilatoren. Indstil målplatformen til DISCO-L072CZ-LRWAN1 og gem projektet. Gå nu til The Things Network og opret en konto, hvis du ikke allerede har den. Opret et program, opret en ny enhed inde i applikationen, og indstil forbindelsestilstanden til OTAA. Tag fat i de relevante parametre for at udfylde følgende felter i mbed_app.json-filen: "lora.appskey", "lora.nwkskey", "lora.device-address".
Sensoren registrerer periodisk accelerometer- og GNSS -data og sender dem via LoRa -forbindelsen til den nærmeste gateway, som videresender dem til vores applikation på The Things Network. Det næste trin er at oprette en cloud -server og en HTTP -integration på TTN.
Trin 3: Opsætning af skyen
Nu er vi klar til at oprette den cloud -infrastruktur, der vil indsamle og aggregere dataene fra alle de indsatte boards. Denne infrastruktur er vist i nedenstående figur, og den er sammensat af:
- Kinesis, til at håndtere den indgående datastrøm;
- Lambda, for at filtrere og forbehandle dataene, før de gemmes;
- S3, for at gemme alle data;
- EC2, til at analysere data og være vært for vores front-end.
Trin 4: Konfigurer AWS Lambda
Vi vil illustrere de trin, der er nødvendige for at oprette denne infrastruktur, startende med Lambda.
- Log ind med din AWS -konto, og fra konsolens hovedside og gå til Lambda
- Klik på Opret funktion
- I den øverste del af siden skal den vælges Forfatter fra bunden. Udfyld derefter de andre felter som på billedet, og klik derefter på Opret funktion
- Nu hvor du har oprettet en AWS Lambda-funktion, skal du gå til https://github.com/roadteam/data-server og kopiere indholdet af aws_lambda.py-filen til editoren, som du finder anden halvdel af siden. Din Lambda -funktion er nu klar:)
Trin 5: Konfigurer AWS Kinesis Firehose -datastrøm
- Vend nu tilbage til AWS -konsolens hovedside, og gå til Services til Kinesis
- Nu er du på hovedsiden i Kinesis. Til højre på siden, under 'Kinesis Firehose -leveringsstrømme', skal du vælge 'Opret ny leveringsstrøm'
- I 'Leveringsstrømnavn' skriver du 'vejovervågnings-strøm'. Lad de andre felter stå som standard, og klik på næste
- Vælg nu Aktiveret under 'Transform source records with AWS Lambda', og som Lambda-funktion klikker du på den nyoprettede 'road-monitoring-lambda'. Bare rolig, hvis der dukker en advarsel om funktionstimeout op, da den handling, vi udfører, ikke er beregningsmæssigt dyr. Lad de andre felter stå som standard, og klik på næste
- Som destination vælges Amazon S3, og som S3 -destination vælges Opret ny. Som skovlnavn skal du indtaste 'vejovervågning-skovl' og derefter gå. Lad nu de andre felter stå som standard, og klik på Næste
- Du vil måske indstille bufferstørrelse til 1 MB og bufferinterval til 60 sekunder. Bufferen skylles til S3, når en af de to betingelser er opfyldt. Forlad ikke siden, se næste trin
Trin 6: Konfigurer IAM -rolle for Kinesis
Nu konfigurerer vi sikkerhedstilladelserne for Kinesis, da den skal kalde Lambda -funktionen til forbehandling, og derefter vil den skrive på S3
- Nederst på siden, hvor du er i 'IAM -rolle', skal du vælge 'Opret ny efter valg', oprette en ny IAM -rolle som på billedet og klikke på Tillad
- Nu er du tilbage til den forrige side, klik på næste. Nu vil du måske tjekke alle parametrene igen. Når du er færdig, skal du klikke på 'Opret leveringsstrøm'
Kinesis-Lambda-S3 rørledningen er i gang!
Trin 7: Konfigurer AWS EC2
Nu vil vi oprette en EC2 -forekomst med nogle API'er, der giver os mulighed for at skubbe og trække data fra AWS -skyen og også serveren, hvor vi kan hoste vores applikationsfrontend. I produktionsmiljøet vil du måske udgive API ved hjælp af den mere skalerbare AWS API Gateway.
- Gå til AW2 -konsolens hovedside til EC2 -service
- Klik på Launch Instance
- I den øverste søgelinje indsætter du denne kode: 'ami-08935252a36e25f85', det er identifikationskoden for den forudkonfigurerede virtuelle maskine, der skal bruges. Klik på Vælg til højre
- Vælg t2.micro i kolonnen 'Type', og klik på 'Gennemgå og start'. Start ikke forekomsten endnu, gå til næste trin
Trin 8: Konfigurer IAM -sikkerhedsrolle til EC2
- Inden lanceringen ønsker vi at ændre sikkerhedsgruppen for vores instans. For at gøre dette skal du yderst til højre i afsnittet ‘Sikkerhedsgrupper’ klikke på ‘Rediger sikkerhedsgrupper’ Opret en ny sikkerhedsgruppe som følger. Dette konfigurerer grundlæggende firewallen i din forekomst, der udsætter port 22 til SSH -forbindelse og port 80 til http -tjenester
- Klik igen 'Gennemgå og start'. Kontroller nu, at alle parametrene er indstillet. Klik på Start, når du er færdig
- Ved klik vises et nyt vindue for at konfigurere et nøglepar til ssh -forbindelse til forekomsten. Vælg 'Opret nyt nøglepar', og indtast 'ec2-road-monitoring' som navn. Klik på Download nøglepar. Det er ekstremt vigtigt, at denne fil går tabt eller (værre) er usikkert lagret: du vil ikke kunne downloade nøglen igen. Efter download af.pem -nøglen er forekomsten klar til at blive lanceret
Trin 9: Få adgang til din EC2 -instans
Din friske EC2 -forekomst er oppe i AWS -skyen. Du kan oprette forbindelse til den med nøglefilen, der blev downloadet før (for denne vejledning antager vi, at du kender det grundlæggende i ssh). Du kan hente forekomstens IP ved at vælge den i instrumentbrættet i afsnittet ‘Beskrivelse’ på følgende måde: Du kan bruge både din offentlige IP eller din offentlige DNS, det er det samme. Med en ssh -klient skal du nu indtaste kommandoen:
ssh -i ec2-road-monitoring.pem ec2-user@DIN-IP-ADDR-ELLER-DNS
hvor ec2-road-monitoring.pem er din nøgle genereret før.
Fortsæt nu med at trække koden på serversiden igennem
git-klon-rekursiv
Trin 10: Hent Google Maps API
Vi er næsten færdige. Nu skal vi konfigurere Google maps API i vores html -side for at vise kortet med waypoints til brugeren:
- Log ind på din Google-konto, og gå til
- Klik for at 'Kom godt i gang' til venstre på siden
- Vælg 'Kort' i menuen, og klik derefter på Fortsæt
- Som projektnavn indtastes 'vejovervågning' og klikker på Næste
- Indtast dine faktureringsoplysninger, og klik på Fortsæt
- Nu er dit projekt klar, og vi får API -nøglen ved at klikke på API'er og tjenester -> legitimationsoplysninger
Trin 11: Start server
Og der er det din API -nøgle. Den sidste ting, du skal gøre, er at gå til data_visualization/anomalies_map.html og kopiere din nøgle til slutningen af filen som sådan og erstatte 'YOUR-KEY-HERE'
Nu er alt klar og klar til at gå! For at få det til at starte udførelse i EC2-forekomsten: 'cd-dataserver' 'python flask_app.py'
Indtast i din browser ip- eller dns -adressen på din EC2 -forekomst, du bør se anomalier -kortet med nogle dummy -data
Trin 12: Udfør HTTP -integration på Things -netværket
Nu hvor vi har hele backend -infrastrukturen i gang, kan vi behandle for at udføre HTTP -integrationen.
- Opret en ny applikation, og registrer din enhed. Vi forudsætter grundlæggende viden om TTN, hvis ikke henvises til hurtigstartguiden
- Vælg 'Integrationer' i din applikationsmenu og derefter 'tilføj integration'
- Vælg HTTP -integration
- Indtast felterne efter billedet og erstat med din EC2 ip eller offentlige DNS
Trin 13: Databehandling
For hver tuppel data T, der indsamles fra sensoren, skal du udføre følgende trin:
- Få det sæt tupler, der har GPS -koordinater, der falder i lokalområdet i T. Lokalområdet er alle de tupler, der er 100 meter omkring T.
- For hver nærmeste tuple N beregnes kvadratgennemsnittet af accelerometerets Z-akse i N. I pseudokode: middelværdi = sum ([x. Z_accel ** 2 for x i nær]) / nær.størrelse
- Beregn den kvadrerede standardafvigelse. I pseudokode: std = sum ([(x. Z_accel ** 2 - middelværdi) ** 2 for x i nær])
- Output i dette format: lat, long, Z_accel ** 2, mean, std
Brug GPS -afstanden i meter til at beregne lokalområdet. I C ++:
#define D2R (M_PI / 180.0)
#define EARTH_RAY 6371 dobbelt afstand (dobbelt lat1, dobbelt lang1, dobbelt lat2, dobbelt lang2) {dobbelt dlong = (lang2 - lang1) * D2R; dobbelt dlat = (lat2 - lat1) * D2R; dobbelt a = pow (sin (dlat/2.0), 2) + cos (lat1 * D2R) * cos (lat2 * D2R) * pow (sin (dlong/2.0), 2); dobbelt c = 2 * atan2 (sqrt (a), sqrt (1-a));
Nu, ved hjælp af de mellemliggende data, der blev genereret i det foregående trin, registrerer du anomalierne og laver en naiv klassificering ved hjælp af denne snippet, der anvendes på hver linje:
line = map (float, line.split (","))
v = linje [2] middel = linje [3] std = linje [4] hvis v (middelværdi + std*3): hvis v (middelværdi + std*2): hvis v (middelværdi + std): o. tilføj ([1, linje [0], linje [1]) else: o.append ([2, linje [0], linje [1]) else: o.append ([3, linje [0], linje [1])
Anomalierne klassificeres ved hjælp af 68–95–99.7 -reglen
Nu har du en samling med dette format [type, lat, lang].
Typebetydningen er følgende:
- Lidt anomali, sandsynligvis irrelevant
- Medium anomali
- Kritisk anomali
Trin 14: Visualisering
For at forstå og måske ændre visualiseringsdelen skal vi lære at bruge tilpassede markører, en funktion i Google Maps API
For det første skal kortet initieres i et tilbagekald:
funktion initMap () {
data = queryData (); map = nyt google.maps. Map (document.getElementById ('map'), {zoom: 15, center: {lat: data [0] [1], lng: data [0] [2]}}); bemærkning(); }
Angiv navnet på denne tilbagekaldelse i url'en (vi indsatte her før vores API -nøgle) i et HTML -tag:
script async defer src = "https://maps.googleapis.com/maps/api/js?key=[KEYphia&callback=initMap"
En markør kan indsættes i kortet, når objektet oprettes:
nyt google.maps. Marker ({position: {lat: LATITUDE, lng: LONGITUDE}, map: map, ikon: “/path/to/icon.png”})
Du kan se i koden, at der for hver data i datasættet for anomalierne indsættes en markør (se funktionen bemærkning ()), og ikonet er baseret på anomaliens klasse. Når vi kører dette ind i browseren, kan vi udforske et kort, hvor uregelmæssigheder kan filtreres ved hjælp af afkrydsningsfelter, som det ses på billedet.
Trin 15: Kreditter og eksterne links
Dette projekt blev lavet af Giovanni De Luca, Andrea Fioraldi og Pietro Spadaccino, første års kandidat i ingeniørvidenskab i datalogistuderende ved Sapienza University of Rome.
-
Dias, forfatterne plejede at præsentere dette bevis på koncept:
www.slideshare.net/PietroSpadaccino/road-m…
-
GitHub repos med hele koden:
github.com/roadteam
Anbefalede:
Arduino bil omvendt parkering alarmsystem - Trin for trin: 4 trin
Arduino bil omvendt parkering alarmsystem. Trin for trin: I dette projekt vil jeg designe en simpel Arduino bil omvendt parkeringssensorkreds ved hjælp af Arduino UNO og HC-SR04 ultralydssensor. Dette Arduino -baserede bilomvendt alarmsystem kan bruges til en autonom navigation, robotafstand og andre rækkevidde
Trin for trin pc -bygning: 9 trin
Trin for trin PC Building: Supplies: Hardware: MotherboardCPU & CPU -køler PSU (strømforsyningsenhed) Opbevaring (HDD/SSD) RAMGPU (ikke påkrævet) CaseTools: Skruetrækker ESD -armbånd/mathermal pasta m/applikator
Tre højttalerkredsløb -- Trin-for-trin vejledning: 3 trin
Tre højttalerkredsløb || Trin-for-trin vejledning: Højttalerkredsløb styrker lydsignalerne, der modtages fra miljøet til MIC og sender det til højttaleren, hvorfra forstærket lyd produceres. Her vil jeg vise dig tre forskellige måder at lave dette højttalerkredsløb på:
Trin-for-trin uddannelse i robotik med et sæt: 6 trin
Trin-for-trin uddannelse i robotteknologi med et kit: Efter ganske få måneder med at bygge min egen robot (se alle disse), og efter at jeg to gange havde dele mislykkedes, besluttede jeg at tage et skridt tilbage og tænke min strategi og retning. De flere måneders erfaring var til tider meget givende, og
Akustisk levitation med Arduino Uno trin for trin (8 trin): 8 trin
Akustisk levitation med Arduino Uno Step-by Step (8-trin): ultralyds lydtransducere L298N Dc kvindelig adapter strømforsyning med en han-DC-pin Arduino UNOBreadboard Sådan fungerer det: Først uploader du kode til Arduino Uno (det er en mikrokontroller udstyret med digital og analoge porte til konvertering af kode (C ++)