İçindekiler:

IOT Nabız Monitörü (ESP8266 ve Android Uygulaması): 5 Adım
IOT Nabız Monitörü (ESP8266 ve Android Uygulaması): 5 Adım

Video: IOT Nabız Monitörü (ESP8266 ve Android Uygulaması): 5 Adım

Video: IOT Nabız Monitörü (ESP8266 ve Android Uygulaması): 5 Adım
Video: Arduino IoT Cloud Nedir? 2024, Temmuz
Anonim
Image
Image

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

Devre
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

Image
Image
Sinyal İşleme Kodu ve Sunucu İletişimi
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

Sunucu ve Veri İletişimi
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ı

Android Uygulaması
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: