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
功能引脚示意图功能指示https://img.dfrobot.com.cn/wikicn/5d57611a3416442fa39bffca/ef1af544cb693d6f1944938fc09cc271.png
序号功能名称功能说明
①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
引脚示意https://img.dfrobot.com.cn/wikicn/5d57611a3416442fa39bffca/3a8983b1a6894c13755656d58903d643.png引脚概述
引脚号数字口模拟口UARTI2CSPI其它
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
https://img.dfrobot.com.cn/wikicn/5d57611a3416442fa39bffca/7a4cf7ceb7611aa91a5c9bcbd8c70bb9.png
三、开发环境搭建
我们以Arduino为开发环境进行示例提前安装好适合电脑版本的Arduino(建议Windows10以上)安装完成打开后为这个界面https://mc.dfrobot.com.cn/data/attachment/forum/202505/01/175054hy66vzppt6mm9ghy.png
语言更改:界面为英语十分不便利,我们将更改语言左上角Filehttps://mc.dfrobot.com.cn/data/attachment/forum/202505/01/175054hgh323xgpbxj414p.png点击Preferenceshttps://mc.dfrobot.com.cn/data/attachment/forum/202505/01/175054cw98m18w8986mg6c.png完成后ok即可jason文件安装:语言更改后点击Preferences(首选项)https://mc.dfrobot.com.cn/data/attachment/forum/202505/01/175054lhk1s77yrskhvbks.png其他开发板管理地址填写https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json确定保存如图所示点击开发板管理器搜索RP2350并安装(此处我已经安装完毕)https://mc.dfrobot.com.cn/data/attachment/forum/202505/01/175330j71o7ho44xnppa61.pnghttps://mc.dfrobot.com.cn/data/attachment/forum/202505/01/175054bhn7678tihsi26si.png点击工具菜单,如下图方式选择“Generic RP2350”开发板https://mc.dfrobot.com.cn/data/attachment/forum/202505/01/175054px87tp3txfa5495x.png最下方RP2350至此,Beetle RP2350 SDK安装完成,可以开始使用了。
四、此项目的构想和接线所需材料:
https://mc.dfrobot.com.cn/data/attachment/forum/202505/04/195718cq5525ih5iq52vqz.jpeghttps://mc.dfrobot.com.cn/data/attachment/forum/202505/04/195802e61r44ucmaii3731.jpeg
https://www.dfrobot.com.cn/goods-1339.html
https://www.dfrobot.com.cn/goods-1374.html
大致接线方式图https://mc.dfrobot.com.cn/data/attachment/forum/202505/04/195545mo3jj7i353ixtiob.jpeghttps://mc.dfrobot.com.cn/data/attachment/forum/202505/04/195539gocca8z8ul37eeec.jpeghttps://mc.dfrobot.com.cn/data/attachment/forum/202505/04/195544xnomogmuz5r5umn5.jpeg
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的访问像心情一样有时可以加载出来
https://mc.dfrobot.com.cn/data/attachment/forum/202505/12/131109wro2z8d7t023ooyy.png
我们可以通过以下正规方式处理
https://mc.dfrobot.com.cn/data/attachment/forum/202505/12/131204fbywwlde8ybsmbcc.png
右键记事本管理员身份运行
按以下步骤
打开
https://mc.dfrobot.com.cn/data/attachment/forum/202505/12/131319e4focewx4fei4bio.png
https://mc.dfrobot.com.cn/data/attachment/forum/202505/12/131334foqi4chpe4gye4ig.png
https://mc.dfrobot.com.cn/data/attachment/forum/202505/12/131358hkhvb2qhwhnvh0qh.png
https://mc.dfrobot.com.cn/data/attachment/forum/202505/12/131423p1pmiximvqaqpuw5.png
https://mc.dfrobot.com.cn/data/attachment/forum/202505/12/131443g1n24cqhnbcqmnny.png
注意右下角的文件类型选择为全部文件
https://mc.dfrobot.com.cn/data/attachment/forum/202505/12/131530iuqucnfbqfdcrocr.png
https://mc.dfrobot.com.cn/data/attachment/forum/202505/12/131553si9o9ofznytyn719.png
最后一行输入传回地址(一串数字)和一个空格加github.com
传回地址获取方法:
win+r打开运行
https://mc.dfrobot.com.cn/data/attachment/forum/202505/12/131714m9lspygle69i73gy.png
输入cmd回车
输入ping空格github.com回车
https://mc.dfrobot.com.cn/data/attachment/forum/202505/12/131817gv8vvvyyckc3xvyz.png
https://mc.dfrobot.com.cn/data/attachment/forum/202505/12/131836l63avmm6l2h5zvo6.png
中括号里的数字就是,可以直接ctrl+c复制
完成后记得保存记事本
七、驱动问题
我们在输入上一篇代码时会出现报错#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
因为我们缺少相应的驱动
https://mc.dfrobot.com.cn/data/attachment/forum/202505/09/161812q93xxp5k9izx9mxz.png所以我们要在Arduino的库中安装相应的驱动
https://mc.dfrobot.com.cn/data/attachment/forum/202505/09/161930uhhdqdd5duch3a3u.png
安装如下的驱动https://mc.dfrobot.com.cn/data/attachment/forum/202505/09/162011qm1qumdr2mukuu5m.pnghttps://mc.dfrobot.com.cn/data/attachment/forum/202505/09/162038clwzjd5xl5s556xp.png
安装时他会提醒如下
https://mc.dfrobot.com.cn/data/attachment/forum/202505/09/162109cmrmc1ou1ytafocf.png
为了后期使用,选择全部安装
驱动说明:
Adafruit_GFX.h是oled的初始化驱动
Adafruit_SSD1306.h是oled的ssd读写驱动
八、成果展示
希望木子姐姐可以给一个精华!
页:
[1]