Sistem Deteksi Jatuh Canggih dengan Arduino, Windows IoT, dan Azure Cloud
Komponen dan Perlengkapan
Arduino UNO — 1 unit
HC-06 Bluetooth Module — 1 unit
Adafruit ADXL345 accelerometer module — 1 unit
Kabel jumper male-male dan male-female — 1 set
Mini-breadboard — 1 unit
Lumia 1520 atau perangkat Windows Phone 10 kompatibel lainnya — 1 unit
ORICO Bluetooth module — 1 unit
Aplikasi dan Layanan Online
Microsoft Windows 10 IoT Core
Microsoft Azure
Microsoft Visual Studio 2015
Arduino IDE
Tentang Proyek Ini
Pendahuluan:
Jatuh yang menyebabkan cedera fatal telah menjadi tantangan besar yang tidak dapat diabaikan untuk orang lanjut usia. Dalam beberapa tahun terakhir, berbagai pendekatan telah diusulkan di area deteksi jatuh, yang dapat dijelaskan dan dikategorikan menjadi tiga tipe: berbasis perangkat wearable, berbasis sensor lingkungan, dan berbasis visi [1]. Pertama, perangkat wearable biasanya memanfaatkan sensor tertanam untuk mendeteksi gerakan dan lokasi tubuh, seperti akselerometer, magnetometer, dan giroskop [2, 3]. Dan biaya pendekatan berbasis perangkat wearable cukup rendah, serta pemasangan dan operasinya tidak rumit bagi orang lanjut usia. Kedua, pendekatan berbasis lingkungan selalu menggunakan sensor tekanan untuk mendeteksi dan melacak tubuh. Solusi ini juga hemat biaya dan mudah diterapkan [4, 5]. Namun, kemungkinan mendeteksi objek selain tubuh manusia menantang akurasi deteksi pendekatan ini. Terakhir tetapi tidak kurang penting, solusi berbasis visi memanfaatkan kamera yang tersedia untuk memantau semua objek dalam jangkauan, termasuk tubuh manusia [6, 7]. Ada lebih sedikit intrusi ke dalam kehidupan sehari-hari orang daripada dua pendekatan di atas, sementara ruang observasi terbatas dan pemantauan seragam tidak dapat tercapai.
Dalam proyek ini, sistem pengawasan berbasis Arduino, Windows 10, dan Microsoft Azure untuk deteksi jatuh real-time diusulkan. Data mentah akselerometer tiga dimensi disediakan oleh Arduino dengan ADXL345. Perangkat Windows 10 menggunakan informasi ini untuk mendapatkan orientasi subjek melalui fussi data efisien dan algoritma deteksi jatuh. Layanan Microsoft Azure dan aplikasi Mobile/PC juga dirancang untuk mencapai pemrosesan data, analisis, penyimpanan, dan pengambilan yang lancar kapan saja dari mana saja selama mereka memiliki akses ke Internet. Arsitektur sistem ditunjukkan pada Gambar 1 sebagai berikut.
Referensi
[1] L. Jian dan T. E. Lockhart, "Development and Evaluation of a Prior-to-Impact Fall Event Detection Algorithm," Biomedical Engineering, IEEE Transactions on, vol. 61, pp. 2135-2140, 2014.
[2] P. Pierleoni, A. Belli, L. Palma, M. Pellegrini, L. Pernini, dan S. Valenti, "A High Reliability Wearable Device for Elderly Fall Detection," Sensors Journal, IEEE, vol. 15, pp. 4544-4553, 2015.
[3] R. Freitas, M. Terroso, M. Marques, J. Gabriel, A. Torres Marques, dan R. Simoes, "Wearable sensor networks supported by mobile devices for fall detection," in SENSORS, 2014 IEEE, 2014, pp. 2246-2249.
[4] Z. Xiaodan, H. Jing, G. Potamianos, dan M. Hasegawa-Johnson, "Acoustic fall detection using Gaussian mixture models and GMM supervectors," in Acoustics, Speech and Signal Processing, 2009. ICASSP 2009. IEEE International Conference on, 2009, pp. 69-72.
[5] L. Yun, K. C. Ho, dan M. Popescu, "Efficient Source Separation Algorithms for Acoustic Fall Detection Using a Microsoft Kinect," Biomedical Engineering, IEEE Transactions on, vol. 61, pp. 745-755, 2014.
[6] M. Yu, S. M. Naqvi, A. Rhuma, dan J. Chambers, "One class boundary method classifiers for application in a video-based fall detection system," Computer Vision, IET, vol. 6, pp. 90-100, 2012.
[7] E. E. Stone dan M. Skubic, "Fall Detection in Homes of Older Adults Using the Microsoft Kinect," Biomedical and Health Informatics, IEEE Journal of, vol. 19, pp. 290-301, 2015.
Prinsip Deteksi Jatuh dengan Pengenalan Postur
Dalam proyek ini, algoritma deteksi jatuh dirancang menurut Bharadwaj Sreenivasan‘s Fall-detection-in-Android. Ada dua modul dalam algoritma, pengenalan postur dan deteksi jatuh. Pertama, kita membaca nilai x, y, dan z dari akselerometer. Kemudian kita menghitung norm L2 dari x, y, dan z. Ini digunakan oleh modul pengenalan postur dan deteksi jatuh.
Dalam modul pengenalan postur, postur pengguna diklasifikasikan menjadi tiga postur dasar: duduk, berdiri, dan berjalan. Nilai “y” diterapkan ambang batas untuk menemukan orientasi. Menggunakan laju variasi norm L2 terhadap percepatan gravitasi rata-rata (9.8) kita mengklasifikasikan data menjadi berjalan atau hanya transisi antara keadaan.
Modul deteksi jatuh mencari pola tertentu dalam sinyal. Gambar 2 mewakili pola tipikal dalam norm L2 selama peristiwa jatuh.
Jika selisih antara minima dan maksimumnya berurutan lebih besar dari 2g, output diputuskan sebagai jatuh. Keputusan akhir pada peristiwa jatuh didasarkan pada output dari kedua modul pengenalan postur dan deteksi jatuh. Ketika jatuh terdeteksi, keputusan dari modul pengenalan postur memberitahu kami apakah itu alarm palsu. Jika keadaan masih berjalan, keputusan peristiwa jatuh dapat diabaikan. Tabel 1 merangkum keputusan akhir.
Prasyarat
Dalam proyek ini, untuk perangkat Arduino, komunikasi Bluetooth dicapai oleh HC-06, yaitu modul yang murah, kecil dalam kemasan. Untuk perangkat windows 10, jika Anda menggunakan Surface Pro dan Lumia 1520, Anda tidak akan memerlukan modul Bluetooth. Namun, jika Anda menggunakan Raspberry Pi atau MBM sebagai perangkat Windows 10 IoT, Anda akan memerlukan dongle Bluetooth. Lihat ke MVP David Jones’s Generic Serial Bluetooth with Win 10 IoT-Core RPI2 untuk menyiapkan lingkungan.
Catatan: Akan membutuhkan waktu 2-3 jam untuk menyelesaikan prasyarat jika Anda belum menyiapkan Windows 10 dan Visual Studio 2015 tetapi sebagian besar waktu itu tidak dihadiri.
Apa yang Anda Butuhkan
Bagian:
1. Arduino Uno dan kabel USB standar A/B
2. Modul Bluetooth HC-06
3. Modul akselerometer ADXL345
4. Kabel jumper male-male dan male-female
5. Mini-breadboard
6. Lumia 1520 atau perangkat Windows Phone 10 kompatibel lainnya
7. Modul Bluetooth ORICO
Instruksi Proyek
Langkah 1: Hubungkan modul akselerometer ADXL345 ke Arduino
Waktu: 5 menit
Bagian: Arduino Uno R3, ADXL345, kabel jumper, mini-breadboard
Alat: N/A
ADXL345 adalah akselerometer MEMS 3-sum kecil, tipis, daya rendah dengan resolusi tinggi (13-bit) pengukuran hingga +-16 g. Data output digital diformat sebagai twos complement 16-bit dan dapat diakses melalui antarmuka digital SPI (3- atau 4-kabel) atau I2C.
ADXL345 mendukung SPI dan I2C, kita hanya akan berbicara I2C di sini dalam proyek ini. I2C adalah koneksi serial 2-kabel, jadi kita perlu menghubungkan garis SDA (Data) dan SCL (Clock) ke Arduino UNO untuk komunikasi. Pada Arduino UNO, SDA ada pada pin analog 4, dan SCL ada pada pin analog 5. Pastikan VCC dan pin CS pada sensor terhubung ke 3.3v. Kita menghubungkan CS ke 3.3V untuk memberi tahu sensor bahwa kita akan menggunakannya sebagai perangkat I2C, dan bukan perangkat SPI.
Langkah 2: Hubungkan modul Bluetooth
Waktu: 5 menit
Bagian: Modul Bluetooth, kabel jumper
Alat: N/A
Dalam proyek ini, kita menggunakan HC-06 sebagai modul Bluetooth - ini jauh lebih murah daripada modul BlueSMiRF Silver dari SparkFun. Selain itu, HC-05 memiliki firmware 'lengkap' di dalamnya, banyak perintah AT, dan dapat menjadi modul master dan slave. Firmware HC-06 di sisi lain hanya dapat menjadi perangkat slave, dengan perintah AT yang sangat terbatas. Tabel di bawah ini menunjukkan semua perintah firmware HC-06 dengan responsnya:
Pertama-tama, colokkan modul Bluetooth ke breadboard untuk memudahkan koneksi. Untuk menyediakan daya pada modul, jalankan kabel jumper dari rel daya 5V Arduino ke pin Vcc modul. Dan jalankan kabel jumper male-male dari pin GND modul ke salah satu pin GND pada Arduino. Untuk membangun komunikasi serial, hubungkan kabel jumper male-male dari pin TX modul Bluetooth ke pin RX Arduino (pin digital 0) dan yang lain dari pin RX modul ke pin TX Arduino (pin digital 1).
Catatan: Anda tidak akan dapat mengunggah sketsa dari IDE Arduino ke Arduino ketika pin TX dan RX Bluetooth terhubung ke Arduino. Putuskan koneksi mereka saat Anda perlu mengunggah sketsa dan hubungkan kembali setelah sketsa berhasil diunggah. Dalam sketsa di bawah, ditunjukkan bahwa HC-05 digunakan. Seperti yang dijelaskan di atas, baik HC-05 maupun HC-06 baik-baik saja.
Setelah koneksi Bluetooth dan akselerometer, hal yang sebenarnya terlihat seperti ini:
Langkah 3: Pasangkan modul Bluetooth dengan Perangkat Windows 10
Waktu: 5 menit
Bagian: Modul Bluetooth, Perangkat Windows 10, Modul Bluetooth ORICO (Opsional)
Alat: N/A
Modul Bluetooth menjalankan protokol SPP (Serial Protocol over Bluetooth). Jadi setiap perangkat yang mendukung SPP dapat terhubung padanya. Pada perangkat Windows 10, ini terlihat seperti port COM virtual. Sebelum terhubung, pastikan modul menyala dan siap dipasangkan. LED merah pada modul menunjukkan status: berkedip berarti “siap dipasangkan”, sementara menyala konstan berarti “terpasangkan”.
Pada Windows 10 untuk PC, cukup buka Settings->Devices->Bluetooth, nyalakan Bluetooth, dan modul “HC-06” akan ditampilkan di layar. Ketuk untuk memasangkan perangkat, dan masukkan kode pasangan perangkat. Harap ingat bahwa kode pasangan default adalah 1234, dan kecepatan port serial default adalah 9600 Baud. Kemudian, halaman Bluetooth terlihat seperti ini:
Untuk Windows 10 untuk Mobile, buka Settings->Devices->Bluetooth, dan lakukan langkah-langkah yang sama yang dijelaskan di bagian di atas. Dan halaman perangkat yang dipasangkan terlihat seperti ini:
Untuk perangkat Windows 10 IoT Core, misalnya Raspberry Pi 2, MBM dan Dragon Board 410c, proses pemasangan sangat berbeda. Pertama, untuk Raspberry Pi 2 dan MBM yang tidak memiliki modul Bluetooth papan, kita harus membeli dongle Bluetooth USB dan colokkan. Cukup lihat Daftar Kompatibilitas Hardware dan pilih dongle Bluetooth USB yang terverifikasi.
Dalam proyek ini, kami memilih modul ORICO BTA-403.
Jika Anda mencoba proyek ini pada Dragon Board 410c, maka Anda tidak memerlukan dongle Bluetooth karena Dragon Board 410c memiliki modul Bluetooth papan.
Colokkan dongle Bluetooth USB ORICO BTA-403 ke antarmuka USB Raspberry Pi 2 seperti berikut.
Setelah dongle Bluetooth USB ORICO BTA-403 di colokkan, itu akan menampilkan pesan pada layar aplikasi default perangkat Windows 10 IoT Core.
Untuk pemasangan Bluetooth pada perangkat Windows 10 IoT Core, lihat halaman Pairing a BLE Device and GATT Attribute Table Dump Tool dan ikuti “Langkah 1 – Langkah 6” yang dijelaskan di bagian “Pairing the Sensortag”. Di sini kita harus menggunakan SSH untuk terhubung ke Windows IoT Core dan menjalankan alat baris perintah untuk mengonfigurasi perangkat.
Catatan: ingat bahwa mode BR harus dipilih di Menu Utama. Dan kode pasangan default adalah 1234.
Setelah pemasangan berhasil, Halaman Bluetooth perangkat terlihat seperti ini:
Langkah 4: Buat Akun Azure Storage
Waktu: 10 menit
Bagian: N/A
Alat: Akun Azure
Dalam proyek ini, kita akan memerlukan Azure Storage Table untuk menyimpan data dari perangkat Windows 10 IoT Core. Jadi, kita dapat membuatnya sebagai berikut.
(1) Di Portal Manajemen Azure (https://manage.windowsazure.com), klik ikon “STORAGE” di sisi kiri untuk melihat akun penyimpanan Anda yang ada (jika ada), kemudian klik tombol “+NEW” di sudut kiri bawah.
(2) Di panel “NEW”, pilih “DATA SERVICES” | “STORAGE” | “QUICK CREATE”. Lengkapi bidang “URL, Location/Affinity Group and Replication”, kemudian klik tombol “CREATE STORAGE ACCOUNT”.
(3) Tunggu hingga status akun penyimpanan baru menunjukkan “Online”.
(4) Pilih akun Storage yang baru dibuat, kemudian klik MANAGE ACCESS KEYS di bagian bawah halaman. Salin nama akun Storage dan salah satu kunci akses.
Langkah 5: Buat Azure Storage Table
Kami menggunakan Azure Storage Explorer (Alat open source pihak ketiga yang tersedia di codeplex: https://azurestorageexplorer.codeplex.com) untuk membuat Azure Storage Table.
(1) Pergi ke add account dan isi nama akun dan kunci akses. Setelah akun terbentuk, Anda dapat mengakses penyimpanan yang menunjukkan blob containers, Queues dan tables.
(2) Pilih tabel dan klik tombol baru dan buat tabel baru bernama “Accelerometer Table” sebagai berikut.
Langkah 5: Unduh dan Terapkan Kode
Waktu: 10 menit
Bagian: N/A
Alat: N/A
Pertama-tama, sekarang setelah semua sudah dihubungkan untuk Arduino, unduh proyek “ADXL345_HC06.ino” dari (disediakan di bagian kode di bawah) dan muat ke dalam IDE Arduino di PC Anda. Pastikan untuk mencabut kabel jumper TX/RX modul HC-06 dan kemudian unggah sketsa. Hubungkan kembali kabel jumper TX/RX ke pin digital 0 dan digital 1 Arduino. Colokkan daya dan aplikasi akan berjalan pada Arduino Uno.
Kedua, unduh proyek “GenericBluetoothSerialUWApp” dari github. Gunakan Visual Studio 2015 dengan Update 1 untuk memuat “GenericBluetoothSerialUWApp”. Aplikasi ini dirancang dengan bantuan MVP David Jones’s Generic Serial Bluetooth with Win 10 IoT-Core RPI2. Jika Anda ingin aplikasi UWP ini berjalan di PC, pilih x86 atau x64 dengan debugging perangkat lokal. Jika Anda ingin aplikasi UWP ini berjalan di Windows 10 Mobile, pilih ARM dengan Device debugging. Jika Anda ingin aplikasi UWP ini berjalan di perangkat Windows 10 IoT, misalnya Raspberry Pi 2, pastikan Anda menetapkan “Remote Debugging” ke perangkat Anda.
Selanjutnya, buka MainPage.xaml.cs di Solution Explorer dan cari “dataTransferTick”. Tambahkan nama akun penyimpanan dan kunci akses Anda yang disimpan di bagian 4.
Setelah memasangkan HC-06 dengan perangkat Windows 10 Anda, tekan F5 dari Visual Studio untuk meluncurkan aplikasi Universal Windows Platform.
Klik dua kali simbol “HC-06”, Anda akan menemukan Id dan Name ditampilkan di bagian atas aplikasi sebagai berikut.
Segera, Anda akan melihat bahwa status LED pada HC-06 akan berubah dari berkedip menjadi konstan. Dan tombol “Start Rev” diaktifkan segera setelah saluran komunikasi modul Bluetooth terbentuk.
Klik Start Recv untuk mengaktifkan penerimaan data. Kemudian Anda akan melihat tombol Stop Recv, Process Data dan Upload Data diaktifkan. Cukup klik tombol Process data untuk menjalankan algoritma deteksi jatuh. Anda akan melihat data pada Recvd TextBlock dan keadaan orang yang membawa perangkat.
Anda masih dapat menemukan data akan ditampilkan pada jendela debug Visual Studio sebagai berikut.
Kemudian, klik tombol Upload untuk mengunggah data ke Azure. Data akan ditransmisikan setiap 3 detik. Jika Anda ingin mengubah interval waktu, Anda dapat memodifikasi kode di “AzureButton_Click” sebagai berikut.
Segera, Anda dapat melihat data di AccelerometerTable sebagai berikut
Ketiga, unduh “FallDetectionClient” dari github. Gunakan Visual Studio 2015 dengan Update 1 untuk memuat proyek ini. Aplikasi ini dibangun dengan Windows Universal Temple, jadi Anda dapat menjalankannya di Windows 10 PC/Mobile, serta perangkat Windows 10 IoT Core. Selanjutnya, buka StorageSensor.cs di Solution Explorer dan cari “_accountName” dan “_key”. Tambahkan nama akun penyimpanan dan kunci akses Anda yang disimpan di bagian 4.
Sekarang Anda seharusnya dapat menekan F5 dari Visual Studio: Aplikasi akan diterapkan dan dimulai, dan Anda harus melihat ini pada output perangkat.
Berkomunikasi dengan Arduino melalui Bluetooth HC-06 dan mengirim data ADXL345 ke Azure: https://github.com/shijiong/FallDetection/tree/master/GenericBluetoothSerialUWApp
FallDetectionClient
Aplikasi klien UWP untuk Deteksi Jatuh: https://github.com/shijiong/FallDetection/tree/master/FallDetectionClient
Skematik
ADXL345 + HC-06Complete%20Schematic.fzzSketch untuk Koneksi ADXL345ADXL345.fzzSketch untuk Koneksi Modul Bluetoothhc-06.fzz