Daftar Isi:

Monitor Detak Jantung IOT (ESP8266 dan Aplikasi Android): 5 Langkah
Monitor Detak Jantung IOT (ESP8266 dan Aplikasi Android): 5 Langkah

Video: Monitor Detak Jantung IOT (ESP8266 dan Aplikasi Android): 5 Langkah

Video: Monitor Detak Jantung IOT (ESP8266 dan Aplikasi Android): 5 Langkah
Video: IoT based Patient monitoring System using ESP8266, Arduino & Android Bluetooth App 2024, Juli
Anonim
Image
Image

Sebagai bagian dari proyek tahun terakhir saya, saya ingin merancang perangkat yang akan memantau detak jantung Anda, menyimpan data Anda di server dan memberi tahu Anda melalui pemberitahuan ketika detak jantung Anda tidak normal. Ide di balik proyek ini muncul ketika saya mencoba membangun aplikasi fit-bit yang memberi tahu pengguna ketika mereka mengalami masalah jantung, tetapi saya tidak dapat menemukan cara untuk menggunakan informasi waktu nyata. Proyek ini memiliki empat bagian utama termasuk sirkuit fisik untuk mengukur detak jantung, modul Wi-Fi ESP8266 dengan kode pemrosesan sinyal, server untuk menyimpan kode, dan aplikasi Android untuk menampilkan detak jantung.

Video yang merinci sirkuit fisik dapat dilihat di atas. Semua kode untuk proyek dapat ditemukan di Github saya.

Langkah 1: Sirkuit

Sirkuit
Sirkuit

Ada dua metode utama untuk mengukur detak jantung tetapi untuk proyek ini saya memutuskan untuk menggunakan photoplethysmography (PPG) yang menggunakan sumber cahaya inframerah atau merah yang dibiaskan melalui beberapa lapisan pertama kulit. Sensor foto digunakan untuk mengukur perubahan intensitas cahaya (ketika darah mengalir melalui pembuluh). Sinyal PPG sangat bising jadi saya menggunakan band pass filter untuk menyaring frekuensi tertentu yang diperlukan. Jantung manusia berdetak antara frekuensi 1 dan 1,6 Hz. Op-amp yang saya gunakan adalah lm324 yang memiliki offset tegangan terbaik dari semua op-amp yang tersedia untuk saya. Jika Anda membuat ulang proyek ini, maka op-amp presisi akan menjadi pilihan yang jauh lebih baik.

Keuntungan hanya dua digunakan karena toleransi tegangan maksimum pada ESP8266 adalah 3.3v dan saya tidak ingin merusak papan saya!

Ikuti sirkuit di atas dan coba membuatnya bekerja di papan roti. Jika Anda tidak memiliki osiloskop di rumah, Anda dapat mencolokkan output ke Arduino dan memplotnya, tetapi pastikan tegangannya tidak lebih tinggi dari toleransi Arduino atau mikrokontroler.

Sirkuit diuji pada papan roti dan perubahan output diamati ketika jari ditempatkan di LED dan transistor foto. Saya kemudian memutuskan untuk menyolder papan bersama yang tidak ditampilkan dalam video.

Langkah 2: Kode Pemrosesan Sinyal dan Komunikasi Server

Image
Image
Kode Pemrosesan Sinyal dan Komunikasi Server
Kode Pemrosesan Sinyal dan Komunikasi Server

Saya memutuskan untuk menggunakan Arduino IDE pada ESP8266 karena sangat mudah digunakan. Ketika sinyal diplot, masih sangat bising jadi saya memutuskan untuk membersihkannya dengan filter rata-rata bergerak FIR dengan jumlah sampel sepuluh. Saya memodifikasi contoh program Arduino yang disebut "smoothing" untuk melakukan ini. Saya bereksperimen sedikit untuk menemukan cara mengukur frekuensi sinyal. Pulsa memiliki panjang dan amplitudo yang bervariasi karena jantung memiliki empat jenis pulsa yang berbeda dan karakteristik sinyal PPG. Saya memilih nilai tengah yang diketahui bahwa sinyal selalu bersilangan sebagai titik referensi untuk setiap pulsa. Saya menggunakan penyangga cincin untuk menentukan kapan kemiringan sinyal positif atau negatif. Kombinasi keduanya memungkinkan saya untuk menghitung periode antara pulsa ketika sinyal positif dan sama dengan nilai tertentu.

Perangkat lunak ini menghasilkan BPM yang cukup tidak akurat yang sebenarnya tidak dapat digunakan. Dengan iterasi tambahan, program yang lebih baik dapat dirancang tetapi karena kendala waktu, ini bukan pilihan. Kode dapat ditemukan di tautan di bawah ini.

Perangkat Lunak ESP8266

Langkah 3: Server dan Komunikasi Data

Server dan Komunikasi Data
Server dan Komunikasi Data

Saya memutuskan untuk menggunakan Firebase untuk menyimpan data karena ini adalah layanan gratis dan sangat mudah digunakan dengan aplikasi seluler. Tidak ada API resmi untuk Firebase dengan ESP8266 tetapi saya menemukan perpustakaan Arduino bekerja dengan sangat baik.

Ada contoh program yang dapat ditemukan di perpustakaan ESP8266WiFi.h yang memungkinkan Anda terhubung ke router dengan SSID dan Kata Sandi. Ini digunakan untuk menghubungkan papan ke internet sehingga data dapat dikirim.

Meskipun menyimpan data dengan mudah dilakukan, masih ada sejumlah masalah dengan pengiriman pemberitahuan push melalui permintaan HTTP POST. Saya menemukan komentar di Github yang menggunakan metode lama untuk melakukan ini melalui pesan cloud Google dan perpustakaan HTTP untuk ESP8266. Cara ini bisa dilihat pada kode di Github saya.

Di Firebase saya membuat proyek dan menggunakan API dan kunci pendaftaran dalam perangkat lunak. Perpesanan cloud firebase digunakan dengan aplikasi untuk mengirim pemberitahuan push kepada pengguna. Ketika komunikasi diuji, data dapat dilihat di database saat ESP8266 sedang berjalan.

Langkah 4: Aplikasi Android

Aplikasi Android
Aplikasi Android

Aplikasi Android yang sangat mendasar dirancang dengan dua aktivitas. Aktivitas pertama membuat pengguna login atau mendaftarkannya menggunakan Firebase API. Saya meneliti lembar data dan menemukan berbagai tutorial tentang cara menggunakan Firebase dengan aplikasi seluler. Aktivitas utama yang menampilkan pengguna data pengguna sebagai pendengar acara waktu nyata sehingga tidak ada penundaan yang nyata dalam perubahan BPM pengguna. Pemberitahuan push dilakukan menggunakan perpesanan cloud Firebase yang disebutkan sebelumnya. Ada banyak informasi berguna di lembar data Firebase tentang cara menerapkan ini dan aplikasi dapat diuji dengan mengirimkan pemberitahuan dari dasbor di situs web Firebase.

Semua kode untuk aktivitas dan metode pengiriman pesan cloud dapat ditemukan di Repositori Github saya.

Langkah 5: Kesimpulan

Ada beberapa masalah utama dengan mengukur BPM pengguna. Nilainya sangat bervariasi dan tidak dapat digunakan untuk menentukan kesehatan pengguna. Ini bermuara pada kode pemrosesan sinyal yang diterapkan pada ESP8266. Setelah penelitian tambahan saya menemukan bahwa jantung memiliki empat denyut yang berbeda dengan periode yang bervariasi sehingga tidak mengherankan jika perangkat lunaknya tidak akurat. Cara untuk memerangi ini adalah dengan mengambil rata-rata dari empat denyut nadi dalam suatu susunan dan menghitung periode jantung selama empat denyut itu.

Sisa sistem berfungsi tetapi ini adalah perangkat yang sangat eksperimental yang ingin saya buat untuk melihat apakah objek itu mungkin. Kode lama yang digunakan untuk mengirim pemberitahuan push akan segera tidak dapat digunakan sehingga jika Anda membaca ini pada akhir 2018 atau terlambat, metode yang berbeda akan diperlukan. Masalah ini hanya terjadi pada ESP, jadi jika Anda ingin menerapkan ini pada Arduino yang mendukung WiFi, itu tidak akan menjadi masalah.

Jika Anda memiliki pertanyaan atau masalah, jangan ragu untuk mengirimi saya pesan di Instructables.

Direkomendasikan: