İçindekiler:
- Adım 1: Gereksinimler
- 2. Adım: Sensörün Ürün Yazılımını Oluşturma ve Yanıp Sönme
- 3. Adım: Bulutu Kurma
- 4. Adım: AWS Lambda'yı Kurun
- 5. Adım: AWS Kinesis Firehose Veri Akışını Kurun
- 6. Adım: Kinesis için IAM Rolünü Ayarlayın
- 7. Adım: AWS EC2'yi kurun
- 8. Adım: EC2 için IAM Güvenlik Rolünü Ayarlayın
- 9. Adım: EC2 Bulut Sunucunuza Erişin
- Adım 10: Google Haritalar API'sini Alın
- Adım 11: Sunucuyu Başlatın
- Adım 12: Things Ağında HTTP Entegrasyonunu Gerçekleştirin
- Adım 13: Veri İşleme
- Adım 14: Görselleştirme
- Adım 15: Krediler ve Dış Bağlantılar
Video: Yol İzleme: 15 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
Bugün size ivmeölçerler, LoRaWAN, Amazon Web Services ve Google Cloud API'ye dayalı bir yol anormallikleri izleme sistemini nasıl kurduğumuzu göstereceğiz.
Adım 1: Gereksinimler
- DISCO-L072CZ-LRWAN1 kartı
- X-NUCLEO-IKS01A2 genişletme modülü (ivmeölçer için)
- X-NUCLEO-GNSS1A1 (yerelleştirme için)
- Bir AWS hesabı
- Bir Google Cloud Platform hesabı
2. Adım: Sensörün Ürün Yazılımını Oluşturma ve Yanıp Sönme
IKS01A2 ve GNSS1A1'i GPIO pinleri aracılığıyla kartın üstüne bağlayın. Firmware kodunu GitHub'dan indirin. ARM Mbed'de (zaten yoksa) bir hesap oluşturun ve kodu çevrimiçi derleyicideki depoya aktarın. Hedef platformu DISCO-L072CZ-LRWAN1 olarak ayarlayın ve projeyi kaydedin. Şimdi The Things Network'e gidin ve henüz sahip değilseniz bir hesap oluşturun. Bir uygulama oluşturun, uygulama içinde yeni bir cihaz oluşturun ve bağlantı modunu OTAA olarak ayarlayın. mbed_app.json dosyasındaki şu alanları doldurmak için uygun parametreleri alın: "lora.appskey", "lora.nwkskey", "lora.device-address".
Sensör, ivmeölçer ve GNSS verilerini periyodik olarak kaydedecek ve bunları LoRa bağlantısı aracılığıyla en yakın ağ geçidine gönderecek ve bu da onları The Things Network'teki uygulamamıza iletecektir. Bir sonraki adım, bir bulut sunucusu ve TTN üzerinde bir HTTP entegrasyonu kurmaktır.
3. Adım: Bulutu Kurma
Artık dağıtılan tüm panolardan verileri toplayacak ve toplayacak bulut altyapısını kurmaya hazırız. Bu altyapı aşağıdaki şekilde gösterilmiştir ve aşağıdakilerden oluşur:
- Kinesis, gelen veri akışını işlemek için;
- Lambda, verileri depolamadan önce filtrelemek ve önceden işlemek için;
- S3, tüm verileri saklamak için;
- EC2, verileri analiz etmek ve ön uçumuzu barındırmak için.
4. Adım: AWS Lambda'yı Kurun
Lambda'dan başlayarak bu altyapıyı kurmak için gerekli adımları göstereceğiz.
- AWS hesabınızla ve konsol ana sayfasından giriş yapın ve Lambda'ya gidin
- İşlev Oluştur'a tıklayın
- Sayfanın üst kısmında Sıfırdan Yazar seçilmelidir. Daha sonra resimdeki gibi diğer alanları doldurun ve Create Function'a tıklayın.
- Artık bir AWS Lambda işlevi oluşturduğunuza göre, https://github.com/roadteam/data-server adresine gidin ve aws_lambda.py dosyasının içeriğini sayfanın ikinci yarısını bulduğunuz düzenleyiciye kopyalayın. Lambda işleviniz artık hazır:)
5. Adım: AWS Kinesis Firehose Veri Akışını Kurun
- Şimdi AWS konsolu ana sayfasına dönün ve Hizmetler'e Kinesis'e gidin
- Artık Kinesis'in ana sayfasındasınız. Sayfanın sağ tarafında, 'Kinesis Firehose teslimat akışları' altında, 'Yeni teslimat akışı oluştur'u seçin
- "Teslim akışı adı" alanına "yol izleme akışı" yazın. Diğer alanları varsayılan olarak bırakın ve ileri'ye tıklayın
- Şimdi 'AWS Lambda ile kaynak kayıtlarını dönüştürün' altında Etkin'i seçin ve Lambda işlevi olarak yeni oluşturulan 'yol izleme-lambda'ya tıklayın. Yaptığımız işlem hesaplama açısından pahalı olmadığı için işlev zaman aşımı ile ilgili bir uyarı çıkarsa endişelenmeyin. Diğer alanları varsayılan olarak bırakın ve ileri'ye tıklayın
- Hedef olarak Amazon S3'ü ve S3 hedefi olarak Yeni Oluştur'u seçin. Kova adı olarak 'yol izleme-kova' girin ve ardından gidin. Şimdi diğer alanları varsayılan olarak bırakın ve İleri'ye tıklayın.
- Arabellek boyutunu 1MB ve Tampon aralığını 60 saniye olarak ayarlamak isteyebilirsiniz. İki koşuldan biri sağlandığında arabellek S3'e boşaltılacaktır. Sayfadan ayrılmayın, sonraki adıma bakın
6. Adım: Kinesis için IAM Rolünü Ayarlayın
Şimdi Kinesis için güvenlik izinlerini ayarladık, çünkü ön işleme için Lambda işlevini çağırması gerekir ve ardından S3'e yazacaktır.
- IAM rolünde olduğunuz sayfanın en altında 'Create new of select'i seçin, resimdeki gibi yeni bir IAM rolü oluşturun ve Allow'a tıklayın.
- Şimdi bir önceki sayfaya döndünüz, ileriyi tıklayın. Şimdi tüm parametreleri iki kez kontrol etmek isteyebilirsiniz. Bitirdiğinizde 'Teslimat Akışı Oluştur'a tıklayın
Kinesis-Lambda-S3 boru hattı çalışıyor ve çalışıyor!
7. Adım: AWS EC2'yi kurun
Şimdi, AWS bulutundan ve ayrıca uygulama ön uçumuzu barındıracağımız sunucudan veri göndermemize ve çekmemize izin verecek bazı API'lerle bir EC2 örneği kuracağız. Üretim ortamında, daha ölçeklenebilir AWS API Gateway kullanarak API yayınlamak isteyebilirsiniz.
- AWS konsolu ana sayfasından EC2 hizmetine gidin
- Örneği Başlat'a tıklayın
- Üst arama çubuğuna şu kodu yapıştırın: 'ami-08935252a36e25f85', bu, kullanılacak önceden yapılandırılmış sanal makinenin tanımlayıcı kodudur. Sağdaki Seç'i tıklayın
- "Tür" sütunundan t2.micro'yu seçin ve "İncele ve başlat"ı tıklayın. Örneği henüz başlatmayın, sonraki adıma geçin
8. Adım: EC2 için IAM Güvenlik Rolünü Ayarlayın
- Başlatmadan önce örneğimizin güvenlik grubunu değiştirmek istiyoruz. Bunu yapmak için, 'Güvenlik Grupları' bölümünün en sağında 'Güvenlik gruplarını düzenle'yi tıklayın. Aşağıdaki gibi yeni bir güvenlik grubu oluşturun. Bu, temel olarak, sunucunuzun güvenlik duvarını, SSH bağlantısı için 22 numaralı bağlantı noktasını ve http hizmetleri için 80 numaralı bağlantı noktasını ortaya çıkaran yapılandırır.
- Tekrar 'İncele ve Başlat'ı tıklayın. Şimdi tüm parametrelerin ayarlandığını kontrol edin. Bitirdiğinizde Başlat'a tıklayın
- Tıklandığında, örneğe ssh bağlantısı için bir anahtar çifti kurmak üzere yeni bir pencere açılacaktır. "Yeni anahtar çifti oluştur"u seçin ve ad olarak "ec2-yol izleme" yazın. Anahtar çiftini indir'i tıklayın. Bu dosyanın kaybolması veya (daha kötüsü) güvenli olmayan bir şekilde saklanması son derece önemlidir: anahtarı tekrar indiremezsiniz..pem anahtarını indirdikten sonra, örnek başlatılmaya hazırdır
9. Adım: EC2 Bulut Sunucunuza Erişin
Yeni EC2 bulut sunucunuz AWS bulutunda hazır. Daha önce indirilen anahtar dosyası ile ona bağlanabilirsiniz (bu eğitim için ssh'nin temellerini bildiğinizi varsayıyoruz). 'Açıklama' bölümündeki gösterge tablosunda aşağıdaki gibi seçerek örneğin IP'sini alabilirsiniz: Hem genel IP'nizi hem de genel DNS'nizi kullanabilirsiniz, aynıdır. Bir ssh istemcisi ile şimdi şu komutu girin:
ssh -i ec2-road-monitoring.pem ec2-user@YOUR-IP-ADDR-VEYA-DNS
ec2-road-monitoring.pem daha önce oluşturulmuş anahtarınızdır.
Şimdi sunucu tarafı kodunu çekmeye devam edin
Adım 10: Google Haritalar API'sini Alın
Neredeyse tamamız. Şimdi kullanıcıya yol noktaları ile haritayı görüntülemek için html sayfamızda google maps API'sini kurmamız gerekiyor:
- Google hesabınıza giriş yapın ve https://cloud.google.com/maps-platform/ adresine gidin.
- Sayfanın solundaki 'Başlayın' için tıklayın
- Menüden 'Haritalar'ı seçin ve ardından devam et'i tıklayın.
- Proje adı olarak 'yol izleme' girin ve İleri'ye tıklayın
- Fatura ayrıntılarınızı girin ve Devam'ı tıklayın.
- Artık projeniz hazır ve API'ler ve Hizmetler -> Kimlik Bilgileri'ne tıklayarak API anahtarını alacağız.
Adım 11: Sunucuyu Başlatın
Ve işte API anahtarınız. Yapmanız gereken son şey data_visualization/anomalies_map.html adresine gitmek ve anahtarınızı dosyanın sonuna bu şekilde kopyalamak, 'SİZİN-ANAHTARINIZ-BURADA' ifadesini kullanmaktır.
Şimdi her şey ayarlandı ve gitmeye hazır! EC2 örneğinde yürütülmesini sağlamak için: "cd data-server" "python flask_app.py"
EC2 bulut sunucunuzun ip veya dns adresini tarayıcınıza girin, bazı sahte verilerle anormallikler haritasını görmelisiniz
Adım 12: Things Ağında HTTP Entegrasyonunu Gerçekleştirin
Artık tüm arka uç altyapısı hazır ve çalışır durumda olduğuna göre, HTTP entegrasyonunu gerçekleştirmek için işleyebiliriz.
- Yeni bir uygulama oluşturun ve cihazınızı kaydedin. Hızlı başlangıç kılavuzuna bakmazsanız, temel TTN bilgisine sahip olduğumuzu varsayıyoruz.
- Uygulama menünüzde "Entegrasyonlar"ı ve ardından "entegrasyon ekle"yi seçin.
- HTTP entegrasyonunu seçin
- Resmi takip eden alanları girin ve EC2 ip veya genel DNS ile değiştirin
Adım 13: Veri İşleme
Sensörden toplanan her T veri grubu için aşağıdaki adımları gerçekleştirmelisiniz:
- T'nin yerel alanına düşen GPS koordinatlarına sahip demetler kümesini alın. Yerel alan, T'nin 100 metre çevresindeki tüm demetlerdir.
- Her en yakın grup N için, ivmeölçer Z ekseninin kare ortalamasını N cinsinden hesaplayın. Sözde kodda: ortalama = toplam ([x. Z_accel ** yakındaki x için]) / yakın.size
- Kare standart sapmayı hesaplayın. Sözde kodda: std = toplam ([(x. Z_accel ** 2 - ortalama) ** 2 yakındaki x için])
- Bu biçimde çıktı: lat, long, Z_accel **2, ortalama, std
Yerel alanı hesaplamak için metre cinsinden GPS mesafesini kullanın. C++'da:
#define D2R (M_PI / 180.0)
#define EARTH_RAY 6371 çift mesafe(çift lat1, çift uzun1, çift lat2, çift uzun2) { çift uzun = (uzun2 - uzun1) * D2R; çift dlat = (lat2 - lat1) * D2R; double a = pow(sin(dlat/2.0), 2) + cos(lat1*D2R) * cos(lat2*D2R) * pow(sin(uzun/2.0), 2); çift c = 2 * atan2(sqrt(a), sqrt(1-a));
Şimdi, önceki adımda oluşturulan ara verileri kullanarak, anormallikleri tespit edin ve her satıra uygulanan bu alıntıyı kullanarak saf bir sınıflandırma yapın:
line = map(float, line.split(", "))
v = satır[2] ortalama = satır[3] std = satır[4] ise v (ortalama + standart*3): if v (ortalama + standart*2): if v (ortalama + standart): o.append([1, satır[0], satır[1]) başka: o.append([2, satır[0], satır[1]) başka: o.append([3, satır[0], satır[1])
Anormallikler 68–95–99.7 kuralı kullanılarak sınıflandırılır
Artık [type, lat, long] biçiminde bir koleksiyonunuz var.
Tip anlamı şudur:
- Hafif anormallik, muhtemelen alakasız
- orta anomali
- kritik anomali
Adım 14: Görselleştirme
Görselleştirme bölümünü anlamak ve belki de değiştirmek için, Google Haritalar API'sinin bir özelliği olan özel işaretçileri nasıl kullanacağımızı öğrenmeliyiz
İlk olarak, harita bir geri aramada başlatılmalıdır:
function initMap() {
veri = sorguData(); map = new google.maps. Map(document.getElementById('map'), { zoom: 15, center: {lat: data[0][1], lng: data[0][2]} }); açıklama(); }
Bu geri aramanın adını url'de (buraya API anahtarımızdan önce ekledik) bir HTML etiketinde belirtin:
Nesne oluşturulduğunda haritaya bir işaretleyici eklenebilir:
yeni google.maps. Marker({ konum: {lat: LATITUDE, lng: LONGITUDE}, harita: harita, simge: “/path/to/icon.png” })
Kodda, anormalliklerin veri kümesindeki her bir veri için bir işaretçinin eklendiğini (açıklama() işlevine bakın) ve simgenin anomalinin sınıfını temel aldığını görebilirsiniz. Bunu tarayıcıda çalıştırırken, resimde görüldüğü gibi, onay kutuları kullanılarak anormalliklerin filtrelenebileceği bir harita keşfedebiliriz.
Adım 15: Krediler ve Dış Bağlantılar
Bu proje Giovanni De Luca, Andrea Fioraldi ve Pietro Spadaccino, Roma Sapienza Üniversitesi'nde Bilgisayar Bilimleri Mühendisliği alanında birinci sınıf yüksek lisans öğrencileri tarafından yapılmıştır.
-
Yazarların bu kavram kanıtını sunmak için kullandıkları slaytlar:
www.slideshare.net/PietroSpadaccino/road-m…
-
Tüm kodu içeren GitHub depoları:
github.com/roadteam
Önerilen:
AC Güç Kesintisi, Pil Destekli LED Yol Işığı: 8 Adım
AC Güç Kesintisi, Pil Destekli LED Yol Işığı: Yakın zamanda bir elektrik kesintisi sırasında, bodrumumun en karanlık derinliklerinde… bir ışık gerçekten çok kullanışlı olurdu. Ne yazık ki el fenerim birkaç karanlık oda ötedeydi. Biraz uğraştım, ışığı buldum ve aile odasına doğru yol aldım. benim wi
Lampe Pentagonale (L'arrache'de). Pentagonal Lamba (Kaba Yol): 6 Adım
Lampe Pentagonale (L'arrache'de). Pentagonal Lamp (Rought Way): Français: Inspirée par cet talimat: https://www.instructables.com/id/Porus-Lamp/ j'ai réalisé un petit modèle éclairé par un chemin de led neopixel d'adafruit. Cette lampe tourne égaleme
Bozuk Bir Fanı Zor Onarmak (Zayıf Yol): 5 Adım
Zor Bir Kırık Fanı Onarmak (Zavallı Yol): Herkese merhaba, çok zor ama etkili bir şekilde aldığım bozuk bir fanı bu şekilde onardım! Umarım takdir edersiniz ve eğer öyleyse, bir yarışmada bana oy verin! sen
Yol Bisikleti Gündüz ve Yandan Görünür 350mA Işık (Tek Hücre): 11 Adım (Resimlerle)
Yol Bisikleti Gündüz ve Yandan Görünür 350mA Işık (Tek Hücre): Bu bisiklet ışığı, 350mA'ya kadar sürülen ön ve 45°'lik sarı LED'lere sahiptir. Yan görüş, kavşakların yakınında güvenliği artırabilir. Gündüz görünürlüğü için kehribar seçildi. Işık, gidonun sol damlasına yerleştirildi. Desenleri farklı olabilir
DIY Akıllı Robot İzleme Araç Kitleri Araba İzleme Işığa Duyarlı: 7 Adım
DIY Akıllı Robot Takip Araç Kitleri Araba Takip Işığa Duyarlı: Design by SINONING ROBOTTizleme robotu carTheoryLM393 çipinden satın alabilirsiniz, iki fotodirenci karşılaştırın, bir tarafı BEYAZ üzerinde fotodirenç LED'i olduğunda motorun tarafı hemen duracak, motorun diğer tarafı döndür, böylece