Skip to main content

Quick Start

This guide introduces the FoBE Breakout BM8563 and how to use it.

Hardware diagram

The following figure illustrates the FoBE Breakout BM8563 hardware diagram.


FoBE Breakout BM8563 Hardware Diagram

Mechanical dimensions

FoBE Breakout BM8563 is a single-sided 25.4mm x 25.4mm (1" x 1") 1.6mm thick PCB with two SH1.0 4-pin connectors and a set of 6-pin 2.54mm header holes. Fixing by 6 x 1.6mm Screw holes.


FoBE Breakout BM8563 Mechanical Dimensions

Interfaces

The module provides dual 4-Pin JST SH1.0 connectors, compatible with STEMMA QT / Qwiic.

2.54mm 6-PinJST-SH1.0Features
INTInterrupt, Active Low
GNDGNDGround
3V33V3Power supply, Only 3.3V
SDASDAI2C-Data line
SCLSCLI2C-Clock line
OUTClock output, programmable frequency

Backup Power

The FoBE Breakout BM8563 module can be powered by a backup battery (CR1220). The backup power supply ensures that the real-time clock continues to keep time even when the main power is disconnected.

Advanced

Jumper

The module features two jumper pads:

InterfaceDescription
LED-JUMPERDisconnect this jumper to turn off the power LED for further power saving
IIC PULL-UPDisconnect this jumper to disable I2C pull-up resistors if external pull-ups are used

Programming

Running with FoBE Quill ESP32S3 Mesh

Let's get started with the FoBE Quill ESP32S3 Mesh using the MFP interface.

  1. Connect the FoBE Breakout BM8563 to the FoBE Quill ESP32S3 Mesh using the MFP interface.

FoBE Breakout BM8563 Connection

  1. Create a sketch or PlatformIO project, or follow the FoBE Quill ESP32S3 Programming Guide for pre-configuration.

  2. Install the necessary library in your project:

makuna/RTC@^2.5.0
  1. Copy the following code into your sketch or PlatformIO project:
#include <RtcPCF8563.h>
#include <Wire.h>

#define I2C_SDA_PIN PIN_MFP3 // SDA pin for MFP to I2C cable, change if needed
#define I2C_SCL_PIN PIN_MFP4 // SCL pin for MFP to I2C cable, change if needed
#define PERI_EN_PIN PIN_PERI_EN // Peripheral enable pin, change if needed

RtcPCF8563<TwoWire> rtcSensor(Wire);

void setup()
{
// Initialize serial communication
Serial.begin(115200);
Serial.println("Serial initialized");

// Initialize peripheral power
if (PERI_EN_PIN >= 0)
{
pinMode(PERI_EN_PIN, OUTPUT);
digitalWrite(PERI_EN_PIN, HIGH); // Enable peripheral power
Serial.println("Peripheral power enabled");
}

// Initialize I2C bus
Wire.begin(I2C_SDA_PIN, I2C_SCL_PIN);
rtcSensor.Begin();
Serial.println("I2C bus initialized");

// Initialize RTC sensor
#if defined(WIRE_HAS_TIMEOUT)
Wire.setWireTimeout(3000 /* us */, true /* reset_on_timeout */);
#endif
Serial.println("BM8563 RTC sensor initialized");

// Configure RTC if needed
RtcDateTime compiled = RtcDateTime(__DATE__, __TIME__);
if (!rtcSensor.IsDateTimeValid() || rtcSensor.GetDateTime() < compiled)
{
rtcSensor.SetDateTime(compiled);
}

if (!rtcSensor.GetIsRunning())
{
rtcSensor.SetIsRunning(true);
}

// Clear alarms and timers
rtcSensor.StopAlarm();
rtcSensor.StopTimer();
rtcSensor.SetSquareWavePin(PCF8563SquareWavePinMode_None);
}

void loop()
{
delay(1000); // Wait 1 second between readings

if (rtcSensor.IsDateTimeValid())
{
RtcDateTime now = rtcSensor.GetDateTime();

// Display data on screen
Serial.print("\033[H\033[J");
Serial.println("> FoBE Breakout BM8563 RTC Monitor");
Serial.println();
Serial.print("\033[7m");
Serial.printf("%-12s%-12s\n", "INDEX", "VALUE");
Serial.print("\033[0m");
Serial.printf("%-12s%02u/%02u/%04u\n", "Date", now.Month(), now.Day(), now.Year());
Serial.printf("%-12s%02u:%02u:%02u\n", "Time", now.Hour(), now.Minute(), now.Second());
Serial.printf("%-12s%-12s\n", "Status", rtcSensor.GetIsRunning() ? "Running" : "Stopped");
Serial.printf("%-12s%-12s\n", "Valid", rtcSensor.IsDateTimeValid() ? "Yes" : "No");
}
}
important

This example code uses ANSI output formatting. Your terminal must support ANSI escape codes to display the output correctly.

# platformio.ini
[env:fobe_quill_esp32s3_mesh]
platform = FoBE Espressif 32
board = fobe_quill_esp32s3_mesh
framework = arduino
lib_deps =
makuna/RTC@^2.5.0
monitor_speed = 115200
monitor_raw = true
  1. Build and upload the project. You should see the FoBE Breakout BM8563 Monitor output in the serial monitor (raw mode).
> FoBE Breakout BM8563 RTC Monitor

INDEX VALUE
Date 08/09/2025
Time 02:04:48
Status Running
Valid Yes