Obsah:

Monitorování silnice: 15 kroků
Monitorování silnice: 15 kroků

Video: Monitorování silnice: 15 kroků

Video: Monitorování silnice: 15 kroků
Video: 15 triků pro iPhone, které musíš vyzkoušet. 2024, Listopad
Anonim
Sledování silnic
Sledování silnic

Dnes vám ukážeme, jak jsme nastavili systém sledování silničních anomálií založený na akcelerometrech, LoRaWAN, Amazon Web Services a Google Cloud API.

Krok 1: Požadavky

  • Deska DISCO-L072CZ-LRWAN1
  • Rozšiřující modul X-NUCLEO-IKS01A2 (pro accellerometr)
  • X-NUCLEO-GNSS1A1 (pro lokalizaci)
  • Účet AWS
  • Účet Google Cloud Platform

Krok 2: Sestavení a stažení firmwaru senzoru

Připojte IKS01A2 a GNSS1A1 na horní straně desky přes GPIO piny. Stáhněte si kód firmwaru z GitHub. Vytvořte (pokud ho ještě nemáte) účet na ARM Mbed a importujte kód do úložiště online kompilátoru. Nastavte cílovou platformu na DISCO-L072CZ-LRWAN1 a uložte projekt. Nyní přejděte na The Things Network a vytvořte si účet, pokud ho ještě nemáte. Vytvořte aplikaci, vytvořte nové zařízení uvnitř aplikace a nastavte režim připojení na OTAA. Uchopte příslušné parametry a vyplňte následující pole v souboru mbed_app.json: "lora.appskey", "lora.nwkskey", "lora.device-address".

Senzor bude pravidelně zaznamenávat akcelerometr a data GNSS a odesílat je přes připojení LoRa k nejbližší bráně, která je předá do naší aplikace v síti věcí. Dalším krokem je nastavení cloudového serveru a integrace HTTP na TTN.

Krok 3: Nastavení cloudu

Nastavení cloudu
Nastavení cloudu

Nyní jsme připraveni nastavit cloudovou infrastrukturu, která bude shromažďovat a agregovat data ze všech nasazených desek. Tato infrastruktura je znázorněna na obrázku níže a skládá se z:

  • Kinesis, pro zpracování příchozího datového proudu;
  • Lambda, k filtrování a předzpracování dat před jejich uložením;
  • S3, k uložení všech dat;
  • EC2 k analýze dat a hostování našeho front-endu.

Krok 4: Nastavení AWS Lambda

Nastavte AWS Lambda
Nastavte AWS Lambda

Ukážeme si kroky nutné k nastavení této infrastruktury, počínaje Lambdou.

  1. Přihlaste se pomocí svého účtu AWS a z hlavní stránky konzoly přejděte na Lambda
  2. Klikněte na Vytvořit funkci
  3. V horní části stránky by měl být vybrán Autor od začátku. Poté vyplňte ostatní pole jako na obrázku a poté klikněte na Vytvořit funkci
  4. Nyní, když jste vytvořili funkci AWS Lambda, přejděte na https://github.com/roadteam/data-server a zkopírujte obsah souboru aws_lambda.py do editoru, ve kterém najdete druhou polovinu stránky. Vaše funkce Lambda je nyní připravena:)

Krok 5: Nastavení datového proudu AWS Kinesis Firehose

Nastavte datový proud AWS Kinesis Firehose
Nastavte datový proud AWS Kinesis Firehose
  1. Vraťte se nyní na hlavní stránku konzoly AWS a v části Služby přejděte na Kinesis
  2. Nyní jste na hlavní stránce Kinesis. V pravé části stránky v části „Kinesis Firehose delivery streams“vyberte „Create new delivery stream“
  3. Do pole „Název streamu doručení“napište „stream-monitoring-stream“. Ostatní pole ponechte ve výchozím nastavení a klikněte na další
  4. Nyní v části „Transformovat zdrojové záznamy pomocí AWS Lambda“vyberte možnost Povoleno a jako funkce Lambda klikněte na nově vytvořenou „lambda monitorování silnice“. Pokud se objeví varování o vypršení časového limitu funkce, nedělejte si starosti, protože operace, kterou provádíme, není výpočetně nákladná. Ostatní pole ponechte ve výchozím nastavení a klikněte na další
  5. Jako cíl vyberte Amazon S3 a jako cíl S3 vyberte Vytvořit nový. Jako název lopaty zadejte „kbelík pro sledování silnic“a poté jděte. Nyní ponechte ostatní pole ve výchozím nastavení a klikněte na Další
  6. Možná budete chtít nastavit velikost vyrovnávací paměti na 1 MB a interval vyrovnávací paměti na 60 sekund. Vyrovnávací paměť bude vyprázdněna do S3, kdykoli je splněna jedna ze dvou podmínek. Neopouštějte stránku, viz další krok

