Skip to main content

Quick Start

This guide introduces the FoBE Quill ESP32-S3 Mesh and how to use it.

Hardware diagram

The following figure illustrates the FoBE Quill ESP32-S3 Mesh hardware diagram.


FoBE Quill ESP32-S3 Mesh Hardware Diagram

Mechanical dimensions

FoBE Quill ESP32-S3 Mesh is a single-sided PCB with dimensions of 60.96mm x 20.32mm (2.4" x 0.8"), 1.6mm thick, featuring a USB Type-C port and dual through-hole pin headers.


FoBE Quill ESP32-S3 Mesh Mechanical Dimensions

Power supply

The FoBE Quill ESP32-S3 Mesh is designed to be powered by a battery and includes charging circuitry for lithium batteries. The charger can be powered from a wall adapter via the USB Type-C connector. The incoming USB voltage is routed exclusively to the charger IC, which monitors the battery and stops charging when it's full or if the temperature is too high (this requires soldering a thermistor to the NTC test point). The output from the charger then powers the development kit through a step-down converter.

A high-efficiency step-down converter (TPS62825) with a low quiescent current generates the 3.3V rail. This power supply powers the entire development kit and connected peripheral modules, supporting a maximum current of 2A.

Peripheral Power

PERI_3V3 is a switchable 3.3V power supply that can be controlled by the MCU to cut off power to the MFP (Multi-Function Port) during idle periods, thus saving power.
PERI_3V3 is controlled by GPIO1:

  • Set GPIO1 = HIGH to turn on PERI_3V3
  • Set GPIO1 = LOW to turn off PERI_3V3

DISPLAY power is also controlled by the MCU, via GPIO12:

  • Set GPIO12 = HIGH to turn on OLED power
  • Set GPIO12 = LOW to turn off OLED power

Voltage measurement

Battery voltage measurement is performed using a set of high-precision thick film resistors. The high-side resistor (R1) is 1M Ohm, and the low-side resistor (R2) is 1.5M Ohm. The SoC's ADC pin (GPIP0) is connected to the measurement point:

For a voltage divider circuit with two resistors R1 and R2 in series, where Vin is the total input voltage across both resistors, and Vout is the voltage across R2:

Vout = Vin * (R2 / (R1 + R2))

By acquiring the voltage at the measurement point using the ADC, the current battery voltage can be obtained according to the formula.

General purpose I/Os

Up to 21 multi-function GPIOs are available on the header pins (7 can be used as ADC inputs). These GPIOs operate at 3.3V logic level and can be mapped to various digital peripherals (UART, SPI, I2C, PWM, etc.) for flexible development.

The MFP additionally provides 4 GPIO pins, two of which can be connected to an NFC antenna, or directly connected to modules supporting the MFP interface, or expand to two I2C channels.

Display

The FoBE Quill ESP32-S3 Mesh features an onboard 1.3-inch monochrome OLED display, 128 x 64 resolution, 16-pin FPC, driven by an SSD1312 controller via I2C.

Buttons and LEDs

There are two buttons and one blue LED connected to dedicated GPIOs on the ESP32-S3 SoC. The following table shows the Button and LED connections:

ComponentGPIO PinActive state
Reset ButtonRESETLow
USR ButtonGPIO0Low
USR LEDGPIO11Low

Sub-GHz Radio

The FoBE Quill ESP32-S3 Mesh board features an onboard sub-GHz radio module based on the Semtech SX1262 chip. It supports LoRa and (G)FSK modulation and operates in the 433 MHz, 868 MHz, and 915 MHz frequency bands (model dependent). An integrated 1.8V TCXO ensures excellent stability, unaffected by temperature variations.

Key specifications include an active receive current consumption of just 4.2 mA, a maximum transmit power of up to +22 dBm, and high sensitivity down to -148 dBm, providing excellent interference immunity.

The module connects to the ESP32-S3 SoC via SPI for long-range wireless communication:

SX1262 PinGPIO PinActive state
MISOGPIO41
MOSIGPIO39
SCKGPIO40
NSSGPIO45Low
RSTGPIO44Low
BUSYGPIO43High
DIO1GPIO42High
RXENGPIO46High

Antenna

Wi-Fi/Bluetooth Antenna

The FoBE Quill ESP32-S3 Mesh board has an embedded SMD ceramic antenna for the ESP32-S3 SoC, which supports Bluetooth and 2.4 GHz communication.

Sub-GHz Antenna

The FoBE Quill ESP32-S3 Mesh board has an iPEX-U.FL connector for connecting an external sub-GHz antenna.

Debug interface

The FoBE Quill ESP32-S3 Mesh board provides a debug interface via USB (CDC/JTAG) and edge JTAG pins. This allows developers to program and debug their applications using compatible tools and IDEs.

Light up the board

Prerequisite

Before you begin, please make sure you have the following items:

Hardware

  • FoBE Quill ESP32-S3 Mesh board
  • USB-C Cable (must support data transfer)
  • 3.7V Li-Ion/LiPo Battery (optional, for battery-powered applications)
  • Sub-GHz Antenna (optional, but if your program enables sub-GHz communication, please be sure to connect the antenna, otherwise, the module will be damaged)

Software

You can choose multiple IDEs for coding the FoBE Quill ESP32-S3 Mesh:

Setup the board

To light up your FoBE Quill ESP32-S3 Mesh board, follow these steps:

  1. Connect the Sub-GHz antenna to the iPEX-U.FL connector on the board (if applicable).
warning

If you are using the Sub-GHz radio module, please ensure that you connect an appropriate antenna to the iPEX-U.FL connector. Using the module without an antenna may damage it.

  1. Connect the board to your computer using a USB-C cable.
important

Make sure your USB cable supports data transfer (USB 2.0 or USB 3.0 are both fine), and is not a charge-only cable.

  1. Launch your preferred development environment (ESP-IDF, Arduino, PlatformIO, etc.).

  2. Add ESP32 board support to your IDE if required (for Arduino, use the Boards Manager).

  3. Select the correct board and port.

  4. Open or create a new project. Upload a simple example, such as the Blink sketch:

#include <Arduino.h>

#define LED_PIN 11 // User LED is on GPIO11

void setup() {
pinMode(LED_PIN, OUTPUT);
}

void loop() {
digitalWrite(LED_PIN, HIGH);
delay(500);
digitalWrite(LED_PIN, LOW);
delay(500);
}

Once uploaded, the onboard blue LED should blink, indicating the board is running.


Thaaaaaat's it

Advanced usage

Measuring battery status

The battery voltage can be measured using the ADC (Analog-to-Digital Converter) on the ESP32-S3 SoC. The voltage measurement is performed through a voltage divider circuit, as described in the Power Supply section.

#include <Arduino.h>

#define VBAT_ADC_PIN 10

void setup() {
Serial.begin(115200);
}

void loop() {
int raw = analogRead(VBAT_ADC_PIN);
float vref = 3.3; // ADC reference voltage
float vmeas = raw * vref / 4095.0;
float voltage = vmeas * (2.5); // Adjust multiplier according to divider ratio
Serial.print("Battery voltage: ");
Serial.print(voltage);
Serial.println(" V");
delay(1000);
}

Reading charging status

#include <Arduino.h>
#include <Adafruit_TinyUSB.h>

void setup() {
pinMode(PIN_CHARGING, INPUT);
Serial.begin(115200);
}

void loop() {
int status = digitalRead(PIN_CHARGING);
Serial.print("Charging status: ");
Serial.println(status == LOW ? "Charging" : "Not Charging");
delay(1000);
}

Drawing on the display

The OLED display can be controlled using the Adafruit SSD1306/SSD1312 library for Arduino.

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
#define OLED_ADDR 0x3C // Confirm I2C address

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

void setup() {
display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR);
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 10);
display.println("Hello FoBE!");
display.display();
}

void loop() {}

Power Consumption Verification

To verify the power consumption of the FoBE Quill ESP32-S3 Mesh, you can use a multimeter or an oscilloscope to measure the current drawn by the board in different modes (sleep, active, etc.).

You can follow the Meshtastic application guide to set up a low-power scenario for measurement.