Tartalomjegyzék:
- 1. lépés: Követelmények
- 2. lépés: Az érzékelő firmware -jének létrehozása és felvillanása
- 3. lépés: A felhő beállítása
- 4. lépés: Az AWS Lambda beállítása
- 5. lépés: Állítsa be az AWS Kinesis Firehose adatfolyamot
- 6. lépés: Állítsa be az IAM szerepét a Kinesis számára
- 7. lépés: Az AWS EC2 beállítása
- 8. lépés: Állítsa be az IAM biztonsági szerepkört az EC2 számára
- 9. lépés: Hozzáférés az EC2 példányhoz
- 10. lépés: A Google Térkép API letöltése
- 11. lépés: Indítsa el a szervert
- 12. lépés: Végezze el a HTTP -integrációt a Things hálózaton
- 13. lépés: Adatfeldolgozás
- 14. lépés: Vizualizáció
- 15. lépés: Hitelek és külső linkek
Videó: Útfigyelés: 15 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
Ma megmutatjuk, hogyan állítunk be gyorsulásmérőkön, LoRaWAN -on, Amazon Web Services -en és Google Cloud API -n alapuló közúti rendellenességek figyelő rendszert.
1. lépés: Követelmények
- DISCO-L072CZ-LRWAN1 tábla
- X-NUCLEO-IKS01A2 bővítő modul (a gyorsulásmérőhöz)
- X-NUCLEO-GNSS1A1 (a lokalizációhoz)
- AWS fiók
- Google Cloud Platform -fiók
2. lépés: Az érzékelő firmware -jének létrehozása és felvillanása
Csatlakoztassa az IKS01A2 és a GNSS1A1 a tábla tetejére a GPIO csapokon keresztül. Töltse le a firmware kódját a GitHub webhelyről. Hozzon létre (ha még nincs) fiókot az ARM Mbed -en, és importálja a kódot az online fordító repójában. Állítsa a célplatformot DISCO-L072CZ-LRWAN1-re, és mentse el a projektet. Most menjen a The Things Network oldalra, és hozzon létre egy fiókot, ha még nem rendelkezik vele. Hozzon létre egy alkalmazást, hozzon létre egy új eszközt az alkalmazáson belül, és állítsa a csatlakozási módot OTAA -ra. Fogja meg a megfelelő paramétereket az mbed_app.json fájl következő mezőinek kitöltéséhez: "lora.appskey", "lora.nwkskey", "lora.device-address".
Az érzékelő rendszeresen rögzíti a gyorsulásmérő és a GNSS adatait, és elküldi azokat a LoRa kapcsolaton keresztül a legközelebbi átjáróhoz, amely továbbítja azokat a The Things Network alkalmazásunkhoz. A következő lépés egy felhőalapú szerver és egy HTTP -integráció beállítása a TTN -en.
3. lépés: A felhő beállítása
Most készen állunk a felhőinfrastruktúra beállítására, amely összegyűjti és összesíti az összes telepített tábla adatait. Ez az infrastruktúra az alábbi ábrán látható, és a következőkből áll:
- Kinezis, a bejövő adatfolyam kezelésére;
- Lambda, az adatok szűrése és előfeldolgozása tárolás előtt;
- S3, az összes adat tárolására;
- EC2, az adatok elemzésére és a kezelőfelület üzemeltetésére.
4. lépés: Az AWS Lambda beállítása
Szemléltetjük az infrastruktúra beállításához szükséges lépéseket, kezdve a Lambda -val.
- Jelentkezzen be AWS -fiókjával, és a konzol főoldaláról lépjen a Lambda oldalra
- Kattintson a Funkció létrehozása elemre
- Az oldal felső részén válassza ki a Szerző a Scratchből lehetőséget. Ezután töltse ki a többi mezőt a képen látható módon, majd kattintson a Funkció létrehozása gombra
- Most, hogy létrehozta az AWS Lambda funkciót, keresse fel a https://github.com/roadteam/data-server webhelyet, és másolja az aws_lambda.py fájl tartalmát az oldal második felében található szerkesztőbe. A Lambda funkció most készen áll:)
5. lépés: Állítsa be az AWS Kinesis Firehose adatfolyamot
- Most térjen vissza az AWS konzol főoldalára, és lépjen a Szolgáltatásokba a Kinesis oldalra
- Most a Kinesis főoldalán vagy. Az oldal jobb oldalán, a „Kinesis Firehose szállítási folyamok” alatt válassza az „Új szállítási adatfolyam létrehozása” lehetőséget.
- A „Kézbesítési adatfolyam” mezőbe írja be az „útfelügyelet-adatfolyam” lehetőséget. Hagyja a többi mezőt alapértelmezettként, majd kattintson a Tovább gombra
- Most a „Forrásrekordok átalakítása AWS Lambdával” alatt válassza az Engedélyezve lehetőséget, és Lambda funkcióként kattintson az újonnan létrehozott „útfigyelő-lambda” elemre. Ne aggódjon, ha a funkció időtúllépésére figyelmeztető üzenet jelenik meg, mivel az általunk végzett művelet nem számítási szempontból drága. Hagyja a többi mezőt alapértelmezettként, majd kattintson a Tovább gombra
- Célállomásként válassza az Amazon S3, és S3 célállomásként az Új létrehozása lehetőséget. Vödörnévként írja be az „útfigyelő vödör” szót, majd menjen. Most hagyja a többi mezőt alapértelmezettként, és kattintson a Tovább gombra
- Érdemes a puffer méretét 1 MB -ra, a pufferintervallumot pedig 60 másodpercre állítani. A puffert az S3 -ra öblítik, amikor a két feltétel egyike teljesül. Ne hagyja el az oldalt, lásd a következő lépést
6. lépés: Állítsa be az IAM szerepét a Kinesis számára
Most beállítottuk a Kinesis biztonsági engedélyeit, mivel meg kell hívnia a Lambda függvényt az előfeldolgozáshoz, majd írni fog az S3 -on
- Az oldal alján, ahol „IAM szerepkör” van, válassza az „Új választás létrehozása” lehetőséget, hozzon létre egy új IAM -szerepet, mint a képen, majd kattintson az Engedélyezés gombra.
- Most visszatért az előző oldalra, kattintson a Tovább gombra. Most érdemes ellenőrizni az összes paramétert. Ha elkészült, kattintson a „Szállítási adatfolyam létrehozása” gombra
A Kinesis-Lambda-S3 csővezeték üzemkész!
7. lépés: Az AWS EC2 beállítása
Most beállítunk egy EC2 példányt néhány API -val, amelyek lehetővé teszik számunkra az adatok küldését és lehívását az AWS felhőből, valamint azt a szervert, ahol az alkalmazás kezelőfelületét tároljuk. Éles környezetben érdemes az API -t a skálázhatóbb AWS API -átjáró használatával közzétenni.
- Az AWS konzol főoldaláról lépjen az EC2 szolgáltatáshoz
- Kattintson a Példány indítása elemre
- A felső keresősávba illessze be ezt a kódot: „ami-08935252a36e25f85”, azaz a használni kívánt előre konfigurált virtuális gép azonosító kódja. Kattintson a jobb oldalon található Kiválasztás gombra
- A „Típus” oszlopban válassza a t2.micro elemet, majd kattintson az „Áttekintés és indítás” gombra. Még ne indítsa el a példányt, folytassa a következő lépéssel
8. lépés: Állítsa be az IAM biztonsági szerepkört az EC2 számára
- Indítás előtt módosítani szeretnénk példányunk biztonsági csoportját. Ehhez kattintson a „Biztonsági csoportok” szakasz jobb szélén található „Biztonsági csoportok szerkesztése” lehetőségre. Állítson be új biztonsági csoportot az alábbiak szerint. Ez alapvetően konfigurálja a példány tűzfalát, amely a 22 -es portot teszi ki az SSH -kapcsolathoz, és a 80 -as portot a http -szolgáltatásokhoz
- Kattintson ismét az „Áttekintés és indítás” gombra. Most ellenőrizze, hogy minden paraméter be van -e állítva. Ha végzett, kattintson az Indítás gombra
- Ha rákattint, megjelenik egy új ablak, amely kulcspárt állít be a példányhoz való ssh -kapcsolathoz. Válassza az „Új kulcspár létrehozása” lehetőséget, és névként írja be az „ec2-road-monitoring” lehetőséget. Kattintson a Kulcspár letöltése gombra. Rendkívül fontos, hogy ez a fájl elveszzen, vagy (ami még rosszabb) nem biztonságos tárolás: nem fogja tudni újra letölteni a kulcsot. A.pem kulcs letöltése után a példány készen áll az indításra
9. lépés: Hozzáférés az EC2 példányhoz
Friss EC2 példánya fent van az AWS felhőben. Csatlakozhat a korábban letöltött kulcsfájlhoz (ehhez az oktatóanyaghoz feltételezzük, hogy ismeri az ssh alapjait). A példány IP -címét a „Leírás” szakasz irányítópultján választhatja ki, az alábbiak szerint: Használhatja mind a nyilvános IP -címét, mind a nyilvános DNS -t. Most egy ssh klienssel írja be a következő parancsot:
ssh -i ec2-road-monitoring.pem ec2-user@YOUR-IP-ADDR-OR-DNS
ahol az ec2-road-monitoring.pem a korábban generált kulcs.
Most folytassa a szerveroldali kód áthúzását
git klón-rekursív
10. lépés: A Google Térkép API letöltése
Majdnem végeztünk. Most be kell állítanunk a google maps API -t a html oldalunkon, hogy megjeleníthessük a térképet az útvonalpontokkal a felhasználó számára:
- Jelentkezzen be Google-fiókjába, és lépjen a https://cloud.google.com/maps-platform/ oldalra
- Kattintson az „Első lépések” gombra az oldal bal oldalán
- A menüben válassza a „Térképek” lehetőséget, majd kattintson a Tovább gombra
- A projekt névként írja be az „útfelügyelet” lehetőséget, majd kattintson a Tovább gombra
- Adja meg számlázási adatait, majd kattintson a Folytatás gombra
- Most a projekt készen áll, és az API -kulcsot az API -k és szolgáltatások -> Hitelesítő adatok elemre kattintva szerezzük be
11. lépés: Indítsa el a szervert
És itt van az API kulcsa. Utolsó lépésként lépjen a data_visualization/anomalies_map.html oldalra, és másolja át a kulcsot a fájl végére, a „YOUR-KEY-IT” helyett.
Most minden kész és indulásra kész! Ahhoz, hogy elinduljon a végrehajtás az EC2 példányban: „cd data-server” „python flask_app.py”
Írja be böngészőjébe az EC2 példányának IP- vagy dns -címét, látni kell az anomáliák térképét néhány ál adatgal
12. lépés: Végezze el a HTTP -integrációt a Things hálózaton
Most, hogy minden háttér -infrastruktúra fel van dolgozva, feldolgozhatjuk a HTTP -integráció végrehajtását.
- Hozzon létre egy új alkalmazást, és regisztrálja készülékét. Feltételezzük a TTN alapvető ismereteit, ha nem, olvassa el a gyorsindítási útmutatót
- Az alkalmazás menüjében válassza az „Integrációk”, majd az „integráció hozzáadása” lehetőséget
- Válassza a HTTP integrációt
- Írja be a képeket követő mezőket, és cserélje le az EC2 ip vagy nyilvános DNS -re
13. lépés: Adatfeldolgozás
Az érzékelőből gyűjtött minden T adatcsomaghoz a következő lépéseket kell végrehajtania:
- Szerezze be azokat a sorokat, amelyeknek GPS koordinátái a T. helyi területére esnek.
- Minden legközelebbi N sorhoz számítsa ki a gyorsulásmérő Z tengelyének négyzetátlagát N.
- Számítsa ki a négyzetes szórást. Álkódban: std = összeg ([(x. Z_accel ** 2 - átlag) ** 2 x közelben])
- Kimenet ebben a formátumban: lat, long, Z_accel ** 2, mean, std
A helyi terület kiszámításához használja a GPS távolságot méterben. C ++ - ban:
#define D2R (M_PI / 180.0)
#define EARTH_RAY 6371 dupla távolság (double lat1, double long1, double lat2, double long2) {double dlong = (long2 - long1) * D2R; dupla dlat = (lat2 - lat1) * D2R; kettős a = pow (sin (dlat/2,0), 2) + cos (lat1 * D2R) * cos (lat2 * D2R) * pow (sin (dlong/2,0), 2); kettős c = 2 * atan2 (sqrt (a), sqrt (1-a));
Most, az előző lépésben előállított közbenső adatok felhasználásával, észlelje az anomáliákat, és végezzen naiv osztályozást a következő sorokra alkalmazva:
sor = térkép (float, line.split (","))
v = sor [2] átlag = sor [3] std = sor [4], ha v (átlag + std*3): ha v (átlag + std*2): ha v (átlag + std): o.append ([1, [0]. Sor, [1]) else: o.append ([2, [0]. Sor, [1]) else: o.append ([3, [0]. Sor, [sor] 1])
Az anomáliákat a 68–95–99,7 szabály segítségével osztályozzák
Most van egy ilyen formátumú gyűjteménye [típus, lat, hosszú].
A típus jelentése a következő:
- Enyhe anomália, valószínűleg lényegtelen
- Közepes anomália
- Kritikus anomália
14. lépés: Vizualizáció
Ahhoz, hogy megértsük és esetleg megváltoztassuk a vizualizációs részt, meg kell tanulnunk az egyéni jelölők használatát, a Google Térkép API egyik funkcióját
Először is a térképet inicializálni kell egy visszahívásban:
function initMap () {
adatok = queryData (); map = new google.maps. Map (document.getElementById ('térkép'), {zoom: 15, center: {lat: data [0] [1], lng: data [0] [2]}}); megjegyzés(); }
Adja meg ennek a visszahívásnak a nevét az URL -ben (ezt illesztettük be az API -kulcsunk elé) egy HTML -címkében:
script async defer src = "https://maps.googleapis.com/maps/api/js?key=[KEY]&callback=initMap"
Az objektum létrehozásakor jelölőt lehet beilleszteni a térképbe:
new google.maps. Marker ({pozíció: {lat: LATITUDE, lng: LONGITUDE}, térkép: térkép, ikon: “/path/to/icon.png”})
Látható a kódban, hogy az anomáliák adatkészletének minden adatához jelölőt helyeznek be (lásd a megjegyzés () függvényt), és az ikon az anomália osztályán alapul. Amikor ezt a böngészőbe futtatjuk, feltérképezhetünk egy térképet, amelyben a rendellenességek szűrhetők a jelölőnégyzetek segítségével, amint az a képen látható.
15. lépés: Hitelek és külső linkek
Ezt a projektet Giovanni De Luca, Andrea Fioraldi és Pietro Spadaccino, a Római Sapienza Egyetem számítástechnika elsőéves MSc mérnökei készítették.
-
Diák, amelyeket a szerzők a koncepció bizonyításának bemutatására használtak:
www.slideshare.net/PietroSpadaccino/road-m…
-
GitHub repók az összes kóddal:
github.com/roadteam
Ajánlott:
DC - DC feszültség Lépés lekapcsoló mód Buck feszültségátalakító (LM2576/LM2596): 4 lépés
DC-DC feszültség Lépés lekapcsoló üzemmód Buck feszültségátalakító (LM2576/LM2596): A rendkívül hatékony bakkonverter készítése nehéz feladat, és még a tapasztalt mérnököknek is többféle kivitelre van szükségük, hogy a megfelelőt hozzák létre. egy DC-DC áramátalakító, amely csökkenti a feszültséget (miközben növeli
Akusztikus levitáció az Arduino Uno-val Lépésről lépésre (8 lépés): 8 lépés
Akusztikus lebegés az Arduino Uno-val Lépésről lépésre (8 lépés): ultrahangos hangátvivők L298N Dc női adapter tápegység egy egyenáramú tűvel Arduino UNOBreadboard és analóg portok a kód konvertálásához (C ++)
Élő 4G/5G HD videó streamelés DJI drónról alacsony késleltetéssel [3 lépés]: 3 lépés
Élő 4G/5G HD videó streaming a DJI Drone-tól alacsony késleltetéssel [3 lépés]: Az alábbi útmutató segít abban, hogy szinte bármilyen DJI drónról élő HD minőségű videó streameket kapjon. A FlytOS mobilalkalmazás és a FlytNow webes alkalmazás segítségével elindíthatja a videó streamingjét a drónról
Bolt - DIY vezeték nélküli töltő éjszakai óra (6 lépés): 6 lépés (képekkel)
Bolt - DIY vezeték nélküli töltés éjszakai óra (6 lépés): Az induktív töltés (más néven vezeték nélküli töltés vagy vezeték nélküli töltés) a vezeték nélküli áramátvitel egyik típusa. Elektromágneses indukciót használ a hordozható eszközök áramellátásához. A leggyakoribb alkalmazás a Qi vezeték nélküli töltő
4 lépés az akkumulátor belső ellenállásának méréséhez: 4 lépés
4 lépés az akkumulátor belső ellenállásának mérésére: Íme a 4 egyszerű lépés, amelyek segítenek mérni az akkumulátor belső ellenállását