Krok 6: Nastavení role IAM pro kinezi

Nastavte roli IAM pro kinezi
Nastavte roli IAM pro kinezi

Nyní jsme nastavili bezpečnostní oprávnění pro Kinesis, protože pro předzpracování musí volat funkci Lambda a pak bude psát na S3

  1. V dolní části stránky, ve které se nacházíte v „roli IAM“, vyberte „Vytvořit novou volbu“, vytvořte novou roli IAM jako na obrázku a klikněte na Povolit
  2. Nyní jste zpět na předchozí stránce, klikněte na další. Nyní možná budete chtít znovu zkontrolovat všechny parametry. Po dokončení klikněte na „Vytvořit stream doručení“

Plynovod Kinesis-Lambda-S3 je v provozu!

Krok 7: Nastavení AWS EC2

Nastavte AWS EC2
Nastavte AWS EC2

Nyní nastavíme instanci EC2 s některými rozhraními API, která nám umožní odesílat a stahovat data z cloudu AWS a také ze serveru, na kterém budeme hostovat frontend naší aplikace. V produkčním prostředí možná budete chtít publikovat API pomocí škálovatelnější brány API AWS.

  1. Na hlavní stránce konzoly AWS přejděte na službu EC2
  2. Klikněte na Spustit instanci
  3. Do horního vyhledávacího panelu vložte tento kód: „ami-08935252a36e25f85“, což je identifikační kód předem nakonfigurovaného virtuálního počítače, který chcete použít. Vpravo klikněte na Vybrat
  4. Ve sloupci „Typ“vyberte t2.micro a klikněte na „Zkontrolovat a spustit“. Instanci zatím nespouštějte, přejděte k dalšímu kroku

Krok 8: Nastavení role zabezpečení IAM pro EC2

Nastavte roli zabezpečení IAM pro EC2
Nastavte roli zabezpečení IAM pro EC2
  1. Před spuštěním chceme upravit skupinu zabezpečení naší instance. Chcete -li to provést, v pravé části sekce „Skupiny zabezpečení“klikněte na „Upravit skupiny zabezpečení“Vytvořte novou skupinu zabezpečení následujícím způsobem. To v podstatě konfiguruje bránu firewall vaší instance, která vystavuje port 22 pro připojení SSH a port 80 pro služby
  2. Klikněte znovu na „Zkontrolovat a spustit“. Nyní zkontrolujte, zda jsou nastaveny všechny parametry. Po dokončení klikněte na Spustit
  3. Po kliknutí se objeví nové okno, které nastaví pár klíčů pro připojení ssh k instanci. Vyberte „Vytvořit nový pár klíčů“a jako název zadejte „ec2-road-monitoring“. Klikněte na Stáhnout pár klíčů. Je nesmírně důležité, aby se tento soubor ztratil nebo (hůř) byl bezpečně uložen: klíč si nebudete moci znovu stáhnout. Po stažení klíče.pem je instance připravena ke spuštění

Krok 9: Přístup k vaší instanci EC2

Získejte přístup ke své instanci EC2
Získejte přístup ke své instanci EC2

Vaše nová instance EC2 je v cloudu AWS. Můžete se k němu připojit pomocí dříve staženého souboru klíčů (u tohoto kurzu předpokládáme, že znáte základy ssh). IP adresu instance můžete získat tak, že ji vyberete na hlavním panelu v části „Popis“následujícím způsobem: Můžete použít veřejnou IP adresu nebo veřejnou DNS, je to stejné. S klientem ssh nyní zadejte příkaz:

ssh -i ec2-road-monitoring.pem uživatel ec2@VAŠE IP-ADDR-NEBO DNS

kde ec2-road-monitoring.pem je váš klíč generovaný dříve.

Nyní pokračujte v procházení kódu na straně serveru

git clone-rekurzivní

Krok 10: Načtěte rozhraní Google Maps API

Načíst Google Maps API
Načíst Google Maps API

Jsme téměř hotovi. Nyní musíme na naší html stránce nastavit rozhraní Google Maps API, aby se uživateli zobrazila mapa s trasovými body:

  1. Přihlaste se ke svému účtu Google a přejděte na
  2. V levé části stránky klikněte na „Začínáme“
  3. V nabídce vyberte „Mapy“a poté klikněte na Pokračovat
  4. Jako název projektu zadejte „monitorování silnice“a klikněte na Další
  5. Zadejte své fakturační údaje a klikněte na Pokračovat
  6. Nyní je váš projekt připraven a my získáme klíč API kliknutím na APIs & Services -> Credentials

Krok 11: Spusťte server

Spusťte server
Spusťte server

A tam je váš klíč API. Poslední věc, kterou musíte udělat, je přejít na data_visualization/anomalies_map.html a zkopírovat klíč na konec souboru podobně, nahradit „VAŠE KLÍČ-ZDE“

Nyní je vše nastaveno a připraveno jít! Aby bylo možné spustit spuštění v instanci EC2: „cd data-server“„python flask_app.py“

Zadejte do prohlížeče adresu IP nebo DNS vaší instance EC2, měli byste vidět mapu anomálií s některými figurínami

Krok 12: Proveďte integraci HTTP v síti věcí

Proveďte integraci HTTP v síti věcí
Proveďte integraci HTTP v síti věcí

Nyní, když máme veškerou infrastrukturu backendu v provozu, můžeme zpracovat integraci

  1. Vytvořte novou aplikaci a zaregistrujte své zařízení. Předpokládáme základní znalosti o TTN, pokud ne v příručce pro rychlý start
  2. V nabídce aplikace vyberte „Integrace“a poté „Přidat integraci“
  3. Vyberte integraci
  4. Zadejte pole následující za obrázkem a nahraďte je vaším EC2 ip nebo veřejným DNS

Krok 13: Zpracování dat

Pro každou n -tici dat T shromážděných ze senzoru musíte provést následující kroky:

  1. Získejte sadu n -tic s GPS souřadnicemi spadajícími do místní oblasti T. Místní oblast jsou všechny n -tice, které jsou 100 metrů kolem T.
  2. Pro každou nejbližší n-tici N vypočítejte druhou mocninu střední osy akcelerometru v N. V pseudokódu: průměr = součet ([x. Z_accel ** 2 pro x v blízkosti]) / blízká velikost
  3. Vypočítejte druhou standardní odchylku na druhou. V pseudokódu: std = součet ([(x. Z_accel ** 2 - průměr) ** 2 pro x v blízkosti])
  4. Výstup v tomto formátu: lat, long, Z_accel ** 2, mean, std

Pro výpočet místní oblasti použijte vzdálenost GPS v metrech. V C ++:

#define D2R (M_PI / 180.0)

#define EARTH_RAY 6371 dvojnásobná vzdálenost (double lat1, double long1, double lat2, double long2) {double dlong = (long2 - long1) * D2R; double dlat = (lat2 - lat1) * D2R; double a = pow (sin (dlat/2,0), 2) + cos (lat1 * D2R) * cos (lat2 * D2R) * pow (sin (dlong/2,0), 2); double c = 2 * atan2 (sqrt (a), sqrt (1-a));

Nyní pomocí mezilehlých dat generovaných v předchozím kroku detekujte anomálie a proveďte naivní klasifikaci pomocí tohoto úryvku aplikovaného na každý řádek:

line = mapa (float, line.split (","))

v = řádek [2] průměr = řádek [3] std = řádek [4] if v (průměr + std*3): if v (průměr + std*2): if v (průměr + std): o.append ([1, řádek [0], řádek [1]) else: o.append ([2, řádek [0], řádek [1]) else: o.append ([3, řádek [0], řádek [1])

Anomálie jsou klasifikovány podle pravidla 68–95–99,7

Nyní máte kolekci v tomto formátu [typ, lat, dlouhý].

Význam typu je následující:

  1. Lehká anomálie, pravděpodobně irelevantní
  2. Střední anomálie
  3. Kritická anomálie

Krok 14: Vizualizace

Vizualizace
Vizualizace

Abychom pochopili a možná změnili část vizualizace, musíme se naučit používat vlastní značky, což je funkce rozhraní Google Maps API

Za prvé, mapu je třeba inicializovat při zpětném volání:

funkce initMap () {

data = queryData (); mapa = nový google.maps. Map (document.getElementById ('mapa'), {zoom: 15, center: {lat: data [0] [1], lng: data [0] [2]}}); Poznámka(); }

Zadejte název tohoto zpětného volání do adresy URL (vložili jsme před klíč API) do značky HTML:

script async defer src = "https://maps.googleapis.com/maps/api/js?key=[KEY]&callback=initMap"

Značku lze do mapy vložit, když je objekt vytvořen:

nový google.maps. Marker ({pozice: {lat: LATITUDE, lng: LONGITUDE}, mapa: mapa, ikona: “/path/to/icon.png”})

V kódu vidíte, že pro všechna data v datové sadě anomálií je vložena značka (viz funkce remark ()) a ikona je založena na třídě anomálie. Když to spustíte do prohlížeče, můžeme prozkoumat mapu, na které lze filtrovat anomálie pomocí zaškrtávacích políček, jak je vidět na obrázku.

Krok 15: Kredity a externí odkazy

Tento projekt vytvořili Giovanni De Luca, Andrea Fioraldi a Pietro Spadaccino, studenti prvního ročníku oboru inženýrství v oboru informatiky na univerzitě Sapienza v Římě.

  • Prezentace, které autoři použili k předložení tohoto důkazu konceptu:

    www.slideshare.net/PietroSpadaccino/road-m…

  • Úložiště GitHub se všemi kódy:

    github.com/roadteam

Doporučuje: