🛠 Uso del puerto USB-A host para lectura de unidades USB
Objetivos
Este tutorial avanzado tiene como objetivo dominar la interfaz de Host USB de Alta Velocidad disponible en la placa Adafruit Metro ESP32-P4 Hydra. A diferencia de los microcontroladores clásicos limitados a USB Full-Speed, esta placa ofrece un rendimiento de 480 Mbps, permitiendo una lectura rápida de grandes volúmenes de datos. El objetivo es configurar el bus USB, montar un sistema de archivos en una memoria USB mediante la clase de almacenamiento masivo USB (MSC) y leer archivos de texto o binarios.
Material necesario
- Placa Adafruit Metro ESP32-P4 Hydra.
- Memoria USB formateada en FAT32 (se recomienda menos de 32 GB para compatibilidad).
- Cable USB-A a USB-A (o adaptador si es necesario).
- Ordenador con Arduino IDE 2.x o PlatformIO instalado.
- Librerías:
Adafruit TinyUSB(versión compatible con ESP32-P4) yFatFs.
Pasos
Abra Arduino IDE y asegúrese de que el administrador de placas incluye soporte para ESP32-P4. Instale la librería Adafruit TinyUSB a través del gestor de librerías. Tenga en cuenta que el puerto USB-C es para depuración (UART), mientras que el puerto USB-A está dedicado al modo Host.
- Preparación del entorno
Inserte la memoria USB FAT32 en el puerto USB-A de la placa. Asegúrese de que el suministro de energía sea suficiente (vía USB-C o conector DC) ya que el bus USB puede demandar hasta 500 mA. El control de energía se gestiona por software.
- Configuración del hardware
Cree un nuevo sketch. Incluya las librerías necesarias: ```cpp #include "Adafruit_TinyUSB.h" #include "SdFat.h"
- Escritura del código
#define CFG_TUD_HOST_MSC 1
// Define USB power control pin if required by schematic // const int USB_VBUS_PIN = 4; `` En setup(), inicialice el Host USB: ``cpp void setup() { Serial.begin(115200); while (!Serial) delay(10);
usbh_msc_init(); Serial.println("USB Host MSC Initialized"); } `` En loop(), verifique la presencia del dispositivo y monte el volumen: `cpp void loop() { if (usbh_msc_connected()) { // Lógica de montaje FatFs y lectura de archivos // Ejemplo simplificado de impresión del nombre del archivo Serial.println("USB Drive Detected"); } delay(500); } ` *Nota: Las llamadas exactas dependen de la versión de TinyUSB para ESP-IDF. Consulte los ejemplos usbh_msc` de la librería.*
Seleccione "Adafruit Metro ESP32-P4" en el menú de placas. Compile y cargue a través del puerto USB-C. Abra el Monitor Serie a 115200 baudios.
- Compilación y carga
Verificación
Tras el arranque, el Monitor Serie debe mostrar el mensaje de inicialización. Inserte una memoria USB que contenga un archivo test.txt. Si el dispositivo es detectado, aparecerá el mensaje "USB Drive Detected" (o equivalente según su código de lectura). Puede ampliar el código para leer el contenido del archivo e imprimirlo en la consola, confirmando así la transmisión de datos a través del bus de Alta Velocidad.
Para ir más allá
Explore la transferencia de archivos a la PSRAM externa (16 MB) para procesar grandes conjuntos de datos. También puede desarrollar un servidor web que muestre el contenido del disco USB a través del coprocesador ESP32-C6, combinando así almacenamiento físico rápido con interfaz de red inalámbrica.
Otros tutoriales para esta placa
- Primer cableado y puesta en marcha de la Metro ESP32-P4 Hydra
- Controlar GPIOs y una pantalla simple en Metro ESP32-P4 Hydra
- Almacenar datos en la placa Adafruit Metro ESP32-P4 Hydra
- Primer inicio de la Metro ESP32-P4 Hydra
- Controlar un sensor I2C con ESP32-P4 Hydra
- Inicio avanzado: Alimentación, USB y Depuración en ESP32-P4 Hydra
Ejemplos de código para esta placa
esp32-p4-hydra-gpio-blink.inoC++ (Arduino)esp32-p4-hydra-mpu6050-i2c.inoC++ (Arduino)esp32-p4-hydra-wifi-http.inoC++ (Arduino)esp32-p4-hydra-sdcard-write.inoC++ (Arduino)esp32-p4-hydra-usb-host-mouse.inoC++ (Arduino)esp32-p4-hydra-gpio-led-blink.inoC++ (Arduino)