Innholdsfortegnelse:
- Trinn 1: Krav
- Trinn 2: Bygg og blink sensorens fastvare
- Trinn 3: Konfigurere nettskyen
- Trinn 4: Sett opp AWS Lambda
- Trinn 5: Sett opp AWS Kinesis Firehose -datastrøm
- Trinn 6: Konfigurer IAM -rolle for Kinesis
- Trinn 7: Konfigurer AWS EC2
- Trinn 8: Konfigurer IAM -sikkerhetsrolle for EC2
- Trinn 9: Få tilgang til EC2 -forekomsten
- Trinn 10: Hent Google Maps API
- Trinn 11: Start server
- Trinn 12: Utfør HTTP -integrering i Things -nettverket
- Trinn 13: Databehandling
- Trinn 14: Visualisering
- Trinn 15: Kreditter og eksterne lenker
Video: Veiovervåkning: 15 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
I dag skal vi vise deg hvordan vi konfigurerte et overvåkingssystem for veianomalier basert på akselerometre, LoRaWAN, Amazon Web Services og Google Cloud API.
Trinn 1: Krav
- DISCO-L072CZ-LRWAN1-bord
- X-NUCLEO-IKS01A2 utvidelsesmodul (for aksellerometeret)
- X-NUCLEO-GNSS1A1 (for lokalisering)
- En AWS -konto
- En Google Cloud Platform -konto
Trinn 2: Bygg og blink sensorens fastvare
Koble IKS01A2 og GNSS1A1 på toppen av brettet gjennom GPIO -pinnene. Last ned firmwarekoden fra GitHub. Opprett (hvis du ikke allerede har en) en konto på ARM Mbed og importer koden i repoen på den elektroniske kompilatoren. Sett målplattformen til DISCO-L072CZ-LRWAN1 og lagre prosjektet. Gå nå til The Things Network og opprett en konto hvis du ikke allerede har den. Opprett et program, lag en ny enhet inne i programmet og sett tilkoblingsmodus til OTAA. Ta tak i de riktige parameterne for å fylle ut følgende felt i mbed_app.json-filen: "lora.appskey", "lora.nwkskey", "lora.device-address".
Sensoren vil periodisk registrere akselerometer og GNSS -data og sende dem gjennom LoRa -tilkoblingen til nærmeste gateway, som vil videresende dem til vår applikasjon på The Things Network. Det neste trinnet er å sette opp en skyserver og en HTTP -integrasjon på TTN.
Trinn 3: Konfigurere nettskyen
Nå er vi klare til å sette opp skyinfrastrukturen som skal samle inn og samle data fra alle de utplasserte kortene. Denne infrastrukturen er vist i figuren nedenfor, og den er sammensatt av:
- Kinesis, for å håndtere den innkommende datastrømmen;
- Lambda, for å filtrere og forbehandle dataene før de lagres;
- S3, for å lagre alle dataene;
- EC2, for å analysere data og være vert for front-endet vårt.
Trinn 4: Sett opp AWS Lambda
Vi vil illustrere trinnene som er nødvendige for å sette opp denne infrastrukturen, med Lambda.
- Logg på med AWS -kontoen din, og fra konsollens hovedside og gå til Lambda
- Klikk på Opprett funksjon
- I den øvre delen av siden bør den velges Forfatter fra Scratch. Fullfør deretter de andre feltene som på bildet, og klikk deretter på Opprett funksjon
- Nå som du har opprettet en AWS Lambda-funksjon, går du til https://github.com/roadteam/data-server og kopierer innholdet i aws_lambda.py-filen til redigeringsprogrammet som du finner andre halvdel av siden. Lambda -funksjonen din er nå klar:)
Trinn 5: Sett opp AWS Kinesis Firehose -datastrøm
- Gå tilbake til hovedsiden til AWS -konsollen, og gå til Tjenester til Kinesis
- Nå er du på hovedsiden til Kinesis. Til høyre på siden, under 'Kinesis Firehose -leveringsstrømmer', velger du 'Opprett ny leveringsstrøm'
- I "Navn på leveringsstrøm" skriver du "veiovervåkning-strøm". La de andre feltene stå som standard, og klikk på Neste
- Nå under 'Transform source records with AWS Lambda' velg Enabled, og som Lambda-funksjon klikker du på den nyopprettede 'road-monitoring-lambda'. Ikke bekymre deg hvis en advarsel om funksjonstidsavbrudd dukker opp, siden operasjonen vi gjør ikke er beregningsmessig dyr. La de andre feltene stå som standard, og klikk på Neste
- Velg Amazon S3 som destinasjon, og velg Opprett nytt som S3 -destinasjon. Skriv inn "veiovervåkning-bøtte" som bøttenavn, og gå deretter. La de andre feltene stå som standard, og klikk på Neste
- Det kan være lurt å angi bufferstørrelse til 1 MB og bufferintervallet til 60 sekunder. Bufferen skylles til S3 når en av de to betingelsene er oppfylt. Ikke forlat siden, se neste trinn
Trinn 6: Konfigurer IAM -rolle for Kinesis
Nå konfigurerer vi sikkerhetstillatelsene for Kinesis, siden den må kalle Lambda -funksjonen for forbehandling, og så vil den skrive på S3
- Nederst på siden du er i ‘IAM -rolle’ velger du ‘Opprett nytt valg’, oppretter en ny IAM -rolle som på bildet og klikker Tillat
- Nå er du tilbake til forrige side, klikk på neste. Nå kan det være lurt å dobbeltsjekke alle parameterne. Klikk på "Opprett leveringsstrøm" når du er ferdig
Kinesis-Lambda-S3-rørledningen er i gang!
Trinn 7: Konfigurer AWS EC2
Nå vil vi sette opp en EC2 -forekomst med noen APIer som lar oss skyve og hente data fra AWS -skyen og også serveren hvor vi skal være vert for applikasjonens frontend. I produksjonsmiljø kan det være lurt å publisere API ved hjelp av den mer skalerbare AWS API Gateway.
- Fra hovedsiden til AWS -konsollen, gå til EC2 -tjenesten
- Klikk på Launch Instance
- I den øvre søkefeltet limer du inn denne koden: ‘ami-08935252a36e25f85’, det er den identifikasjonskoden til den forhåndskonfigurerte virtuelle maskinen som skal brukes. Klikk på Velg til høyre
- Velg t2.micro fra "Type" -kolonnen og klikk "Review and launch". Ikke start forekomsten ennå, gå til neste trinn
Trinn 8: Konfigurer IAM -sikkerhetsrolle for EC2
- Før vi starter, ønsker vi å endre sikkerhetsgruppen til forekomsten vår. For å gjøre dette, helt til høyre i delen "Sikkerhetsgrupper" klikker du på "Rediger sikkerhetsgrupper" Sett opp en ny sikkerhetsgruppe som følger. Dette konfigurerer i utgangspunktet brannmuren til din forekomst som avslører port 22 for SSH -tilkobling og port 80 for http -tjenester
- Klikk igjen "Gjennomgå og start". Sjekk nå at alle parameterne er angitt. Klikk på Launch når du er ferdig
- Ved klikk vil et nytt vindu dukke opp for å sette opp et nøkkelpar for ssh -tilkobling til forekomsten. Velg "Opprett nytt nøkkelpar" og skriv inn "ec2-road-monitoring" som navn. Klikk på Last ned nøkkelpar. Det er ekstremt viktig at denne filen går seg vill eller (verre) blir usikkert lagret: du vil ikke kunne laste ned nøkkelen igjen. Når du har lastet ned.pem -nøkkelen, er forekomsten klar til å bli lansert
Trinn 9: Få tilgang til EC2 -forekomsten
Din ferske EC2 -forekomst er oppe i AWS -skyen. Du kan koble til den med nøkkelfilen som ble lastet ned før (for denne opplæringen antar vi at du kjenner det grunnleggende i ssh). Du kan hente forekomstens IP ved å velge den i dashbordet i "Beskrivelse" -delen som følger: Du kan bruke både din offentlige IP eller din offentlige DNS, den er den samme. Med en ssh -klient skriver du nå inn kommandoen:
ssh -i ec2-road-monitoring.pem ec2-user@DIN-IP-ADDR-ELLER-DNS
hvor ec2-road-monitoring.pem er nøkkelen din som ble generert før.
Fortsett nå med å trekke koden på serversiden
git-klon-rekursiv
Trinn 10: Hent Google Maps API
Vi er nesten ferdige. Nå må vi konfigurere Google maps API på vår html -side for å vise kartet med veipunktene til brukeren:
- Logg deg på Google-kontoen din og gå til
- Klikk for å komme i gang til venstre på siden
- Velg "Kart" i menyen, og klikk deretter på Fortsett
- Som prosjektnavn skriv inn 'veiovervåkning' og klikk på Neste
- Skriv inn faktureringsinformasjonen din, og klikk på Fortsett
- Nå er prosjektet ditt klart, og vi skal få API -nøkkelen ved å klikke på APIer og tjenester -> legitimasjon
Trinn 11: Start server
Og det er din API -nøkkel. Det siste du må gjøre er å gå til data_visualization/anomalies_map.html og kopiere nøkkelen din til slutten av filen på denne måten, og erstatte "DIN-KEY-HER"
Nå er alt klart og klart til å gå! For å få den til å begynne å kjøre i EC2-forekomsten: 'cd data-server' 'python flask_app.py'
Skriv inn i nettleseren din ip- eller dns -adressen til EC2 -forekomsten din, du bør se avvikskartet med noen dummy -data
Trinn 12: Utfør HTTP -integrering i Things -nettverket
Nå som vi har all backend -infrastruktur i gang, kan vi behandle for å utføre HTTP -integrasjonen.
- Lag et nytt program og registrer enheten. Vi forutsetter grunnleggende kunnskap om TTN, hvis ikke, se hurtigstartguiden
- Velg 'Integrasjoner' i applikasjonsmenyen og deretter 'legg til integrasjon'
- Velg HTTP -integrasjon
- Skriv inn feltene som følger bildet og erstatt med EC2 ip eller offentlig DNS
Trinn 13: Databehandling
For hver datamaskin T samlet fra sensoren må du utføre følgende trinn:
- Få settet med tupler som har GPS -koordinater som faller i lokalområdet til T. Lokalområdet er alle tuplene som er 100 meter rundt T.
- For hver nærmeste tupel N beregnes kvadratmiddelverdien av akselerometerets Z-akse i N. I pseudokode: gjennomsnitt = sum ([x. Z_accel ** 2 for x i nær]) / nær.størrelse
- Beregn den kvadrerte standardavviket. I pseudokode: std = sum ([(x. Z_accel ** 2 - gjennomsnitt) ** 2 for x i nær])
- Utgang i dette formatet: lat, long, Z_accel ** 2, mean, std
For å beregne lokalområdet, bruk GPS -avstanden i meter. I C ++:
#define D2R (M_PI / 180.0)
#define EARTH_RAY 6371 dobbel distanse (dobbel lat1, dobbel lang1, dobbel lat2, dobbel lang2) {dobbel dlong = (lang2 - lang1) * D2R; dobbel dlat = (lat2 - lat1) * D2R; dobbelt a = pow (sin (dlat/2.0), 2) + cos (lat1 * D2R) * cos (lat2 * D2R) * pow (sin (dlong/2.0), 2); dobbel c = 2 * atan2 (sqrt (a), sqrt (1-a));
Nå, ved å bruke mellomdataene som ble generert i forrige trinn, oppdager du avvikene og gjør en naiv klassifisering ved å bruke denne utklippet på hver linje:
line = map (float, line.split (","))
v = linje [2] gjennomsnitt = linje [3] std = linje [4] hvis v (gjennomsnitt + std*3): hvis v (gjennomsnitt + std*2): hvis v (gjennomsnitt + std): o.tillegg ([1, linje [0], linje [1]) else: o.append ([2, linje [0], linje [1]) else: o.append ([3, linje [0], linje [1])
Avvikene er klassifisert ved hjelp av 68–95–99.7 -regelen
Nå har du en samling med dette formatet [type, lat, long].
Typebetegnelsen er følgende:
- Lett anomali, sannsynligvis irrelevant
- Middels anomali
- Kritisk anomali
Trinn 14: Visualisering
For å forstå og kanskje endre visualiseringsdelen må vi lære å bruke tilpassede markører, en funksjon i Google Maps API
For det første må kartet initieres i et tilbakeringing:
function initMap () {
data = queryData (); map = new google.maps. Map (document.getElementById ('map'), {zoom: 15, center: {lat: data [0] [1], lng: data [0] [2]}}); bemerke(); }
Angi navnet på denne tilbakeringingen i nettadressen (vi satte inn her før API -nøkkelen vår) i en HTML -tag:
script async defer src = "https://maps.googleapis.com/maps/api/js?key=[KEYphia&callback=initMap"
En markør kan settes inn i kartet når objektet er opprettet:
nytt google.maps. Marker ({posisjon: {lat: LATITUDE, lng: LONGITUDE}, kart: kart, ikon: “/path/to/icon.png”})
Du kan se i koden at for hver data i datasettet til anomaliene er det satt inn en markør (se funksjonen for bemerkning ()) og ikonet er basert på anomaliens klasse. Når du kjører dette inn i nettleseren, kan vi utforske et kart der avvik kan filtreres ved hjelp av avmerkingsbokser, som vist på bildet.
Trinn 15: Kreditter og eksterne lenker
Dette prosjektet ble laget av Giovanni De Luca, Andrea Fioraldi og Pietro Spadaccino, første året MSc i ingeniørfag i informatikkstudenter ved Sapienza University of Rome.
-
Lysbilder forfatterne brukte for å presentere dette beviset på konseptet:
www.slideshare.net/PietroSpadaccino/road-m…
-
GitHub repos med hele koden:
github.com/roadteam
Anbefalt:
Arduino bilvarslingssystem for omvendt parkering - Trinn for trinn: 4 trinn
Arduino Car Reverse Parking Alert System | Trinn for trinn: I dette prosjektet skal jeg designe en enkel Arduino Car Reverse Parking Sensor Circuit ved hjelp av Arduino UNO og HC-SR04 Ultrasonic Sensor. Dette Arduino -baserte bilreverseringssystemet kan brukes til autonom navigasjon, robotavstand og andre områder
Trinn for trinn PC -bygging: 9 trinn
Steg for trinn PC -bygging: Rekvisita: Maskinvare: HovedkortCPU & CPU -kjøler PSU (strømforsyningsenhet) Lagring (HDD/SSD) RAMGPU (ikke nødvendig) CaseTools: Skrutrekker ESD -armbånd/mathermal pasta m/applikator
Tre høyttalerkretser -- Trinn-for-trinn opplæring: 3 trinn
Tre høyttalerkretser || Trinn-for-trinn opplæring: Høyttalerkretsen styrker lydsignalene som mottas fra miljøet til MIC og sender den til høyttaleren der forsterket lyd produseres. Her vil jeg vise deg tre forskjellige måter å lage denne høyttalerkretsen på:
RC -sporet robot ved hjelp av Arduino - Trinn for trinn: 3 trinn
RC -sporet robot ved bruk av Arduino - Steg for trinn: Hei folkens, jeg er tilbake med et annet kult Robot -chassis fra BangGood. Håper du har gått gjennom våre tidligere prosjekter - Spinel Crux V1 - Gesture Controlled Robot, Spinel Crux L2 - Arduino Pick and Place Robot with Robotic Arms og The Badland Braw
Hvordan lage et nettsted (en trinn-for-trinn-guide): 4 trinn
Hvordan lage et nettsted (en trinn-for-trinn-guide): I denne veiledningen vil jeg vise deg hvordan de fleste webutviklere bygger nettstedene sine og hvordan du kan unngå dyre nettstedbyggere som ofte er for begrenset til et større nettsted. hjelpe deg med å unngå noen feil som jeg gjorde da jeg begynte