Isi kandungan:
- Langkah 1: Keperluan
- Langkah 2: Membangun dan Mengemaskan Firmware Sensor
- Langkah 3: Menyiapkan Awan
- Langkah 4: Siapkan AWS Lambda
- Langkah 5: Sediakan Aliran Data AWS Kinesis Firehose
- Langkah 6: Sediakan Peranan IAM untuk Kinesis
- Langkah 7: Sediakan AWS EC2
- Langkah 8: Sediakan Peranan Keselamatan IAM untuk EC2
- Langkah 9: Akses Instance EC2 Anda
- Langkah 10: Dapatkan API Peta Google
- Langkah 11: Lancarkan Pelayan
- Langkah 12: Lakukan Integrasi HTTP di Perkara Rangkaian
- Langkah 13: Pemprosesan Data
- Langkah 14: Visualisasi
- Langkah 15: Kredit dan Pautan Luar
Video: Pemantauan Jalan Raya: 15 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:10
Hari ini kami akan menunjukkan kepada anda bagaimana kami mengatur sistem pemantauan anomali jalan berdasarkan akselerometer, LoRaWAN, Perkhidmatan Web Amazon dan Google Cloud API.
Langkah 1: Keperluan
- Papan DISCO-L072CZ-LRWAN1
- Modul pengembangan X-NUCLEO-IKS01A2 (untuk accellerometer)
- X-NUCLEO-GNSS1A1 (untuk penyetempatan)
- Akaun AWS
- Akaun Google Cloud Platform
Langkah 2: Membangun dan Mengemaskan Firmware Sensor
Sambungkan IKS01A2 dan GNSS1A1 di atas papan melalui pin GPIO. Muat turun kod firmware dari GitHub. Buat (jika anda belum mempunyai) akaun di ARM Mbed dan import kod di repo pada penyusun dalam talian. Tetapkan platform sasaran ke DISCO-L072CZ-LRWAN1 dan simpan projek. Sekarang pergi ke The Things Network dan buat akaun jika anda belum memilikinya. Buat aplikasi, buat peranti baru di dalam aplikasi dan tetapkan mod sambungan ke OTAA. Dapatkan parameter yang sesuai untuk mengisi medan berikut dalam fail mbed_app.json: "lora.appskey", "lora.nwkskey", "lora.device-address".
Sensor akan merakam data accelerometer dan GNSS secara berkala dan menghantarnya melalui sambungan LoRa ke gerbang terdekat, yang akan meneruskannya ke aplikasi kami di The Things Network. Langkah seterusnya adalah menyediakan pelayan awan, dan integrasi HTTP di TTN.
Langkah 3: Menyiapkan Awan
Sekarang kami bersedia untuk menyiapkan infrastruktur awan yang akan mengumpulkan dan mengumpulkan data dari semua papan yang dikerahkan. Infrastruktur ini ditunjukkan dalam gambar di bawah dan disusun oleh:
- Kinesis, untuk menangani aliran data masuk;
- Lambda, untuk menyaring dan memproses data sebelum menyimpannya;
- S3, untuk menyimpan semua data;
- EC2, untuk menganalisis data dan menjadi tuan rumah front-end kami.
Langkah 4: Siapkan AWS Lambda
Kami akan menerangkan langkah-langkah yang diperlukan untuk menyiapkan infrastruktur ini, bermula dengan Lambda.
- Log masuk dengan akaun AWS anda, dan dari halaman utama konsol dan pergi ke Lambda
- Klik Buat Fungsi
- Di bahagian atas halaman hendaklah dipilih Pengarang dari Gores. Kemudian lengkapkan bidang lain seperti dalam gambar dan kemudian klik Buat Fungsi
- Sekarang setelah anda membuat fungsi AWS Lambda, pergi ke https://github.com/roadteam/data-server dan salin kandungan fail aws_lambda.py ke dalam editor yang anda dapati separuh kedua halaman. Fungsi Lambda anda kini siap:)
Langkah 5: Sediakan Aliran Data AWS Kinesis Firehose
- Kembali sekarang ke halaman utama konsol AWS, dan ke Perkhidmatan pergi ke Kinesis
- Sekarang anda berada di halaman utama Kinesis. Di sebelah kanan halaman, di bawah ‘Aliran penghantaran Kinesis Firehose’, pilih ‘Buat aliran penghantaran baru’
- Dalam ‘Nama aliran penghantaran’ tulis ‘aliran pemantauan jalan’. Biarkan medan lain menjadi lalai dan klik seterusnya
- Sekarang di bawah ‘Transform record records with AWS Lambda’ pilih Enabled, dan ketika fungsi Lambda klik pada ‘road-monitoring-lambda’ yang baru dibuat. Jangan bimbang jika amaran mengenai timeout fungsi muncul, kerana operasi yang kita lakukan tidak mahal. Biarkan medan lain menjadi lalai dan klik seterusnya
- Sebagai destinasi pilih Amazon S3, dan sebagai destinasi S3 pilih Buat Baru. Sebagai nama baldi masukkan 'jalan-pemantauan-baldi' dan kemudian pergi. Sekarang biarkan medan lain menjadi lalai dan klik Seterusnya
- Anda mungkin mahu menetapkan ukuran Buffer ke 1MB dan selang Buffer hingga 60 saat. Penyangga akan dialirkan ke S3 apabila salah satu daripada dua syarat itu dipenuhi. Jangan tinggalkan halaman, lihat langkah seterusnya
Langkah 6: Sediakan Peranan IAM untuk Kinesis
Sekarang kita menetapkan kebenaran keselamatan untuk Kinesis, kerana ia mesti memanggil fungsi Lambda untuk praprosesan dan kemudian akan menulis di S3
- Di bahagian bawah halaman yang anda berada dalam 'peranan IAM' pilih 'Buat baru pilih', buat peranan IAM baru seperti dalam gambar dan klik Benarkan
- Sekarang anda kembali ke halaman sebelumnya, klik seterusnya. Sekarang anda mungkin mahu memeriksa semula semua parameter. Setelah selesai klik pada ‘Buat Aliran Penghantaran’
Saluran paip Kinesis-Lambda-S3 sudah siap dan beroperasi!
Langkah 7: Sediakan AWS EC2
Sekarang kita akan menyediakan contoh EC2 dengan beberapa API yang akan memungkinkan kita untuk mendorong dan menarik data dari awan AWS dan juga pelayan tempat host depan aplikasi kita. Dalam persekitaran pengeluaran, anda mungkin ingin menerbitkan API menggunakan AWS API Gateway yang lebih berskala.
- Dari halaman utama konsol AWS, pergi ke perkhidmatan EC2
- Klik pada Launch Instance
- Di bar carian atas, tampalkan kod ini: ‘ami-08935252a36e25f85’, iaitu kod pengenal mesin maya yang telah dikonfigurasikan untuk digunakan. Klik Pilih di sebelah kanan
- Pilih t2.micro dari lajur ‘Type’ dan klik ‘Review and launch’. Jangan lancarkan contoh, pergi ke langkah seterusnya
Langkah 8: Sediakan Peranan Keselamatan IAM untuk EC2
- Sebelum melancarkan, kami ingin mengubah kumpulan keselamatan contoh kami. Untuk melakukan ini, di bahagian paling kanan bahagian ‘Kumpulan Keselamatan’ klik ‘Edit kumpulan keselamatan’ Siapkan kumpulan keselamatan baru seperti berikut. Ini pada dasarnya mengkonfigurasi firewall contoh anda yang memperlihatkan port 22 untuk sambungan SSH dan port 80 untuk perkhidmatan
- Klik sekali lagi ‘Semak dan Lancarkan’. Sekarang periksa bahawa semua parameter telah ditetapkan. Setelah selesai klik Lancarkan
- Pada klik tetingkap baru akan muncul untuk mengatur pasangan kunci untuk sambungan ssh ke instance. Pilih ‘Buat pasangan kunci baru’ dan sebagai nama masukkan ‘ec2-road-monitoring’. Klik Muat turun pasangan kunci. Sangat penting fail ini hilang atau (lebih teruk) disimpan dengan tidak selamat: anda tidak akan dapat memuat turun kunci lagi. Setelah memuat turun kunci.pem, instance siap dilancarkan
Langkah 9: Akses Instance EC2 Anda
Contoh EC2 baru anda muncul di awan AWS. Anda boleh menyambungnya dengan fail utama yang dimuat turun sebelumnya (untuk tutorial ini kami menganggap bahawa anda mengetahui asas-asas ssh). Anda boleh mengambil IP instance dengan memilihnya di papan pemuka di bahagian ‘Penerangan’ seperti berikut: Anda boleh menggunakan IP awam atau DNS awam anda sama. Dengan pelanggan ssh sekarang masukkan arahan:
ssh -i ec2-road-monitoring.pem ec2-user @ ANDA-IP-ADDR-ATAU-DNS
di mana ec2-road-monitoring.pem adalah kunci anda yang dihasilkan sebelumnya.
Sekarang teruskan kod sisi pelayan
git clone --recursive
Langkah 10: Dapatkan API Peta Google
Kami hampir selesai. Sekarang kita harus menyiapkan API peta google di halaman html kita untuk menampilkan peta dengan titik jalan kepada pengguna:
- Log masuk ke akaun Google anda dan pergi ke
- Klik untuk ‘Bermula’ di sebelah kiri halaman
- Pilih ‘Peta’ di menu dan kemudian klik teruskan
- Sebagai nama projek masukkan 'pemantauan jalan' dan klik Seterusnya
- Masukkan butiran pengebilan anda dan klik Teruskan
- Sekarang projek anda sudah siap dan kami akan mendapatkan kunci API dengan mengklik API & Perkhidmatan -> Kredensial
Langkah 11: Lancarkan Pelayan
Dan itulah kunci API anda. Perkara terakhir yang harus anda lakukan ialah pergi ke data_visualization / anomalies_map.html dan salin kunci anda ke akhir fail seperti itu, menggantikan 'KUNCI ANDA-DI SINI'
Sekarang semuanya sudah siap dan siap untuk digunakan! Untuk membuatnya mula dijalankan dalam contoh EC2: ‘cd data-server’’python flask_app.py’
Masukkan dalam penyemak imbas anda alamat ip atau dns contoh EC2 anda, anda akan melihat peta anomali dengan beberapa data palsu
Langkah 12: Lakukan Integrasi HTTP di Perkara Rangkaian
Sekarang kita telah menjalankan semua infrastruktur backend, kita dapat memproses untuk melakukan integrasi
- Buat aplikasi baru dan daftarkan peranti anda. Kami menganggap pengetahuan asas mengenai TTN, jika tidak merujuk kepada panduan memulakan cepat
- Dalam menu aplikasi anda pilih 'Integrasi' dan kemudian 'tambahkan integrasi'
- Pilih penyatuan
- Masukkan medan berikut gambar dan ganti dengan EC2 ip atau DNS awam anda
Langkah 13: Pemprosesan Data
Untuk setiap tuple data T yang dikumpulkan dari sensor, anda mesti melakukan langkah-langkah berikut:
- Dapatkan sekumpulan tupel yang mempunyai koordinat GPS yang jatuh di kawasan tempatan T. Kawasan setempat adalah semua tupel yang berada 100 meter di sekitar T.
- Untuk setiap tuple N terdekat, hitung min kuadrat bagi paksi pecutan Z di N. Dalam pseudokod: mean = sum ([x. Z_accel ** 2 untuk x in dekat]) / dekat.size
- Hitung sisihan piawai kuasa dua. Dalam pseudocode: std = sum ([(x. Z_accel ** 2 - mean) ** 2 untuk x in dekat])
- Keluaran dalam format ini: lat, long, Z_accel ** 2, mean, std
Untuk mengira kawasan setempat gunakan jarak GPS dalam meter. Dalam C ++:
#tentukan D2R (M_PI / 180.0)
#define EARTH_RAY 6371 jarak berganda (double lat1, double long1, double lat2, double long2) {double dlong = (long2 - long1) * D2R; dlat berganda = (lat2 - lat1) * D2R; double a = pow (sin (dlat / 2.0), 2) + cos (lat1 * D2R) * cos (lat2 * D2R) * pow (sin (dlong / 2.0), 2); berganda c = 2 * atan2 (sqrt (a), sqrt (1-a));
Sekarang, menggunakan data perantaraan yang dihasilkan pada langkah sebelumnya, mengesan anomali dan melakukan klasifikasi naif menggunakan potongan ini yang diterapkan pada setiap baris:
line = peta (terapung, line.split (","))
v = garis [2] min = garis [3] std = garis [4] jika v (min + std * 3): jika v (min + std * 2): jika v (min + std): o.lampirkan ([1, baris [0], baris [1]) lain-lain: o.append ([2, baris [0], baris [1]) lain-lain: o.append ([3, baris [0], garis [1])
Anomali dikelaskan menggunakan peraturan 68–95–99.7
Kini anda mempunyai koleksi dengan format ini [type, lat, long].
Makna jenisnya adalah seperti berikut:
- Anomali sedikit, mungkin tidak berkaitan
- Anomali sederhana
- Anomali kritikal
Langkah 14: Visualisasi
Untuk memahami dan mungkin mengubah bahagian visualisasi, kita mesti belajar bagaimana menggunakan penanda tersuai, ciri API Peta Google
Pertama, peta mesti dilancarkan dalam panggilan balik:
fungsi initMap () {
data = queryData (); map = google.maps. Map baru (document.getElementById ('map'), {zoom: 15, tengah: {lat: data [0] [1], lng: data [0] [2]}}); ucapan (); }
Tentukan nama panggilan balik ini di url (kami masukkan di sini sebelum kunci API kami) dalam tag HTML:
skrip async defer src = "https://maps.googleapis.com/maps/api/js?key=[KEY]&callback=initMap"
Penanda dapat dimasukkan ke dalam peta ketika objek dibuat:
google.maps. Marker baru ({kedudukan: {lat: LATITUDE, lng: LONGITUDE}, peta: peta, ikon: "/path/to/icon.png"})
Anda dapat melihat dalam kod bahawa untuk setiap data dalam set data anomali, penanda dimasukkan (lihat fungsi komentar ()) dan ikon berdasarkan kelas anomali. Ketika menjalankan ini ke penyemak imbas, kita dapat menjelajahi peta di mana anomali dapat disaring menggunakan kotak centang, seperti yang terlihat pada gambar.
Langkah 15: Kredit dan Pautan Luar
Projek ini dibuat oleh Giovanni De Luca, Andrea Fioraldi dan Pietro Spadaccino, MSc tahun pertama dalam bidang Kejuruteraan dalam pelajar Sains Komputer di Sapienza University of Rome.
-
Slaid yang digunakan penulis untuk menunjukkan bukti konsep ini:
www.slideshare.net/PietroSpadaccino/road-m…
-
Repositori GitHub dengan semua kod:
github.com/roadteam
Disyorkan:
Lampu Jalan Automatik Menggunakan Sensor Ultrasonik: 3 Langkah
Lampu Jalan Automatik Menggunakan Sensor Ultrasonik: Adakah anda pernah berfikir bahawa bagaimana lampu jalan secara automatik menyala pada waktu malam dan MATI secara automatik pada waktu pagi? Adakah terdapat orang yang menghidupkan / mematikan lampu ini? Terdapat beberapa cara untuk menyalakan lampu jalan tetapi berikut
Lampu Jalan Automatik Tenaga Suria DIY: 3 Langkah
Lampu Jalan Automatik DIY Solar Powered: Rumah saya terletak di kawasan luar bandar, jadi jalan di depan rumah saya benar-benar gelap apabila tidak ada cahaya sama sekali. Jadi di sini saya membuat lampu jalan berkuasa solar yang secara automatik menyala ketika matahari terbenam dan mati pada waktu matahari terbit. Ia menggunakan panel solar sebagai
Skate Sepanjang Jalan !: 4 Langkah
Skate Sepanjang Jalan !: Pengenalan: Oleh kerana kebanyakan daripada anda gemar bermain luncur dan kami tahu bahawa meluncur memang sukar. Anda perlu mengimbangkan diri anda untuk menaiki papan dan anda juga memerlukan banyak kekuatan untuk mendorong papan luncur menggunakan kaki kiri atau kanan anda. Dalam generasi ini
Lampe Pentagonale (à L'arrache). Lampu Pentagonal (Jalan Kemarau) .: 6 Langkah
Lampe Pentagonale (à L'arrache). Lampu Pentagonal (Jalan Rought): Fran ç ais: Inspir é e par cet diarahkan: 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
JALAN RAYA: 5 Langkah
ROADRUNNER: Roadrunner adalah kenderaan automatik kecil, yang mempunyai fungsi mengangkut tin minuman kepada pengguna yang kehausan. Bagaimana ia berfungsi? Kaleng diletakkan di pangkalan atas kenderaan, dan berat kaleng memicu butang kecil yang memberitahu