Mündəricat:

IOT Nəbz Monitoru (ESP8266 və Android Tətbiqi): 5 addım
IOT Nəbz Monitoru (ESP8266 və Android Tətbiqi): 5 addım

Video: IOT Nəbz Monitoru (ESP8266 və Android Tətbiqi): 5 addım

Video: IOT Nəbz Monitoru (ESP8266 və Android Tətbiqi): 5 addım
Video: Control 32 Servo over Wi-Fi using ESP32 and PCA9685 via desktop or mobile phone V5 2024, Iyul
Anonim
Image
Image

Son il layihəmin bir hissəsi olaraq ürək dərəcənizi izləyəcək, məlumatlarınızı bir serverdə saxlayan və nəbzinizin anormal olduğu zaman bildirişlə sizə xəbər verəcək bir cihaz dizayn etmək istədim. Bu layihənin arxasındakı fikir, istifadəçiyə ürək problemi yaşadıqlarını bildirən, lakin real vaxt məlumatlarından istifadə etməyin yolunu anlaya bilməyən fit-bit proqramı qurmağa çalışdığım zaman gəldi. Layihənin dörd əsas hissəsi var. ürək döyüntüsünü ölçmək üçün fiziki dövrə, siqnal işləmə kodlu bir ESP8266 Wi-Fi modulu, kodu saxlamaq üçün server və nəbzin göstərilməsi üçün Android tətbiqi də daxil olmaqla.

Fiziki dövrəni izah edən bir videoya yuxarıda baxıla bilər. Layihənin bütün kodlarını Github -da tapa bilərsiniz.

Addım 1: Dövrə

Dövrə
Dövrə

Ürək döyüntüsünü ölçməyin iki əsas üsulu var, amma bu layihə üçün dərinin ilk bir neçə təbəqəsində qırılan infraqırmızı və ya qırmızı işıq mənbəyi istifadə edən fotopletismoqrafiyadan (PPG) istifadə etmək qərarına gəldim. Fotoşəkil sensoru, işığın intensivliyindəki dəyişikliyi ölçmək üçün istifadə olunur (qan damardan keçərkən). PPG siqnalları inanılmaz dərəcədə səs -küylüdür, buna görə tələb olunan xüsusi tezlikləri süzmək üçün bir bant keçid filtrindən istifadə etdim. İnsan ürəyi 1 ilə 1,6 Hz aralığında döyünür. İstifadə etdiyim op-amp lm324 idi ki, mənim üçün mövcud olan bütün op-amperlərin ən yaxşı gerilim-ofsetinə malik idi. Bu layihəni yenidən yaradırsınızsa, dəqiq bir op-amp daha yaxşı bir seçim olar.

Yalnız iki qazanc istifadə edildi, çünki ESP8266 -dakı maksimum gərginlik tolerantlığı 3.3v -dir və lövhəmə zərər vermək istəmədim!

Yuxarıdakı dövrəni izləyin və çörək taxtasında işləməsinə çalışın. Evdə bir osiloskopunuz yoxdursa, çıxışı Arduino -ya qoşub planlaya bilərsiniz, ancaq gərginliyin arduino və ya mikro nəzarətçinin tolerantlığından yüksək olmadığından əmin olun.

Dövrə bir çörək taxtasında sınaqdan keçirildi və LED və foto tranzistoruna bir barmaq qoyulduqda çıxışda dəyişiklik müşahidə edildi. Sonra videoda göstərilməyən lövhəni birlikdə lehimləmək qərarına gəldim.

Addım 2: Siqnal İşləmə Kodu və Server Əlaqələri

Image
Image
Siqnal İşləmə Kodu və Server Əlaqələri
Siqnal İşləmə Kodu və Server Əlaqələri

İstifadəsi çox asan olduğu üçün ESP8266 -da Arduino IDE -dən istifadə etmək qərarına gəldim. Siqnal qurulduqda hələ də çox səs-küylü idi, buna görə də nümunə sayı on olan FIR hərəkətli orta filtrlə təmizləməyə qərar verdim. Bunu etmək üçün "hamarlaşdırma" adlı bir Arduino proqramını dəyişdirdim. Siqnalın tezliyini ölçmək üçün bir az təcrübə etdim. Nəbzlər, ürəyin dörd fərqli nəbz növünə və PPG siqnallarının xüsusiyyətlərinə görə fərqli uzunluq və amplituda idi. Siqnalın hər bir nəbz üçün istinad nöqtəsi olaraq keçdiyi məlum bir orta dəyəri seçdim. Siqnalın yamacının pozitiv və ya mənfi olduğunu müəyyən etmək üçün halqa tamponundan istifadə etdim. Bu ikisinin birləşməsi siqnalın pozitiv olduğu və müəyyən bir dəyərə bərabər olduğu zaman pulslar arasındakı dövrü hesablamağa imkan verdi.

