Skip to content

Commit bbf7a72

Browse files
ohararpclaude
andcommitted
Add OHARARP ESP32-B board definition
ESP32-S3-WROOM-1-N16R8 based Feather-compatible board with: - 16MB QIO flash, 8MB OPI PSRAM - Native USB-C - DS3231MZ+ RTC with coin cell backup - AT24CS32 I2C EEPROM - Micro SD card (SPI) - NeoPixel (SK6805), status LED, 2 user buttons - STEMMA/Qwiic I2C breakout (JST-SH) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 47990e3 commit bbf7a72

5 files changed

Lines changed: 137 additions & 0 deletions

File tree

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// This file is part of the CircuitPython project: https://circuitpython.org
2+
// SPDX-FileCopyrightText: Copyright (c) 2025 OHARARP LLC
3+
// SPDX-License-Identifier: MIT
4+
5+
#include "supervisor/board.h"
6+
#include "mpconfigboard.h"
7+
#include "shared-bindings/microcontroller/Pin.h"
8+
9+
void board_init(void) {
10+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// This file is part of the CircuitPython project: https://circuitpython.org
2+
// SPDX-FileCopyrightText: Copyright (c) 2025 OHARARP LLC
3+
// SPDX-License-Identifier: MIT
4+
5+
#pragma once
6+
7+
#define MICROPY_HW_BOARD_NAME "OHARARP ESP32-B"
8+
#define MICROPY_HW_MCU_NAME "ESP32-S3"
9+
10+
// USB configuration
11+
#define MICROPY_HW_USB_VID 0x303A
12+
#define MICROPY_HW_USB_PID 0x8249
13+
14+
// NeoPixel
15+
#define MICROPY_HW_NEOPIXEL (&pin_GPIO48)
16+
17+
// Status LED
18+
#define MICROPY_HW_LED (&pin_GPIO21)
19+
#define MICROPY_HW_LED_STATUS (&pin_GPIO21)
20+
21+
// Default bus pins
22+
#define DEFAULT_I2C_BUS_SCL (&pin_GPIO9)
23+
#define DEFAULT_I2C_BUS_SDA (&pin_GPIO8)
24+
25+
#define DEFAULT_SPI_BUS_SCK (&pin_GPIO12)
26+
#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO11)
27+
#define DEFAULT_SPI_BUS_MISO (&pin_GPIO13)
28+
29+
#define DEFAULT_UART_BUS_TX (&pin_GPIO43)
30+
#define DEFAULT_UART_BUS_RX (&pin_GPIO44)
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
USB_VID = 0x303A
2+
USB_PID = 0x8249
3+
USB_PRODUCT = "ESP32-B"
4+
USB_MANUFACTURER = "OHARARP LLC"
5+
6+
IDF_TARGET = esp32s3
7+
8+
CIRCUITPY_ESP_FLASH_SIZE = 16MB
9+
CIRCUITPY_ESP_FLASH_MODE = qio
10+
CIRCUITPY_ESP_FLASH_FREQ = 80m
11+
12+
CIRCUITPY_ESP_PSRAM_SIZE = 8MB
13+
CIRCUITPY_ESP_PSRAM_MODE = opi
14+
CIRCUITPY_ESP_PSRAM_FREQ = 80m
15+
16+
CIRCUITPY_NEOPIXEL_WRITE = 1
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
// This file is part of the CircuitPython project: https://circuitpython.org
2+
// SPDX-FileCopyrightText: Copyright (c) 2025 OHARARP LLC
3+
// SPDX-License-Identifier: MIT
4+
5+
#include "shared-bindings/board/__init__.h"
6+
7+
STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
8+
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
9+
10+
// Analog pins (accent Feather pinout)
11+
{ MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO1) },
12+
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO2) },
13+
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO4) },
14+
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO5) },
15+
{ MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_GPIO6) },
16+
{ MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_GPIO7) },
17+
18+
// Digital pins (Feather pinout)
19+
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO39) },
20+
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO47) },
21+
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO18) },
22+
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO16) },
23+
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO15) },
24+
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO14) },
25+
26+
// UART
27+
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO43) },
28+
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO44) },
29+
30+
// I2C
31+
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO9) },
32+
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO8) },
33+
34+
// SPI
35+
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO12) },
36+
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO11) },
37+
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO13) },
38+
39+
// SD card
40+
{ MP_ROM_QSTR(MP_QSTR_SD_CS), MP_ROM_PTR(&pin_GPIO10) },
41+
{ MP_ROM_QSTR(MP_QSTR_SD_CD), MP_ROM_PTR(&pin_GPIO38) },
42+
43+
// RTC interrupt
44+
{ MP_ROM_QSTR(MP_QSTR_RTC_INT), MP_ROM_PTR(&pin_GPIO17) },
45+
46+
// NeoPixel
47+
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO48) },
48+
49+
// Status LED
50+
{ MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO21) },
51+
{ MP_ROM_QSTR(MP_QSTR_STATUS_LED), MP_ROM_PTR(&pin_GPIO21) },
52+
53+
// User buttons
54+
{ MP_ROM_QSTR(MP_QSTR_BUTTON_A), MP_ROM_PTR(&pin_GPIO41) },
55+
{ MP_ROM_QSTR(MP_QSTR_BUTTON_B), MP_ROM_PTR(&pin_GPIO42) },
56+
{ MP_ROM_QSTR(MP_QSTR_BOOT), MP_ROM_PTR(&pin_GPIO0) },
57+
58+
// I2C, SPI, UART bus objects
59+
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
60+
{ MP_ROM_QSTR(MP_QSTR_STEMMA_I2C), MP_ROM_PTR(&board_i2c_obj) },
61+
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
62+
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
63+
};
64+
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
CONFIG_ESP32S3_SPIRAM_SUPPORT=y
2+
3+
CONFIG_SPIRAM_MODE_OCT=y
4+
CONFIG_SPIRAM_TYPE_AUTO=y
5+
CONFIG_DEFAULT_PSRAM_CLK_IO=30
6+
CONFIG_DEFAULT_PSRAM_CS_IO=26
7+
CONFIG_SPIRAM_SPEED_80M=y
8+
9+
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
10+
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=240
11+
12+
CONFIG_ESP32S3_DATA_CACHE_64KB=y
13+
CONFIG_ESP32S3_DATA_CACHE_LINE_64B=y
14+
15+
# USB CDC on native USB pins (IO19/IO20)
16+
CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=n
17+
CONFIG_ESP_CONSOLE_USB_CDC=y

0 commit comments

Comments
 (0)