Оглавление:

Как отображать пульс на КАМЕННОМ ЖК-дисплее с помощью Ar: 31 шаг
Как отображать пульс на КАМЕННОМ ЖК-дисплее с помощью Ar: 31 шаг

Видео: Как отображать пульс на КАМЕННОМ ЖК-дисплее с помощью Ar: 31 шаг

Видео: Как отображать пульс на КАМЕННОМ ЖК-дисплее с помощью Ar: 31 шаг
Видео: Одесса. НАЧАЛОСЬ! 2024, Ноябрь
Anonim
Как отображать пульс на КАМЕННОМ ЖК-дисплее с помощью Ar
Как отображать пульс на КАМЕННОМ ЖК-дисплее с помощью Ar

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

Некоторое время назад я нашел в интернет-магазинах модуль датчика ЧСС MAX30100. Этот модуль может собирать данные о кислороде крови и частоте сердечных сокращений пользователей, что также просто и удобно в использовании. По данным я обнаружил, что в файлах библиотеки Arduino есть библиотеки MAX30100. То есть, если я использую связь между Arduino и MAX30100, я могу напрямую вызывать файлы библиотеки Arduino без необходимости перезаписывать файлы драйверов. Это хорошо, поэтому я купил модуль MAX30100.

Шаг 1: Я решил использовать Arduino для проверки работы функции измерения пульса и кислорода в крови MAX30100

Я решил использовать Arduino для проверки работы MAX30100 в отношении частоты пульса и сбора кислорода в крови
Я решил использовать Arduino для проверки работы MAX30100 в отношении частоты пульса и сбора кислорода в крови

Примечание: этот модуль по умолчанию только с коммуникацией MCU уровня 3,3 В, потому что по умолчанию используется сопротивление подтягивания вывода IIC от 4,7 кОм до 1,8 В, поэтому по умолчанию нет связи с Arduino, если вы хотите общаться с Arduino. и вам потребуется два подтягивающих резистора на выводе IIC 4,7 кОм, подключенных к выводу VIN, это содержание будет представлено в конце главы.

Шаг 2: функциональные назначения

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

  • Были собраны данные о частоте сердечных сокращений и кислороде крови.
  • Данные о частоте пульса и кислороде крови отображаются на ЖК-экране.

Это единственные две функции, но если мы хотим ее реализовать, нам нужно больше подумать:

  • Какой главный MCU используется?
  • Что за жк-дисплей?

Как мы упоминали ранее, мы используем Arduino для MCU, но это проект ЖК-дисплея Arduino, поэтому нам нужно выбрать соответствующий модуль ЖК-дисплея. Я планирую использовать ЖК-экран с последовательным портом. У меня есть дисплей STONE STVI070WT-01, но если Arduino необходимо с ним взаимодействовать, для преобразования уровня необходим MAX3232. Тогда основные электронные материалы определяются следующим образом:

1. Плата для разработки Arduino Mini Pro.

2. Модуль датчика ЧСС и кислорода в крови MAX30100

3. STONE STVI070WT-01 ЖК-дисплей с последовательным портом.

4. Модуль MAX3232

Шаг 3: Введение в оборудование

MAX30100

MAX30100 - это интегрированный датчик пульсоксиметрии и пульсометра. Он сочетает в себе два светодиода, фотодетектор, оптимизированную оптику и малошумящую аналоговую обработку сигналов для обнаружения сигналов пульсовой оксиметрии и частоты сердечных сокращений.

MAX30100 работает от источников питания 1,8 В и 3,3 В и может быть отключен с помощью программного обеспечения с незначительным током в режиме ожидания, что позволяет источнику питания всегда оставаться подключенным.

Шаг 4: приложения

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

● Устройства для фитнес-помощников.

● Устройства медицинского мониторинга

Шаг 5: Преимущества и особенности

1 、 Полное решение для пульсоксиметра и датчика сердечного ритма упрощает конструкцию

  • Встроенные светодиоды, фотодатчик и высокопроизводительный аналоговый передний конец
  • Крошечные 5,6 мм x 2,8 мм x 1,2 мм 14-пиновый оптически усовершенствованная система в корпусе

2 、 Работа со сверхнизким энергопотреблением увеличивает время автономной работы носимых устройств

  • Программируемая частота дискретизации и ток светодиода для экономии энергии
  • Сверхнизкий ток отключения (0,7 мкА, тип.)

3 、 Расширенные функции улучшают производительность измерений

  • Высокое SNR обеспечивает устойчивую устойчивость к артефактам движения
  • Встроенное подавление окружающего света
  • Возможность высокой частоты дискретизации
  • Возможность быстрого вывода данных

Шаг 6: Принцип обнаружения

Принцип обнаружения
Принцип обнаружения

Просто прижмите палец к датчику, чтобы оценить сатурацию кислорода (SpO2) и пульс (эквивалент сердцебиения).

Пульсоксиметр (оксиметр) - это мини-спектрометр, который ИСПОЛЬЗУЕТ принципы различных спектров поглощения эритроцитов для анализа насыщения крови кислородом. Этот метод быстрого измерения в реальном времени также широко используется во многих клинических справочниках. Я не буду слишком подробно рассказывать о MAX30100, потому что эти материалы доступны в Интернете. Заинтересованные друзья могут найти информацию об этом модуле измерения пульса в Интернете и лучше понять принцип его обнаружения.

Шаг 7: STONE STVI070WT-01

КАМЕНЬ STVI070WT-01
КАМЕНЬ STVI070WT-01

Введение в средство отображения

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

Шаг 8: Если вы не уверены, как использовать MAX3232, см. Следующие изображения:

Если вы не знаете, как использовать MAX3232, см. Следующие изображения
Если вы не знаете, как использовать MAX3232, см. Следующие изображения

Если вы считаете, что преобразование уровня слишком проблематично, вы можете выбрать другие типы дисплеев STONE, некоторые из которых могут напрямую выводить сигнал uart-ttl.

На официальном сайте есть подробная информация и введение:

Шаг 9. Если вам нужны видеоуроки и руководства, вы также можете найти их на официальном веб-сайте

Если вам нужны видеоуроки и руководства, вы также можете найти их на официальном веб-сайте
Если вам нужны видеоуроки и руководства, вы также можете найти их на официальном веб-сайте

Шаг 10: Этапы разработки

Три этапа разработки экрана дисплея STONE:

  • Разработайте логику дисплея и логику кнопок с помощью программного обеспечения STONE TOOL и загрузите файл дизайна в модуль дисплея.
  • MCU связывается с модулем ЖК-дисплея STONE через последовательный порт.
  • С данными, полученными на шаге 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 (на основе проводки) и среды разработки Arduino (на основе обработки). Проекты на основе Arduino могут содержать только Arduino, а также Arduino и другое программное обеспечение, работающее на ПК, и они взаимодействуют с каждым из них. прочее (например, Flash, Processing, MaxMSP).

Шаг 13: среда разработки

Среда разработки
Среда разработки

Среда разработки Arduino - это IDE Arduino, которую можно загрузить из Интернета.

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

IDE Arduino по умолчанию создает две функции: функцию настройки и функцию цикла. В Интернете есть множество представлений об Arduino. Если вы чего-то не понимаете, вы можете найти это в Интернете.

Шаг 14: процесс реализации проекта ЖК-дисплея Arduino

Процесс реализации проекта ЖК-дисплея Arduino
Процесс реализации проекта ЖК-дисплея Arduino

аппаратное соединение

Чтобы следующий шаг в написании кода прошел гладко, мы должны сначала определить надежность подключения оборудования.

В этом проекте использовалось всего четыре единицы оборудования:

1. Плата для разработки Arduino Mini Pro.

2. STONE STVI070WT-01 tft-lcd дисплей

3. Датчик ЧСС и кислорода в крови MAX30100

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

Шаг 15:

Изображение
Изображение

Убедитесь, что в подключении оборудования нет ошибок, и переходите к следующему шагу.

Шаг 16: Дизайн пользовательского интерфейса TFT LCD

Дизайн пользовательского интерфейса TFT LCD
Дизайн пользовательского интерфейса TFT LCD

Прежде всего, нам нужно разработать изображение для отображения пользовательского интерфейса, которое можно разработать с помощью PhotoShop или других инструментов для создания изображений. После разработки изображения отображения пользовательского интерфейса сохраните изображение в формате JPG.

Откройте программу STONE TOOL2019 и создайте новый проект:

Шаг 17: удалите изображение, которое было загружено по умолчанию в новом проекте, и добавьте созданное нами изображение пользовательского интерфейса

Удалите изображение, которое было загружено по умолчанию в новом проекте, и добавьте созданное нами изображение пользовательского интерфейса
Удалите изображение, которое было загружено по умолчанию в новом проекте, и добавьте созданное нами изображение пользовательского интерфейса

Шаг 18: добавьте компонент текстового дисплея

Добавить компонент отображения текста
Добавить компонент отображения текста

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

Эффект следующий:

Шаг 19:

Адрес компонента текстового отображения:

  • Статус подключения: 0x0008
  • Частота пульса: 0x0001

Кислород крови: 0x0005 Основное содержимое интерфейса пользовательского интерфейса выглядит следующим образом:

  • Статус подключения
  • Отображение пульса
  • Кислород крови показал

Шаг 20: Создайте файл конфигурации

Создать файл конфигурации
Создать файл конфигурации

После завершения проектирования пользовательского интерфейса можно сгенерировать файл конфигурации и загрузить его на дисплей STVI070WT-01.

Сначала выполните шаг 1, затем вставьте флешку в компьютер, и отобразится символ диска. Затем нажмите «Загрузить на u-диск», чтобы загрузить файл конфигурации на USB-накопитель, а затем вставьте USB-накопитель в STVI070WT-01, чтобы завершить обновление.

Шаг 21: MAX30100

MAX30100
MAX30100

MAX30100 обменивается данными через IIC. Его принцип работы заключается в том, что значение АЦП частоты сердечных сокращений может быть получено с помощью инфракрасного излучения. Регистр MAX30100 можно разделить на пять категорий: регистр состояния, FIFO, регистр управления, регистр температуры и регистр идентификатора. Регистр температуры. считывает значение температуры микросхемы, чтобы исправить отклонение, вызванное температурой. Регистр идентификатора может считывать идентификационный номер микросхемы.

MAX30100 подключен к плате разработки Arduino Mini Pro через интерфейс связи IIC. Поскольку в Arduino IDE есть готовые файлы библиотеки MAX30100, мы можем считывать данные о частоте сердечных сокращений и кислороде крови, не изучая регистры MAX30100. Для тех, кто заинтересован в изучении регистра MAX30100, см. Техническое описание MAX30100.

Шаг 22: Модифицируйте подтягивающий резистор MAX30100 IIC

Модифицируйте подтягивающий резистор MAX30100 IIC
Модифицируйте подтягивающий резистор MAX30100 IIC

Следует отметить, что подтягивающее сопротивление 4,7 кОм вывода IIC модуля MAX30100 подключено к напряжению 1,8 В, что теоретически не является проблемой. Тем не менее, логический уровень связи вывода Arduino IIC составляет 5 В, поэтому он не может взаимодействовать с Arduino без изменения аппаратного обеспечения модуля MAX30100. Прямая связь возможна, если MCU - это STM32 или другой MCU с логическим уровнем 3.3 В.

Поэтому необходимо внести следующие изменения:

Удалите три резистора 4,7 кОм, отмеченные на рисунке, с помощью электрического паяльника. Затем приварите два резистора 4,7 кОм на выводах SDA и SCL к VIN, чтобы мы могли общаться с Arduino.

Шаг 23: Arduino

Ардуино
Ардуино

Откройте IDE Arduino и найдите следующие кнопки:

Шаг 24: Найдите «MAX30100», чтобы найти две библиотеки для MAX30100, затем нажмите «Загрузить и установить»

Ищи
Ищи

Шаг 25: После установки вы можете найти демонстрацию MAX30100 в папке библиотеки LIB Arduino:

После установки вы можете найти демонстрацию MAX30100 в папке библиотеки LIB Arduino
После установки вы можете найти демонстрацию MAX30100 в папке библиотеки LIB Arduino

Шаг 26: Дважды щелкните файл, чтобы открыть его

Дважды щелкните файл, чтобы открыть его
Дважды щелкните файл, чтобы открыть его

Шаг 27: Полный код выглядит следующим образом:

Эта демонстрация может быть протестирована напрямую. Если аппаратное соединение в порядке, вы можете загрузить компиляцию кода в плату разработки Arduibo и просмотреть данные MAX30100 в инструменте последовательной отладки.

Полный код выглядит следующим образом:

/ * Встроенная библиотека оксиметрии / сердечного ритма Arduino-MAX30100 Авторские права (C) 2016 OXullo Intersecans Эта программа является бесплатным программным обеспечением: вы можете распространять и / или изменять ее в соответствии с условиями Стандартной общественной лицензии GNU, опубликованной Free Software Foundation, либо версии 3 Лицензии, либо (по вашему выбору) любой более поздней версии. Эта программа распространяется в надежде, что она будет полезна, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемой гарантии ТОВАРНОЙ ПРИГОДНОСТИ или ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ. Подробнее см. Стандартную общественную лицензию GNU. Вы должны были получить копию Стандартной общественной лицензии GNU вместе с этой программой. Если нет, посмотри. * / #include #include "MAX30100_PulseOximeter.h" #define REPORTING_PERIOD_MS 1000 // PulseOximeter - это интерфейс более высокого уровня для датчика // он предлагает: // * отчет об обнаружении сердечных сокращений // * расчет сердечного ритма // * SpO2 (уровень окисления) расчет оспы PulseOximeter; 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 ("УСПЕХ"); } // Ток по умолчанию для ИК-светодиода составляет 50 мА, и его можно // изменить, раскомментировав следующую строку. Проверьте MAX30100_Registers.h для всех // доступных параметров. // pox.setIRLedCurrent (MAX30100_LED_CURR_7_6MA); // Регистрируем обратный вызов для обнаружения биений pox.setOnBeatDetectedCallback (onBeatDetected); } void loop () {// Обязательно вызывайте обновление как можно быстрее pox.update (); // Асинхронный сброс частоты пульса и уровней окисления в серийный номер // Для обоих значение 0 означает «недействительный» if (millis () - tsLastReport> REPORTING_PERIOD_MS) {Serial.print ("Heart rate:"); Serial.print (pox.getHeartRate ()); Serial.print («уд / мин / SpO2:»); Серийный.принт (pox.getSpO2 ()); Serial.println ("%"); tsLastReport = millis (); }}

Шаг 28:

Изображение
Изображение

Этот код очень простой, я думаю, вы можете понять его с первого взгляда. Я должен сказать, что модульное программирование Arduino очень удобно, и мне даже не нужно понимать, как реализован код драйвера Uart и IIC.

Конечно, приведенный выше код является официальной демонстрацией, и мне все еще нужно внести некоторые изменения, чтобы отобразить данные в программе отображения STONE.

Шаг 29: отображение данных в STONE Displayer через Arduino

Во-первых, нам нужно получить адрес компонента, который отображает данные о частоте сердечных сокращений и кислороде в крови на дисплее STONE:

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

Шаг 30: измененный код выглядит следующим образом:

/ * Встроенная библиотека оксиметрии / сердечного ритма Arduino-MAX30100 Авторские права (C) 2016 OXullo Intersecans Эта программа является бесплатным программным обеспечением: вы можете распространять и / или изменять ее в соответствии с условиями Стандартной общественной лицензии GNU, опубликованной Free Software Foundation, либо версии 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 unsigned char heart_rate_rate, 0x5, 0x08 unsigned char heart_rate_rate = {0x5), Heart_rate_send 0x08, / 0x5 0x00}; символ без знака Sop2_send [8] = {0xA5, 0x5A, 0x05, 0x82, 0x00, / Sop2_dis_addr, 0x00, 0x00}; символ без знака 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); для(;;); } иначе {connect_sta_send [7] = 0x01; Serial.write (connect_sta_send, 8); // Serial.println ("УСПЕХ"); } // Ток по умолчанию для ИК-светодиода составляет 50 мА, и его можно // изменить, раскомментировав следующую строку. Проверьте MAX30100_Registers.h для всех // доступных параметров.pox.setIRLedCurrent (MAX30100_LED_CURR_7_6MA); // Регистрируем обратный вызов для обнаружения биений pox.setOnBeatDetectedCallback (onBeatDetected); } void loop () {// Обязательно вызывайте обновление как можно быстрее pox.update (); // Асинхронный сброс частоты пульса и уровней окисления в серийный номер // Для обоих значение 0 означает «недействительный» if (millis () - tsLastReport> REPORTING_PERIOD_MS) {// Serial.print ("Heart rate:"); // Serial.print (pox.getHeartRate ()); // Serial.print ("уд / мин / 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: отображение частоты пульса на ЖК-дисплее с помощью Arduino

Отображение частоты пульса на ЖК-дисплее с помощью Arduino
Отображение частоты пульса на ЖК-дисплее с помощью Arduino

Скомпилируйте код, загрузите его на плату разработки Arduino, и вы готовы начать тестирование.

Мы видим, что, когда пальцы отрываются от MAX30100, частота пульса и уровень кислорода в крови отображаются равными нулю. Поместите палец на коллектор MAX30100, чтобы увидеть частоту сердечных сокращений и уровень кислорода в крови в режиме реального времени.

Эффект можно увидеть на следующем рисунке:

Рекомендуемые: