🛠 Automatisation de stockage via USB High-Speed sur ESP32-P4 Hydra
Objectifs
Ce tutoriel vise à exploiter les capacités avancées du port USB-A hôte High-Speed (480 Mbps) de la carte Adafruit Metro ESP32-P4 Hydra. Contrairement aux microcontrôleurs classiques limités à l'USB Full-Speed, le SoC ESP32-P4 permet un transfert de données massif. Nous allons configurer le système pour détecter automatiquement une clé USB, monter le système de fichiers et effectuer une écriture séquentielle de logs, illustrant ainsi une automatisation industrielle de collecte de données.
Matériel nécessaire
- Carte Adafruit Metro ESP32-P4 Hydra
- Clé USB formatée en FAT32 (recommandé pour la compatibilité)
- Câble USB-C pour l'alimentation et le débogage série
- Environnement de développement ESP-IDF v5.2 ou supérieur
- Alimentation externe stable (Jack DC 7-12V ou batterie LiPo) recommandée pour soutenir la charge pic du bus USB.
Étapes
- Configuration du projet : Créez un nouveau projet ESP-IDF. Dans le menu de configuration (
idf.py menuconfig), activez le support USB Host High-Speed sousUSB Host Stack>USB Host High-Speed. Assurez-vous que le piloteUSB Mass Storage Classest activé. - Initialisation du bus : Dans votre code
app_main, initialisez le bus USB. Le P4 utilise des lignes dédiées pour le HS. Activez le contrôle logiciel de l'alimentation du port USB-A si nécessaire pour protéger la carte. - Détection et Montage : Implémentez une tâche FreeRTOS qui attend l'événement
USB_HOST_MSC_DEVICE_CONNECTED. Une fois détecté, appelezesp_vfs_fat_usb_disk_registerpour monter le volume. - Écriture de données : Ouvrez un fichier en mode écriture (
fopen("/usb/logs.txt", "a")). Écrivez des données en blocs de 4 Ko pour saturer le bus et tester le débit. Utilisezfflushpour forcer l'écriture physique. - Gestion des erreurs : Ajoutez un gestionnaire pour les événements de déconnexion (
USB_HOST_MSC_DEVICE_DISCONNECTED) afin de démonter proprement le système de fichiers et éviter la corruption des données.
Vérification
Ouvrez le moniteur série (idf.py monitor). Vous devriez voir les messages d'initialisation du bus USB, suivis de la détection de la clé USB et du message "Volume mounted successfully". Retirez la clé USB après l'écriture et vérifiez sur un PC que le fichier logs.txt contient bien les données écrites. Le débit attendu doit être significativement supérieur à 10 Mo/s.
Pour aller plus loin
Intégrez le coprocesseur ESP32-C6 pour transmettre les logs via WiFi ou Thread avant l'écriture locale, créant ainsi un nœud IoT hybride haut débit.
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)