一、项目概述
1.1 项目目标
本项目旨在构建一个嵌入式数据显示系统,通过 Beetle RP2350 开发板搭载 HC-05 蓝牙模块,实现对手机 APP 发送数据的无线接收,并利用 0.96 英寸 OLED 显示屏进行实时信息展示。该系统可应用于物联网终端设备、嵌入式控制界面等场景,为短距离无线数据交互提供可视化解决方案。
1.2 核心功能
蓝牙通信:基于 HC-05 模块实现手机 APP 与开发板的蓝牙串口通信(SPP 协议),支持 10 米范围内的数据传输。
数据显示:通过 SSD1306 驱动的 OLED 显示屏,以 128×64 像素分辨率实时显示接收的文本信息。
硬件集成:采用低功耗高性能的 RP2350 芯片开发板,集成 ADC、UART、I2C 等接口,满足多模块协同工作需求。
二、硬件系统设计
2.1 Beetle RP2350 开发板
核心特性:
基于 RP2350 双核 ARM Cortex-M33 处理器,支持最高 133MHz 运行频率,具备 264KB 片上 RAM 及 2MB Flash 存储。
板载 2 路 12 位 ADC 通道(A0 对应 IO26,A1 对应 IO27),支持模拟信号采集。
超紧凑尺寸设计,兼容 Arduino IDE 开发环境,便于快速原型开发。
2.2 0.96 英寸 OLED 显示模块

技术参数:
采用 SSD1306 驱动芯片,支持 I2C 通信接口(默认地址 0x3C)。
128×64 像素自发光白色 OLED 面板,支持高对比度显示,无需背光系统,功耗低至 5mA(典型值)。
内置显存控制器,支持文本、图形、位图等多种显示模式,通过 U8g2 库可实现高效驱动。
3、蓝牙模块HC-05

通信规格:
基于蓝牙 2.0+EDR 标准,支持主 / 从模式切换,通过 AT 命令可配置设备名称、配对密码等参数。
串口通信接口(UART)支持 9600-115200bps 波特率,默认波特率 38400bps(可通过 AT 指令修改)。
典型通信距离 10 米(无障碍物),适合短距离无线数据传输场景。
三、电路连接方案
3.1 硬件连接示意图

3.2 引脚连接说明
模块 | 开发板引脚 | 连接说明 |
HC-05 TX | GPIO9 | 开发板 UART1 接收端(RX) |
HC-05 RX | GPIO8 | 开发板 UART1 发送端(TX) |
OLED SCL | GPIO5 | I2C 时钟线(SCL) |
OLED SDA | GPIO4 | I2C 数据线(SDA) |
VCC | 3.3V | |
GND | GND |
四、软件开发环境配置
4.1 Arduino IDE 开发板配置
步骤 1:添加开发板管理器网址
打开 Arduino IDE 后,点击菜单栏中的 文件 -> 首选项。
在弹出的 首选项 窗口中,找到 附加开发板管理器网址 输入框。
输入 Beetle RP2350 开发板的支持包链接。通常可以在开发板的官方文档或者社区中找到对应的链接。对于 RP2350 开发板,一般使用的链接是 https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json。
点击 确定 保存设置。

步骤 2:安装开发板支持库
进入 工具 > 开发板 > 开发板管理器,等待索引更新完成。
在搜索栏输入 "RP2350",选择 "Raspberry Pi Pico/RP2040/RP2350" 并点击 "安装"。
等待安装完成(根据网络速度,可能需要 2-5 分钟)。

步骤 3:选择目标开发板
安装完成后,通过 工具 > 开发板 菜单选择 "Generic RP2350"。

步骤 4:配置通信端口
通过 USB 线连接开发板至电脑,在 工具 > 端口 中选择正确的 COM 端口(如 "COM3")。
4.2 第三方库安装
1、U8g2 库(OLED 驱动)
打开库管理器(Sketch > 包含库 > 管理库)。
搜索 "U8g2",选择 "olikraus/U8g2" 并安装。
功能:支持 SSD1306 等 50 + 种显示驱动,提供绘制文本、图形、二维码等 API,兼容 Arduino 框架。

五、主要程序设计
5.1 代码框架说明
#include <Wire.h>
#include <U8g2lib.h>
#define HC05_RX_PIN 9
#define HC05_TX_PIN 8
#define OLED_SDA 4
#define OLED_SCL 5
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(
U8G2_R0,
U8X8_PIN_NONE,
OLED_SCL,
OLED_SDA
);
void setup() {
Serial.begin(9600);
Serial2.begin(9600);
u8g2.begin();
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_7x13B_tf);
delay(1000);
Serial.println("初始化完成");
}
void loop() {
if (Serial2.available()) { // 检测蓝牙数据
String data = Serial2.readStringUntil('\n'); // 读取单行数据
u8g2.firstPage(); // OLED分页刷新
do {
u8g2.setCursor(0, 15); // 设置文本位置(Y=15为第一行)
u8g2.print("Received:");
u8g2.setCursor(0, 35); // 第二行
u8g2.print(data); // 显示数据
} while (u8g2.nextPage());
}
}
5.2 关键功能实现
蓝牙数据接收:
通过HardwareSerial类初始化 UART0,与 HC-05 模块通信,使用readStringUntil('\n')实现按行接收数据,支持换行符(\n)作为数据结束标志。
OLED 显示控制:
U8g2 库采用分页缓冲区机制,通过firstPage()和nextPage()循环实现全屏刷新,支持多语言字符显示(需选择对应字体)。
异常处理:
可添加数据校验逻辑(如检查数据长度、格式),避免非法数据导致显示异常;通过u8g2.clearDisplay()清除无效残留数据。
评论