Proqram, əslində istifadə edilə bilməyəcək qədər qeyri -dəqiq BPM istehsal etdi. Əlavə təkrarlamalarla daha yaxşı bir proqram tərtib edilə bilərdi, ancaq vaxt məhdudiyyəti səbəbindən bu bir seçim deyildi. Kodu aşağıdakı linkdə tapa bilərsiniz.

Proqram ESP8266

Addım 3: Server və Məlumat Rabitəsi

Server və Məlumat Rabitəsi
Server və Məlumat Rabitəsi

Məlumat saxlamaq üçün Firebase -dən istifadə etmək qərarına gəldim, çünki bu pulsuz bir xidmətdir və mobil tətbiqlərdə istifadə etmək çox asandır. ESP8266 ilə Firebase üçün rəsmi bir API yoxdur, ancaq Arduino kitabxanasının çox yaxşı işlədiyini gördüm.

ESP8266WiFi.h kitabxanasında SSID və Şifrə ilə bir yönlendiriciyə qoşulmağa imkan verən bir nümunə proqram var. Bu, məlumatları göndərmək üçün lövhəni internetə bağlamaq üçün istifadə edilmişdir.

Məlumatların saxlanılması asanlaşdırılsa da, push bildirişlərinin HTTP POST sorğusu vasitəsilə göndərilməsində hələ də bir sıra problemlər var. Google bulud mesajlaşması və ESP8266 üçün HTTP kitabxanası vasitəsilə bunu etmək üçün köhnə bir metoddan istifadə edən Github haqqında bir şərh tapdım. Bu metodu Github'ımdakı kodda görmək olar.

Firebase -də bir layihə yaratdım və proqramdakı API və qeydiyyat açarlarından istifadə etdim. İstifadəçiyə push bildirişləri göndərmək üçün firebase bulud mesajlaşması tətbiqlə birlikdə istifadə edildi. Rabitə test edildikdə, ESP8266 işləyərkən məlumatları verilənlər bazasında görmək olardı.

Addım 4: Android Tətbiqi

Android Tətbiqi
Android Tətbiqi

Çox sadə bir Android tətbiqi iki fəaliyyətlə hazırlanmışdır. İlk fəaliyyət, istifadəçini Firebase API istifadə edərək imzaladı və ya qeyd etdi. Məlumat cədvəlini araşdırdım və Firebase -in mobil tətbiq ilə necə istifadə olunacağına dair müxtəlif dərsliklər tapdım. İstifadəçinin məlumat istifadəçisini real vaxt hadisə dinləyicisi olaraq göstərən əsas fəaliyyət, istifadəçinin BPM dəyişikliklərində nəzərəçarpacaq bir gecikmə olmamışdır. Push bildirişləri əvvəllər bəhs edilən Firebase bulud mesajlaşması vasitəsi ilə edildi. Bunun necə həyata keçiriləcəyinə dair Firebase məlumat cədvəlində bir çox faydalı məlumat var və tətbiqin Firebase veb saytındakı tablosundan bildiriş göndərməklə sınaqdan keçirilə bilər.

Fəaliyyətlərin və bulud mesajlaşma metodlarının bütün kodlarını Github Repozitoriyamda tapa bilərsiniz.

Addım 5: Nəticə

İstifadəçinin BPM -nin ölçülməsi ilə bağlı bəzi böyük problemlər var idi. Dəyərlər çox fərqli idi və bir istifadəçinin sağlamlığını təyin etmək üçün istifadə edilə bilməzdi. Bu, ESP8266 -da tətbiq olunan siqnal işləmə koduna qədər azaldı. Əlavə araşdırmalardan sonra öyrəndim ki, bir ürəyin müxtəlif dövrlərə malik dörd fərqli nəbzi var, buna görə də proqramın qeyri -dəqiq olması təəccüblü deyil. Mübarizənin bir yolu, bir sıra içərisində ortalama dörd nəbzi almaq və bu dörd nəbz üzərində ürək dövrünü hesablamaq olardı.

Sistemin qalan hissəsi işlək idi, amma bu obyektin mümkün olub olmadığını görmək üçün qurmaq istədiyim çox təcrübəli bir cihazdır. Push bildirişləri göndərmək üçün istifadə olunan köhnə kod tezliklə istifadəyə yaramayacaq, buna görə də bunu 2018 -ci ilin sonlarında və ya gec oxuyursanız başqa bir üsul tələb olunacaq. Bu problem yalnız ESP ilə ortaya çıxsa da, bunu WiFi qabiliyyətli bir Arduino üzərində tətbiq etmək istəsəniz heç bir problem olmayacaq.

Hər hansı bir sualınız və ya probleminiz varsa, mənə Instructables üzərindən yaza bilərsiniz.

Tövsiyə: