以前購入したものの、使い道が見出せず持て余していた電子ペーパーモジュール「Y-con P020」
電子ペーパーモジュールY-conP020を買ってみた - バイクとカメラと戯れ言
このモジュールに文字や画像を表示させるには、「白黒ビットマップ(200×96×1bpp)」のデータを送る必要があります。しかし、表示したい画像そのものを自前で大量に用意する手間や、画像を切り替えるためのメモリ容量の制限がネックとなり、なかなか良い活用方法が見出せずにいました。
そこで「Wi-Fi機能付きのマイコンを使って、ネットから画像データを持ってくれば解決できるのでは?」と考えました。
実は数年前にも、ESP-WROOM-02(ESP8266搭載ボード)を使って「ネットからデータを引っ張ってくる」という構想自体は持っていました。
新年秋月電子お楽しみ袋のLEDマトリクスを動かしてみた - バイクとカメラと戯れ言
しかし、当時はいくつかの壁にぶつかり、どちらの作成も頓挫していました。
8〜9年前に立ちはだかった壁
当時、このアイデアを実現する上でボトルネックになっていたのは以下のポイントでした。
-
画像データを大量に作るのが大変
-
大量の画像をクラウドにアップし、マイコンからそれぞれダウンロードする仕組み作りが大変
個人でこれらを自前で開発するのは、なかなかの重労働です。
現代の解決策:すべてGemini(生成AI)になげる!
しかし時代は変わり、現代には生成AI(Gemini)があります。かつて挫折した上記の壁は、AIの力を借りることでクリアできるようになりました。
今回、システム構築にあたってGeminiには以下の部分を作成してもらいました。
-
データの作成: Geminiで英単語カードリスト(CSV形式)を自動生成。
-
データの保管: 生成したCSVをGoogle Driveに配置。
-
画像の自動生成: CSVの中身をモノクロビットマップに一括変換するPythonコードをGeminiに書かせ、Google Colabで実行。
-
配信システムの構築: Google Apps Script(GAS)を使い、モノクロビットマップにランダムアクセスしてバイナリ形式のデータを返すスクリプトをGeminiに作成してもらう。
-
ハードウェアの制御: ESP8266で上記GASのAPIを叩き、取得したバイナリデータを電子ペーパーモジュールに流し込むArduinoコードをGeminiに書かせる。

過去に諦めた「画像作成」も「クラウドからのデータ取得」も、Geminiのプログラミングで突破できました。
そして、ついに完成した英単語カードデバイスがこちらです!

あとは、基板をまとめるケースをOpenSCADでコードを書いて、3Dプリンターで印刷すれば完成です。
ちなみにOpenSCADのコードはGeminiがあまり良いコードを書いてくれなかったので、自分で書くことにしましょう・・・








