Tartalomjegyzék:

IOT pulzusmérő (ESP8266 és Android alkalmazás): 5 lépés
IOT pulzusmérő (ESP8266 és Android alkalmazás): 5 lépés

Videó: IOT pulzusmérő (ESP8266 és Android alkalmazás): 5 lépés

Videó: IOT pulzusmérő (ESP8266 és Android alkalmazás): 5 lépés
Videó: Pixel Watch 2 is Actually… Good? 2024, Július
Anonim
Image
Image

Az utolsó éves projektem részeként olyan készüléket szerettem volna tervezni, amely figyeli a pulzusszámát, tárolja az adatait egy szerverre, és értesíti Önt értesítéssel, ha a pulzusszám abnormális. Ennek a projektnek az ötlete akkor merült fel, amikor megpróbáltam létrehozni egy fit-bit alkalmazást, amely értesíti a felhasználót, ha szívproblémái vannak, de nem tudtam rájönni a valós idejű információk felhasználásának módjára. A projekt négy fő részből áll beleértve a fizikai áramkört a szívverés mérésére, egy ESP8266 Wi-Fi modult jelfeldolgozó kóddal, a kód tárolására szolgáló szervert és egy Android alkalmazást a pulzus megjelenítésére.

A fizikai áramkört részletező videó fent látható. A projekt összes kódja megtalálható a Github -on.

1. lépés: Az áramkör

Az áramkör
Az áramkör

A szívverés mérésére két fő módszer létezik, de ebben a projektben úgy döntöttem, hogy fotoplettizmográfiát (PPG) használok, amely infravörös vagy vörös fényforrást használ, amely megtörik a bőr első rétegein. Fényérzékelővel mérik a fényintenzitás változását (amikor vér áramlik az edényen). A PPG jelek hihetetlenül zajosak, ezért sávszűrőt használtam a szükséges frekvenciák kiszűrésére. Az emberi szív 1 és 1,6 Hz közötti frekvencián ver. Az op-erősítőt használtam az lm324-et, amely a legjobb feszültség-eltolással rendelkezett az összes rendelkezésre álló op-erősítő közül. Ha újraalkotja ezt a projektet, akkor egy precíziós op-erősítő sokkal jobb választás lenne.

Csak két erősítést használtunk, mert az ESP8266 maximális feszültségtűrése 3.3v, és nem akartam megsérteni a táblát!

Kövesse a fenti áramkört, és próbálja meg kenyeretáblán működtetni. Ha nincs otthon oszcilloszkópja, csatlakoztathatja a kimenetet egy Arduino -hoz, és ábrázolhatja, de győződjön meg arról, hogy a feszültség nem magasabb, mint az arduino vagy a mikrokontroller tűrése.

Az áramkört kenyértáblán tesztelték, és a kimenet változását figyelték meg, amikor ujjat helyeztek a LED -re és a fototranzisztorra. Ezután úgy döntöttem, hogy összeforrasztom a táblát, ami nem látszik a videón.

2. lépés: A jelfeldolgozó kód és a szerverkommunikáció

Image
Image
A jelfeldolgozó kód és a szerverkommunikáció
A jelfeldolgozó kód és a szerverkommunikáció

Úgy döntöttem, hogy az Arduino IDE -t használom az ESP8266 -on, mert olyan könnyen használható. Amikor a jelet megrajzolták, még mindig nagyon zajos volt, ezért úgy döntöttem, hogy egy FIR mozgóátlag szűrővel tisztítom meg, tízmintás mintával. Ehhez módosítottam egy "simítás" nevű Arduino programot. Kicsit kísérleteztem, hogy megtaláljam a jel frekvenciájának mérési módját. Az impulzusok különböző hosszúságúak és amplitúdójúak voltak, mivel a szívnek négy különböző típusú impulzusa volt és a PPG jelek jellemzői. Egy ismert középértéket választottam, amelyen a jel mindig kereszteződött, mint referenciapont minden egyes impulzushoz. Gyűrűpufferrel határoztam meg, hogy a jel meredeksége mikor pozitív vagy negatív. E kettő kombinációja lehetővé tette számomra az impulzusok közötti időszak kiszámítását, amikor a jel pozitív volt és megegyezett egy adott értékkel.

A szoftver meglehetősen pontatlan BPM -et készített, amelyet valójában nem lehetett használni. További iterációkkal jobb programot lehetett tervezni, de az idő szűkössége miatt ez nem volt lehetőség. A kód megtalálható az alábbi linken.

ESP8266 szoftver

3. lépés: A szerver és az adatkommunikáció

A szerver és az adatkommunikáció
A szerver és az adatkommunikáció

Úgy döntöttem, hogy a Firebase -t használom az adatok tárolására, mivel ez ingyenes szolgáltatás, és nagyon könnyen használható mobilalkalmazásokkal. Az ESP8266 -nak nincs hivatalos API -ja a Firebase -hez, de azt találtam, hogy az Arduino könyvtár nagyon jól működött.

Az ESP8266WiFi.h könyvtárban található egy példaprogram, amely lehetővé teszi, hogy SSID -vel és jelszóval csatlakozzon egy útválasztóhoz. Ezt a tábla internethez való csatlakoztatására használták, így adatokat lehetett küldeni.

Bár az adatok tárolása könnyen elvégezhető, még mindig számos probléma merül fel a push értesítések HTTP POST kéréssel történő elküldésével. Találtam egy megjegyzést a Githubon, amely egy korábbi módszert használt erre a Google felhőalapú üzenetküldésén és az ESP8266 HTTP könyvtárán keresztül. Ez a módszer látható a Github kódomban.

A Firebase -en létrehoztam egy projektet, és a szoftverben használt API -t és regisztrációs kulcsokat használtam. A Firebase felhőalapú üzenetküldést az alkalmazással használták annak érdekében, hogy push értesítéseket küldjenek a felhasználónak. A kommunikáció tesztelésekor az ESP8266 működése közben az adatok láthatók voltak az adatbázisban.

4. lépés: Az Android -alkalmazás

Az Android App
Az Android App

Egy nagyon egyszerű Android -alkalmazást két tevékenységgel terveztek. Az első tevékenység bejelentette a felhasználót, vagy regisztrálta őket a Firebase API használatával. Kutattam az adatlapot, és különféle oktatóanyagokat találtam a Firebase mobilalkalmazással történő használatáról. A fő tevékenység, amely a felhasználó adatfelhasználóját valós idejű eseményfigyelőként jelenítette meg, így nem volt észrevehető késés a felhasználói BPM változásaiban. A push értesítések a korábban említett Firebase felhőalapú üzenetküldéssel történtek. A Firebase adatlapján sok hasznos információ található ennek megvalósításáról, és az alkalmazás tesztelhető, ha értesítéseket küld a Firebase webhelyének műszerfaláról.

A tevékenységek összes kódja és a felhőalapú üzenetküldés módszerei megtalálhatók a Github -táromban.

5. lépés: Következtetés

A felhasználó BPM mérésével kapcsolatban komoly problémák merültek fel. Az értékek nagyon eltérőek voltak, és nem használhatók a felhasználó egészségének meghatározására. Ez az ESP8266 -on megvalósított jelfeldolgozó kódra vezethető vissza. További kutatások után rájöttem, hogy egy szívnek négy különböző impulzusa van, amelyek változó periódusúak, így nem csoda, hogy a szoftver pontatlan volt. Ennek leküzdésének egyik módja az lenne, ha egy tömb négy impulzusának átlagát vesszük, és kiszámítjuk a szív periódusát e négy impulzus alatt.

A rendszer többi része működőképes volt, de ez egy nagyon kísérleti eszköz, amelyet meg akartam építeni, hogy lássam, lehetséges -e az objektum. A push -értesítések küldésére használt régebbi kód hamarosan használhatatlan lesz, ezért ha ezt 2018 végén vagy későn olvassa, akkor más módszerre lesz szükség. Ez a probléma csak az ESP -vel fordul elő, de ha ezt egy WiFi -képes Arduino -n szeretné megvalósítani, nem lenne probléma.

Ha bármilyen kérdése vagy problémája van, kérjük, írjon nekem üzenetet az Instructables oldalon.

Ajánlott: