Умная станция мониторинга здоровья: Arduino, Bluetooth и датчики
Компоненты и материалы
- Arduino UNO — 1 шт.
- Провода-перемычки — 1 набор
- Датчик температуры и влажности DHT11 (3 пина) — 1 шт.
- Датчик температуры — 1 шт. (вероятно, DS18B20)
- Резистор 10 кОм — 2 шт.
- Bluetooth-модуль HC-05 — 1 шт.
- Датчик пульса — 1 шт.
Приложения и онлайн-сервисы
- MIT App Inventor 2 — для создания Android-приложения
- Arduino IDE — для программирования микроконтроллера
О проекте
Этот проект представляет собой проводную электронную систему с датчиками и мобильным приложением, обеспечивающую удобный контроль состояния здоровья и параметров окружающей среды. Система измеряет температуру тела, температуру и влажность окружающей среды, а также пульс, передавая данные на смартфон через Bluetooth.
Программный код
Код написан на C/C++ для Arduino IDE. Он использует библиотеки SoftwareSerial, OneWire, DallasTemperature и cactus_io_AM2302 для работы с датчиками. Основные функции:
- Считывание данных с датчиков температуры (DS18B20) и влажности/температуры (DHT11/AM2302)
- Обработка сигнала от датчика пульса с использованием прерывания таймера 2 для точного измерения BPM
- Передача данных через последовательный порт и Bluetooth-модуль HC-05
#include <SoftwareSerial.h>
#include <cactus_io_AM2302.h>
#define AM2302_PIN 7
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
AM2302 dht(AM2302_PIN);
SoftwareSerial Bluetooth(10, 9); // RX, TX
// Переменные для измерения пульса
int pulsePin = 0;
int blinkPin = 13;
volatile int BPM;
volatile int Signal;
volatile int IBI = 600;
volatile boolean Pulse = false;
volatile boolean QS = false;
volatile int rate[10];
volatile unsigned long sampleCounter = 0;
volatile unsigned long lastBeatTime = 0;
volatile int P = 512;
volatile int T = 512;
volatile int thresh = 512;
volatile int amp = 100;
volatile boolean firstBeat = true;
volatile boolean secondBeat = false;
void interruptSetup() {
TCCR2A = 0x02;
TCCR2B = 0x06;
OCR2A = 0X7C;
TIMSK2 = 0x02;
sei();
}
ISR(TIMER2_COMPA_vect) {
cli();
Signal = analogRead(pulsePin);
sampleCounter += 2;
int N = sampleCounter - lastBeatTime;
// ... алгоритм детектирования пульса ...
sei();
}
void setup() {
Bluetooth.begin(9600);
Serial.begin(9600);
dht.begin();
sensors.begin();
interruptSetup();
}
void loop() {
sensors.requestTemperatures();
dht.readHumidity();
dht.readTemperature();
if (isnan(dht.humidity) || isnan(dht.temperature_C)) {
return;
}
if (QS == true) {
// Вывод данных в Serial и Bluetooth
Serial.print(sensors.getTempCByIndex(0));
Serial.print(" ");
Serial.print(dht.temperature_C);
Serial.print(" ");
Serial.print(dht.humidity);
Serial.print(" ");
Serial.println(BPM);
Bluetooth.print(sensors.getTempCByIndex(0));
Bluetooth.print(" ");
Bluetooth.print(dht.temperature_C);
Bluetooth.print(" ");
Bluetooth.print(dht.humidity);
Bluetooth.print(" ");
Bluetooth.println(BPM);
QS = false;
}
delay(1500);
}
Полный код доступен на GitHub: Tutorials-for-arduino
Схемы подключения
В проекте представлены несколько схем подключения компонентов (изображения в оригинале). Основные соединения:
- DHT11/AM2302: данные на пин 7, питание 5V, GND
- DS18B20: данные на пин 2, подтягивающий резистор 4.7 кОм
- HC-05: TX на пин 10 (RX Arduino), RX на пин 9 (TX Arduino) через делитель напряжения
- Датчик пульса: сигнал на аналоговый пин A0
Android-приложение
Приложение создано в MIT App Inventor 2. Оно подключается к HC-05, отображает полученные данные (температура тела, температура среды, влажность, пульс) в реальном времени. Исходный файл проекта (.aia) и готовый APK доступны в репозитории GitHub.
Производственный процесс
- Сборка логгера температуры на Raspberry Pi с $5 I2C датчиком
- Профессиональный мониторинг температуры на Raspberry Pi с датчиком DS18B20
- Создание удалённого датчика температуры на Raspberry Pi и Python — пошаговое руководство
- Создание метеостанции на Raspberry Pi с ежедневными email-отчётами о погоде
- Точный мониторинг температуры в серверной на Raspberry Pi
- Создание многодатчиковой системы мониторинга температуры и света с Raspberry Pi и DS18B20
- Создайте домашний монитор температуры на Raspberry Pi с MCP9808, InfluxDB и Grafana
- Новый модуль температуры A6630 расширил CSI 6500 Machinery Health Monitor вибрационными и температурными инсайтами
- Точный датчик температуры подшипников: обнаружение и мониторинг
- Продвинутый носимый газоанализатор с автонагревом для точного мониторинга здоровья и среды