37浏览
查看: 37|回复: 1

[项目] Beetle树莓派 RP2350心率监测项目总篇

[复制链接]
一、项目初衷
基于Beetle树莓派 RP2350的可穿戴特质,为一些需要心率监测的人员实时查看心脏跳动情况
二、开发板介绍
产品简介
Beetle RP2350 是一款基于RP2350芯片设计的高性能迷你体积的开发板,该开发板仅硬币大小(25*20.5mm),专为对空间有要求的嵌入式应用设计。
高性能树莓派RP2350芯片
RP2350是树莓派新推出的高性能安全微控制器,该微控制器拥有独特的双核双架构设计,允许选择Arm Cortex-M33或Hazard3 RISC-V内核。RP2350拥有150MHz主频,520KB RAM和2MB Flash,可处理大量高速数据。
高度集成,超小尺寸
Beetle RP2350在仅硬币大小的体积上引出了11个IO、BAT、3.3V等众多接口,为项目制作提供了充足的IO和方便的电源连接。Beetle RP2350休眠功耗仅uA,使用电池可长时间工作。同时,Beetle RP2350还集成了锂电池充电功能和电池电压监控功能,可对锂电池进行充电和监测电量,以便在电量不足时采取措施,确保设备持续运行。
易于编程,易于集成
Beetle RP2350支持C/C++、MicroPython编程,可选择熟悉的编程语言,从而实现更高效的开发流程。Beetle RP2350所有器件均在一面,并且采用半孔设计,因此可用于贴片设计,有助于大规模集成。
产品特点
  • 高性能树莓派RP2350芯片
    • 双核双架构设计,可选择Arm Cortex-M33或Hazard3 RISC-V内核
    • 150MHz主频
    • 520KB RAM,2MB flash
  • 高度集成,超小尺寸
    • 尺寸仅25*20.5mm
    • 集成锂电池充电管理、电池电压监测
    • 引出11个IO
  • 低功耗,休眠功耗仅25uA
  • 支持C/C++、MicroPython编程
  • 单面布局,半孔工艺,可用于贴片生产
应用场景
  • 复古电脑
  • 游戏机DIY
  • 键盘控制
  • 可编程灯光控制
  • 舞台道具控制
  • 电子徽章
技术规格
  • 基本参数
    • 工作电压: 3.3V
    • Type-C输入电压: 5V DC
    • VIN输入电压:5V DC
    • 最大充电电流:0.5A
    • 休眠电流:
    • 工作温度:-10~60℃
    • 模块尺寸:25*20.5mm
  • 硬件信息
    • 处理器:双核Cortex-M33或RICS-V Hazard3 processors
    • 主频:150 MHz
    • SRAM:520KB
    • Flash:2MB
    • USB: USB1.1

功能引脚示意图功能指示
序号
功能名称
功能说明

①Type-C USB接口下载程序及供电接口,支持4.75V~5.5V
②RST按键单击复位按钮,将程序复位
③锂电池接口支持3.7V~4.2V
④板载LED灯使用IO25引脚控制的LED灯
⑤充电指示灯指示充电状态的绿色LED灯,通过三种方式指示充电状态:1、充满电或未接入电源时熄灭;2、充电时常亮;3、USB供电,未连接锂电池时高频闪烁
⑥用户按键使用QSPI_SS引脚控制该按钮
⑦RP2350芯片芯片型号为RP2350A_QFN60引脚示意
引脚概述
引脚号
数字口
模拟口
UART
I2C
SPI
其它

0D0TX1
1D1RX1
4D4SDA
5D5SCL
8D8TX2
9D9RX2
16D16SPI0/MISO
18D18SPI0/SCK
19D19SPI0/MOSI
26D26A0
27D27A1
BAT锂电池输入接口,IO29为电池电压检测引脚
GND接地引脚
VCC该引脚接在USB电源引脚,作为输出时电压为USB电压,通常为5V
3V33.3V稳压电源输出尺寸图
  • pin脚间距:2.54mm
  • 主板尺寸:25mm×20.5mm
  • 板厚:1.0mm

三、开发环境搭建
我们以Arduino为开发环境进行示例
提前安装好适合电脑版本的Arduino(建议Windows10以上)
安装完成打开后为这个界面

语言更改:
界面为英语十分不便利,我们将更改语言
左上角File
点击Preferences
完成后ok即可
jason文件安装:
语言更改后点击Preferences(首选项)
其他开发板管理地址填写  https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
确定保存
如图所示点击开发板管理器
搜索RP2350并安装(此处我已经安装完毕)
点击工具菜单,如下图方式选择“Generic RP2350”开发板
最下方RP2350
至此,Beetle RP2350 SDK安装完成,可以开始使用了。

、此项目的构想和接线
所需材料:


https://www.dfrobot.com.cn/goods-1339.html

https://www.dfrobot.com.cn/goods-1374.html
大致接线方式图
oled的SCL、SDA、VCC、GND分别连接至主板的SCL、SDA、VCC、GND(左侧)
心率传感器绿线连接16号通信串口(所有的数字串口都可以使用)
黑线连接GND(左侧)
红线连接VCC
五、代码编写
代码经过四次更改,其中有无法显示、字号太小和心率计算出错
终稿
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <SoftwareSerial.h>

#define OLED_WIDTH 128
#define OLED_HEIGHT 64
#define OLED_ADDR 0x3C

SoftwareSerial hrSerial(18, 19);
Adafruit_SSD1306 oled(OLED_WIDTH, OLED_HEIGHT, &Wire, -1);

int bpm = 0;
int lastBpm = -1;  // 用于检测数值变化

void setup() {
  Serial.begin(9600);
  hrSerial.begin(9600);

  if (!oled.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR)) {
    Serial.println("OLED Error");
    while(1);
  }
  oled.clearDisplay();
  oled.display();
}

void loop() {
  if (hrSerial.available()) {
    String data = hrSerial.readStringUntil('\n');
    if (parseBPM(data) && (bpm != lastBpm)) {  // 仅当数值变化时刷新
      updateDisplay();
      lastBpm = bpm;
    }
  }
}

bool parseBPM(String data) {
  // 改进版数据解析(兼容多种格式)
  data.trim();
  int startIdx = data.indexOf("BPM:");
  if (startIdx == -1) startIdx = data.indexOf("HR:");
  if (startIdx == -1) startIdx = data.indexOf("Heart:");

  if (startIdx != -1) {
    String valStr = "";
    for (unsigned int i = startIdx + 4; i < data.length(); i++) {  // 4为"BPM:"长度
      if (isDigit(data)) valStr += data;
      else break;
    }
    if (valStr.length() > 0) {
      bpm = valStr.toInt();
      bpm = constrain(bpm, 0, 250);
      return true;
    }
  }
  return false;
}

void updateDisplay() {
  oled.clearDisplay();

  // 动态字号调整
  uint8_t textSize = (bpm > 99) ? 2 : 3;  // 三位数用小字号
  oled.setTextSize(textSize);

  String displayStr = String(bpm);
  int charWidth = 6 * textSize;          // 每个字符像素宽度
  int xPos = (OLED_WIDTH - displayStr.length() * charWidth) / 2;

  oled.setCursor(xPos, 20);
  oled.print(displayStr);

  // 添加单位标签(小字号)
  oled.setTextSize(1);
  oled.setCursor((OLED_WIDTH - 30)/2, OLED_HEIGHT - 15);
  oled.print("BPM");

  oled.display();
}
六、安装问题
我们在Arduino上下载相应的jason文件时会报错,显示是无法访问Github(小编以前更改过相应的文件,所以一次成功了,没有报错截图)
好像GitHub的访问像心情一样有时可以加载出来

我们可以通过以下正规方式处理

右键记事本管理员身份运行
按以下步骤
打开





注意右下角的文件类型选择为全部文件


最后一行输入传回地址(一串数字)和一个空格加github.com
传回地址获取方法:
win+r打开运行

输入cmd回车
输入ping空格github.com回车


中括号里的数字就是,可以直接ctrl+c复制
完成后记得保存记事本
七、驱动问题
我们在输入上一篇代码时会出现报错#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
因为我们缺少相应的驱动
所以我们要在Arduino的库中安装相应的驱动

安装如下的驱动
安装时他会提醒如下

为了后期使用,选择全部安装

驱动说明:
Adafruit_GFX.h是oled的初始化驱动
Adafruit_SSD1306.h是oled的ssd读写驱动
八、成果展示
Beetle树莓派 RP2350心率监测项目总篇图1

134195987630404  见习技师
 楼主|

发表于 10 小时前

希望木子姐姐可以给一个精华!
回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail