🛠 Utiliser le port USB-A hôte pour la lecture de clés USB
Objectifs
Ce tutoriel avancé vise à maîtriser l'interface USB Host High-Speed disponible sur la carte Adafruit Metro ESP32-P4 Hydra. Contrairement aux microcontrôleurs classiques limités au USB Full-Speed, cette carte offre un débit de 480 Mbps, permettant une lecture rapide de données volumineuses. L'objectif est de configurer le bus USB, de monter un système de fichiers sur une clé USB via l'USB Mass Storage Class (MSC), et de lire des fichiers texte ou binaires.
Matériel nécessaire
- Carte Adafruit Metro ESP32-P4 Hydra.
- Clé USB formatée en FAT32 (taille inférieure à 32 Go recommandée pour la compatibilité).
- Câble USB-A vers USB-A (ou adaptateur si nécessaire).
- Ordinateur avec Arduino IDE 2.x ou PlatformIO installé.
- Bibliothèque :
Adafruit TinyUSB(version compatible ESP32-P4) etFatFs.
Étapes
Ouvrez Arduino IDE et assurez-vous que le gestionnaire de cartes inclut le support ESP32-P4. Installez la bibliothèque Adafruit TinyUSB via le gestionnaire de bibliothèques. Notez que le port USB-C sert au débogage (UART), tandis que le port USB-A est dédié au mode Host.
- Préparation de l'environnement
Insérez la clé USB FAT32 dans le port USB-A de la carte. Assurez-vous que l'alimentation est suffisante (via USB-C ou jack DC) car le bus USB peut demander jusqu'à 500 mA. Le contrôle logiciel de l'alimentation est géré par le code.
- Configuration matérielle
Créez un nouveau croquis. Incluez les bibliothèques nécessaires : ```cpp #include "Adafruit_TinyUSB.h" #include "SdFat.h"
- Écriture du code
#define CFG_TUD_HOST_MSC 1
// Définition du pin de contrôle d'alimentation USB si nécessaire selon le schéma // const int USB_VBUS_PIN = 4; `` Dans setup(), initialisez l'USB Host : ``cpp void setup() { Serial.begin(115200); while (!Serial) delay(10);
usbh_msc_init(); Serial.println("USB Host MSC Initialized"); } `` Dans loop(), vérifiez la présence du périphérique et montez le volume : `cpp void loop() { if (usbh_msc_connected()) { // Logique de montage FatFs et lecture de fichiers // Exemple simplifié d'affichage du nom du fichier Serial.println("USB Drive Detected"); } delay(500); } ` *Note : Les appels exacts dépendent de la version de TinyUSB pour ESP-IDF. Consultez les exemples usbh_msc` de la bibliothèque.*
Sélectionnez la carte "Adafruit Metro ESP32-P4" dans le menu. Compilez et téléversez via le port USB-C. Ouvrez le moniteur série à 115200 bauds.
- Compilation et Téléversement
Vérification
Après le démarrage, le moniteur série doit afficher le message d'initialisation. Insérez une clé USB contenant un fichier test.txt. Si le périphérique est détecté, le message "USB Drive Detected" (ou équivalent selon votre code de lecture) s'affiche. Vous pouvez étendre le code pour lire le contenu du fichier et l'imprimer sur la console série, confirmant ainsi la transmission de données à travers le bus High-Speed.
Pour aller plus loin
Explorez le transfert de fichiers vers la PSRAM externe (16 Mo) pour traiter de gros datasets. Vous pouvez également développer un serveur Web qui affiche le contenu de la clé USB via le coprocesseur ESP32-C6, combinant ainsi stockage physique rapide et interface réseau sans fil.
Autres tutoriels pour cette carte
- Premier branchement et mise en route de la Metro ESP32-P4 Hydra
- Contrôler les GPIO et un affichage simple sur Metro ESP32-P4 Hydra
- Stocker des données sur la carte Adafruit Metro ESP32-P4 Hydra
- Premier démarrage de la Metro ESP32-P4 Hydra
- Contrôler un capteur I2C avec l'ESP32-P4 Hydra
- Mise en route avancée : Alimentation, USB et Debug sur ESP32-P4 Hydra
Exemples de code pour cette carte
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)