İçindekiler:
- Adım 1: Devre
- Adım 2: Sinyal İşleme Kodu ve Sunucu İletişimi
- Adım 3: Sunucu ve Veri İletişimi
- 4. Adım: Android Uygulaması
- Adım 5: Sonuç
Video: IOT Nabız Monitörü (ESP8266 ve Android Uygulaması): 5 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
Bitirme projemin bir parçası olarak, nabzınızı takip edecek, verilerinizi bir sunucuda saklayacak ve nabzınız anormal olduğunda size bildirim gönderecek bir cihaz tasarlamak istedim. Bu projenin arkasındaki fikir, bir kullanıcıyı kalp sorunu yaşadığında bilgilendiren, ancak gerçek zamanlı bilgileri kullanmanın bir yolunu bulamadığım bir fit-bit uygulaması oluşturmaya çalıştığımda geldi. Proje dört ana bölümden oluşuyor. kalp atışını ölçmek için fiziksel devre, sinyal işleme koduna sahip bir ESP8266 Wi-Fi modülü, kodu depolamak için sunucu ve kalp atış hızını görüntülemek için bir Android uygulaması dahil.
Fiziksel devreyi detaylandıran bir video yukarıda görülebilir. Projenin tüm kodu Github'ımda bulunabilir.
Adım 1: Devre
Bir kalp atışını ölçmek için iki ana yöntem vardır, ancak bu proje için cildin ilk birkaç katmanından kırılan bir kızılötesi veya kırmızı ışık kaynağı kullanan fotopletismografiyi (PPG) kullanmaya karar verdim. Işık yoğunluğundaki değişikliği ölçmek için bir foto sensör kullanılır (kan bir damardan akarken). PPG sinyalleri inanılmaz derecede gürültülüdür, bu yüzden gereken belirli frekansları filtrelemek için bir bant geçiren filtre kullandım. Bir insan kalbi 1 ile 1,6 Hz frekans arasında atar. Kullandığım op-amp, benim için mevcut olan tüm op-amp'lerin en iyi voltaj dengesine sahip olan lm324'dü. Bu projeyi yeniden oluşturuyorsanız, hassas bir op-amp çok daha iyi bir seçim olacaktır.
ESP8266'daki maksimum voltaj toleransı 3.3v olduğu ve kartıma zarar vermek istemediğim için yalnızca iki kazanç kullanıldı!
Yukarıdaki devreyi takip edin ve bir breadboard üzerinde çalıştırmayı deneyin. Evde bir osiloskopunuz yoksa, çıkışı bir Arduino'ya bağlayabilir ve çizebilirsiniz, ancak voltajın arduino veya mikrodenetleyicinin toleransından daha yüksek olmadığından emin olun.
Devre bir breadboard üzerinde test edildi ve LED ve foto transistörün üzerine bir parmak yerleştirildiğinde çıkışta bir değişiklik gözlemlendi. Daha sonra videoda gösterilmeyen tahtayı lehimlemeye karar verdim.
Adım 2: Sinyal İşleme Kodu ve Sunucu İletişimi
Kullanımı çok kolay olduğu için ESP8266 üzerinde Arduino IDE kullanmaya karar verdim. Sinyal çizildiğinde hala çok gürültülüydü, bu yüzden onu örnek sayısı on olan bir FIR hareketli ortalama filtresiyle temizlemeye karar verdim. Bunu yapmak için "smoothing" adlı örnek bir Arduino programını değiştirdim. Sinyalin frekansını ölçmenin bir yolunu bulmak için biraz deney yaptım. Kalbin dört farklı darbe tipine sahip olması ve PPG sinyallerinin özellikleri nedeniyle darbeler değişen uzunluk ve genlikteydi. Her darbe için sinyalin her zaman bir referans noktası olarak geçtiği bilinen bir orta değer seçtim. Sinyalin eğiminin ne zaman pozitif veya negatif olduğunu belirlemek için bir halka tamponu kullandım. Bu ikisinin kombinasyonu, sinyalin pozitif olduğu ve belirli bir değere eşit olduğu darbeler arasındaki süreyi hesaplamamı sağladı.
Yazılım, aslında kullanılamayan oldukça yanlış bir BPM üretti. Ek yinelemelerle daha iyi bir program tasarlanabilirdi ancak zaman kısıtlamaları nedeniyle bu bir seçenek değildi. Kodu aşağıdaki linkte bulabilirsiniz.
ESP8266 Yazılımı
Adım 3: Sunucu ve Veri İletişimi
Ücretsiz bir hizmet olduğu ve mobil uygulamalarla kullanımı çok kolay olduğu için verileri depolamak için Firebase'i kullanmaya karar verdim. ESP8266 ile Firebase için resmi bir API yok ama Arduino kütüphanesinin çok iyi çalıştığını gördüm.
ESP8266WiFi.h kitaplığında SSID ve Parola ile bir yönlendiriciye bağlanmanıza izin veren örnek bir program bulunmaktadır. Bu, verinin gönderilebilmesi için kartı internete bağlamak için kullanıldı.
Verileri depolamak kolayca yapılsa da, push bildirimlerinin bir HTTP POST isteği aracılığıyla gönderilmesiyle ilgili hala bir takım sorunlar var. Bunu Google bulut mesajlaşma ve ESP8266 için HTTP kitaplığı aracılığıyla yapmak için eski bir yöntemi kullanan Github hakkında bir yorum buldum. Bu yöntem Github'ımdaki kodda görülebilir.
Firebase'de bir proje oluşturdum ve yazılımdaki API ve kayıt anahtarlarını kullandım. Firebase bulut mesajlaşma, kullanıcıya push bildirimleri göndermek için uygulama ile kullanıldı. İletişimler test edildiğinde, veriler ESP8266 çalışırken veritabanında görülebilir.
4. Adım: Android Uygulaması
Çok basit bir Android uygulaması iki aktivite ile tasarlandı. İlk etkinlik, kullanıcıyı Firebase API'sini kullanarak oturum açtı veya kaydettirdi. Veri sayfasını araştırdım ve Firebase'in bir mobil uygulamayla nasıl kullanılacağına dair çeşitli eğitimler buldum. Kullanıcının veri kullanıcısına gerçek zamanlı bir olay dinleyicisini görüntüleyen ana aktivite, böylece kullanıcının BPM'sindeki değişikliklerde fark edilir bir gecikme yaşanmadı. Push bildirimleri, daha önce bahsedilen Firebase bulut mesajlaşma kullanılarak yapıldı. Firebase veri sayfasında bunun nasıl uygulanacağına dair birçok yararlı bilgi vardır ve uygulama, Firebase web sitesindeki gösterge tablosundan bildirim göndererek test edilebilir.
Etkinliklerin tüm kodları ve bulut mesajlaşma yöntemleri Github Depomda bulunabilir.
Adım 5: Sonuç
Kullanıcının BPM'sini ölçmekle ilgili bazı önemli sorunlar vardı. Değerler çok çeşitliydi ve bir kullanıcının sağlığını belirlemek için kullanılamadı. Bu, ESP8266'da uygulanan sinyal işleme koduna kadar kaynadı. Ek araştırmalardan sonra, bir kalbin değişen periyotlarla dört farklı nabzı olduğunu öğrendim, bu nedenle yazılımın hatalı olması şaşırtıcı değildi. Bununla mücadele etmenin bir yolu, bir dizideki dört darbenin ortalamasını almak ve bu dört darbe üzerinden kalbin periyodunu hesaplamak olacaktır.
Sistemin geri kalanı işlevseldi ama bu, nesnenin mümkün olup olmadığını görmek için inşa etmek istediğim çok deneysel bir cihaz. Anında iletme bildirimleri göndermek için kullanılan eski kod yakında kullanılamaz hale gelecek, bu nedenle bunu 2018'in sonlarında veya sonlarında okuyorsanız farklı bir yöntem gerekli olacaktır. Bu sorun yalnızca ESP'de ortaya çıkar, bu nedenle bunu WiFi özellikli bir Arduino'da uygulamak isteseydiniz sorun olmaz.
Herhangi bir sorunuz veya sorununuz varsa, lütfen Instructables'ta bana mesaj göndermekten çekinmeyin.
Önerilen:
Kendin Yap Nabız Monitörü (kayıt cihazı): 4 Adım
DIY Kalp Atış Hızı Monitörü (logger): Bu projede size ticari bir akıllı saatin kalp atış hızınızı nasıl ölçtüğünü ve izlediğini göstereceğim ve ardından, temelde aynı şeyi yapabilen bir DIY devresinin nasıl oluşturulacağını göstereceğim. kalp atış hızı verilerini saklayın
4Duino-24 Özellikli Kablosuz Nabız Hızı Monitörü: 4 Adım
4Duino-24'e Sahip Kablosuz Nabız Hızı Monitörü: Kablosuz Nabız Hızı monitörü hastaneler ve klinikler için yapılmış kavramsal bir projedir, ana işlevi hemşirelerin veya doktorların hastanede her hastayı ziyaret etmesi gereken süreyi en aza indirmektir. Genellikle, Doktorlar ve hemşireler her hastayı kontrol etmek için ziyaret eder
Arduino Nabız Monitörü: 5 Adım
Arduino Nabız Monitörü: Herkese merhaba, bu el tipi Arduino kontrollü kalp atış hızı monitörünü yaptım
Kan Nabız Monitörü: 3 Adım
Kan Nabız Monitörü: Size üniversitem için ikinci projemi tanıtıyorum. Bu proje, MAX 30100 modülünü kullanarak kalp atış hızını ve oksijen seviyelerini izlemek ve bunları Nokia 5110 LCD'ye yazdırmak için kullanılabilir. Ayrıca bu değerleri bir SD ca kullanarak bir metin dosyalarında saklar
Nabız Monitörü AD8232, Arduino, İşleme: 4 Adım
Kalp Atış Hızı Monitörü AD8232, Arduino, İşleme: Analog Cihazlar AD8232, milliVolt düzeyinde EKG (ElectroCardioGram) sinyallerini almak için tasarlanmış eksiksiz bir analog ön uçtur. AD8232'yi bağlamak ve ortaya çıkan EKG sinyalini bir osiloskopta görmek basit bir mesele olsa da, zorluk