Isi kandungan:

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

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

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

Sebagai sebahagian daripada projek tahun terakhir saya, saya ingin merancang peranti yang akan memantau degupan jantung anda, menyimpan data anda di pelayan dan memberitahu anda melalui pemberitahuan ketika degup jantung anda tidak normal. Idea di sebalik projek ini muncul ketika saya cuba membina aplikasi fit-bit yang memberitahu pengguna ketika mereka mengalami masalah jantung tetapi saya tidak dapat mengetahui cara menggunakan maklumat masa nyata. Projek ini mempunyai empat bahagian utama termasuk rangkaian fizikal untuk mengukur degup jantung, modul Wi-Fi ESP8266 dengan kod pemprosesan isyarat, pelayan untuk menyimpan kod dan aplikasi Android untuk memaparkan kadar denyutan jantung.

Video yang memperincikan litar fizikal dapat dilihat di atas. Semua kod untuk projek boleh didapati di Github saya.

Langkah 1: Litar

Litar
Litar

Terdapat dua kaedah utama untuk mengukur degup jantung tetapi untuk projek ini saya memutuskan untuk menggunakan photoplethysmography (PPG) yang menggunakan sumber cahaya inframerah atau merah yang dibiaskan melalui beberapa lapisan kulit pertama. Sensor foto digunakan untuk mengukur perubahan intensiti cahaya (ketika darah mengalir melalui kapal). Isyarat PPG sangat bising jadi saya menggunakan penapis lulus jalur untuk menyaring frekuensi tertentu yang diperlukan. Jantung manusia berdegup antara frekuensi 1 dan 1.6 Hz. Op-amp yang saya gunakan adalah lm324 yang mempunyai offset voltan terbaik dari semua op-amp yang tersedia untuk saya. Sekiranya anda membuat projek ini, op-amp ketepatan akan menjadi pilihan yang lebih baik.

Keuntungan hanya dua digunakan kerana toleransi voltan maksimum pada ESP8266 adalah 3.3v dan saya tidak mahu merosakkan papan saya!

Ikuti litar di atas dan cubalah membuatnya berfungsi di papan roti. Sekiranya anda tidak mempunyai osiloskop di rumah, anda boleh memasukkan output ke Arduino dan memplotnya tetapi pastikan voltan tidak lebih tinggi daripada toleransi arduino atau mikrokontroler.

Litar ini diuji pada papan roti dan perubahan output diperhatikan ketika jari diletakkan di seberang LED dan transistor foto. Saya kemudian memutuskan untuk menyatukan papan itu bersama-sama yang tidak ditunjukkan dalam video.

Langkah 2: Kod Pemprosesan Isyarat dan Komunikasi Pelayan

Image
Image
Kod Pemprosesan Isyarat dan Komunikasi Pelayan
Kod Pemprosesan Isyarat dan Komunikasi Pelayan

Saya memutuskan untuk menggunakan Arduino IDE pada ESP8266 kerana sangat senang digunakan. Semasa isyarat dipancangkan, ia masih sangat bising, jadi saya memutuskan untuk membersihkannya dengan penapis purata bergerak FIR dengan jumlah sampel sepuluh. Saya mengubah suai contoh program Arduino yang disebut "melicinkan" untuk melakukan ini. Saya sedikit bereksperimen untuk mencari cara mengukur kekerapan isyarat. Nadi mempunyai panjang dan amplitud yang berbeza kerana jantung mempunyai empat jenis denyutan yang berbeza dan ciri-ciri isyarat PPG. Saya memilih nilai tengah yang diketahui bahawa isyarat selalu dilintasi sebagai titik rujukan bagi setiap nadi. Saya menggunakan penyangga dering untuk menentukan bila cerun isyarat positif atau negatif. Kombinasi kedua-duanya membolehkan saya mengira jangka masa antara denyutan ketika isyarat positif dan sama dengan nilai tertentu.

Perisian menghasilkan BPM yang agak tidak tepat yang sebenarnya tidak dapat digunakan. Dengan iterasi tambahan, program yang lebih baik dapat dirancang tetapi kerana kekangan masa ini bukan pilihan. Kodnya boleh didapati di pautan di bawah.

Perisian ESP8266

Langkah 3: Pelayan dan Komunikasi Data

Pelayan dan Komunikasi Data
Pelayan dan Komunikasi Data

Saya memutuskan untuk menggunakan Firebase untuk menyimpan data kerana ia adalah perkhidmatan percuma dan sangat mudah digunakan dengan aplikasi mudah alih. Tidak ada API rasmi untuk Firebase dengan ESP8266 tetapi saya dapati perpustakaan Arduino berfungsi dengan baik.

Terdapat contoh program yang boleh didapati di perpustakaan ESP8266WiFi.h yang membolehkan anda menyambung ke penghala dengan SSID dan Kata Laluan. Ini digunakan untuk menghubungkan papan ke internet sehingga data dapat dikirim.

Walaupun menyimpan data dengan mudah dilakukan masih ada sejumlah masalah dengan mengirim pemberitahuan push melalui permintaan HTTP POST. Saya menemui komen di Github yang menggunakan kaedah lama untuk melakukan ini melalui pemesejan awan Google dan pustaka HTTP untuk ESP8266. Kaedah ini dapat dilihat dalam kod di Github saya.

Di Firebase saya membuat projek dan menggunakan API dan kunci pendaftaran dalam perisian. Pemesejan awan firebase digunakan dengan aplikasi untuk mengirim pemberitahuan push kepada pengguna. Ketika komunikasi diuji data dapat dilihat dalam pangkalan data ketika ESP8266 sedang berjalan.

Langkah 4: Aplikasi Android

Aplikasi Android
Aplikasi Android

Aplikasi Android yang sangat asas dirancang dengan dua aktiviti. Aktiviti pertama menandatangani pengguna atau mendaftarkannya menggunakan Firebase API. Saya meneliti lembar data dan menemui pelbagai tutorial mengenai cara menggunakan Firebase dengan aplikasi mudah alih. Aktiviti utama yang memperlihatkan pengguna data pengguna sebagai pendengar peristiwa masa nyata sehingga tidak ada kelewatan yang nyata dalam perubahan pada BPM pengguna. Pemberitahuan push dilakukan menggunakan pemesejan awan Firebase yang telah disebutkan sebelumnya. Terdapat banyak maklumat berguna di lembar data Firebase mengenai cara melaksanakannya dan aplikasi dapat diuji dengan mengirimkan pemberitahuan dari papan pemuka di laman web Firebase.

Semua kod untuk aktiviti dan kaedah untuk pemesejan awan boleh didapati di Github Repository saya.

Langkah 5: Kesimpulannya

Terdapat beberapa masalah utama dengan mengukur BPM pengguna. Nilai sangat berbeza dan tidak dapat digunakan untuk menentukan kesihatan pengguna. Ini berkembang menjadi kod pemprosesan isyarat yang dilaksanakan pada ESP8266. Setelah membuat penyelidikan tambahan, saya mendapat tahu bahawa jantung mempunyai empat denyutan yang berbeza dengan jangka masa yang berbeza sehingga tidak hairanlah perisian tersebut tidak tepat. Cara memerangi ini adalah dengan mengambil rata-rata empat denyutan dalam satu array dan mengira tempoh jantung selama empat denyutan tersebut.

Sistem selebihnya berfungsi tetapi ini adalah alat yang sangat eksperimental yang ingin saya bina untuk melihat apakah objek itu mungkin. Kod lama yang digunakan untuk menghantar pemberitahuan push tidak akan dapat digunakan lagi jadi jika anda membaca ini pada akhir 2018 atau lewat kaedah yang lain diperlukan. Masalah ini hanya berlaku dengan ESP, jadi jika anda ingin menerapkannya pada Arduino yang berkemampuan WiFi, ia tidak menjadi masalah.

Sekiranya anda mempunyai pertanyaan atau masalah, sila hantarkan saya kepada Instructables.

Disyorkan: