Sisällysluettelo:
- Vaihe 1: Vaatimukset
- Vaihe 2: Anturin laiteohjelmiston luominen ja vilkkuminen
- Vaihe 3: Määritä pilvi
- Vaihe 4: Määritä AWS Lambda
- Vaihe 5: Määritä AWS Kinesis Firehose Data Stream
- Vaihe 6: Määritä IAM -rooli kinesikselle
- Vaihe 7: Määritä AWS EC2
- Vaihe 8: Määritä IAM: n suojausrooli EC2: lle
- Vaihe 9: Käytä EC2 -ilmentymääsi
- Vaihe 10: Hae Google Maps -sovellusliittymä
- Vaihe 11: Käynnistä palvelin
- Vaihe 12: Suorita HTTP -integrointi Things -verkkoon
- Vaihe 13: Tietojen käsittely
- Vaihe 14: Visualisointi
- Vaihe 15: Hyvitykset ja ulkoiset linkit
Video: Tievalvonta: 15 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
Tänään näytämme sinulle, kuinka asensimme kiihtyvyysmittariin, LoRaWANiin, Amazon Web Servicesiin ja Google Cloud -sovellusliittymään perustuvat tiepoikkeamien seurantajärjestelmän.
Vaihe 1: Vaatimukset
- DISCO-L072CZ-LRWAN1-levy
- X-NUCLEO-IKS01A2-laajennusmoduuli (kiihtyvyysmittaria varten)
- X-NUCLEO-GNSS1A1 (lokalisointiin)
- AWS -tili
- Google Cloud Platform -tili
Vaihe 2: Anturin laiteohjelmiston luominen ja vilkkuminen
Kytke IKS01A2 ja GNSS1A1 levyn päälle GPIO -nastojen kautta. Lataa laiteohjelmiston koodi GitHubista. Luo (jos sinulla ei vielä ole) tili ARM Mbedissä ja tuo koodi online -kääntäjän repossa. Aseta kohdealustaksi DISCO-L072CZ-LRWAN1 ja tallenna projekti. Siirry nyt The Things -verkkoon ja luo tili, jos sinulla ei vielä ole sitä. Luo sovellus, luo uusi laite sovelluksen sisällä ja aseta yhteystilaksi OTAA. Tartu sopiviin parametreihin ja täytä seuraavat mbed_app.json-tiedoston kentät: "lora.appskey", "lora.nwkskey", "lora.device-address".
Anturi tallentaa ajoittain kiihtyvyysmittarin ja GNSS -tiedot ja lähettää ne LoRa -yhteyden kautta lähimpään yhdyskäytävään, joka välittää ne edelleen The Things Network -sovellukseemme. Seuraava askel on määrittää pilvipalvelin ja HTTP -integrointi TTN: ään.
Vaihe 3: Määritä pilvi
Nyt olemme valmiit ottamaan käyttöön pilvi -infrastruktuurin, joka kerää ja yhdistää tiedot kaikista käyttöönotetuista taulukoista. Tämä infrastruktuuri on esitetty alla olevassa kuvassa ja se koostuu:
- Kinesis, tulevan datavirran käsittelyyn;
- Lambda, suodattaa ja käsitellä tiedot ennen niiden tallentamista;
- S3, tallentaa kaikki tiedot;
- EC2, tietojen analysoimiseksi ja käyttöliittymän isännöimiseksi.
Vaihe 4: Määritä AWS Lambda
Havainnollistamme tämän infrastruktuurin luomiseksi tarvittavat vaiheet alkaen Lambdasta.
- Kirjaudu sisään AWS -tililläsi ja siirry Lambdalle konsolin pääsivulta
- Napsauta Luo toiminto
- Sivun yläosassa on valittava Kirjoittaja Scratchista. Täytä sitten muut kentät kuten kuvassa ja napsauta sitten Luo toiminto
- Nyt kun olet luonut AWS Lambda -toiminnon, siirry osoitteeseen https://github.com/roadteam/data-server ja kopioi aws_lambda.py-tiedoston sisältö editoriin, josta löydät sivun toisen puoliskon. Lambda -toiminto on nyt valmis:)
Vaihe 5: Määritä AWS Kinesis Firehose Data Stream
- Palaa nyt AWS -konsolin pääsivulle ja siirry Palveluihin Kinesis -palveluun
- Nyt olet Kinesiksen pääsivulla. Valitse sivun oikeasta reunasta Kinesis Firehose -toimitusvirrat -kohdasta Luo uusi toimitusvirta.
- Kirjoita "Toimitusvirran nimi" -kohtaan "tienvalvonta-virta". Jätä muut kentät oletusarvoisiksi ja napsauta Seuraava
- Valitse nyt”Muunna lähdetietueet AWS Lambdalla” -kohdasta Käytössä ja napsauta Lambda-funktiona äskettäin luotua”tienvalvonta-lambdaa”. Älä huolestu, jos näyttöön tulee varoitus toiminnon aikakatkaisusta, koska tekemämme toiminto ei ole laskennallisesti kallis. Jätä muut kentät oletusarvoisiksi ja napsauta Seuraava
- Valitse kohteeksi Amazon S3 ja S3 -kohteeksi Luo uusi. Kirjoita kauhan nimeksi "tienvalvonta-kauha" ja jatka sitten. Jätä nyt muut kentät oletusarvoisiksi ja napsauta Seuraava
- Voit halutessasi asettaa puskurikokoksi 1 Mt ja puskuriväliksi 60 sekuntia. Puskuri huuhdellaan S3: een aina, kun toinen kahdesta ehdosta täyttyy. Älä poistu sivulta, katso seuraava vaihe
Vaihe 6: Määritä IAM -rooli kinesikselle
Nyt määritämme Kinesiksen suojausoikeudet, koska sen on kutsuttava Lambda -toiminto esikäsittelyyn ja sitten se kirjoittaa S3: lle
- Valitse IAM -roolissa olevan sivun alareunasta Luo uusi valinta, luo uusi IAM -rooli kuten kuvassa ja napsauta Salli
- Nyt olet palannut edelliselle sivulle, napsauta seuraava. Nyt kannattaa tarkistaa kaikki parametrit. Kun olet valmis, napsauta Luo toimitusvirta
Kinesis-Lambda-S3-putki on käynnissä!
Vaihe 7: Määritä AWS EC2
Nyt perustamme EC2 -ilmentymän, jossa on joitain sovellusliittymiä, joiden avulla voimme työntää ja noutaa tietoja AWS -pilvestä ja myös palvelimelta, jossa sovellusten käyttöliittymä isännöidään. Tuotantoympäristössä saatat haluta julkaista sovellusliittymän skaalautuvampaa AWS API Gatewayta käyttämällä.
- Siirry AWS -konsolin pääsivulta EC2 -palveluun
- Napsauta Launch Instance
- Liitä ylempään hakupalkkiin tämä koodi: "ami-08935252a36e25f85", joka on käytettäväksi määritetyn virtuaalikoneen tunnistuskoodi. Napsauta Valitse oikealla
- Valitse t2.micro Tyyppi -sarakkeesta ja napsauta Tarkista ja käynnistä. Älä käynnistä ilmentymää vielä, siirry seuraavaan vaiheeseen
Vaihe 8: Määritä IAM: n suojausrooli EC2: lle
- Ennen käynnistämistä haluamme muokata esiintymän suojausryhmää. Voit tehdä tämän napsauttamalla Suojausryhmät -kohdan oikeassa reunassa Muokkaa suojausryhmiä Määritä uusi suojausryhmä seuraavasti. Tämä määrittää periaatteessa ilmentymän palomuurin, joka paljastaa portin 22 SSH -yhteydelle ja portin 80 http -palveluille
- Napsauta uudelleen "Tarkista ja käynnistä". Tarkista nyt, että kaikki parametrit on asetettu. Kun olet valmis, napsauta Käynnistä
- Napsautettaessa uusi ikkuna avautuu avainparin määrittämiseksi ssh -yhteydelle ilmentymään. Valitse "Luo uusi avainpari" ja kirjoita nimeksi "ec2-tien seuranta". Napsauta Lataa avainpari. On erittäin tärkeää, että tämä tiedosto katoaa tai (pahempaa) tallennetaan turvattomasti: et voi ladata avainta uudelleen. Kun.pem -avain on ladattu, ilmentymä on valmis käynnistettäväksi
Vaihe 9: Käytä EC2 -ilmentymääsi
Tuore EC2 -ilmentymäsi on AWS -pilvessä. Voit muodostaa yhteyden siihen aiemmin ladatulla avaintiedostolla (tässä opetusohjelmassa oletamme, että tiedät ssh: n perusteet). Voit hakea ilmentymän IP -osoitteen valitsemalla sen Kuvaus -osion koontinäytöstä seuraavasti: Voit käyttää sekä julkista IP -osoitettasi että julkista DNS -osoitettasi. Kirjoita nyt komento ssh -asiakasohjelmalla:
ssh -i ec2-road-monitoring.pem ec2-user@YOUR-IP-ADDR-OR-DNS
jossa ec2-road-monitoring.pem on avaimesi, joka on luotu aiemmin.
Jatka nyt palvelinpuolen koodin vetämistä läpi
git klooni-rekursiivinen
Vaihe 10: Hae Google Maps -sovellusliittymä
Olemme melkein valmiita. Nyt meidän on määritettävä Google Maps -sovellusliittymä html -sivullemme, jotta voimme näyttää kartan reittipisteineen käyttäjälle:
- Kirjaudu Google-tiliisi ja siirry osoitteeseen
- Napsauta "Aloita" sivun vasemmassa reunassa
- Valitse valikosta Kartat ja napsauta sitten Jatka
- Kirjoita projektin nimeksi "tienvalvonta" ja napsauta Seuraava
- Anna laskutustietosi ja napsauta Jatka
- Nyt projektisi on valmis ja saamme sovellusliittymäavaimen napsauttamalla sovellusliittymät ja palvelut -> käyttöoikeustiedot
Vaihe 11: Käynnistä palvelin
Ja siellä se on API -avaimesi. Viimeinen asia, jonka sinun tarvitsee tehdä, on siirtyä osoitteeseen data_visualization/anomalies_map.html ja kopioida avaimesi tiedoston loppuun samalla tavalla korvaamalla "YOUR-KEY-HERE"
Nyt kaikki on valmiina ja valmiina lähtöön! Aloita suorittaminen EC2-ilmentymässä: "cd data-server" "python flask_app.py"
Kirjoita selaimeesi EC2 -ilmentymän ip- tai dns -osoite, sinun pitäisi nähdä poikkeavuuksien kartta, jossa on joitain nuketietoja
Vaihe 12: Suorita HTTP -integrointi Things -verkkoon
Nyt kun meillä on kaikki taustainfrastruktuuri käynnissä, voimme käsitellä HTTP -integroinnin suorittamisen.
- Luo uusi sovellus ja rekisteröi laitteesi. Oletamme TTN: n perustiedot, jos ei, katso pika -aloitusopas
- Valitse sovellusvalikostasi "Integraatiot" ja sitten "Lisää integrointi"
- Valitse HTTP -integrointi
- Kirjoita kentät kuvan jälkeen ja korvaa ne EC2 ip: llä tai julkisella DNS: llä
Vaihe 13: Tietojen käsittely
Suorita seuraavat vaiheet jokaiselle anturilta kerätylle datan T: lle:
- Hanki joukko tupleja, joiden GPS -koordinaatit putoavat T: n lähialueelle. Paikallinen alue on kaikki tupelit, jotka ovat 100 metrin päässä T: stä.
- Laske kullekin lähimmälle korttelille N kiihtyvyysmittarin Z-akselin neliökeskiarvo N.
- Laske neliöllinen keskihajonta. Pseudokoodissa: std = summa ([(x. Z_accel ** 2 - keskiarvo) ** 2 x: lle lähellä])
- Lähtö tässä muodossa: lat, long, Z_accel ** 2, mean, std
Käytä paikallisen alueen laskemiseen GPS -etäisyyttä metreinä. C ++: ssa:
#define D2R (M_PI / 180.0)
#define EARTH_RAY 6371 kaksinkertainen etäisyys (double lat1, double long1, double lat2, double long2) {double dlong = (long2 - long1) * D2R; kaksinkertainen dlat = (lat2 - lat1) * D2R; kaksinkertainen a = pow (sin (dlat/2,0), 2) + cos (lat1 * D2R) * cos (lat2 * D2R) * pow (sin (dlong/2,0), 2); kaksinkertainen c = 2 * atan2 (sqrt (a), sqrt (1-a));
Käytä nyt edellisessä vaiheessa luotuja välitietoja, havaitse poikkeavuudet ja tee naiivi luokitus käyttämällä kutakin riviä koskevaa katkelmaa:
rivi = kartta (float, line.split (","))
v = rivi [2] keskiarvo = rivi [3] std = rivi [4] jos v (keskiarvo + std*3): jos v (keskiarvo + std*2): jos v (keskiarvo + std): o.liitä ([1, rivi [0], rivi [1]) else: o.append ([2, rivi [0], rivi [1]) else: o.append ([3, rivi [0], rivi [1])
Poikkeamat luokitellaan käyttämällä sääntöjä 68–95–99,7
Nyt sinulla on kokoelma tässä muodossa [tyyppi, leveys, pitkä].
Tyypin merkitys on seuraava:
- Pieni poikkeama, luultavasti merkityksetön
- Keskikokoinen poikkeama
- Kriittinen anomalia
Vaihe 14: Visualisointi
Jotta voimme ymmärtää ja ehkä muuttaa visualisointiosaa, meidän on opittava käyttämään mukautettuja merkkejä, joka on Google Maps -sovellusliittymän ominaisuus
Ensinnäkin kartta on alustettava soittopyynnössä:
function initMap () {
data = queryData (); map = new google.maps. Map (document.getElementById ('kartta'), {zoom: 15, center: {lat: data [0] [1], lng: data [0] [2]}}); huomautus(); }
Määritä tämän soittopyynnön nimi URL -osoitteessa (lisäsimme tämän ennen API -avaintamme) HTML -tagissa:
script async defer src = "https://maps.googleapis.com/maps/api/js?key=[KEY]&callback=initMap"
Merkki voidaan lisätä karttaan objektia luotaessa:
uusi google.maps. Marker ({sijainti: {lat: LATITUDE, lng: LONGITUDE}, kartta: kartta, kuvake: “/path/to/icon.png”})
Koodista näet, että jokaiseen poikkeavuuksien tietojoukon tietoon lisätään merkki (katso huomautus () -funktio) ja kuvake perustuu poikkeavuuden luokkaan. Kun suoritamme tämän selaimeen, voimme tutkia karttaa, jossa poikkeavuudet voidaan suodattaa valintaruutujen avulla, kuten kuvassa näkyy.
Vaihe 15: Hyvitykset ja ulkoiset linkit
Tämän projektin tekivät Giovanni De Luca, Andrea Fioraldi ja Pietro Spadaccino, ensimmäisen vuoden insinööritieteiden maisteri tietotekniikan opiskelijoista Rooman Sapienzan yliopistossa.
-
Diat, joilla tekijät esittivät tämän käsitteen todistuksen:
www.slideshare.net/PietroSpadaccino/road-m…
-
GitHub -repot, joissa on kaikki koodit:
github.com/roadteam
Suositeltava:
DIY Raspberry Pi Downloadbox: 4 vaihetta
DIY Raspberry Pi Downloadbox: Löydätkö usein itsesi lataamasta suuria tiedostoja, kuten elokuvia, torrentteja, kursseja, TV -sarjoja jne., Niin tulet oikeaan paikkaan. Tässä Instructable -ohjelmassa muuttaisimme Raspberry Pi zero -laitteemme latauskoneeksi. Joka voi ladata minkä tahansa
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): 8 vaihetta
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): ultraäänikaiuttimet L298N DC-naarasadapterin virtalähde urospuolisella dc-nastalla ja analogiset portit koodin muuntamiseksi (C ++)
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: 3 vaihetta
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: Seuraava opas auttaa sinua saamaan live-HD-videovirtoja lähes mistä tahansa DJI-dronesta. FlytOS -mobiilisovelluksen ja FlytNow -verkkosovelluksen avulla voit aloittaa videon suoratoiston droonilta
Pultti - DIY -langaton latauskello (6 vaihetta): 6 vaihetta (kuvilla)
Pultti - DIY -langaton latausyökello (6 vaihetta): Induktiiviset lataukset (tunnetaan myös nimellä langaton lataus tai langaton lataus) on langattoman voimansiirron tyyppi. Se käyttää sähkömagneettista induktiota sähkön tuottamiseen kannettaville laitteille. Yleisin sovellus on langaton Qi -latauslaite
4 vaihetta akun sisäisen vastuksen mittaamiseksi: 4 vaihetta
4 vaihetta akun sisäisen vastuksen mittaamiseksi: Tässä on 4 yksinkertaista vaihetta, joiden avulla voit mitata taikinan sisäisen vastuksen