i-FOX 发表于 2025-5-6 12:27:46

【Beetle 树莓派RP2350】支持DFROBOT与Grove接口兼容扩展板

本帖最后由 i-FOX 于 2025-5-6 12:27 编辑

一、设计初衷

Beetle RP2350的尺寸很小,导致可引出的引脚也比较少,在预留了一个串口、IIC、SPI后,只有4个IO可用,其中2个支持模拟,两个是串口2的。
一般默认的开发都是使用串口1,所以,把另一个串口用于GPIO的功能 。
其他引脚在芯片上无法引出。所以,单纯的引出这些引脚意义用处不大,还要增加很多扩展的功能才行,但这些扩展DFROBOT的很多模块都是支持的,为了不“重复造轮子”,这里直接把2.54的排针转换成DFROBOT模块的标准接口。
由于DFROBOT的SPI没有标准的接口定义,这里就先按自己的一个定义来设计 ,除了SPI的主要数据线外,增加2个引脚,用于复位或是中断功能。

如果IO不够用,可以使用Gravity:CH423 I2C模块,或是Gravity: MCP23017 I2C 16位数字IO扩展模块。
如果IIC不够用,可以使用Gravity: I2C分线模块
现在市面上的这种小模块,除了DFROBOT还有很多是Grove接口标准的,为了兼容,添加了两种接口定义。

原理图:


接口说明:

为防止两种接口的错误接插,在引出扩展板的电源处,增加保险。
DFROBOT的模块供电电压大多都是3.3~5V,而RP2350的IO电平是以3.3V为基准的,所以,接口上的电源采用3.3V
这里需要特别注意一下,DFROBOT也有两种接口,这两种接口的电源+-正好是反的,使用时需要注意。
Tricks for changing sensor cable pin mapping - DFRobot



为方便可穿戴应用,扩展板底面预留了电池的连接口,使用ph2.0-2p连接线连接,注意电池的正负。
为避免使用的外设过多,功率不够,另外增加了5V电源的输入接口。

这个扩展板,在焊接上Beetle RP2350时,可以当一个扩展板,但当不焊接 Beetle RP2350时,可以当一个DFROBOT接口与Grove接口的桥接转换板。这样可以使用更多 的模块进行开发DIY了。

焊接时,为了方便拆下开发板,在开发板底下放了四个小电阻,可以把板子架高一点点,焊开发板时,锡放多一些;拆的时候,与低板有一定提空间,方便把锡吸走,用烙铁就可以了,否则,还要上焊台。

如下,是焊接好后的扩展板。
正面,DFROBOT标准接口,两个IO,一个IIC,一个UART。

背面,Grove标准接口,多了一个SPI的接口,一个IO与A0复用。




二、外设测试

1、RGB灯


2、IIC数码管


3、IO-LED



三、测试代码


#include "FastLED.h"
#include <Arduino.h>

#include "TM1650.h" //导入TM1650的库文件
#include <Wire.h>
#include <hardware/timer.h>
#include <pico/time.h>

int item = 0; //要显示的值
TM1650 display;
#define SDA_pin 4
#define SCL_pin 5

#define NUM_LEDS 36      // LED数量
#define DATA_PIN 26      // 数据引脚
#define BRIGHTNESS 64   // 亮度(0-255)
uint8_t gHue = 0;         // 全局色调值
uint8_t gPattern = 0;   // 当前模式
CRGB leds;

volatile bool timerFired = false;
repeating_timer_t timer;
unsigned int count;
// 定时器回调函数
bool timerCallback(repeating_timer_t *rt) {
    timerFired = true;
   
    digitalWrite(27, !digitalRead(27));
    count++;
    if(count>9999)
    {
      count=0;
    }
    return true; // 返回true表示继续重复
}

void setup() {
count=0;
Wire.begin();
pinMode(27, OUTPUT);//设置引脚为输出模式
FastLED.addLeds<WS2812, DATA_PIN, GRB>(leds, NUM_LEDS);
FastLED.setBrightness(BRIGHTNESS);
display.init();

add_repeating_timer_ms(500, timerCallback, NULL, &timer);// 100ms触发一次
}

void colorRunningLights() {
fadeToBlackBy(leds, NUM_LEDS, 20);

static uint8_t startPos = 0;
for(int i = 0; i < 5; i++) {
    leds[(startPos + i) % NUM_LEDS] = CHSV(gHue + (i * 85), 255, 255);
}
startPos = (startPos + 1) % NUM_LEDS;
gHue += 3;
}
void loop() {

char line ={0};// "1234";
sprintf(line, "%4d", count);
display.displayOff();
display.displayString(line);
display.setBrightness(TM1650_MIN_BRIGHT);
display.displayOn();

colorRunningLights();
FastLED.show();
delay(20);


}


i-FOX 发表于 2025-5-7 11:36:00

扩展板已开源,有需要自取。https://oshwhub.com/146267c/beetlerp2350-standard-interface-

无垠的广袤 发表于 2025-5-6 14:11:54

大佬的设计太棒啦 {:6_209:}

Z7AoUY2D2kq8 发表于 2025-5-6 21:46:15

厉害厉害厉害厉害厉害厉害厉害厉害
页: [1]
查看完整版本: 【Beetle 树莓派RP2350】支持DFROBOT与Grove接口兼容扩展板