Elecrowだから?CrowPanelとかと呼んでいるらしいが、Elecrowのメーリンリストでシリ、またOLEDが出回りにくくなっており手を出してみた。また、mbed終焉ということもありArduinoに手をだしてみるも、難航・・ 購入したものはこれ
CPUはESP32S3と記載があるが、Paperサイズは250x122と中途半端?なぜ8の倍数ではないのかという素朴の疑問。そしてElecrowのwikiにあるサンプルはESP32S3-WROOMでかつ、2.9インチ(128×296)ものしかなかった。そのまま書いたら動くか、、と思い書き込んだら全く不動であった。初めて使うArduinoでしかもスケッチコンパイルで書き込むのに1分近くかかり、いらつく。
まず、ポート設定がESP32S3とWROOMとは異なるようでこれに気付くまでに数日かかった。ボードの回路図から接続ポートを参照し、下記のように変更(spi.h)
//项目板子
#define SCK 12
#define MOSI 11
#define RES 10
#define DC 13
#define CS 14
#define BUSY 9
これでようやく、何らかの表示ができた。画像を表示しているはずが一部の線しか表示されていない。ここからまた1週間ぐらいかかったが初期化の部分で若干の修正をしたところ、うまく表示されるようになった。しかしまだずれているように思うのだが・・
void EPD_Init(void)
{
EPD_GPIOInit();
EPD_HW_RESET();
EPD_WR_REG(0x12); // SW RESET
EPD_READBUSY(); /* 检测是否完成软件复位 */
EPD_WR_REG(0x01); /* Driver Output control */
EPD_WR_DATA8(0xF9); /* 配置MUX线设置 */
EPD_WR_DATA8(0x00); /* 配置MUX线设置 */
EPD_WR_DATA8(0x00); /* 配置EPD扫描方式 */
EPD_WR_REG(0x11); // Data Entry mode setting
EPD_WR_DATA8(0x03);
EPD_WR_REG(0x44); //set Ram-X address start/end position
EPD_WR_DATA8(0x00);
EPD_WR_DATA8(0x0F); //0x0F-->(15+1)*8=128
EPD_WR_REG(0x45); //set Ram-Y address start/end position
EPD_WR_DATA8(0x00); //0xF9-->(249+1)=250
EPD_WR_DATA8(0x00);
EPD_WR_DATA8(0xF9);
EPD_WR_DATA8(0x00);
EPD_WR_REG(0x3C); // Border wavefrom
EPD_WR_DATA8(0x05); // 0x01->0x05
EPD_WR_REG(0x18); //Read built-in temperature sensor
EPD_WR_DATA8(0x80);
EPD_WR_REG(0x21); // Display update control
EPD_WR_DATA8(0x00);
EPD_WR_DATA8(0x80);
EPD_WR_REG(0x4E); /* Set RAM X address counter to 0 */
EPD_WR_DATA8(0x00);
EPD_WR_REG(0x4F); /* Set RAM Y address counter to 0X199*/
EPD_WR_DATA8(0x00);
EPD_WR_DATA8(0x00);
EPD_READBUSY();
}
下記のページにSSD1680の初期化コードがあり、それを参考にしたのだが、自分でデータシート読んでこれかな、と思う設定とほぼ同じだったので、最初に自分で設定した内容はまぁ、間違いではなかったということかも。
https://github.com/wemos/LOLIN_EPD_Library/tree/master?tab=readme-ov-file
一応、250x122で初期化できているようだ。
しかし、データシートを読んでもe-Paperの制御の仕組みを理解することが困難だ。webでもライブラリを使って表示したって記事はいくつもあるが制御を解説したものは少ししかない、あっても一部少し解説されている程度で全体的なものは少しもわからない。
Elecrowの回路図には、接続部分に昇圧回路っぽい回路構成があり、しかもそのドライブはe-Paperから生えているように記載がある。
どうも書き換えには10Vぐらいの電圧が必要らしいことと、表示される部分を直接書き込むことはできずメモリに書き込み作業を行った後表示用RAMへはコマンドUpdateするという制御にように思える。
まぁ、時間があるんでもう少し読んでみますか・・いつまで興味が続くか、あれだが。2色やカラーもあるらしいので、おいおい。
コメントを追加