Съдържание:

Как да покажете сърдечния ритъм на STONE LCD с Ar: 31 стъпки
Как да покажете сърдечния ритъм на STONE LCD с Ar: 31 стъпки

Видео: Как да покажете сърдечния ритъм на STONE LCD с Ar: 31 стъпки

Видео: Как да покажете сърдечния ритъм на STONE LCD с Ar: 31 стъпки
Видео: Part 2 - Black Beauty Audiobook by Anna Sewell (Chs 20-36) 2024, Юли
Anonim
Как да покажете сърдечния ритъм на STONE LCD с Ar
Как да покажете сърдечния ритъм на STONE LCD с Ar

кратко въведение

Преди време открих модул за сензор за сърдечен ритъм MAX30100 при пазаруване онлайн. Този модул може да събира данни за кислород в кръвта и сърдечната честота на потребителите, което също е лесно и удобно за използване. Според данните открих, че във библиотечните файлове на Arduino има библиотеки с MAX30100. Тоест, ако използвам комуникацията между Arduino и MAX30100, мога директно да извикам библиотечните файлове на Arduino, без да се налага да пренаписвам файловете на драйверите. Това е нещо добро, затова си купих модула на MAX30100.

Стъпка 1: Реших да използвам Arduino за проверка на сърдечната честота и функцията за събиране на кислород в кръвта на MAX30100

Реших да използвам Arduino за проверка на сърдечната честота и функцията за събиране на кислород в кръвта на MAX30100
Реших да използвам Arduino за проверка на сърдечната честота и функцията за събиране на кислород в кръвта на MAX30100

Забележка: този модул по подразбиране само с MCU комуникации на ниво 3.3 V, тъй като по подразбиране използва съпротивление на издърпване на IIC pin от 4.7 K до 1.8 V, така че няма комуникация с Arduino по подразбиране, ако искате да общувате с Arduino и се нуждаят от два 4,7 K от издърпващия резистор на IIC щифта, свързани към VIN щифта, това съдържание ще бъде въведено в задната част на главата.

Стъпка 2: Функционални назначения

Преди да започна този проект, се замислих за някои прости функции:

  • Данните за сърдечната честота и данните за кислорода в кръвта бяха събрани
  • Данните за сърдечната честота и кислорода в кръвта се извеждат чрез LCD екран

Това са единствените две функции, но ако искаме да го приложим, трябва да мислим повече:

  • Какво главно MCU се използва?
  • Какъв вид LCD дисплей?

Както споменахме по -рано, използваме Arduino за MCU, но това е проект за LCD дисплей на Arduino, така че трябва да изберем подходящия LCD дисплей. Планирам да използвам LCD дисплея със сериен порт. Имам дисплей STONE STVI070WT-01 тук, но ако Arduino трябва да комуникира с него, MAX3232 е необходим за преобразуване на ниво. Тогава основните електронни материали се определят, както следва:

1. Платка за разработка на Arduino Mini Pro

2. MAX30100 модул за сензор за сърдечен ритъм и кислород в кръвта

3. STONE STVI070WT-01 LCD сериен порт дисплей модул

4. MAX3232 модул

Стъпка 3: Въведение в хардуера

MAX30100

MAX30100 е интегрирано решение за сензор за пулсоксиметрия и пулсомер. Той комбинира два светодиода, фотодетектор, оптимизирана оптика и нискошумна аналогова обработка на сигнали за откриване на пулсоксиметрична и сърдечна честота.

MAX30100 работи от 1.8V и 3.3V захранвания и може да се захранва чрез софтуер с незначителен ток в режим на готовност, което позволява захранването да остане свързано по всяко време.

Стъпка 4: Приложения

● Носещи устройства

● Устройства за фитнес помощник

● Медицински устройства за наблюдение

Стъпка 5: Предимства и функции

1, Пълният пулсов оксиметър и сензор за пулс Разрешението опростява дизайна

  • Вградени светодиоди, фотосензор и високопроизводителен аналогов преден край
  • Малки 5,6 мм х 2,8 мм х 1,2 мм 14-пиново оптично подобрена система в пакет

