Initial commit: Base Project for Kode Dot (ESP32-S3)
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
# KodeDot FTP Explorer — Agent Memory
|
||||
|
||||
## Project Overview
|
||||
FTP server for Kode Dot (ESP32-S3) that serves the microSD card over Wi-Fi.
|
||||
Reads Wi-Fi credentials from `SD:/Wi-Fi.json`, syncs time via NTP (Vienna), displays status on AMOLED via LVGL.
|
||||
|
||||
## Hardware
|
||||
| Feature | Detail |
|
||||
|---------|--------|
|
||||
| MCU | ESP32-S3, 240 MHz dual-core, 32 MB flash, 8 MB PSRAM |
|
||||
| Display | AMOLED 2.13" 410x502 (CO5300 QSPI + CST820 I2C touch) |
|
||||
| SD Card | SDMMC 1-bit: CMD=GPIO5, CLK=GPIO6, D0=GPIO7, CD=EXP14 |
|
||||
| IO Exp | TCA9555 @ 0x20 (buttons, SD detect, interrupts) |
|
||||
| LED | NeoPixel GPIO4 (1 LED, GRB 800 kHz) |
|
||||
| Partition | App at 0x400000 (8 MB). KodeOS bootloader below — DO NOT TOUCH |
|
||||
| Port | COM10 |
|
||||
|
||||
## Key APIs
|
||||
- `DisplayManager` — `init()`, `update()`, `setBrightness()`, `getTouchCoordinates()`
|
||||
- `SD_MMC` — `setPins(clk=6, cmd=5, d0=7)`, `begin("/sdcard", 1)` (1-bit mode)
|
||||
- `SimpleFTPServer` — `FtpServer ftpSrv; ftpSrv.begin("user","pass"); ftpSrv.handleFTP();`
|
||||
- `ArduinoJson` — parse `[{"ssid":"...","pass":"..."}]` from SD
|
||||
- NTP — `configTzTime("CET-1CEST,M3.5.0,M10.5.0/3", "pool.ntp.org")`
|
||||
|
||||
## Build Notes
|
||||
- Build flag `-DDEFAULT_STORAGE_TYPE_ESP32=STORAGE_SD_MMC` overrides FtpServerKey.h
|
||||
- Flash: `esptool --chip esp32s3 ... write-flash 0x400000 <bin>` (preserves bootloader)
|
||||
- Upload speed: 460800 baud
|
||||
|
||||
## Git Remote
|
||||
- Host: git.lago.dev
|
||||
- Repo: KodeDot-FTP-Explorer
|
||||
- Auth: service key token
|
||||
|
||||
## Findings & Notes
|
||||
- SimpleFTPServer v3.0.2 supports SD_MMC on ESP32, passive mode, single session
|
||||
- SFTP not feasible on ESP32 (crypto overhead too high)
|
||||
- Vienna timezone string: `CET-1CEST,M3.5.0,M10.5.0/3`
|
||||
- FTP credentials: `kode`/`kode`
|
||||
- SD card uses `SD_MMC.begin("/sdcard", 1)` — the `1` means 1-bit bus width
|
||||
- LVGL v8.3.x API (not v9) — uses `lv_disp_drv_t`, `lv_label_create`, etc.
|
||||
|
||||
## Status
|
||||
- [ ] Phase 1: Project setup & git
|
||||
- [ ] Phase 2: Backend (Wi-Fi + SD + FTP + NTP)
|
||||
- [ ] Phase 3: Frontend (LVGL UI)
|
||||
- [ ] Phase 4: Integration & polish
|
||||
Reference in New Issue
Block a user