v1.2.0-rp2040 — first stable release ⭐
Pre-release
Pre-release
·
6 commits
to main
since this release
⭐ The release to install
This is the canonical first stable release for the Concept-Bytes OpenChess PCB v1 + Arduino Nano RP2040 Connect (the kit shipped to Kickstarter backers).
It supersedes the four iteration releases from earlier today (v1.0.0-rp2040 through v1.1.2-rp2040) — they remain in the releases archive as a record but users should install v1.2.0 above.
How to flash
- Download
OpenChess-v1.2.0-rp2040.uf2(302 KB). - Double-tap the white reset button on your Arduino Nano RP2040 Connect within ~500 ms.
- The board mounts as a USB drive named
RPI-RP2. - Drag the
.uf2onto that drive. The board reboots automatically into v1.2.0.
⚠️ The pre-built.uf2does not include WiFi credentials. To use AI mode, compile from source with your WiFi configured. Human-vs-Human mode works out of the box.
What works
Working AI mode
- 🌐 Stockfish via WiFi (Easy / Medium / Hard / Expert)
- 🛡️ Local move validation rejects malformed API responses
- 🟦 Bot-thinking breathing pulse on the bot's back rank
- 🟥 Red flash on rank 8 if the API can't respond — turn returns to player
- 🔌 Resilient AP→STA WiFi setup
Full chess rules
- ✅ Check, checkmate, stalemate
- ✅ Castling (kingside + queenside, FIDE legal)
- ✅ En passant (pink LED hint, correct captured-pawn removal)
- ✅ Pinned-piece detection
- ✅ 50-move rule + insufficient material draws
- ✅ Promotion choice via 4 LEDs (Q / R / B / N) in Human-vs-Human
UX
- 💡 Setup hint at boot (white side glows white, black side red, dim as pieces are placed)
- 🌈 Convergent rainbow explosion when all 32 pieces are in place
- 🎯 Simplified 2-option menu: D5 = HvsH, E4 = AI
- 📌 Sticky menu (lifting a piece to use as selector doesn't regress)
- 🔄 Reset gesture (32 pieces in starting position for ≥1.5 s = back to menu)
- 🆔 Versioned boot banner
Robustness
- ✅ 10 chess engine self-tests at every boot (red flash 5× on failure)
- ✅ Sensor debounce (3 consecutive scans required)
- ✅ AP shutdown when not needed
- ✅ Driver-layer column-mirror coordinate fix (the Concept-Bytes PCB wires file
ato internal column 7; upstream never accounted for this, so chess notation in serial logs / FEN was mirrored across the a-h axis. Fixed inBoardDriver— 2 lines, 36 callers untouched.)
Bug fixes vs upstream Concept-Bytes (each is a real PR upstream)
| # | Bug | Upstream PR |
|---|---|---|
| 1 | AI mode hangs at "Connecting to WiFi…" | #9 |
| 2 | "API request was not successful" on a successful response | #10 |
| 3 | Easy and Medium AI use identical depth | #10 |
| 4 | Bot move applied without local validation | #10 |
| 5 | MODE_GAME_3 placeholder spams serial | #10 |
| 6 | moves[27] vs moves[28] inconsistency |
#10 |
| 7 | No chess rules (check, mate, castling, EP, draws) | #11 |
| 8 | Bot freezes silently on API timeout | this fork only |
| 9 | Column-mirror coordinate bug | this fork only (PCB-specific) |
Verified
Sketch uses 148398 bytes (0%) of program storage space.
Global variables use 44640 bytes (16%) of dynamic memory.
=== Self-tests complete: 10/10 passed ===
End-to-end on Arduino Nano RP2040 Connect with WiFiNINA firmware 3.0.1, Concept-Bytes PCB v1: 15+ moves of an Italian Game with capture, castling, invalid-move recovery, and breathing-pulse-during-bot-thinking all verified working.
Known limitations (deferred to v1.3)
- Serial debug print has a row-axis mirror (logs
e2 to e4ase7 to e5). Internally consistent, only the human-readable print is wrong. - AI mode promotion still auto-Q (5-char API parse not implemented).
- Difficulty selection requires recompile.
- 3-fold repetition not implemented (~2 KB RAM cost).
Source
- Branch
release/v1.2.0-rp2040 - Full CHANGELOG.md
- User manual with WiFi setup walkthrough