[Blinker+ArduinoUNO+BLE]蓝牙测数据求助-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1693|回复: 1

[已解答] [Blinker+ArduinoUNO+BLE]蓝牙测数据求助

[复制链接]
发表于 2021-5-29 15:20 | 显示全部楼层 |阅读模式
设备信息
  • 硬件: [Arduino UNO]
  • 接入方式: [BLE]HM-10模块
  • package版本: 最新
  • blinker库版本: 最新
  • 开发环境: [Arduino IDE]
  • 操作系统: [Windows]
IDE 中的设置
  • 开发板类型和COM口选取正常
  • 其他都是默认设置
    手机信息及APP信息
  • 红米K30
  • android 10
  • 2.5.2
问题描述用的是PulseSensor传感器和Arduino 通过BLE连接并上传数据给Blinker,每次心跳都会手机振动并上传数据。
可以流畅运行

串口监视器看起来正常
手机振动的频率也很正常
文档里的蓝牙实例看过了,这个也没有报错,没有错误码

但是!APP界面的数据不会更新,只会显示同一个数据或显示0。

代码#define BLINKER_BLE
#include <Blinker.h>
#define USE_ARDUINO_INTERRUPTS true    // 使用Arduino中断。
#include <PulseSensorPlayground.h>     // 引入PulseSensor库文件。   
#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); //定义开发板之间串口通信的引脚RX=2,TX=3

//定义APP按钮和数据键名
BlinkerNumber APPBPM("bpm_read");

//PulseSensor相关的东西
const int PulseWire = 0;       // PulseSensor PURPLE WIRE connected to ANALOG PIN 0
const int LED13 = 13;          // The on-board Arduino LED, close to PIN 13.
int Threshold = 550;
int bpm_read = 60;
PulseSensorPlayground pulseSensor;

void heartbeat()
{
    APPBPM.print(bpm_read);//向移动端回传BPM数据        
}

void setup() {
  
  Serial.begin(9600);
  BLINKER_DEBUG.stream(Serial);
  BLINKER_DEBUG.debugAll();

  // 初始化位置引脚作为输入。
  pinMode(PulseWire, INPUT);

  Blinker.begin();
  Blinker.attachHeartbeat(heartbeat);//APP端获取传输的数据
   
// 定义PulseSensor的心跳显示灯.
  pulseSensor.analogInput(PulseWire);   
  pulseSensor.blinkOnPulse(LED13);       //脉搏灯输出引脚.
  pulseSensor.setThreshold(Threshold);

  // 当心率脉搏传感器开始运作,则引入头文件.
   if (pulseSensor.begin()) {
    Serial.println("心率测量已就绪。");  //This prints one time at Arduino power-up,  or on Arduino reset.  

  }
}

void loop() {
bpm_read = pulseSensor.getBeatsPerMinute();  // 获取心跳数据.
if (pulseSensor.sawStartOfBeat()) {         //当心跳发生时获取和处理心率数据   
   Serial.println("检测到一次心跳!");
   Serial.print("BPM: ");                     
   Serial.println(bpm_read);                 //串口监视器显示bpm数据
  
Blinker.vibrate(660);
     
  }
  Blinker.delay(20);                    // considered best practice in a simple sketch.
}
LOG信息23:36:59.504 -> [150429] autoFormatData data: "vibrate":660
23:36:59.551 -> [150445] strlen(_sendBuf): 0
23:36:59.551 -> [150476] data.length(): 13
23:36:59.643 -> [150604] print: {"vibrate":660}
23:36:59.690 -> [150604] Proto print...
23:36:59.690 -> [150604] Freeheap: 990
23:36:59.736 -> [150623] Response: {"vibrate":660}
23:36:59.736 -> [150660] Success...
23:36:59.781 -> [150701] Freeheap: 1160
23:37:00.013 -> 检测到一次心跳!
23:37:00.013 -> BPM: 69
23:37:00.013 -> [150962] autoFormatData data: "vibrate":660
……(和上面一样)
23:37:00.290 -> [151233] Freeheap: 1160
23:37:00.337 -> 检测到一次心跳!
23:37:00.382 -> BPM: 73
23:37:00.382 -> [151279] autoFormatData data: "vibrate":660
……(和上面一样)
23:37:00.661 -> [151580] Freeheap: 1160
23:37:03.585 -> 检测到一次心跳!
23:37:03.631 -> BPM: 206
每次心跳都会有一组信息

编译信息编译没有报错

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 12:35 , Processed in 0.069047 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表