2 peration Работа с ултра ниска мощност увеличава живота на батерията за носещи устройства

  • Програмируема честота на извадката и LED ток за икономия на енергия
  • Изключително нисък ток на изключване (0,7 µA, тип)

3 Разширената функционалност подобрява производителността на измерването

  • Високото SNR осигурява здрава устойчивост на артефакти при движение
  • Интегрирано премахване на околната светлина
  • Възможност за висока честота на извадката
  • Възможност за бърз изход на данни

Стъпка 6: Принцип за откриване

Принцип на откриване
Принцип на откриване

Просто натиснете с пръст сензора, за да оцените пулсовата кислородна наситеност (SpO2) и пулса (еквивалентен на сърдечния ритъм).

Пулсоксиметърът (оксиметър) е мини-спектрометър, който ИЗПОЛЗВА принципите на различните абсорбционни спектри на червените кръвни клетки, за да анализира насищането на кръвта с кислород. Този метод за измерване в реално време и бързо се използва широко в много клинични справки. Няма да представя MAX30100 твърде много, защото тези материали са достъпни в интернет. Заинтересованите приятели могат да потърсят информацията за този модул за измерване на сърдечната честота в Интернет и да разберат по -задълбочено принципа му на откриване.

Стъпка 7: STONE STVI070WT-01

КАМЪК STVI070WT-01
КАМЪК STVI070WT-01

Въведение в дисплея

В този проект ще използвам STONE STVI070WT-01 за показване на данните за сърдечната честота и кислорода в кръвта. Чипът на драйвера е интегриран в дисплея и има софтуер, който потребителите могат да използват. Потребителите трябва само да добавят бутони, текстови полета и друга логика чрез проектираните изображения на потребителския интерфейс, а след това да генерират конфигурационни файлове и да ги изтеглят на дисплея, за да работят. Дисплеят на STVI070WT-01 комуникира с MCU чрез uart-rs232 сигнал, което означава, че трябва да добавим чип MAX3232 за преобразуване на RS232 сигнал в TTL сигнал, така че да можем да комуникираме с Arduino MCU.

Стъпка 8: Ако не сте сигурни как да използвате MAX3232, моля, вижте следните снимки:

Ако не сте сигурни как да използвате MAX3232, моля, вижте следните снимки
Ако не сте сигурни как да използвате MAX3232, моля, вижте следните снимки

Ако смятате, че преобразуването на нивото е твърде обезпокоително, можете да изберете други видове дисплеи на STONE, някои от които могат директно да извеждат uart-ttl сигнал.

Официалният уебсайт има подробна информация и въведение:

Стъпка 9: Ако имате нужда от видео уроци и уроци, които можете да използвате, можете да ги намерите и на официалния уебсайт

Ако имате нужда от видео уроци и уроци, които можете да използвате, можете да ги намерите и на официалния уебсайт
Ако имате нужда от видео уроци и уроци, които можете да използвате, можете да ги намерите и на официалния уебсайт

Стъпка 10: Стъпки за развитие

Три стъпки за разработване на екран на STONE дисплей:

  • Проектирайте логиката на дисплея и логиката на бутона със софтуера STONE TOOL и изтеглете файла за проектиране в модула на дисплея.
  • MCU комуникира с STONE LCD дисплейния модул през серийния порт.
  • С данните, получени в стъпка 2, MCU извършва други действия.

Стъпка 11: Инсталиране на софтуер STONE TOOL

Инсталиране на софтуер STONE TOOL
Инсталиране на софтуер STONE TOOL

Изтеглете най -новата версия на софтуера STONE TOOL (понастоящем TOOL2019) от уебсайта и го инсталирайте.

След като софтуерът бъде инсталиран, ще се отвори следният интерфейс:

Щракнете върху бутона „Файл“в горния ляв ъгъл, за да създадете нов проект, който ще обсъдим по -късно.

Стъпка 12: Arduino

Arduino е електронна прототипна платформа с отворен код, която е лесна за използване и лесна за използване. Той включва хардуерната част (различни дъски за разработка, които отговарят на спецификацията на Arduino) и софтуерната част (Arduino IDE и свързаните с нея комплекти за разработка).

