Daftar Isi:
- Langkah 1: Persyaratan
- Langkah 2: Membangun dan Mem-flash Firmware Sensor
- Langkah 3: Menyiapkan Cloud
- Langkah 4: Siapkan AWS Lambda
- Langkah 5: Siapkan Aliran Data AWS Kinesis Firehose
- Langkah 6: Siapkan Peran IAM untuk Kinesis
- Langkah 7: Siapkan AWS EC2
- Langkah 8: Siapkan Peran Keamanan IAM untuk EC2
- Langkah 9: Akses Instans EC2 Anda
- Langkah 10: Ambil Google Maps API
- Langkah 11: Luncurkan Server
- Langkah 12: Lakukan Integrasi HTTP di Jaringan Hal
- Langkah 13: Pemrosesan Data
- Langkah 14: Visualisasi
- Langkah 15: Kredit dan Tautan Eksternal
Video: Pemantauan Jalan: 15 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:56
Hari ini kami akan menunjukkan cara kami menyiapkan sistem pemantauan anomali jalan berdasarkan akselerometer, LoRaWAN, Amazon Web Services, dan Google Cloud API.
Langkah 1: Persyaratan
- Papan DISCO-L072CZ-LRWAN1
- Modul ekspansi X-NUCLEO-IKS01A2 (untuk akselerometer)
- X-NUCLEO-GNSS1A1 (untuk lokalisasi)
- Akun AWS
- Akun Google Cloud Platform
Langkah 2: Membangun dan Mem-flash Firmware Sensor
Hubungkan IKS01A2 dan GNSS1A1 di atas papan melalui pin GPIO. Unduh kode firmware dari GitHub. Buat (jika Anda belum memilikinya) akun di ARM Mbed dan impor kode di repo di kompiler online. Atur platform target ke DISCO-L072CZ-LRWAN1 dan simpan proyek. Sekarang buka The Things Network dan buat akun jika Anda belum memilikinya. Buat aplikasi, buat perangkat baru di dalam aplikasi dan atur mode koneksi ke OTAA. Ambil parameter yang sesuai untuk mengisi bidang berikut di file mbed_app.json: "lora.appskey", "lora.nwkskey", "lora.device-address".
Sensor akan merekam data akselerometer dan GNSS secara berkala dan mengirimkannya melalui koneksi LoRa ke gateway terdekat, yang akan meneruskannya ke aplikasi kita di The Things Network. Langkah selanjutnya adalah menyiapkan server cloud, dan integrasi HTTP di TTN.
Langkah 3: Menyiapkan Cloud
Sekarang kami siap untuk menyiapkan infrastruktur cloud yang akan mengumpulkan dan menggabungkan data dari semua papan yang digunakan. Infrastruktur ini ditunjukkan pada gambar di bawah ini dan disusun oleh:
- Kinesis, untuk menangani aliran data yang masuk;
- Lambda, untuk memfilter dan memproses data terlebih dahulu sebelum menyimpannya;
- S3, untuk menyimpan semua data;
- EC2, untuk menganalisis data dan menjadi host front-end kami.
Langkah 4: Siapkan AWS Lambda
Kami akan mengilustrasikan langkah-langkah yang diperlukan untuk menyiapkan infrastruktur ini, dimulai dengan Lambda.
- Masuk dengan akun AWS Anda, dan dari halaman utama konsol dan buka Lambda
- Klik Buat Fungsi
- Di bagian atas halaman harus dipilih Penulis dari Awal. Kemudian lengkapi kolom lainnya seperti pada gambar lalu klik Create Function
- Sekarang setelah Anda membuat fungsi AWS Lambda, buka https://github.com/roadteam/data-server dan salin konten file aws_lambda.py ke editor yang Anda temukan di paruh kedua halaman. Fungsi Lambda Anda sekarang siap:)
Langkah 5: Siapkan Aliran Data AWS Kinesis Firehose
- Kembali sekarang ke halaman utama konsol AWS, dan ke Layanan, buka Kinesis
- Sekarang Anda berada di halaman utama Kinesis. Di sebelah kanan halaman, di bawah 'Aliran pengiriman Kinesis Firehose', pilih 'Buat aliran pengiriman baru'
- Di 'Nama aliran pengiriman' tulis 'aliran pemantauan jalan'. Biarkan bidang lain ke default dan klik berikutnya
- Sekarang di bawah 'Transform source records with AWS Lambda' pilih Enabled, dan sebagai fungsi Lambda klik pada 'road-monitoring-lambda' yang baru dibuat. Jangan khawatir jika peringatan tentang batas waktu fungsi muncul, karena operasi yang kita lakukan tidak mahal secara komputasi. Biarkan bidang lain ke default dan klik berikutnya
- Sebagai tujuan pilih Amazon S3, dan sebagai tujuan S3 pilih Buat Baru. Sebagai nama bucket masukkan 'road-monitoring-bucket' dan kemudian pergi. Sekarang biarkan bidang lain ke default dan klik Berikutnya
- Anda mungkin ingin mengatur ukuran Buffer menjadi 1MB dan interval Buffer menjadi 60 detik. Buffer akan di-flush ke S3 setiap kali salah satu dari dua kondisi terpenuhi. Jangan tinggalkan halaman, lihat langkah selanjutnya
Langkah 6: Siapkan Peran IAM untuk Kinesis
Sekarang kami mengatur izin keamanan untuk Kinesis, karena itu harus memanggil fungsi Lambda untuk pra-pemrosesan dan kemudian akan menulis di S3
- Di bagian bawah halaman tempat Anda berada di 'peran IAM' pilih 'Buat pilihan baru', buat peran IAM baru seperti pada gambar dan klik Izinkan
- Sekarang anda kembali ke halaman sebelumnya, klik next. Sekarang Anda mungkin ingin memeriksa ulang semua parameter. Setelah selesai klik 'Buat Aliran Pengiriman'
Pipeline Kinesis-Lambda-S3 aktif dan berjalan!
Langkah 7: Siapkan AWS EC2
Sekarang kita akan menyiapkan instans EC2 dengan beberapa API yang memungkinkan kita untuk mendorong dan menarik data dari AWS cloud dan juga server tempat menghosting frontend aplikasi kita. Di lingkungan produksi, Anda mungkin ingin memublikasikan API menggunakan AWS API Gateway yang lebih skalabel.
- Dari halaman utama konsol AWS, buka layanan EC2
- Klik pada Peluncuran Instance
- Di bilah pencarian atas rekatkan kode ini: 'ami-08935252a36e25f85', itu adalah kode pengenal mesin virtual yang telah dikonfigurasi sebelumnya untuk digunakan. Klik Pilih di sebelah kanan
- Pilih t2.micro dari kolom 'Jenis' dan klik 'Tinjau dan luncurkan'. Jangan luncurkan instance, lanjutkan ke langkah berikutnya
Langkah 8: Siapkan Peran Keamanan IAM untuk EC2
- Sebelum meluncurkan, kami ingin memodifikasi grup keamanan instance kami. Untuk melakukan ini, di ujung kanan bagian 'Grup Keamanan' klik 'Edit grup keamanan' Siapkan grup keamanan baru sebagai berikut. Ini pada dasarnya mengonfigurasi firewall instance Anda yang mengekspos port 22 untuk koneksi SSH dan port 80 untuk layanan
- Klik lagi 'Tinjau dan Luncurkan'. Sekarang periksa apakah semua parameter sudah diatur. Setelah selesai klik Luncurkan
- Saat klik, jendela baru akan muncul untuk menyiapkan pasangan kunci untuk koneksi ssh ke instance. Pilih 'Buat pasangan kunci baru' dan sebagai nama masukkan 'ec2-road-monitoring'. Klik Unduh pasangan kunci. Sangat penting bahwa file ini hilang atau (lebih buruk) disimpan dengan tidak aman: Anda tidak akan dapat mengunduh kunci lagi. Setelah mengunduh kunci.pem, instance siap diluncurkan
Langkah 9: Akses Instans EC2 Anda
Instans EC2 baru Anda tersedia di cloud AWS. Anda dapat menghubungkannya dengan file kunci yang diunduh sebelumnya (untuk tutorial ini kami berasumsi bahwa Anda mengetahui dasar-dasar ssh). Anda dapat mengambil IP instance dengan memilihnya di dasbor di bagian 'Deskripsi' sebagai berikut: Anda dapat menggunakan IP publik atau DNS publik Anda sama. Dengan klien ssh sekarang masukkan perintah:
ssh -i ec2-road-monitoring.pem ec2-user@YOUR-IP-ADDR-OR-DNS
di mana ec2-road-monitoring.pem adalah kunci Anda yang dibuat sebelumnya.
Sekarang lanjutkan untuk menarik kode sisi server melalui
git clone --recursive
Langkah 10: Ambil Google Maps API
Kami hampir selesai. Sekarang kita harus menyiapkan Google Maps API di halaman html kita untuk menampilkan peta dengan titik arah kepada pengguna:
- Masuk ke akun Google Anda dan buka
- Klik untuk 'Memulai' di sebelah kiri halaman
- Pilih 'Peta' di menu lalu klik lanjutkan
- Sebagai nama proyek, masukkan 'pemantauan jalan' dan klik Berikutnya
- Masukkan detail tagihan Anda dan klik Lanjutkan
- Sekarang proyek Anda sudah siap dan kami akan mendapatkan kunci API dengan mengklik API & Layanan -> Kredensial
Langkah 11: Luncurkan Server
Dan itu dia kunci API Anda. Hal terakhir yang harus Anda lakukan adalah pergi ke data_visualization/anomalies_map.html dan salin kunci Anda ke akhir file seperti itu, ganti dengan 'KUNCI-KAU-DI SINI'
Sekarang semuanya sudah siap dan siap untuk pergi! Untuk membuatnya mulai dijalankan di instance EC2: 'cd data-server' 'python flask_app.py'
Masukkan di browser Anda alamat ip atau dns instance EC2 Anda, Anda akan melihat peta anomali dengan beberapa data dummy
Langkah 12: Lakukan Integrasi HTTP di Jaringan Hal
Sekarang kami memiliki semua infrastruktur backend dan berjalan, kami dapat memproses untuk melakukan integrasi
- Buat aplikasi baru dan daftarkan perangkat Anda. Kami mengasumsikan pengetahuan dasar TTN, jika tidak merujuk ke panduan memulai cepat
- Di menu aplikasi Anda pilih 'Integrasi' dan kemudian 'tambahkan integrasi'
- Pilih integrasi
- Masukkan bidang yang mengikuti gambar dan ganti dengan ip EC2 atau DNS publik Anda
Langkah 13: Pemrosesan Data
Untuk setiap tuple data T yang dikumpulkan dari sensor, Anda harus melakukan langkah-langkah berikut:
- Dapatkan kumpulan tupel yang memiliki koordinat GPS yang jatuh di area lokal T. Area lokal adalah semua tupel yang berada 100 meter di sekitar T.
- Untuk setiap tupel terdekat N, hitung rata-rata kuadrat dari akselerometer sumbu Z di N. Dalam kodesemu: mean = sum ([x. Z_accel ** 2 for x in near]) / near.size
- Hitung simpangan baku kuadrat. Dalam pseudocode: std = sum ([(x. Z_accel ** 2 - mean) ** 2 untuk x di dekat])
- Output dalam format ini: lat, long, Z_accel **2, mean, std
Untuk menghitung area lokal menggunakan jarak GPS dalam meter. Dalam 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; dlat ganda = (lat2 - lat1) * D2R; double a = pow(sin(dlat/2.0), 2) + cos(lat1*D2R) * cos(lat2*D2R) * pow(sin(dlong/2.0), 2); ganda c = 2 * atan2(persegi(a), kuadrat(1-a));
Sekarang, dengan menggunakan data perantara yang dihasilkan pada langkah sebelumnya, deteksi anomali dan lakukan klasifikasi naif menggunakan potongan yang diterapkan pada setiap baris:
garis = peta(mengambang, garis.split(", "))
v = line[2] mean = line[3] std = line[4] if v (mean + std*3): if v (mean + std*2): if v (mean + std): o.append([1, baris[0], baris[1]) lain: o.append([2, baris[0], baris[1]) lain: o.append([3, baris[0], baris[1])
Anomali diklasifikasikan menggunakan aturan 68–95–99.7
Sekarang Anda memiliki koleksi dengan format ini [type, lat, long].
Arti dari jenis adalah sebagai berikut:
- Sedikit anomali, mungkin tidak relevan
- Anomali sedang
- Anomali kritis
Langkah 14: Visualisasi
Untuk memahami dan mungkin mengubah bagian visualisasi, kita harus mempelajari cara menggunakan penanda khusus, fitur Google Maps API
Pertama, peta harus diinisialisasi dalam panggilan balik:
fungsi initMap() {
data = queryData(); peta = new google.maps. Map(document.getElementById('map'), { zoom: 15, center: {lat: data[0][1], lng: data[0][2]} }); komentar(); }
Tentukan nama panggilan balik ini di url (kami sisipkan di sini sebelum kunci API kami) dalam tag HTML:
Penanda dapat dimasukkan ke dalam peta saat objek dibuat:
google.maps. Marker baru ({ posisi: {lat: LATITUDE, lng: LONGITUDE}, peta: peta, ikon: “/path/ke/icon.png” })
Anda dapat melihat dalam kode bahwa untuk setiap data dalam kumpulan data anomali, penanda disisipkan (lihat fungsi komentar()) dan ikon didasarkan pada kelas anomali. Saat menjalankan ini ke browser, kita dapat menjelajahi peta di mana anomali dapat difilter menggunakan kotak centang, seperti yang terlihat pada gambar.
Langkah 15: Kredit dan Tautan Eksternal
Proyek ini dibuat oleh Giovanni De Luca, Andrea Fioraldi dan Pietro Spadaccino, tahun pertama MSc dalam mahasiswa Teknik dalam Ilmu Komputer di Universitas Sapienza Roma.
-
Slide yang digunakan penulis untuk menyajikan bukti konsep ini:
www.slideshare.net/PietroSpadaccino/road-m…
-
Repo GitHub dengan semua kode:
github.com/roadteam
Direkomendasikan:
Lampu Jalan Otomatis Menggunakan Sensor Ultrasonik: 3 Langkah
Lampu Jalan Otomatis Menggunakan Sensor Ultrasonik: Pernahkah Anda berpikir bahwa lampu jalan otomatis ON di malam hari dan mati otomatis di pagi hari? Apakah ada orang yang datang untuk ON/OFF lampu ini? Ada beberapa cara untuk menyalakan lampu jalan tapi berikut c
Penerangan Jalan Otomatis Tenaga Surya DIY: 3 Langkah
Penerangan Jalan Otomatis Tenaga Surya DIY: Rumah saya terletak di daerah pedesaan, jadi jalan di depan rumah saya benar-benar gelap ketika tidak ada cahaya sama sekali. Maka disini saya membuat lampu jalan bertenaga surya yang otomatis menyala saat matahari terbenam dan mati saat matahari terbit. Ini menggunakan panel surya sebagai
Skate Sepanjang Jalan!: 4 Langkah
Skate Sepanjang Jalan!: Pendahuluan: Karena sebagian besar dari kalian menyukai skating dan kami tahu bahwa skating cukup sulit. Anda perlu menyeimbangkan diri untuk naik papan dan juga Anda membutuhkan banyak kekuatan untuk mendorong skateboard menggunakan kaki kiri atau kanan Anda. Di generasi ini
Sistem Pencahayaan Jalan Pintar- Tim Sailor Moon: 12 Langkah
Sistem Pencahayaan Jalan Pintar- Tim Sailor Moon: Hai! Ini Grace Rhee, Srijesh Konakanchi, dan Juan Landi, dan bersama-sama kita adalah Tim Sailor Moon! Hari ini kami akan membawakan Anda proyek DIY dua bagian yang dapat Anda terapkan langsung di rumah Anda sendiri. Sistem penerangan jalan pintar terakhir kami mencakup berbagai
Lampe Pentagonale (à, L'arrache). Lampu Pentagonal (Jalan Kanan).: 6 Langkah
Lampe Pentagonale (à, L'arrache). Pentagonal Lamp (Rought Way).: Français: Inspir&e par cet dapat diinstruksikan: 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