一、项目概述
1.1 项目目标
本项目基于 Beetle RP2350 开发板,结合 0.96 英寸 OLED 显示屏与继电器模块,实现对外部设备的定时控制与状态显示功能。系统通过 OLED 实时展示继电器通断状态,并按照预设时间间隔自动切换继电器工作模式,可应用于智能家居、工业自动化控制等场景。
1.2 核心功能
继电器定时控制:实现继电器每 3 秒切换一次状态(通 / 断),支持外部设备的周期性供电控制。
状态实时显示:通过 OLED 屏直观展示继电器当前状态("ON"/"OFF")。
调试接口支持:利用串口通信输出状态信息,方便开发阶段调试与监控

继电器线圈失电

继电器线圈得电
二、硬件系统设计
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、继电器模块

主要规格:
5V 电磁继电器,支持 NO(常开)/NC(常闭)触点
高电平触发(3.3V/5V 兼容)
最大负载:AC 250V/10A,DC 30V/10A
控制继电器的引脚连接在 ESP-01S 的 IO0(GPIO0),控制方式是,GPIO0 输出低电平时,继电器线圈得电;GPIO0 输出高电平时,继电器线圈失电。
三、电路连接方案
3.1 引脚连接说明
模块 | RP2350 引脚 | 连接说明 |
OLED SCL | GPIO5 | I2C 时钟线 |
OLED SDA | GPIO4 | I2C 数据线 |
继电器 IN | GPIO9 | 控制信号输入(高电平触发) |
VCC | 5V | 电源输入 |
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 OLED_SDA 4
#define OLED_SCL 5
#define RELAY_PIN 9
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(
U8G2_R0,
U8X8_PIN_NONE,
OLED_SCL,
OLED_SDA
);
void setup() {
u8g2.begin();
u8g2.setFont(u8g2_font_unifont_t_chinese3);
// 初始化串口通信,方便调试
Serial.begin(115200);
Serial.println("继电器模块测试开始");
// 设置继电器控制引脚为输出模式
pinMode(RELAY_PIN, OUTPUT);
// 初始状态:断开继电器(高电平)
digitalWrite(RELAY_PIN, HIGH);
}
void loop() {
// 闭合继电器(低电平触发)
Serial.println("继电器闭合,外部设备通电");
digitalWrite(RELAY_PIN, LOW);
u8g2.clearBuffer();
u8g2.setCursor(0, 35);
u8g2.print("ON");
u8g2.sendBuffer();
delay(3000); // 保持3秒
// 断开继电器(高电平)
Serial.println("继电器断开,外部设备断电");
digitalWrite(RELAY_PIN, HIGH);
u8g2.clearBuffer();
u8g2.setCursor(0, 35);
u8g2.print("OFF");
u8g2.sendBuffer();
delay(3000); // 保持3秒
}
评论