🛠 Automatisation de stockage via USB High-Speed sur ESP32-P4 Hydra

Adafruit Metro ESP32-P4 Hydra · avance · Configurez le port USB-A hôte pour monter et écrire sur des clés USB à 480 Mbps, exploitant la puissance du RISC-V.

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

Étapes

  1. 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 sous USB Host Stack > USB Host High-Speed. Assurez-vous que le pilote USB Mass Storage Class est activé.
  2. 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.
  3. Détection et Montage : Implémentez une tâche FreeRTOS qui attend l'événement USB_HOST_MSC_DEVICE_CONNECTED. Une fois détecté, appelez esp_vfs_fat_usb_disk_register pour monter le volume.
  4. É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. Utilisez fflush pour forcer l'écriture physique.
  5. 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

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels