Skip to content

feat(board): add esp32-devkit-oled target for generic ESP32 + SSD1306 (#26) - #38

Merged
SneezeGUI merged 2 commits into
mainfrom
feat/esp32-devkit-oled
Sep 19, 2026
Merged

SneezeGUI merged 2 commits into
mainfrom
feat/esp32-devkit-oled

Conversation

@SneezeGUI

Copy link
Copy Markdown
Owner

Adds an esp32-devkit-oled PlatformIO env, board_config block, devtool entry and README row for a plain ESP32 DevKit/WROOM driving a 128x64 SSD1306 I2C OLED (SDA=GPIO21, SCL=GPIO22, addr=0x3C).

  • Purely additive — reuses the existing USE_OLED_DISPLAY driver path, no source changes.
  • Classic ESP32 keeps the pipelined Xtensa ASM SHA (~715 KH/s) automatically.
  • Uses the driver's real macro names (OLED_SDA_PIN/OLED_SCL_PIN) with #ifndef guards.

⚠️ Testing

  • Compile + confirm OLED rendering on a real ESP32 DevKit + SSD1306.

Closes #26.

…#26)

Adds a PlatformIO env, board_config block, devtool entry and README row for
a plain ESP32 DevKit/WROOM driving a 128x64 SSD1306 I2C OLED on the standard
I2C pins (SDA=GPIO21, SCL=GPIO22, addr=0x3C). No driver or source changes --
it reuses the existing USE_OLED_DISPLAY path (display_oled.cpp / U8g2).

Classic ESP32 automatically gets the pipelined Xtensa ASM SHA (~715 KH/s) via
CONFIG_IDF_TARGET_ESP32, so this board mines at full speed with an on-device
status display instead of needing the web dashboard.

Uses the driver's real macro names OLED_SDA_PIN / OLED_SCL_PIN (display_oled.cpp
reads these), with #ifndef guards so the wiring can be overridden per build.

Compile-only change; confirm OLED rendering on a real ESP32 DevKit + SSD1306.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@SneezeGUI
SneezeGUI force-pushed the feat/esp32-devkit-oled branch from 8f7b314 to 06415bb Compare May 30, 2026 22:45
…matrix

The OLED envs were never compiled by CI (matrix covered one representative
env per chip family). This is the merge condition for #38 and also gives
the already-merged wemos-lolin32-oled env compile coverage going forward.

Co-Authored-By: Claude <noreply@anthropic.com>
@SneezeGUI

Copy link
Copy Markdown
Owner Author

Self-review before merging — code side checks out, and I closed the one real gap this PR had.

Verified against the driver and current main:

  • Pin macros are the ones the OLED driver actually reads: OLED_SDA_PIN/OLED_SCL_PIN (defaults 21/22/0x3C at display_oled.cpp:22-32, Wire.begin(...) at :220). Even if the env flags were dropped, the driver defaults match the documented wiring.
  • The #elif defined(ESP32_DEVKIT_OLED) block sits at the end of the chain in board_config.h, right before the Default #else, with everything #ifndef-guarded so per-board wiring can override.
  • The env is structurally identical to the merged wemos-lolin32-oled env (same chip, U8g2 dep, lib_ignore), with -O3 -funroll-loops matching the other classic-ESP32 performance envs. ASM SHA is selected by CONFIG_IDF_TARGET_ESP32 (miner.cpp:577), so no flag is needed for the fast path.

The gap was CI coverage: the matrix built three representative envs and never compiled this one — or wemos-lolin32-oled, for that matter. Compiling needs no hardware, so I added both OLED envs to the build matrix on this branch — all 5 envs are green, including the first-ever compile of esp32-devkit-oled. That closes every untested part that doesn't need a board, which was most of why this sat.

Still needs a board (per the checklist): actual rendering on a real module. One caveat for the README row: the driver only instantiates the SSD1306 constructor, so SH1106 look-alike modules will stay blank.

#26 — after merge I'll include esp32-devkit-oled_firmware.bin in the next release so there's something to flash. Please report back how it renders.

@SneezeGUI
SneezeGUI merged commit 621e85a into main Sep 19, 2026
5 checks passed
trcjr pushed a commit to trcjr/SparkMiner that referenced this pull request Sep 22, 2026
…se automation

- Bump AUTO_VERSION to v2.9.6-pre across all envs
- README: honest S3 (~50-55 KH/s, software-verified) and C3 (pending
  validation) numbers; old 280-400 KH/s figures were invalid shares
- CHANGELOG entry for everything in this batch (SneezeGUI#36 SneezeGUI#37 SneezeGUI#38 SneezeGUI#39 SneezeGUI#44 SneezeGUI#45)
- build.yml: upload factory-bin test builds on every PR
- release.yml: tag-triggered build of all 17 targets + GitHub Release
  with factory/firmware bins (uses post_build_merge.py output)

Co-Authored-By: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature request- oled status display support for esp32 devkit /wroom

1 participant