Монитор сердечного ритма MAX 30102 на ЖК-дисплее 16x2
Компоненты и расходные материалы
| | × | 1 | |
| | × | 1 | |
| ЖК-экран с подсветкой Adafruit RGB - 16x2 | | × | 1 | |
| Поворотный потенциометр (общий) | | × | 1 | |
Приложения и онлайн-сервисы
Об этом проекте
Это простой монитор сердечного ритма, сделанный с модулем датчика MAX30102. Я написал простой код на основе библиотек Arduino, и значения отображаются на ЖК-экране 16x2. В первой строке отображается среднее количество ударов в минуту, а во второй строке отображается значение отраженного инфракрасного луча. Это значение должно быть постоянным, чтобы показания были более точными.
Код
Файл без названия Arduino
/ * Оптическое определение частоты пульса (алгоритм PBA) с использованием MAX30105 Breakout Автор:Bennu @ MH-ET LIVE Дата:2 октября 2017 г. https://github.com/MHEtLive/MH-ET-LIVE-max30102 Это демонстрация, показывающая значение частоты сердечных сокращений или ударов в минуту (BPM) с использованием алгоритма Penpheral Beat Amplitude (PBA). Лучше всего прикрепить датчик к пальцу с помощью резинки или другого зажимного приспособления. Люди, как правило, не умеют оказывать на вещь постоянное давление. Когда вы прижимаете палец к датчику, он изменяется в достаточной степени, чтобы кровь в пальце текла по-разному, что приводит к искажению показаний датчика. Аппаратные подключения (коммутационная плата к Arduino):-5 В =5 В (допускается 3,3 В) -GND =GND -SDA =A4 (или SDA) -SCL =A5 (или SCL) -INT =Не подключен. MAX30105 Breakout может обрабатывать 5 В или Логика 3.3V I2C. Мы рекомендуем питать плату от 5 В, но она также будет работать от 3,3 В. * / # include #include "MAX30105.h" #include #include "heartRate.h" MAX30105 particleSensor; LiquidCrystal lcd (12, 11, 5, 4, 3, 2); const byte RATE_SIZE =4; // Увеличьте это для большего усреднения. 4 - хорошо. Байтовые ставки [RATE_SIZE]; // Массив сердечных сокращенийbyte rateSpot =0; long lastBeat =0; // Время последнего удара float beatsPerMinute; int beatAvg; void setup () {Serial.begin (9600); lcd.begin (16, 2); Serial.println («Инициализация ...»); // Инициализируем датчик if (! ParticleSensor.begin (Wire, I2C_SPEED_FAST)) // Использовать порт I2C по умолчанию, скорость 400 кГц {Serial.println («MAX30105 не найден. Пожалуйста, проверьте проводку / питание.»); в то время как (1); } Serial.println («Постарайтесь приложить указательный палец к датчику с постоянным усилием.»); ParticleSensor.setup (); // Настраиваем датчик с настройками по умолчанию ParticleSensor.setPulseAmplitudeRed (0x0A); // Поверните красный светодиод на низкий уровень, чтобы указать, что датчик работает ParticleSensor.setPulseAmplitudeGreen (0); // Отключение зеленого светодиода} void loop () {long irValue =particleSensor.getIR (); if (checkForBeat (irValue) ==true) {// Мы почувствовали удар! long delta =millis () - lastBeat; lastBeat =millis (); beatsPerMinute =60 / (дельта / 1000,0); если (beatsPerMinute <255 &&beatsPerMinute> 20) {ставки [rateSpot ++] =(байт) beatsPerMinute; // Сохраняем это показание в массиве rateSpot% =RATE_SIZE; // Оборачиваем переменную // Возьмем среднее значение показаний beatAvg =0; для (байт x =0; x
Схема