Proyecto en ESP-IDF v5.x que conecta un ESP32 a la API de Kimi (Moonshot) vía WiFi, obtiene el balance disponible de tu cuenta y lo muestra en una pantalla TFT ILI9340/ILI9341 (240×320) vía SPI usando LVGL.
- Conexión WiFi con reconexión automática.
- Consulta periódica del balance a la API de Kimi (
/v1/users/me/balance). - Interfaz gráfica con LVGL v9:
- Título "Kimi Balance"
- Balance total con moneda
- Balance "granted" (gratis)
- Balance "topped up" (recargado)
- Barra de progreso del saldo restante
- Actualización automática cada 60 segundos.
- Pantalla en orientación horizontal.
- Tema oscuro con acento naranja.
La barra de progreso considera 5 USD como 100%. Si el saldo baja, el porcentaje se calcula proporcionalmente y cambia de color: verde, amarillo o rojo según el nivel restante.
| Componente | Descripción |
|---|---|
| ESP32 | Cualquier devkit (ej. ESP32-DevKitC) |
| TFT SPI | ILI9340 / ILI9341 240×320 |
| TFT ILI9340 | ESP32 |
|---|---|
| VCC | 3.3V |
| GND | GND |
| MOSI (SDA) | GPIO 23 |
| SCLK (SCK) | GPIO 18 |
| CS | GPIO 13 |
| DC | GPIO 27 |
| RESET | GPIO 5 |
| BL (LED) | GPIO 32 |
Los pines se pueden cambiar vía
menuconfig.
La pantalla física usa resolución 240×320, pero la UI se renderiza en horizontal como 320×240. Mantén LCD Width = 240 y LCD Height = 320 salvo que tu panel tenga otra resolución nativa.
Antes de compilar, configura tus credenciales y parámetros del display:
cd /home/maykol/esp/examples/kimi-rate
idf.py menuconfigNavega a:
Kimi Balance Monitor Configuration --->
(myssid) WiFi SSID
(mypassword) WiFi Password
(sk-xxxxxxxx) Kimi API Key
ILI9340 Display (SPI) --->
(240) LCD Width
(320) LCD Height
(23) MOSI GPIO
(18) SCLK GPIO
(13) CS GPIO
(27) DC GPIO
(5) RESET GPIO
(32) BACKLIGHT GPIO
Obtén tu API Key en: https://platform.moonshot.cn/
# Primera vez: configurar (opcional si usas defaults)
idf.py menuconfig
# Compilar
idf.py build
# Flashear y monitorear (ajusta el puerto si es necesario)
idf.py -p /dev/ttyUSB0 flash monitorNota: El proyecto usa una tabla de particiones custom de 1.5MB para la app y flash de 4MB. Esto se configura automáticamente vía
sdkconfig.defaults.
kimi-rate/
├── CMakeLists.txt
├── partitions.csv
├── sdkconfig.defaults
├── lv_conf.h # Configuración custom de LVGL
├── main/
│ ├── CMakeLists.txt
│ ├── idf_component.yml # Dependencias: lvgl, esp_lcd_ili9341
│ ├── Kconfig.projbuild # Opciones de menuconfig
│ ├── main.c # Punto de entrada + ciclo de actualización
│ ├── wifi_manager.c/h # Gestión de WiFi
│ ├── kimi_api.c/h # Cliente HTTP para la API de Kimi
│ └── display_manager.c/h # Driver ILI9340 SPI + UI LVGL
└── README.md
El proyecto consulta el endpoint:
GET https://api.moonshot.ai/v1/users/me/balance
Con el header:
Authorization: Bearer <KIMI_API_KEY>
Documentación oficial: https://platform.moonshot.cn/docs
MIT / Dominio público — úsalo libremente.