Ничего не найдено :(
    В гостях у Самоделкина! » Электроника » Arduino » Пульсоксиметр на базе ESP32

    Пульсоксиметр на базе ESP32


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

    Инструменты и материалы:
    -ESP32 или любой другой MCU, который работает с Arduino IDE, такой как платы ESP8266 или Ардуино;
    -Модуль пульсоксиметра MAX30100;
    -OLED-дисплей SSD1306;
    -Макетная плата;
    -Перемычки;




    Шаг первый: подготовка модуля MAX30100
    Принцип работы модуля следующий: он посылает красный и инфракрасный свет через кончик пальца пользователя, затем измеряет отраженный свет и выполняет некоторую обработку сигналов. Чем больше кислорода содержится в крови, тем больше инфракрасного излучения она поглощает, а также большее количество кислорода в крови пропустит через нее больше красного света.
    Этот модуль отправляет данные на микроконтроллер через соединение I2C.
    В продаже есть две версии MAX30100: зеленый и фиолетовый.
    Фиолетовый уже готов к использованию, зеленый необходимо доработать.
    Вкратце, I2C этого модуля имеет ВЫСОКИЙ уровень 1,8 В, в то время как Arduino рассматривает как минимум 2 В как ВЫСОКИЙ. Следовательно, они не могут правильно обмениваться данными.
    На схеме MAX30100 можно увидеть, что SDA и SCL подтянуты до 1,8 В резистором. Поэтому, если отключить резисторы от 1,8 В и подключить их к бортовому стабилизатору 3,3 В, проблема будет решена.
    Для этого разрываем дорожку отмеченную красной линией. Далее перемыкаем два контакта отмеченные синим цветом.
    Если эти два шага выполнены правильно, то модуль готов к использованию.
    Пульсоксиметр на базе ESP32




    Шаг второй: схема и сборка
    Схема устройства несложная.
    ESP32 D22 ----> MAX30100 SCL
    ESP32 D21 ----> MAX30100 SDA
    ESP32 GND ----> MAX30100 GND
    ESP32 3,3 В -----> MAX30100 VIN
    OLED VDD -----> ESP32 3,3 В
    OLED GND -----> ESP32 GND
    OLED SCL -----> ESP32 D22
    OLED SDA ----> ESP D21
    Собирает устройство мастер на макетной плате. В принципе этого достаточно для его полноценной работы, но при желании можно поместить пульсоксиметра в подходящий корпус.




    Шаг третий: подготовка Arduino IDE и добавление необходимых библиотек
    Чтобы запрограммировать ESP32 с помощью Arduino IDE, сначала нужно добавить в приложение платы esp32. Для этого нужно выполнить следующие действия:
    1) Откройте Arduino IDE, перейдите в меню Файл> Настройки> Дополнительные URL-адреса диспетчера плат и вставьте эту ссылку: https://dl.espressif.com/dl/package_esp32_index.json
    Подтвердите действие "ОК".
    2) В IDE перейдите в Инструменты> Доска> Менеджер доски.
    Введите ESP32 в поле поиска и выберите установку для ESP32 от Espressif Systems.
    3) Теперь ESP32 добавлен в среду IDE, и можно выбрать плату в качестве целевого устройства для загрузки программы.
    Для этого:
    Перейдите в Инструменты> Плата> ESP32 Arduino> Модуль ESP32 Dev
    Если все сделано правильно, в правом нижнем углу будет написан тип платы (ESP32 Dev Module) как на картинке.



    Теперь нужно добавить необходимые библиотеки в Arduino IDE.
    Чтобы использовать модуль MAX30100, добавляем MAX30100_PulseOximeter.h, а для OLED-дисплея добавляем Adafruit_SSD1306.h и Adafruit_GFX.h
    Для этого нужно перейти в Инструменты> Управление библиотеками, найти там эти библиотеки и установить.



    С помощью библиотеки Adafruit_SSD1306.h и библиотеки Adafruit_GFX.h вместе можно управлять экраном.
    Чтобы создать момент ssd1306, который определен в библиотеке (имя «OLED» может быть любым, но оно будет использоваться в остальной части кода), он должен быть вне раздела настройки или раздела цикла:
    Adafruit_SSD1306 OLED = Adafruit_SSD1306(128, 64, &Wire);

    128 и 64 - это ширина и длина дисплея
    Чтобы инициализировать экран он должен быть в разделе настройки:
    OLED.begin (SSD1306_SWITCHCAPVCC, 0x3C);

    0x3c - это I2C-адрес дисплея по умолчанию.
    Чтобы поместить курсор в нужное место:
    OLED.setCursor(row pixel,column pixel);

    Например, чтобы поставить курсор в среднее положение:
    OLED.setCursor (32,64);

    Чтобы распечатать что-нибудь на экране:
    OLED.print ();

    Чтобы изменить размер шрифта:
    OLED.setTextSize(2);     it can be 1 or 2

    Чтобы очистить буфер:
    OLED.clearDisplay ();

    (Все, что вы хотите напечатать на экране, сначала помещается в буфер)
    Чтобы обновить экран:
    OLED.display ();

    Теперь рассмотрим библиотеку MAX30100.
    Создать объект пульсоксиметра для использования в коде с желаемым именем (например, max_sensor):
    PulseOximeter max_sensor;

    Чтобы дать команду модулю на измерение:
    max_sensor.update ();

    Чтобы получить данные пульса:
    max_sensor.getHeartRate ();

    Чтобы узнать уровень кислорода в крови:
    max_sensor.getSpO2 ();


    Шаг четвертый: код
    В этом шаге мастер разъясняет код и какие в него необходимо внести изменения при необходимости.
    Прежде всего, нужно включить библиотеки:
    #include <Wire.h>                                 //     Arduino I2C library
    #include <Adafruit_GFX.h>                         //     needed for OLED display
    #include <Adafruit_SSD1306.h>                     //     needed for OLED display
    #include "MAX30100_PulseOximeter.h"               //     MAX30100 library

    Отчетный период max30100 может быть определен в коде. Например, 100 означает, что каждые 100 мс частота пульса и уровень кислорода будут обновляться.
    #define REPORTING_PERIOD_MS    100

    Создаем переменную для записи времени между чтениями MAX30100:
    uint32_t lastReportTime = 0;
    [
    Определяем функцию onBeatDetected:
    void onBeatDetected()
    {
       Serial.println("Beat!");
    }

    Согласно предыдущему шагу настройки следующие:
     OLED.begin(SSD1306_SWITCHCAPVCC, 0x3C);
     Serial.begin(115200);
     OLED.display();
     OLED.clearDisplay();
     OLED.setTextSize(2);
     OLED.setTextColor(SSD1306_WHITE);
     OLED.setCursor(0,0);
     OLED.display();
     delay(1000);
    

    Весь код можно скачать ниже.

    После программирования можно пользоваться прибором.

    Источник (Source)
    Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.

    Симпатичный бот сигнализирующий о необходимости полить растение

    Вольтметр на базе Ардуино

    0
    Идея
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    0
    Описание
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    0
    Исполнение
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    Итоговая оценка: 0.0 из 10 (голосов: 0 / История оценок)

    Добавить комментарий

    1 комментарий
    Korolev

    Вот мне просто любопытно:

    Нормой сатурации для здорового человека считается, когда 95% и больше гемоглобина связано с кислородом ... При COVID-19 вызывать врача рекомендуют, когда сатурация снижается до 94%. Сатурация 92% и ниже обычно считается критической. Человеку с таким низким показателем кислорода в крови требуется срочное медицинское вмешательство ... у курильщиков, показатель сатурации может быть от 88 % до 92% ... Для большинства пульсоксиметров производители указывают погрешность измерений в 2%

    Какова погрешность измерений данного изделия? И о чём вообще может говорить некая цифирь, даже на откалиброванном приборе, работающем "на просвет", у каждого свой, индивидуальный?  dontknow 

    P.S. А питается "приборчик" кровушкой пациента?  scratch 

    Привет, Гость!


    Зарегистрируйтесь

    Или войдите на сайт, если уже зарегистрированы...

    Войти

    Добавьте самоделку

    Добавьте тему

    Онлайн чат

    Последние комментарии

    Все комментарии