- [ディスプレイ付きのESP32開発ボード]
# キーボード一体型ケースを考える
- ノートパソコンスタイルはキーボード部分が軽すぎてひっくり返る
- 本体に傾斜のついたパディングや、支えを用意する?
- キーボードと一体化して、運びやすくしたい
- ギリギリケースが作れるかな長辺が192mm(うちのプリンタの最大が220なので2cmくらい余裕あり)
# 動いた
7inch-esp-display に格納してある
from [2025-01-12]
>> img
twitter-5643382/2025-01-12/b376f190-d0ac-11ef-863b-02b68614b59c
<<
>> img
twitter-5643382/2025-01-12/b4051f0f-d0ac-11ef-863b-02b68614b59c
<<
>> img
twitter-5643382/2025-01-12/b49853df-d0ac-11ef-863b-02b68614b59c
<<
# 動作検証
- {x} [loviyanGFX]での描画
- Arduino_GFXで描画した
- {x} [EspUsbHost]でのキー入力
- {x} PSRAMを有効にしてLuaが動くか?
# heapの空きを見てみたい
- 下でヒープの空きを見てますね
- Luaから見ると
- 283088bytes
- 結構少ない?
- PSRAMを使えていない気がする
- [CONFIG_SPIRAM_USE_MALLOC]
- 検索しても出てこないな・・
- 使う設定にした
- 278568bytes
- このヒープの空きは変わらないな
- [ESP32でヒープのサイズを得る]
# Luaと合わせたい
- そろそろいけるか?
- エイヤでソースコードを持っていったら、少し修正するだけで動いた
- やはりこの仕組みは良いな
- 雑にやっているところ
- テキスト表示関数の起点がちがうので雑に+12している
- 12pxのフォントだが上下に白い余白がある?ので2pxスペースを開けた(Lua側)
- getTextBoundsの返り値に謎に+2している
# キーボード
- [EspUsbHost]を組み合わせてみる
- USBの処理は別のコアにやらせる
- 認識していない?
- 一度USBの実験だけをやってみる
- だめだな
- OTGになっていない?
- いや、動いた。回路はOKっぽい
- ライブラリのバージョンがおかしい
- platoformioはmainを見ているっぽい
- 単品で試すとplatformioでも動いていた
- 関係ないがGFX Library for Arduinoがバージョンアップしてビルドが通らなくなった
- できた。USBとCANを共用していて、マルチプレクサを適切に操作する必要があった
# SDカードと液晶の共存
- SDカードはどこに接続されている?
- 11 MOSI
- 12 SCK
- 13 MISO
- EXIO4 SDCS
- EXTIOはCH422でIO拡張した先にある
- EXIO4がCS
- [CH422]
- 8 SDA
- 9 SCL
- https://github.com/esp-arduino-libs/ESP32_IO_Expander/tree/master
- うまくビルドできない
- Arduino IDEだとうまく動く謎
- v0.1.0にしたら動いた
- SDカード動いた!
- 液晶とも共存できた
# Arduino_GFXを試す
- [Arduino_GFX]を試してみたい
- メモリ不足で実行時エラーした
- E (19) lcd_panel.rgb: lcd_rgb_panel_alloc_frame_buffers(159): no mem for frame buffer
- https://github.com/moononournation/Arduino_GFX/issues/261
- PSRAM前提だと思う
- フレームバッファなしとかもできるのかな?
- 配線を目で確認して・・出た!
- フレームバッファを使ってるっぽいので空き容量を確認したい
- 7983679bytes free
- 7MBytesくらい?
- もともとPSRAMはいくつあったの?
- 多分8MB
- バッファはPSRAMからとってるのかな?
- 800*480
# 書き込み
- [ESP32-S3の開発ボード] と似てそう
- [ESP32-S3でUSB Host]
- 多分COMと書かれたポートから書き込みができそう
- [Arduino_GFX]を試してみたい
- メモリ不足で実行時エラーした
- PSRAMを有効にして再挑戦したい
- 配線を目で確認して・・出た!
- フレームバッファを使ってるっぽいので空き容量を確認したい
# 画面仕様
- 800x480
- 公式ページにライブラリがある
- ESP32_S3_Display_libraries
- 回路図を見るhttps://files.waveshare.com/wiki/ESP32-S3-Touch-LCD-7/ESP32-S3-Touch-LCD-7-Sch.pdf
- Wikiに [ST7262]と書いてあるな
- https://github.com/sukesh-ak/ESP32-TUX/issues/49 これか?
- ライブラリあった
- https://github.com/iamfaraz/Waveshare_ST7262_LVGL
- https://github.com/rzeldent/esp32-smartdisplay
- https://github.com/esp-arduino-libs/ESP32_Display_Panel
- 公式はこれっぽいけどぱっと使い方がわからない
- https://github.com/esp-arduino-libs/ESP32_Display_Panel/blob/f9ed1848155a07e7dd5e1296af06546c1ed1ffac/src/lcd/ESP_PanelLcd.h#L215
- drawBitmapがあるから適当にやればよいのかな?
- LVGLを使う前提になっちゃうかな?
- これはどう?
- Arduino GFX
- https://github.com/moononournation/Arduino_GFX/blob/66a98499350717ec35f2343a6dabc3eefa127281/examples/PDQgraphicstest/Arduino_GFX_dev_device.h#L170
- https://www.youtube.com/watch?v=VvpILAVyPt8
- https://github.com/moononournation/Arduino_GFX/wiki/Dev-Device-Declaration#esp32-4827s043
- これか
- 日本語対応?
- https://github.com/h-nari/Humblesoft_GFX
基板が違うので配線を
>> code
// Arduino_ESP32RGBPanel *rgbpanel = new Arduino_ESP32RGBPanel(
// 40 /* DE */, 41 /* VSYNC */, 39 /* HSYNC */, 42 /* PCLK */,
// 45 /* R0 */, 48 /* R1 */, 47 /* R2 */, 21 /* R3 */, 14 /* R4 */,
// 5 /* G0 */, 6 /* G1 */, 7 /* G2 */, 15 /* G3 */, 16 /* G4 */, 4 /* G5 */,
// 8 /* B0 */, 3 /* B1 */, 46 /* B2 */, 9 /* B3 */, 1 /* B4 */,
// 0 /* hsync_polarity */, 8 /* hsync_front_porch */, 4 /* hsync_pulse_width */, 8 /* hsync_back_porch */,
// 0 /* vsync_polarity */, 8 /* vsync_front_porch */, 4 /* vsync_pulse_width */, 8 /* vsync_back_porch */,
// 1 /* pclk_active_neg */, 16000000 /* prefer_speed */);
// Arduino_RGB_Display *gfx = new Arduino_RGB_Display(
// 800 /* width */, 480 /* height */, rgbpanel, 0 /* rotation */, true /* auto_flush */);
<<
上のがそのままではなさそう、ピン配置が違う
hsync_polarity, hsync_front_porch, hsync_pulse_width, hsync_back_porch あたりが謎
- そのままで行けた
# 買った
- $30.93 (4800円くらい)
- これで文房具ラップトップが作れるとすると安い?
- キーボードやケースも考えるとまぁ中古のノートPCで良いよねってなるね
- 思ったより大きい(7inch)
- とりあえず画面に何か出してみたい
# 調査
- https://ja.aliexpress.com/item/1005006904650192.html
- USB Hostが使えると思われる
- [ESP32-S3]
>> img
https://www.waveshare.com/w/upload/7/7a/ESP32-S3-TOUCH-LCD-7-04.png
<<
- https://www.waveshare.com/wiki/ESP32-S3-Touch-LCD-7
- WeaveShareなのか
- Flashは8MB
- [CH343P]でシリアルToUSB変換している
- FSUSB42UMX
- アナログスイッチ
- [CH422]
- I2CのIOエキスパンダ 8+4出力?
- 回路図
- https://files.waveshare.com/wiki/ESP32-S3-Touch-LCD-7/ESP32-S3-Touch-LCD-7-Sch.pdf
- VBUSが5Vと繋がっているのでUSB-OTGがデフォルトかな?
- UARTのスイッチ
- UART1は外部端子
- UART2は CH343P
- いいんだけど、ESP32のメモリの中で頑張る必要があるのかなという気持ち