
チェスパズル専用機を電書リーダーで作った話🎈
こんにちは!気球人です🎈
突然ですが、チェスのプロブレムを電車で延々と解きたくなったりしませんか?
そんなヤツはオレだけかもしれませんが、ともかく、電子書籍リーダーの XTEINK X3 をチェスパズルしかできない専用機にしました!
名前は PondeMate(ponder=長考 + メイト)♟️👀
GitHub に置いてあります!
🔗 https://github.com/kikyujin/PondeMate
実は専用機が大好き 🎈
電卓はスマホより電卓、時計はスマホより時計。
「それしかできない道具」が好きなんですよね。
電源を入れたらやることはひとつ 👀
チェスパズルも、スマホでやると3問目あたりでXとかに吸い込まれる🌪️
で、チェスパズル専用機を探してみたら……あるにはあるけど、手に入りにくそうです。
いちばん近いのは Atlas というキックスターターのものか?🤔
7.5インチの電子ペーパーのチェス端末。
ネット経由で lichess や Chess.com につながって、パズルも解ける立派な端末です……でも、まだクラウドファンディングの段階で、届くかどうかはわからない。
そして、市販されたら 249 ドルっぽい。
いや、ネットつなぐんだったら iPad あるねん🤣
オレが欲しいのは、ポケットに入って、オフラインで、パズルだけ解けるやつなんです!
XTEINK X3 という小さな E-ink 端末 📖
なんか無いんかと Amazon を見ていたら、見つけました!
手のひらサイズの E-ink リーダー。
オレが買った時はセールで 11,119円。
中身は ESP32-C3、
ボタンは前面に4つと側面に2つ、
microSD スロットつき。
なお、充電とデータ転送は付属の専用ケーブル(背面の磁石ポゴピン)です。

そして、この X3 には CrossPoint Reader という、有志によるオープンソース(MIT)のファームがあります。
これを入れると、自分でアプリが組み込める。
もう作るしかない!💥
ありがたくフォークさせてもらいました。
〝PondeMate〟できました ♟️🦊

問題は lichess のパズル(CC0)
👉️ メイト/タダ取り/両取り・ピン/終盤の4セット×1000問、レーティング 1000〜1500。SD カードに入れるだけ6つボタンオペレーション
👉️ X3 の標準UI or vi風HJKLインタフェース搭載。Hint(動かす駒だけ教える)機能搭載
解いた問題は SD のログに記録。
駒の絵は自作(というかエルマー作🦊🎨)
合法手や詰みの判定は、同じ XTEINK 向けの CrossPlay というプロジェクトの ChessCore(MIT)をそのまま使わせてもらっています。
実機で perft(合法手の数え上げのテスト)を走らせたら、初期局面の深さ3で 8,902 手、121ms。
ちゃんと PC と一致しました😲
ハマったところ 🔧
pioarduino は 6.1.19 に固定
6.2.0 だと SCons 4.11.1 に SCons.Tool.FortranCommon が無くて、ビルドの途中で落ちます。
CrossPoint も 1.6.5 のタグに固定しました(本家が進むと、シミュレーターのダミーが追いつかずに落ちるので)。
SDカードを挿してないとエラーになる
SD カードを PC に挿したまま書き込んだら、起動時に SD が無くてエラー画面で止まりました。
CrossPoint は起動時に1回しか SD を確かめないので、あとから挿してもダメ。
SD を戻して再起動すれば直ります。
シリアルを開くと X3 がリセットされる
ログを取るスクリプトで、ポートを開く前に DTR=False, RTS=False を指定していたら、開くたびに X3 が再起動していました。
pyserial は DTR → RTS の順に設定するので、一瞬だけ「DTR=0・RTS=1」になる。これが ESP32-C3 の USB-Serial-JTAG のリセットの合図と同じだった。
何も指定せずに開くのが正解。
画面を切り替えると、前の画面がうっすら残る
E-ink の速い書き換え(FAST、約0.5秒)だけで、メニューから盤へ切り替えていたため。
画面の種類が変わるときだけ HALF の書き換え(約1.7秒)にしたら消えました(でもまだ残ってる…気にしない)
書き込みの直前に X3 が寝る
しばらく触らないと X3 がスリープして、USB のポートが消えます。
スリープしてたら起こしましょう😴
GitHub に置きました 🎈
https://github.com/kikyujin/PondeMate
Releases にファームとプロブレムセットの zip があります。
書き込む前に、必ず純正ファームのバックアップを(16MB まるごと読み出しておく)。
個人の趣味の、非公式なものです。XTEINK とも CrossPoint とも関係ありません
無保証(MIT)。自己責任でどうぞ
本体の「更新の確認」は外してあります(押すと本家の CrossPoint に戻ってしまうので)
ちなみに今回も、指示書を書くのはエルマー🦊、実装・ビルド・書き込みをするのはちびエルマー🦊🍼(Claude Code)、決めるのはオレ、という分担でした🤣
実際にコードを組んだのは 出張の新幹線とホテル、今日の半日で 1.5日。
出張中は X3 が手元に無いので、シミュレーターでひたすら画面を作って、帰宅してから実機で触って直す、という流れでした 👀
まとめ🎈
AI のおかげで
「ないなら作る、それがオレのジャスティス」
が簡単に実現できるようになりました🤣
細かいUIも Claude と検討して実機で調整できますし、いい時代です。
それにしても E-ink 表示は目に優しいですね!