Skip to content

picli3/kimi-rate

Repository files navigation

Kimi Balance Monitor para ESP32 + ILI9340

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.

Características

  • 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.

Requisitos de hardware

Componente Descripción
ESP32 Cualquier devkit (ej. ESP32-DevKitC)
TFT SPI ILI9340 / ILI9341 240×320

Conexiones (pines por defecto)

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.

Configuración

Antes de compilar, configura tus credenciales y parámetros del display:

cd /home/maykol/esp/examples/kimi-rate
idf.py menuconfig

Navega 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/

Compilar y flashear

# 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 monitor

Nota: 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.

Estructura del proyecto

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

API de Kimi

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

Licencia

MIT / Dominio público — úsalo libremente.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors