Arduino UNO采集血压/心率/血氧/体温等数据传输到Blinker云平台 手机APP显示数据
/*
* 整合版健康监测与智能控制代码(完整功能)
* 功能:
* 1. MAX30102(D6/D7)采集血氧(SpO2)
* 2. MKB0908串口采集心率、血压、体温
* 3. DHT11(D5)采集温湿度(支持历史数据)
* 4. 4路继电器控制(D1 - D4)
* 5. Blinker平台实时数据+历史数据展示
* 6. 设备状态远程控制与反馈
*/
// 物联网与传感器库
#define BLINKER_WIFI
#include <Blinker.h>
#include <Wire.h>
#include "MAX30105.h"
#include "spo2_algorithm.h"
#include <DHT.h>
// Blinker组件定义(需与APP组件Key完全一致)
// 数据展示组件
BlinkerNumber SPO2("spo2"); // 血氧
BlinkerNumber HR("hr"); // 心率(MKB0908)
BlinkerNumber HUMI("humi"); // 湿度(实时+历史)
BlinkerNumber TEMP("temp"); // 温度(实时+历史)
BlinkerNumber HX("hx"); // 血压高压
BlinkerNumber LX("lx"); // 血压低压
BlinkerNumber TEM("tem"); // 体温
// 继电器控制组件
BlinkerButton MainSwitch("MainSwitch"); // 总控按钮
BlinkerButton Switch1("Switch1"); // 插座1
BlinkerButton Switch2("Switch2"); // 插座2
BlinkerButton Switch3("Switch3"); // 插座3
BlinkerButton Switch4("Switch4"); // 插座4
// MAX30102配置(血氧传感器)
MAX30105 particleSensor;
#define MAX_SAMPLE_RATE 400 // 采样率400Hz
#define MAX_SAMPLE_COUNT 100 // 每次采集100个样本
uint32_t redBuffer[MAX_SAMPLE_COUNT]; // 红光信号缓存
uint32_t irBuffer[MAX_SAMPLE_COUNT]; // 红外信号缓存
int32_t spo2Value = 0; // 血氧值(百分比)
int8_t validSPO2 = 0; // 血氧有效性标志(0 = 无效,1 = 有效)
// DHT11配置(温湿度传感器)
#define DHT_PIN D5
#define DHT_TYPE DHT11
DHT dht(DHT_PIN, DHT_TYPE);
float humidity = 0.0, temperature = 0.0; // 湿度(%)、温度(℃)
// MKB0908配置(血压传感器,串口通信)
int SendComm[6] = {0xFD, 0x00, 0x00, 0x00, 0x00, 0x00}; // 发送命令帧
int ReceiveData[6], ReceiveData2[6];
int hx = 0, lx = 0, hr = 0; // 高压、低压、心率
int tempZhengshu = 0, tempXiaoshu = 0; // 体温整数/小数部分
float bodyTemp = 0.0; // 体温(℃)
// 继电器引脚定义
#define RELAY1_PIN D1
#define RELAY2_PIN D2
#define RELAY3_PIN D3
#define RELAY4_PIN D4
// 网络配置(需用户自行修改)
char auth[] = "e01abface66c"; // Blinker设备密钥(在APP中获取)
char ssid[] = "Xiaomi_419"; // WiFi名称
char pswd[] = "419419419"; // WiFi密码
// 函数前置声明
void updateRelayState(int relayNum = 0);
void collectSpO2Data();
void collectDHTD