Хардуерната част (или платка за разработка) се състои от микроконтролер (MCU), флаш памет (Flash) и набор от универсални интерфейси за вход/изход (GPIO), които можете да мислите като дънна платка за микрокомпютър. Софтуерната част се състои главно от Arduino IDE на компютър, свързания пакет за поддръжка на ниво борд (BSP) и богата библиотека с функции на трети страни. С Arduino IDE можете лесно да изтеглите BSP, свързана с вашата платка за разработка и библиотеките, от които се нуждаете да напишете вашите програми. Arduino е платформа с отворен код. Досега имаше много модели и много производни контролери, включително Arduino Uno, Arduino Nano, ArduinoYun и т. Н. В допълнение, Arduino IDE сега не само поддържа дъските за разработка от серията Arduino, но също така добавя поддръжка за популярни дъски за разработка, като като Intel Galileo и NodeMCU чрез въвеждане на BSP.

Arduino усеща околната среда чрез различни сензори, управляващи светлини, двигатели и други устройства, за да подава обратна връзка и да влияе върху околната среда. Микроконтролерът на платката може да бъде програмиран с език за програмиране Arduino, компилиран в двоични файлове и записан в микроконтролера. за Arduino е реализиран с езика за програмиране Arduino (базиран на Wiring) и средата за разработка на Arduino (въз основа на Processing). Проектите, базирани на Arduino, могат да съдържат само Arduino, както и Arduino и друг софтуер, работещ на компютър, и те комуникират с всеки други (като Flash, Processing, MaxMSP).

Стъпка 13: Среда за развитие

Среда за развитие
Среда за развитие

Средата за разработка на Arduino е Arduino IDE, която може да бъде изтеглена от Интернет.

Влезте в официалния уебсайт на Arduino и изтеглете софтуера https://www.arduino.cc/en/Main/Software?setlang=c… След като инсталирате Arduino IDE, след отваряне на софтуера ще се появи следният интерфейс:

Arduino IDE създава две функции по подразбиране: функцията за настройка и функцията цикъл. Има много въведения в Arduino в Интернет. Ако не разбирате нещо, можете да отидете в интернет, за да го намерите.

Стъпка 14: Процес на изпълнение на Arduino LCD проект

Процес на изпълнение на Arduino LCD проект
Процес на изпълнение на Arduino LCD проект

хардуерна връзка

За да гарантираме, че следващата стъпка в писането на код върви гладко, първо трябва да определим надеждността на хардуерната връзка.

В този проект са използвани само четири хардуера:

1. Платка за разработка на Arduino Mini pro

2. STONE STVI070WT-01 tft-lcd екран

3. MAX30100 сензор за сърдечна честота и кислород в кръвта

4. MAX3232 (rs232-> TTL) Платката за разработка на Arduino Mini Pro и STVI070WT-01 TFT-LCD дисплеят са свързани чрез UART, което изисква преобразуване на нивото чрез MAX3232, а след това дъската за развитие на Arduino Mini Pro и модулът MAX30100 са свързани чрез IIC интерфейс. След като мислим ясно, можем да нарисуваме следната картина на окабеляване:

Стъпка 15:

Образ
Образ

Уверете се, че няма грешки в хардуерната връзка и преминете към следващата стъпка.

Стъпка 16: Дизайн на потребителския интерфейс на TFT LCD

Дизайн на потребителския интерфейс на TFT LCD
Дизайн на потребителския интерфейс на TFT LCD

На първо място, трябва да проектираме изображение на UI дисплей, което може да бъде проектирано от PhotoShop или други инструменти за дизайн на изображения. След като проектирате изображението на дисплея на потребителския интерфейс, запишете изображението във формат JPG.

Отворете софтуера STONE TOOL2019 и създайте нов проект:

Стъпка 17: Премахнете изображението, което беше заредено по подразбиране в новия проект, и добавете изображението на потребителския интерфейс, което проектирахме

Премахнете изображението, което беше заредено по подразбиране в новия проект, и добавете изображението на потребителския интерфейс, което сме проектирали
Премахнете изображението, което беше заредено по подразбиране в новия проект, и добавете изображението на потребителския интерфейс, което сме проектирали

Стъпка 18: Добавете компонента за показване на текст

Добавете компонента за показване на текст
Добавете компонента за показване на текст

Добавете компонента за показване на текст, проектирайте цифрата на дисплея и десетичната запетая, вземете мястото за съхранение на компонента за текстов дисплей в дисплея.

Ефектът е следният:

Стъпка 19:

Адрес на компонента за показване на текст:

  • Връзка sta: 0x0008
  • Сърдечна честота: 0x0001

Кислород в кръвта: 0x0005 Основното съдържание на интерфейса на потребителския интерфейс е следното:

  • Състояние на връзката
  • Дисплей на сърдечната честота
  • Показа кислород в кръвта

Стъпка 20: Генерирайте конфигурационен файл

Генериране на конфигурационен файл
Генериране на конфигурационен файл

След като дизайнът на потребителския интерфейс приключи, конфигурационният файл може да бъде генериран и изтеглен на дисплея STVI070WT-01.

Първо изпълнете стъпка 1, след това поставете USB флаш устройството в компютъра и ще се покаже символът на диска. След това щракнете върху „Изтегляне на u-диск“, за да изтеглите конфигурационния файл на USB флаш устройството и след това поставете USB флаш устройството в STVI070WT-01, за да завършите надстройката.

Стъпка 21: MAX30100

MAX30100
MAX30100

MAX30100 комуникира чрез IIC. Принципът му на работа е, че ADC стойността на сърдечната честота може да бъде получена чрез инфрачервено светодиодно облъчване. Регистърът MAX30100 може да бъде разделен на пет категории: държавен регистър, FIFO, контролен регистър, температурен регистър и регистър на идентификатора. Температурният регистър отчита стойността на температурата на чипа, за да коригира отклонението, причинено от температурата. Идентификационният регистър може да прочете идентификационния номер на чипа.

MAX30100 е свързан с дъската за разработка на Arduino Mini Pro чрез комуникационния интерфейс IIC. Тъй като в IDU на Arduino има готови библиотечни файлове MAX30100, можем да четем данните за сърдечната честота и кислорода в кръвта, без да изучаваме регистрите на MAX30100. За тези, които се интересуват от проучване на регистъра MAX30100, вижте листа с данни MAX30100.

Стъпка 22: Променете издърпващия резистор MAX30100 IIC

Променете издърпващия резистор MAX30100 IIC
Променете издърпващия резистор MAX30100 IIC

Трябва да се отбележи, че 4,7k съпротивление на издърпване на IIC щифта на модула MAX30100 е свързано към 1,8v, което на теория не е проблем. Нивото на комуникационна логика на щифта на Arduino IIC е 5V, така че не може да комуникира с Arduino без промяна на хардуера на модула MAX30100. Директна комуникация е възможна, ако MCU е STM32 или друг MCV на 3.3v логическо ниво.

Следователно е необходимо да се направят следните промени:

Отстранете трите 4.7k резистора, отбелязани на снимката с електрически поялник, След това заварете два резистора от 4.7k към щифтовете на SDA и SCL към VIN, за да можем да комуникираме с Arduino.

Стъпка 23: Arduino

Arduino
Arduino

Отворете IDE на Arduino и намерете следните бутони:

Стъпка 24: Потърсете „MAX30100“, за да намерите две библиотеки за MAX30100, след това щракнете върху Изтегляне и инсталиране

Търся
Търся

Стъпка 25: След инсталацията можете да намерите демонстрацията на MAX30100 в папката LIB Library на Arduino:

След инсталацията можете да намерите демонстрацията на MAX30100 в папката LIB Library на Arduino
След инсталацията можете да намерите демонстрацията на MAX30100 в папката LIB Library на Arduino

Стъпка 26: Щракнете двукратно върху файла, за да го отворите

Щракнете двукратно върху файла, за да го отворите
Щракнете двукратно върху файла, за да го отворите

Стъпка 27: Пълният код е следният:

Тази демонстрация може да бъде тествана директно. Ако хардуерната връзка е наред, можете да изтеглите компилацията на кода в дъската за разработка на Arduibo и да видите данните на MAX30100 в инструмента за серийно отстраняване на грешки.

Пълният код е следният:

/* Arduino-MAX30100 оксиметрия /сърдечна честота интегрирана сензорна библиотека Copyright (C) 2016 OXullo Intersecans Тази програма е безплатен софтуер: можете да я разпространявате и /или да я променяте съгласно условията на Общия публичен лиценз на GNU, публикуван от Фондацията за свободен софтуер, или версия 3 на лиценза, или (по ваш избор) всяка по -нова версия. Тази програма се разпространява с надеждата, че ще бъде полезна, но БЕЗ ВСЯКА ГАРАНЦИЯ; без дори подразбиращата се гаранция за ТЪРГОВОСТ или ПРИГОДНОСТ ЗА ОПРЕДЕЛЕНА ЦЕЛ. Вижте Общия публичен лиценз на GNU за повече подробности. Трябваше да получите копие от Общия публичен лиценз на GNU заедно с тази програма. Ако не, вижте. */ #include #include "MAX30100_PulseOximeter.h" #define REPORTING_PERIOD_MS 1000 // PulseOximeter е интерфейсът от по -високо ниво към сензора // той предлага: // * отчитане на ритъма // * изчисляване на сърдечната честота // * SpO2 (ниво на окисление) изчисление PulseOximeter pox; uint32_t tsLastReport = 0; // Обратно повикване (регистрирано по -долу), задействано при откриване на импулс void onBeatDetected () {Serial.println ("Beat!"); } void setup () {Serial.begin (115200); Serial.print ("Инициализиране на пулсов оксиметър.."); // Инициализиране на екземпляра PulseOximeter // Повредите обикновено се дължат на неправилно окабеляване на I2C, липсващо захранване // или грешен целеви чип if (! Pox.begin ()) {Serial.println ("FAILED"); за(;;); } else {Serial.println ("УСПЕХ"); } // Токът по подразбиране за IR LED е 50mA и той може да бъде променен // чрез разкомментиране на следния ред. Проверете MAX30100_Registers.h за всички // налични опции. // pox.setIRLedCurrent (MAX30100_LED_CURR_7_6MA); // Регистрирайте обратно обаждане за pox.setOnBeatDetectedCallback (onBeatDetected); } void loop () {// Не забравяйте да извикате update възможно най -бързо pox.update (); // Асинхронно изхвърляне на сърдечната честота и нивата на окисление към серийния // И за двете стойност 0 означава „невалидна“if (millis () - tsLastReport> REPORTING_PERIOD_MS) {Serial.print ("Сърдечна честота:"); Serial.print (pox.getHeartRate ()); Serial.print ("bpm / SpO2:"); Serial.print (pox.getSpO2 ()); Serial.println ("%"); tsLastReport = millis (); }}

Стъпка 28:

Образ
Образ

Този код е много прост, вярвам, че можете да го разберете с един поглед. Трябва да кажа, че модулното програмиране на Arduino е много удобно и дори не е нужно да разбирам как се прилага кодът на драйвера на Uart и IIC.

Разбира се, горният код е официална демонстрация и все още трябва да направя някои промени, за да покажа данните в дисплея на STONE.

Стъпка 29: Показване на данни към STONE дисплея чрез Arduino

Първо, трябва да получим адреса на компонента, който показва данните за сърдечната честота и кислорода в кръвта в дисплея на STONE:

В моя проект адресът е следният: Адрес на компонента за показване на сърдечната честота: 0x0001 Адрес на модула за показване на кислород в кръвта: 0x0005 Адрес на състоянието на връзката на сензора: 0x0008 Ако трябва да промените съдържанието на дисплея в съответното пространство, можете да промените съдържанието на дисплея чрез изпращане на данни до съответния адрес на дисплея през серийния порт на Arduino.

Стъпка 30: Промененият код е както следва:

/* Arduino-MAX30100 оксиметрия /сърдечна честота интегрирана сензорна библиотека Copyright (C) 2016 OXullo Intersecans Тази програма е безплатен софтуер: можете да я разпространявате и /или да я променяте съгласно условията на Общия публичен лиценз на GNU, публикуван от Фондацията за свободен софтуер, или версия 3 на лиценза, или (по ваш избор) всяка по -нова версия. Тази програма се разпространява с надеждата, че ще бъде полезна, но БЕЗ ВСЯКА ГАРАНЦИЯ; без дори подразбиращата се гаранция за ТЪРГОВОСТ или ПРИГОДНОСТ ЗА ОПРЕДЕЛЕНА ЦЕЛ. Вижте Общия публичен лиценз на GNU за повече подробности. Трябваше да получите копие от Общия публичен лиценз на GNU заедно с тази програма. Ако не, вижте. */ #include #include "MAX30100_PulseOximeter.h" #define REPORTING_PERIOD_MS 1000 #define Heart_dis_addr 0x01 #define Sop2_dis_addr 0x05 #define connect_sta_addr 0x08 char_xd, 0x5, 0 0x00}; беззнаков char Sop2_send [8] = {0xA5, 0x5A, 0x05, 0x82, 0x00, / Sop2_dis_addr, 0x00, 0x00}; unsigned char connect_sta_send [8] = {0xA5, 0x5A, 0x05, 0x82, 0x00, / connect_sta_addr, 0x00, 0x00}; // PulseOximeter е интерфейсът от по -високо ниво към сензора // той предлага: // * докладване за откриване на ритъм // * изчисляване на сърдечната честота // * SpO2 (ниво на окисляване) PulseOximeter pox; uint32_t tsLastReport = 0; // Обратно повикване (регистрирано по -долу), задействано при откриване на импулс void onBeatDetected () {// Serial.println ("Beat!"); } void setup () {Serial.begin (115200); // Serial.print ("Инициализиране на пулсов оксиметър.."); // Инициализиране на екземпляра PulseOximeter // Повредите обикновено се дължат на неправилно окабеляване на I2C, липсващо захранване // или грешен целеви чип if (! Pox.begin ()) {// Serial.println ("FAILED"); // connect_sta_send [7] = 0x00; // Serial.write (connect_sta_send, 8); за(;;); } else {connect_sta_send [7] = 0x01; Serial.write (connect_sta_send, 8); // Serial.println ("УСПЕХ"); } // Токът по подразбиране за IR LED е 50mA и той може да бъде променен // чрез разкомментиране на следния ред. Проверете MAX30100_Registers.h за всички // налични опции.pox.setIRLedCurrent (MAX30100_LED_CURR_7_6MA); // Регистрирайте обратно обаждане за pox.setOnBeatDetectedCallback (onBeatDetected); } void loop () {// Не забравяйте да извикате update възможно най -бързо pox.update (); // Асинхронно изхвърляне на сърдечната честота и нивата на окисление към серийния // И за двете стойност 0 означава „невалидна“if (millis () - tsLastReport> REPORTING_PERIOD_MS) {// Serial.print ("Сърдечна честота:"); // Serial.print (pox.getHeartRate ()); // Serial.print ("bpm / SpO2:"); // Serial.print (pox.getSpO2 ()); // Serial.println ("%"); heart_rate_send [7] = (uint32_t) pox.getHeartRate (); Serial.write (heart_rate_send, 8); Sop2_send [7] = pox.getSpO2 (); Serial.write (Sop2_send, 8); tsLastReport = millis (); }}

Стъпка 31: Покажете сърдечния ритъм на LCD с Arduino

Покажете сърдечния ритъм на LCD с Arduino
Покажете сърдечния ритъм на LCD с Arduino

Компилирайте кода, изтеглете го на дъската за разработка на Arduino и сте готови да започнете тестване.

Можем да видим, че когато пръстите напуснат MAX30100, сърдечната честота и кислородът в кръвта показват 0. Поставете пръста си върху колектора MAX30100, за да видите сърдечната честота и нивата на кислород в кръвта в реално време.

Ефектът може да се види на следната снимка:

Препоръчано: