一、项目初衷
基于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
#include
#include
#include
#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 #include 因为我们缺少相应的驱动 ![]() ![]() 安装如下的驱动 ![]() ![]() 安装时他会提醒如下 ![]() 为了后期使用,选择全部安装 驱动说明: Adafruit_GFX.h是oled的初始化驱动 Adafruit_SSD1306.h是oled的ssd读写驱动 八、成果展示 ![]() |
评论