Датчик сердцебиения KY-039 Ардуино

KY-039 Ардуино датчик сердцебиения

Сенсор Arduino KY-039 ► служит для измерения пульса (сердцебиения) на пальце. Рассмотрим, как подключить KY-039 к Ардуино и вывести показания на монитор порта.

Датчик Arduino KY-039 служит для измерения пульса (сердцебиения) на пальце. Данный сенсор реагирует на изменение прозрачности пальца для инфракрасного излучения от светодиода при колебаниях кровяного давления. Рассмотрим, как правильно подключить KY-039 к Arduino Uno и вывести показания на монитор порта. Но сразу предупредим, что не стоит ожидать от сенсора большого качества показаний.

Характеристики датчика сердцебиения KY-039

KY-039 состоит из фототранзистора и инфракрасного светодиода. Инфракрасное излучение светодиода поступает на фототранзистор сквозь палец. При изменении кровяного давления в капиллярах пальца — меняется сопротивление фототранзистора. К сожалению, на сайтах посвященных программированию микроконтроллеров и на форумах пока никто еще не добился более-менее надежных показателей.

Для стабильности показаний датчика, фототранзистор следует закрывать от попадания солнечного или искусственного света, чтобы исключить дополнительные помехи. На среднюю ножку модуля KY-039 подается питание +5V, на «–» подключается земля (GND). S – это аналоговый выход, который подключается к пину A1. Данные с модуля передаются на компьютер через аппаратный монитор порта Arduino IDE.

Как подключить датчик KY-039 к Ардуино

Для занятия нам понадобятся следующие детали:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • KY-039 датчик для измерения пульса в пальце;
  • макетная плата;
  • светодиод и резистор 220 Ом;
  • провода «папа-папа», «папа-мама».

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

Счетч для датчика сердцебиения KY-039

Как подключить датчик сердцебиения KY-039 к Ардуино
Как подключить датчик сердцебиения KY-039 к Ардуино
double alpha = 0.75;
int period = 100;
double change = 0.0;
double minval = 0.0;

void setup() {
    Serial.begin(9600);
    pinMode(A1, INPUT);
}

void loop() {
     static double oldValue = 0;
     static double oldChange = 0;
     int rawValue = analogRead(A1);
     double value = alpha * oldValue + (1 - alpha) * rawValue;
     Serial.print (rawValue);
     Serial.print (",");
     Serial.println (value);
     oldValue = value;
     delay(period);
}

Пояснения к коду:

  1. код имеет много лишних строчек и глобальных переменных Ардуино.

Счетч измерения пульса датчиком KY-039

Следующий код выводит на монитор порта пульс (количество ударов сердца в минуту). Данные намного достовернее, чем в предыдущем примере, кроме того мы добавили светодиод в схему. Напоминаем, что на датчик влияет внешнее излучение (солнечный свет, лампа и т.д.), а данные выводятся на монитор порта Arduino IDE с небольшой задержкой. Подключите датчик и загрузите следующий скетч в Ардуино.

Схема подключения датчика KY-039 к плате Ардуино Уно
Схема подключения датчика KY-039 к плате Ардуино Уно
#define samp_siz 4 // количество расчетов - можно увеличить до 20
#define rise_threshold 5

void setup() {
    Serial.begin(9600);
    pinMode(A1, INPUT);
    pinMode(A1, OUTPUT);
}

void loop() {

  float reads[samp_siz], sum;
  long int now, ptr;
  float last, reader, start;
  float first, second, third, before, print_value;
  bool rising;
  int rise_count;
  int n;
  long int last_beat;

  for (int i=0; i<samp_siz; i++)
    reads[i] = 0;
  sum = 0;
  ptr = 0;

  // в течение 20 мс вычисляем среднее значение датчика
  while (1) {
    n = 0;
    start = millis();
    reader = 0.;
    do {
      reader += analogRead(A1);
      n++;
      now = millis();
    }

    // записываем полученное среднее значение в массив
    while (now < start + 20);
    reader /= n;  // we got an average
    sum -= reads[ptr];
    sum += reader;
    reads[ptr] = reader;
    last = sum / samp_siz;

    // проверяем, появляется ли увеличение среднего значения
    if (last > before) {
      rise_count++;

      // если значение увеличивается, что подразумевает сердцебиение
      // включаем светодиод и записываем время с последнего удара
      // отслеживаем два предыдущих удара, чтобы получить взвешенное среднее
      if (!rising && rise_count > rise_threshold) {
        digitalWrite(10, HIGH);
        rising = true;
        first = millis() - last_beat;
        last_beat = millis();

        // рассчитываем средневзвешенную частоту сердечных сокращений
        print_value = 60000. / (0.4 * first + 0.3 * second + 0.3 * third);
        Serial.println(print_value);
        third = second;
        second = first;
      }
    }
    else {
      rising = false;
      rise_count = 0;
      digitalWrite(10, LOW);
    }
    before = last;
    ptr++;
    ptr %= samp_siz;
  }
}

Заключение. Датчик для измерения пульса в пальце ky-039 Arduino можно использовать в проектах. Мы рассмотрели, как подключить к микроконтроллеру Ардуино модуль и получить вполне достоверные данные о пульсе человека. Если у вас остались вопросы по рассматриваемой теме или есть предложения по улучшению программы для Arduino и KY039 — оставляйте их в комментариях к этой записи.

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Загрузка...

Похожие записи по теме:

2 комментариев для “Пример: Датчик сердцебиения KY-039 Ардуино”

  1. А как подключить датчик не вставляя его в макетную плату? то есть напрямую

    1. Для датчика ky-039 макетная плата не нужна, так как это готовый модуль. Нужны провода «папа-мама»

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *