Kazalo:
- 1. korak: Zahteve
- 2. korak: izdelava in utripanje vdelane programske opreme senzorja
- 3. korak: Nastavitev oblaka
- 4. korak: Nastavite AWS Lambda
- 5. korak: Nastavite podatkovni tok AWS Kinesis Firehose
- Korak 6: Nastavite vlogo IAM za kinezo
- 7. korak: Nastavite AWS EC2
- 8. korak: Nastavite varnostno vlogo IAM za EC2
- 9. korak: dostopajte do primerka EC2
- 10. korak: Pridobite API za Google Zemljevide
- 11. korak: Zaženite strežnik
- 12. korak: Izvedite integracijo HTTP v omrežju Things
- Korak: Obdelava podatkov
- 14. korak: Vizualizacija
- Korak 15: Krediti in zunanje povezave
Video: Spremljanje ceste: 15 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:05
Danes vam bomo pokazali, kako smo na podlagi merilnikov pospeška, LoRaWAN -a, spletnih storitev Amazon in API -ja Google Cloud API vzpostavili sistem za spremljanje nepravilnosti na cestah.
1. korak: Zahteve
- Plošča DISCO-L072CZ-LRWAN1
- Razširitveni modul X-NUCLEO-IKS01A2 (za merilnik pospeška)
- X-NUCLEO-GNSS1A1 (za lokalizacijo)
- Račun AWS
- Račun za Google Cloud Platform
2. korak: izdelava in utripanje vdelane programske opreme senzorja
Povežite IKS01A2 in GNSS1A1 na vrhu plošče prek zatičev GPIO. Prenesite kodo vdelane programske opreme z GitHub -a. Ustvarite (če ga še nimate) račun na ARM Mbed in uvozite kodo v repo na spletnem prevajalniku. Ciljno platformo nastavite na DISCO-L072CZ-LRWAN1 in shranite projekt. Zdaj pojdite na The Things Network in ustvarite račun, če ga še nimate. Ustvarite aplikacijo, v aplikaciji ustvarite novo napravo in nastavite način povezave na OTAA. Zberite ustrezne parametre, da izpolnite naslednja polja v datoteki mbed_app.json: "lora.appskey", "lora.nwkskey", "lora.device-address".
Tipalo bo občasno snemalo merilnike pospeška in podatke GNSS ter jih prek povezave LoRa pošiljalo do najbližjega prehoda, ki jih bo posredoval naši aplikaciji v omrežju The Things Network. Naslednji korak je nastavitev strežnika v oblaku in integracija HTTP v TTN.
3. korak: Nastavitev oblaka
Zdaj smo pripravljeni postaviti infrastrukturo v oblaku, ki bo zbirala in združevala podatke z vseh razporejenih plošč. Ta infrastruktura je prikazana na spodnji sliki in jo sestavljajo:
- Kinesis, za obravnavo dohodnega podatkovnega toka;
- Lambda za filtriranje in predhodno obdelavo podatkov pred shranjevanjem;
- S3, za shranjevanje vseh podatkov;
- EC2, za analizo podatkov in gostovanje našega vmesnika.
4. korak: Nastavite AWS Lambda
Prikazali bomo korake, potrebne za vzpostavitev te infrastrukture, začenši z Lambdo.
- Prijavite se s svojim računom AWS in z glavne strani konzole pojdite na Lambda
- Kliknite Ustvari funkcijo
- V zgornjem delu strani je treba iz avtorja izbrati avtorja. Nato izpolnite druga polja, kot je na sliki, in kliknite Ustvari funkcijo
- Zdaj, ko ste ustvarili funkcijo AWS Lambda, pojdite na https://github.com/roadteam/data-server in kopirajte vsebino datoteke aws_lambda.py v urejevalnik, ki ga najdete v drugi polovici strani. Vaša funkcija Lambda je zdaj pripravljena:)
5. korak: Nastavite podatkovni tok AWS Kinesis Firehose
- Vrnite se zdaj na glavno stran konzole AWS in v Storitve pojdite na Kinesis
- Zdaj ste na glavni strani Kinesis. Na desni strani pod »Kinesis Firehose dotoki dostave« izberite »Ustvari nov tok dostave«
- V "Ime dostavnega toka" napišite "cestni nadzorni tok". Ostala polja pustite privzete in kliknite Naprej
- Zdaj v razdelku »Pretvori izvorne zapise z AWS Lambda« izberite Omogočeno in kot funkcija Lambda kliknite na novo ustvarjeno »spremljanje ceste-lambda«. Ne skrbite, če se prikaže opozorilo glede časovne omejitve funkcije, saj operacija, ki jo izvajamo, ni računsko draga. Ostala polja pustite privzete in kliknite Naprej
- Kot cilj izberite Amazon S3 in kot cilj S3 izberite Ustvari novo. Kot ime vedra vnesite 'road-monitoring-bucket' in pojdite. Zdaj pustite druga polja privzeta in kliknite Naprej
- Velikost medpomnilnika lahko nastavite na 1 MB, interval vmesnega pomnilnika pa na 60 sekund. Medpomnilnik se izprazni na S3, kadar je izpolnjen eden od dveh pogojev. Ne zapustite strani, glejte naslednji korak
Korak 6: Nastavite vlogo IAM za kinezo
Zdaj smo nastavili varnostna dovoljenja za Kinesis, saj mora za predhodno obdelavo poklicati funkcijo Lambda, nato pa bo pisala na S3
- Na dnu strani, v kateri ste v vlogi IAM, izberite »Ustvari novo po izbiri«, ustvarite novo vlogo IAM, kot je na sliki, in kliknite Dovoli
- Zdaj ste nazaj na prejšnjo stran, kliknite Naprej. Zdaj boste morda želeli dvakrat preveriti vse parametre. Ko končate, kliknite »Ustvari tok dostave«
Cevovod Kinesis-Lambda-S3 deluje in deluje!
7. korak: Nastavite AWS EC2
Zdaj bomo vzpostavili primerek EC2 z nekaterimi API -ji, ki nam bodo omogočali potiskanje in pobiranje podatkov iz oblaka AWS in tudi strežnika, kjer bomo gostili našo aplikacijo. V proizvodnem okolju boste morda želeli objaviti API z uporabo bolj razširljivega prehoda API AWS.
- Na glavni strani konzole AWS pojdite na storitev EC2
- Kliknite Zaženi zagon
- V zgornjo iskalno vrstico prilepite to kodo: „ami-08935252a36e25f85“, to je identifikacijsko kodo vnaprej konfiguriranega navideznega stroja za uporabo. Na desni kliknite Izberi
- V stolpcu »Vrsta« izberite t2.micro in kliknite »Preglej in zaženi«. Še ne zaženite primerka, pojdite na naslednji korak
8. korak: Nastavite varnostno vlogo IAM za EC2
- Pred zagonom želimo spremeniti varnostno skupino našega primerka. Če želite to narediti, na skrajni desni strani razdelka »Varnostne skupine« kliknite »Uredi varnostne skupine« Nastavite novo varnostno skupino na naslednji način. To v bistvu konfigurira požarni zid vašega primerka, ki izpostavlja vrata 22 za povezavo SSH in vrata 80 za storitve
- Znova kliknite »Preglej in zaženi«. Zdaj preverite, ali so vsi parametri nastavljeni. Ko končate, kliknite Zaženi
- Ob kliku se prikaže novo okno za nastavitev para ključev za povezavo ssh do primerka. Izberite 'Ustvari nov par ključev' in kot ime vnesite 'ec2-road-monitoring'. Kliknite Prenesi par ključev. Izjemno pomembno je, da se ta datoteka izgubi ali (kar je še huje), da je varno shranjena: ključa ne boste mogli več prenesti. Ko prenesete ključ.pem, je primerek pripravljen za zagon
9. korak: dostopajte do primerka EC2
Vaš sveži primerek EC2 je v oblaku AWS. Z njim se lahko povežete s ključno datoteko, ki ste jo že prenesli (za to vadnico predvidevamo, da poznate osnove ssh). IP primerka lahko pridobite tako, da ga izberete na nadzorni plošči v razdelku »Opis« na naslednji način: Uporabite lahko svoj javni IP ali javni DNS, ki je enak. S odjemalcem ssh zdaj vnesite ukaz:
ssh -i ec2-road-monitoring.pem ec2-user@YOUR-IP-ADDR-OR-DNS
kjer je ec2-road-monitoring.pem vaš ključ, ustvarjen prej.
Zdaj nadaljujte s potegom kode na strani strežnika
10. korak: Pridobite API za Google Zemljevide
Skoraj smo že končali. Zdaj moramo na naši strani html nastaviti google maps API, da uporabniku prikažemo zemljevid s točkami poti:
- Prijavite se v svoj Google Račun in pojdite na
- Kliknite na »Začni« na levi strani
- V meniju izberite »Zemljevidi« in kliknite »Nadaljuj«
- Kot ime projekta vnesite 'nadzor ceste' in kliknite Naprej
- Vnesite podatke za obračun in kliknite Nadaljuj
- Zdaj je vaš projekt pripravljen in ključ API dobimo s klikom na API -ji in storitve -> poverilnice
11. korak: Zaženite strežnik
In tam je vaš ključ API. Zadnja stvar, ki jo morate storiti, je, da obiščete data_visualization/anomalies_map.html in tako kopirate svoj ključ na konec datoteke, pri čemer zamenjate »VAŠ KLJUČ-TUKAJ«
Zdaj je vse pripravljeno in pripravljeno! Če želite, da se začne izvajati v primerku EC2: ‘cd data-server’ ‘python flask_app.py’
V brskalnik vnesite naslov ip ali dns vašega primerka EC2, prikazali bi se zemljevid nepravilnosti z nekaj lažnimi podatki
12. korak: Izvedite integracijo HTTP v omrežju Things
Zdaj, ko imamo vklopljeno vso zaledno infrastrukturo, lahko obdelamo izvedbo integracije
- Ustvarite novo aplikacijo in registrirajte svojo napravo. Predpostavljamo osnovno znanje o TTN, če se ne nanašamo na vodnik za hiter začetek
- V meniju aplikacije izberite »Integracije« in nato »dodajte integracijo«
- Izberite integracijo
- Vnesite polja, ki sledijo sliki in jih zamenjajte z vašim EC2 ip ali javnim DNS
Korak: Obdelava podatkov
Za vsak niz podatkov T, zbranih s senzorja, morate izvesti naslednje korake:
- Pridobite nabor naborov, ki imajo GPS -koordinate na lokalnem območju T. Lokalno območje so vse torbice, ki so 100 metrov okoli T.
- Za vsak najbližji nabor N izračunajte kvadratno sredino osi merilnika pospeška osi Z v N. V psevdokodi: povprečje = vsota ([x. Z_accel ** 2 za x v bližini]) / blizu. Velikost
- Izračunajte kvadratni standardni odklon. V psevdo kodi: std = vsota ([(x. Z_accel ** 2 - povprečje) ** 2 za x v bližini])
- Izhod v tej obliki: lat, long, Z_accel ** 2, mean, std
Za izračun lokalnega območja uporabite razdaljo GPS v metrih. V C ++:
#define D2R (M_PI / 180.0)
#define EARTH_RAY 6371 dvojna razdalja (double lat1, double long1, double lat2, double long2) {double dlong = (long2 - long1) * D2R; dvojni dlat = (lat2 - lat1) * D2R; dvojni a = pow (sin (dlat/2.0), 2) + cos (lat1 * D2R) * cos (lat2 * D2R) * pow (sin (dlong/2.0), 2); dvojno c = 2 * atan2 (sqrt (a), sqrt (1-a));
Zdaj z vmesnimi podatki, ustvarjenimi v prejšnjem koraku, odkrijte nepravilnosti in naredite naivno klasifikacijo z uporabo tega izreza, ki se uporablja za vsako vrstico:
vrstica = zemljevid (float, line.split (","))
v = vrstica [2] povprečje = vrstica [3] std = vrstica [4] če v (povprečje + std*3): če v (povprečje + std*2): če v (povprečje + std): o.append ([1, vrstica [0], vrstica [1]) drugo: o.append ([2, vrstica [0], vrstica [1]) drugo: o.append ([3, vrstica [0], vrstica [1])
Anomalije so razvrščene po pravilu 68–95–99,7
Zdaj imate zbirko s to obliko zapisa [vrsta, lat, dolga].
Pomen vrste je naslednji:
- Rahla anomalija, verjetno nepomembna
- Srednja anomalija
- Kritična anomalija
14. korak: Vizualizacija
Če želimo razumeti in morda spremeniti del vizualizacije, se moramo naučiti uporabljati označevalce po meri, to je funkcija API -ja za Google Zemljevide
Najprej je treba zemljevid inicializirati pri povratnem klicu:
funkcija initMap () {
data = queryData (); map = nov google.maps. Map (document.getElementById ('map'), {zoom: 15, center: {lat: data [0] [1], lng: data [0] [2]}}); opomba (); }
Določite ime tega povratnega klica v urlu (tukaj smo ga vstavili pred ključem API -ja) v oznaki HTML:
script async defer src = "https://maps.googleapis.com/maps/api/js?key=[KEY]&callback=initMap"
Ko je objekt ustvarjen, lahko na zemljevid vstavite oznako:
nov google.maps. Marker ({position: {lat: LATITUDE, lng: LONGITUDE}, map: map, icon: “/path/to/icon.png”})
V kodi lahko vidite, da je za vsak podatek v nizu anomalij vstavljen marker (glej funk opombe ()), ikona pa temelji na razredu anomalije. Ko to zaženete v brskalnik, lahko raziščete zemljevid, v katerem je mogoče anomalije filtrirati s potrditvenimi polji, kot je prikazano na sliki.
Korak 15: Krediti in zunanje povezave
Ta projekt so izdelali Giovanni De Luca, Andrea Fioraldi in Pietro Spadaccino, prvi letnik magisterija inženirstva študentov računalništva na Univerzi Sapienza v Rimu.
-
Diapozitivi, ki so jih avtorji uporabili za predstavitev tega dokaza koncepta:
www.slideshare.net/PietroSpadaccino/road-m…
-
GitHub repo z vso kodo:
github.com/roadteam
Priporočena:
Serija IoT ESP8266: 2- spremljanje podatkov prek ThingSpeak.com: 5 korakov
Serija IoT ESP8266: 2- spremljanje podatkov prek ThingSpeak.com: To je drugi del serije IoT ESP8266. Če si želite ogledati 1. del, si oglejte to serijo IoT ESP8266: 1 Povežite se z usmerjevalnikom WIFI. Ta del vam pokaže, kako poslati podatke senzorja na eno od priljubljenih brezplačnih storitev v oblaku IoT https: //thingspeak.com
Arduino, spremljanje odpiranja vrat prek Gmaila: 6 korakov
Arduino, spremljanje odpiranja vrat prek Gmaila: V tej vadnici vam bom pokazal, kako zaznati dogodek odpiranja vrat in poslati obvestilo prek Gmaila z uporabo Arduino Uno. Če ste začetnik, se lahko naučite o wifi in senzorju v Arduinu - WiFi in Arduino - vaje za senzor vrat
Sistem za spremljanje in nadzor podnebja v zaprtih prostorih Raspberry Pi: 6 korakov
Sistem za spremljanje in nadzor podnebja v zaprtih prostorih Raspberry Pi: Ljudje želijo biti v svoji hiši udobni. Ker nam podnebje na našem območju morda ne ustreza, za vzdrževanje zdravega notranjega okolja uporabljamo številne aparate: grelec, hladilnik zraka, vlažilec zraka, razvlaževalec zraka, čistilnik itd
Pametni distribuirani sistem za spremljanje vremena IoT z uporabo NodeMCU: 11 korakov
Pametni distribuirani IoT sistem za spremljanje vremena z uporabo NodeMCU: Vsi se morda zavedate tradicionalne vremenske postaje; a ste se kdaj vprašali, kako v resnici deluje? Ker je tradicionalna vremenska postaja draga in obsežna, je gostota teh postaj na enoto površine zelo manjša, kar prispeva k
Spremljanje sobne temperature in vlažnosti z ESP32 in AskSensors Cloud: 6 korakov
Spremljanje sobne temperature in vlažnosti z ESP32 in AskSensors Cloud: V tej vadnici se boste naučili spremljati temperaturo in vlažnost vaše sobe ali mize z uporabo DHT11 in ESP32, povezanih z oblakom. Naše posodobitve vadnic najdete tukaj. Specifikacije: Senzor DHT11 lahko meri temperaturo