Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Визуализация пульса в реальном времени: LED-кольцо + ECG (uECG) + Arduino Nano

Компоненты и материалы

Компонент Количество Примечание
uECG (носимый ECG-сенсор) 1 Open-source, выдаёт цифровой импульс на каждом ударе
Arduino Nano R3 1 Обработка импульсов и управление LED
Adafruit NeoPixel Ring (WS2812, 16 LED) 1 Цветовая индикация ЧСС
Li-Ion аккумулятор 1000 мАч 1 Питание всего устройства

Инструменты

Идея

Давно хотел сделать гаджет, который мигает в такт сердцу — не только в покое, но и в движении. Обычный ECG-сигнал обрабатывать сложно, но uECG делает всю грязную работу: выдаёт чистый цифровой сигнал (пин DRV) — HIGH/LOW на каждом ударе. Остаётся только считать интервалы и красиво показать на LED-кольце.

UPD: Есть вторая итерация — с радиоканалом (nRF24), данные передаются на браслет.

Схема подключения

Визуализация пульса в реальном времени: LED-кольцо + ECG (uECG) + Arduino Nano

Важно: LiPo подключается к 5V пину (не к Vin!). Стабилизатор на Vin даёт просадку напряжения, и Arduino станет нестабильной ниже 3.4 В. LiPo: 4.2 В (заряжен) → 3.4 В (15% заряда). При емкости >200 мАч — часы работы. Используйте разъём для зарядки!

Алгоритм (код)

Код (uECG_pixel_ring.ino)

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif

#define PIN 11
#define NUMPIXELS 16
int in_pin = 3;

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

#define BEAT_HIST 20
long beats[BEAT_HIST];

void push_beat(long ms) {
  for (int x = 0; x < BEAT_HIST-1; x++) beats[x] = beats[x+1];
  beats[BEAT_HIST-1] = ms;
}

int get_bpm() {
  long dt = beats[BEAT_HIST-1] - beats[0];
  return BEAT_HIST * 60000 / dt;
}

long last_pix_upd = 0;
int prev_in_state = 0;

void setup() {
  pixels.begin();
  pinMode(in_pin, INPUT);
  digitalWrite(in_pin, 1); // PULLUP — критично, uECG не имеет своего
}

void loop() {
  long ms = millis();
  int in_state = digitalRead(in_pin); // 1 — нет удара, 0 — удар
  if (in_state == 1 && prev_in_state == 0) push_beat(ms);
  prev_in_state = in_state;

  if (ms - last_pix_upd > 10) {
    last_pix_upd = ms;
    int bpm = get_bpm();
    int max_bright = 120;
    float dd = 20;
    float t1 = 90, t2 = t1+dd, t3 = t2+dd, t4 = t3+dd;
    int r, g, b;

    if (bpm < t1) { r=0; g=0; b=max_bright; }
    else if (bpm < t2) { r=0; g=max_bright*(bpm-t1)/dd; b=max_bright-g; }
    else if (bpm < t3) { r=max_bright*(bpm-t2)/dd; g=max_bright-r; b=r/4; }
    else if (bpm < t4) { r=max_bright; g=0; b=max_bright/2 - max_bright*(bpm-t3)/(2*dd); }
    else { r=max_bright; g=0; b=0; }

    if (in_state) { r*=0.25; g*=0.25; b*=0.25; }

    int on_pixels = (bpm+5)/10;
    for (int i=0; i

Сборка в носилке (wearable)

Arduino Nano идеально лезет внутрь кольца. Аккумулятор — рядом. uECG нагрудие — провод с разъёмом: сначала надеваете сенсор на грудь, потом футболку с электроникой, потом соединяете разъём. Иначе надеть нереально — проверено на себе! 😄

Визуализация пульса в реальном времени: LED-кольцо + ECG (uECG) + Arduino Nano

Визуализация пульса в реальном времени: LED-кольцо + ECG (uECG) + Arduino Nano

Визуализация пульса в реальном времени: LED-кольцо + ECG (uECG) + Arduino Nano

Полевые тесты

  • Ходьба/стояние: ЧСС определяется идеально.
  • Бег: Аккумулятор подпрыгивает на ECG-сенсоре — артефакты. Провод тянет сенсор — тоже артефакты. Пока не получилось заставить работать стабильно на бегу.
  • Сам сенсор uECG (при другой крепежи) показывает верную ЧСС при беге (проверял через их приложение).
  • LED на груди выглядит круто, но смотреть вниз неудобно. Следующая версия — браслет на запястье.

Ресурсы

  • Проект uECG на Hackaday — PCB, логи, обсуждение.
  • Вторая итерация (радио) — в профиле автора.

Производственный процесс

  1. Внешний дефибриллятор: история, дизайн и производство
  2. Валёк для теста: от этрусских истоков к современному мастерству
  3. Искусственное сердце: технологии, история и перспективы
  4. Искусственные клапаны сердца: типы, история и инновации будущего
  5. Управление светодиодом с PIR-датчиком движения на Raspberry Pi
  6. Мониторинг домашней температуры с панелью управления на Raspberry Pi
  7. Система удалённого мониторинга сердечного ритма с алертами AWS IoT
  8. Бесконтактный мониторинг сердечного ритма через умные колонки: Революционная система
  9. Графеновый электронный тату обеспечивает непрерывный точный мониторинг сердца длительные периоды
  10. Шарнирный (вилковый) узел / Knuckle Joint: конструкция, применение, расчёт, плюсы и минусы