Sadržaj:
- Korak 1: Zahtjevi
- Korak 2: Izrada i ažuriranje firmvera senzora
- Korak 3: Postavljanje oblaka
- Korak 4: Postavite AWS Lambda
- Korak 5: Postavite AWS Kinesis Firehose podatkovni tok
- Korak 6: Postavite IAM ulogu za kinezu
- Korak 7: Postavite AWS EC2
- Korak 8: Postavite IAM sigurnosnu ulogu za EC2
- Korak 9: Pristupite svojoj EC2 instanci
- 10. korak: Dohvatite API za Google karte
- Korak 11: Pokrenite poslužitelj
- Korak 12: Izvedite HTTP integraciju na mreži Things
- Korak 13: Obrada podataka
- Korak 14: Vizualizacija
- Korak 15: Krediti i vanjske veze
Video: Nadzor ceste: 15 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:35
Danas ćemo vam pokazati kako smo postavili sustav praćenja anomalija na cestama na temelju mjerača ubrzanja, LoRaWAN -a, Amazon Web Services i Google Cloud API -ja.
Korak 1: Zahtjevi
- Ploča DISCO-L072CZ-LRWAN1
- X-NUCLEO-IKS01A2 modul za proširenje (za mjerač ubrzanja)
- X-NUCLEO-GNSS1A1 (za lokalizaciju)
- AWS račun
- Račun Google Cloud Platform
Korak 2: Izrada i ažuriranje firmvera senzora
Spojite IKS01A2 i GNSS1A1 na vrhu ploče kroz GPIO pinove. Preuzmite kod firmvera s GitHub -a. Napravite (ako ga već nemate) račun na ARM Mbedu i uvezite kôd u repo na mrežnom prevoditelju. Ciljnu platformu postavite na DISCO-L072CZ-LRWAN1 i spremite projekt. Sada idite na The Things Network i stvorite račun ako ga već nemate. Izradite aplikaciju, stvorite novi uređaj unutar aplikacije i postavite način povezivanja na OTAA. Dohvatite odgovarajuće parametre kako biste ispunili sljedeća polja u datoteci mbed_app.json: "lora.appskey", "lora.nwkskey", "lora.device-address".
Senzor će povremeno snimati akcelerometar i GNSS podatke i slati ih putem LoRa veze do najbližeg pristupnika, koji će ih prosljeđivati našoj aplikaciji na mreži The Things Network. Sljedeći korak je postavljanje poslužitelja u oblaku i HTTP integracija na TTN -u.
Korak 3: Postavljanje oblaka
Sada smo spremni za postavljanje infrastrukture u oblaku koja će prikupljati i objedinjavati podatke sa svih postavljenih ploča. Ova infrastruktura prikazana je na donjoj slici, a sastoji se od:
- Kinesis, za rukovanje dolaznim tokom podataka;
- Lambda, za filtriranje i predprocesiranje podataka prije skladištenja;
- S3, za spremanje svih podataka;
- EC2, analizirati podatke i ugostiti naš front-end.
Korak 4: Postavite AWS Lambda
Ilustrirat ćemo korake potrebne za postavljanje ove infrastrukture, počevši od Lambde.
- Prijavite se sa svojim AWS računom, a s glavne stranice konzole idite na Lambda
- Pritisnite Stvori funkciju
- U gornjem dijelu stranice potrebno je odabrati Autor iz ogrebotine. Zatim ispunite ostala polja kao na slici, a zatim kliknite Stvori funkciju
- Sada kada ste stvorili AWS Lambda funkciju, idite na https://github.com/roadteam/data-server i kopirajte sadržaj datoteke aws_lambda.py u uređivač koji ćete pronaći u drugoj polovici stranice. Vaša Lambda funkcija je sada spremna:)
Korak 5: Postavite AWS Kinesis Firehose podatkovni tok
- Vratite se sada na glavnu stranicu AWS konzole, a u Usluge idite na Kinesis
- Sada ste na glavnoj stranici Kinesisa. S desne strane stranice u odjeljku "Kinesis Firehose dotoci isporuke" odaberite "Izradi novi tok isporuke"
- U "Naziv toka isporuke" napišite "tok-nadzor-ceste". Ostala polja ostavite zadanim i kliknite Dalje
- Sada u odjeljku 'Transform source records with AWS Lambda' odaberite Enabled, a kao Lambda funkciju kliknite na novostvorenu 'road-monitoring-lambda'. Ne brinite ako se pojavi upozorenje o isteku funkcije, jer operacije koje radimo nisu računski skupe. Ostala polja ostavite zadanim i kliknite Dalje
- Kao odredište odaberite Amazon S3, a kao odredište S3 odaberite Stvori novo. Kao naziv kante unesite "road-monitoring-bucket", a zatim idite. Ostala polja ostavite zadanim i kliknite Dalje
- Možda želite postaviti veličinu međuspremnika na 1 MB, a interval međuspremnika na 60 sekundi. Međuspremnik će se isprazniti u S3 kad god je zadovoljen jedan od dva uvjeta. Ne napuštajte stranicu, pogledajte sljedeći korak
Korak 6: Postavite IAM ulogu za kinezu
Sada postavljamo sigurnosna dopuštenja za Kinesis, budući da mora pozvati Lambda funkciju za predprocesiranje, a zatim će pisati na S3
- Pri dnu stranice na kojoj se nalazite u "IAM ulozi" odaberite "Kreiraj novu po izboru", stvorite novu IAM ulogu kao na slici i kliknite Dopusti
- Sada ste se vratili na prethodnu stranicu, kliknite sljedeći. Sada biste mogli dvaput provjeriti sve parametre. Kada završite, kliknite na "Stvori tok isporuke"
Cjevovod Kinesis-Lambda-S3 je u funkciji!
Korak 7: Postavite AWS EC2
Sada ćemo postaviti instancu EC2 s nekim API -ima koji će nam omogućiti da guramo i izvlačimo podatke iz AWS oblaka, a također i poslužitelj na kojem ćemo ugostiti sučelje naše aplikacije. U proizvodnom okruženju možda ćete htjeti objaviti API koristeći prilagodljiviji AWS API pristupnik.
- S glavne stranice AWS konzole idite na uslugu EC2
- Kliknite Pokreni instancu
- U gornju traku za pretraživanje zalijepite ovaj kôd: "ami-08935252a36e25f85", to je identifikacijski kod unaprijed konfiguriranog virtualnog stroja za upotrebu. Pritisnite Odaberi s desne strane
- Odaberite t2.micro iz stupca "Vrsta" i kliknite "Pregledaj i pokreni". Nemojte još pokretati instancu, prijeđite na sljedeći korak
Korak 8: Postavite IAM sigurnosnu ulogu za EC2
- Prije pokretanja želimo izmijeniti sigurnosnu grupu naše instance. Da biste to učinili, krajnje desno u odjeljku "Sigurnosne grupe" kliknite "Uredi sigurnosne grupe" Postavite novu sigurnosnu grupu na sljedeći način. Ovo u osnovi konfigurira vatrozid vaše instance izlažući port 22 za SSH vezu i port 80 za http usluge
- Ponovno kliknite "Pregledaj i pokreni". Sada provjerite jesu li postavljeni svi parametri. Kada završite kliknite Pokreni
- Nakon klika pojavit će se novi prozor za postavljanje para ključeva za ssh vezu s instancom. Odaberite "Izradi novi par ključeva" i kao naziv unesite "ec2-road-monitoring". Kliknite Preuzmi par ključeva. Izuzetno je važno da se ova datoteka izgubi ili (što je još gore) nesigurno pohranjena: ključ nećete moći ponovno preuzeti. Nakon preuzimanja ključa.pem instanca je spremna za pokretanje
Korak 9: Pristupite svojoj EC2 instanci
Vaša nova EC2 instanca nalazi se u AWS oblaku. Na njega se možete povezati pomoću datoteke s ključem koju ste već preuzeli (za ovaj vodič pretpostavljamo da poznajete osnove ssh -a). IP instance možete dohvatiti odabirom na nadzornoj ploči u odjeljku "Opis" na sljedeći način: Možete koristiti i svoj javni IP ili javni DNS isti. S ssh klijentom sada unesite naredbu:
ssh -i ec2-road-monitoring.pem ec2-user@YOUR-IP-ADDR-OR-DNS
gdje je ec2-road-monitoring.pem vaš ključ generiran prije.
Sada nastavite povlačenjem koda na strani poslužitelja
git clone --recursive
10. korak: Dohvatite API za Google karte
Skoro smo gotovi. Sada moramo postaviti google maps API na našu html stranicu kako bismo korisniku prikazali kartu s međutočkama:
- Prijavite se na svoj Google račun i idite na
- Kliknite na "Započni" na lijevoj strani stranice
- Na izborniku odaberite "Karte", a zatim kliknite Nastavi
- Kao naziv projekta unesite "nadzor ceste" i kliknite Dalje
- Unesite svoje podatke o naplati i kliknite Nastavi
- Sada je vaš projekt spreman i dobit ćemo API ključ klikom na API -ji i usluge -> Vjerodajnice
Korak 11: Pokrenite poslužitelj
Tu je vaš API ključ. Posljednje što morate učiniti je otići na data_visualization/anomalies_map.html i tako kopirati ključ na kraj datoteke, zamjenjujući ‘VAŠ KLJUČ-OVDJE’
Sada je sve spremno za rad! Da bi se pokrenulo izvršavanje u instanci EC2: "cd data-server" "python flask_app.py"
Unesite u svoj preglednik ip ili dns adresu vaše EC2 instance, trebali biste vidjeti kartu anomalija s nekim lažnim podacima
Korak 12: Izvedite HTTP integraciju na mreži Things
Sada kada smo pokrenuli svu pozadinsku infrastrukturu, možemo obraditi HTTP integraciju.
- Napravite novu aplikaciju i registrirajte svoj uređaj. Pretpostavljamo osnovno znanje o TTN -u, ako se ne pozivamo na vodič za brzi početak
- Na izborniku aplikacija odaberite "Integracije", a zatim "dodaj integraciju"
- Odaberite HTTP integraciju
- Unesite polja koja slijede sliku i zamijenite ih svojim EC2 ip ili javnim DNS -om
Korak 13: Obrada podataka
Za svaki niz podataka T prikupljenih od senzora morate izvršiti sljedeće korake:
- Nabavite skup tuplea s GPS koordinatama koji padaju u lokalnom području T. Lokalno područje su sve torte koje se nalaze 100 metara oko T.
- Za svaki najbliži tuple N izračunajte kvadratnu sredinu osi akcelerometra Z-osi u N. U pseudokodu: srednja vrijednost = zbroj ([x. Z_accel ** 2 za x u blizini]) / blizu. Veličina
- Izračunajte kvadratnu standardnu devijaciju. U pseudokodu: std = sum ([(x. Z_accel ** 2 - srednja vrijednost) ** 2 za x u blizini])
- Ispis u ovom formatu: lat, long, Z_accel ** 2, mean, std
Za izračun lokalnog područja upotrijebite GPS udaljenost u metrima. U C ++:
#define D2R (M_PI / 180.0)
#define EARTH_RAY 6371 double distance (double lat1, double long1, double lat2, double long2) {double dlong = (long2 - long1) * D2R; dvostruka dlat = (lat2 - lat1) * D2R; dvostruko a = pow (sin (dlat/2.0), 2) + cos (lat1 * D2R) * cos (lat2 * D2R) * pow (sin (dlong/2.0), 2); dvostruki c = 2 * atan2 (sqrt (a), sqrt (1-a));
Sada, koristeći međupodatke generirane u prethodnom koraku, otkrijte anomalije i napravite naivnu klasifikaciju pomoću ovog isječka primijenjenog na svaki redak:
linija = karta (float, line.split (","))
v = linija [2] srednja = linija [3] std = linija [4] ako je v (srednja + std*3): ako je v (srednja + std*2): ako je v (srednja + std): o.append ([1, redak [0], redak [1]) ostalo: o.append ([2, redak [0], redak [1]) ostalo: o.append ([3, redak [0], redak [1])
Anomalije se klasificiraju prema pravilu 68–95–99,7
Sada imate zbirku s ovim formatom [vrsta, lat, dugo].
Značenje tipa je sljedeće:
- Mala anomalija, vjerojatno nebitna
- Srednja anomalija
- Kritična anomalija
Korak 14: Vizualizacija
Da bismo razumjeli i možda promijenili dio vizualizacije, moramo naučiti kako koristiti prilagođene markere, značajku API -ja Google karata
Prvo, karta se mora inicijalizirati u povratnom pozivu:
funkcija initMap () {
podaci = upitData (); map = new google.maps. Map (document.getElementById ('map'), {zoom: 15, center: {lat: data [0] [1], lng: data [0] [2]}}); napomena(); }
Navedite naziv ovog povratnog poziva u URL -u (ovdje smo ga umetnuli prije našeg API ključa) u HTML oznaci:
skripta async defer src = "https://maps.googleapis.com/maps/api/js?key=[KEY]&callback=initMap"
Oznaka se može umetnuti u kartu kada se objekt stvori:
novi google.maps. Marker ({položaj: {lat: LATITUDE, lng: LONGITUDE}, karta: karta, ikona: “/path/to/icon.png”})
U kodu možete vidjeti da je za svaki podatak u skupu podataka o anomalijama umetnut marker (vidi funkciju remark ()), a ikona se temelji na klasi anomalije. Kada ovo pokrenemo u preglednik, možemo istražiti kartu u kojoj se anomalije mogu filtrirati pomoću potvrdnih okvira, kao što se vidi na slici.
Korak 15: Krediti i vanjske veze
Ovaj projekt izradili su Giovanni De Luca, Andrea Fioraldi i Pietro Spadaccino, prve godine magisterija inženjerstva studenata računarstva na Sveučilištu Sapienza u Rimu.
-
Slajdovi koje su autori koristili za predstavljanje ovog dokaza koncepta:
www.slideshare.net/PietroSpadaccino/road-m…
-
GitHub repo sa svim kodom:
github.com/roadteam
Preporučeni:
Raspberry Pi sustav za nadzor i kontrolu klime u zatvorenom prostoru: 6 koraka
Raspberry Pi sustav za nadzor i kontrolu klime u zatvorenom prostoru: Ljudi žele biti udobni u svojoj kući. Kako nam klima na našem području možda ne odgovara, koristimo mnoge aparate za održavanje zdravog unutarnjeg okoliša: grijač, hladnjak zraka, ovlaživač zraka, odvlaživač zraka, pročišćivač itd. U današnje vrijeme to je uobičajeno
Nadzor razine soli za omekšivač vode: 7 koraka
Nadzor razine soli za omekšivač vode: Omekšivači vode rade postupkom koji se naziva ionska izmjena u kojem se ioni kalcija i magnezija iz tvrde vode izmjenjuju s natrijevim kloridom (soli) putem posebne smole. Voda odlazi u posudu pod tlakom gdje se kreće kroz zrnate smole
Pametni unutarnji nadzor biljaka - Saznajte kada vašoj biljci treba zalijevanje: 8 koraka (sa slikama)
Pametni unutarnji nadzor biljaka - Saznajte kada vašoj biljci treba zalijevanje: Prije nekoliko mjeseci napravio sam štap za praćenje vlažnosti tla koji se napaja iz baterije i može se zabiti u tlo u loncu vaše sobne biljke kako bih vam dao neke korisne informacije o tlu LED razine vlage i bljeskalice koje će vam reći kada treba
Nadzor dva garažna vrata: 4 koraka
Nadzor dva garažna vrata: 2016. preselili smo se u novu kuću, gdje su garažna vrata smještena na način da ih ne vidite s glavnog ulaza u kuću. Stoga ne možete biti sigurni jesu li vrata zatvorena ili otvorena. Samo za nadzor, bivši vlasnici instalirali su prekidač za tisak
Semafor na križanju ceste: 3 koraka
Semafor na križnoj cesti: https://create.arduino.cc/editor/sharonchen/4c96c2…namjena neka djeca nauče kako prelaziti cestu!-oponaša semafor na raskrižju, uključena su 4 semafora svaka dionica i dva para suprotnih semafora svijetlit će t