- [ディスプレイ付きの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のメモリの中で頑張る必要があるのかなという気持ち