Esp32-s3 usb hid

Je suis nouveau dans le monde arduino.
Je cherche a utiliser une carte esp32s3 pour creer un peripherique usb hid afin d'envoyer et de recevoir des blocs de 64 octets.
Je l'ai fait avec un pic18f4550 mais il manque de puissance pour les traitements.
J'espère pouvoir gagner en puissance avec la carte esp32.
Pouvez vous m'aider a trouver un exemple.
J'en ai trouvé un mais il me manque la libraire esp_hid.h que je ne trouve nulle part.
Merci davance pour votre aide.

1 Like

:warning:
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans Les bonnes pratiques du Forum Francophone

celle d'Espressif ?

Bonjour @jediva et Bienvenue sur ce Forum !

Pouvez vous m'aider a trouver un exemple ?

Oui, plusieurs sont proposés dans un groupe 'USB' de l'IDE si une carte avec un ESP32-S3 est sélectionnée
Les voici dans leur répertoire

cf exemple KeyboardMessage.ino : sur ESP32-S3 après avoir , dans le menu Outils de l'IDE, sélectionné USB-OTG pour 'USB Mode' , toutes les bibliothèques nécessaires étant déjà là, la compilation se passe bien

D'autres exemples sont proposés dans l'IDE pour ESP32-S3 (groupe d'exemples USB) : Gamepad, Mouse... et même un CustomHID qui se compile sans pb

Les ESP32 divers deviennent incontournables comme l'ont été à leur époque ,pour certaines applications, les 18F2550 et 18F4550 :wink:

Oui je l'ai trouve celle ci mais il y a un h de trop et si je remplace esp_hid.h par esp_hidh.h il y a des erreurs de compil. Il y a aussi une lib esp_hidd.h avec les memes erreurs

Merci pour votre réponse.
J'ai ouvert le fichier CustomHIDDevice.ino qui effectivement se compile bien.
Je l'ai téléchargé sans problème ...mais la .. rien aucun message même en mettant à 0 GPIO0 et de plus le gestionnaire de périphérique trouve toujours la carte comme COM9 et non comme port USB!
Je ne vois pas quoi faire de plus?
JeDiVa

Bonjour

Quelle est la référence de la carte utilisée, certaines cartes avec des ESP32-S3 disposent de deux embases USB l'une allant vers l'USB natif , l'autre vers l'UART0 via un circuit intégré

Diverses options relatives à l'USB, présentes dans l'IDE, impactent le comportement de l'ESP32-S3, le tout est de trouver la combinaison qui va bien pour cet exemple.

Quand j'aurai un moment je testerai cet exemple avec la seule carte S3 actuellement en ma possession : LOLIN S3 Mini (pas d'embase USB vers un UART, l'unique embase USB va vers l'USB natif de l'ESP32-S3)

Exemple CustomHIDDevice.ino testé OK

Carte LOLIN S3 Mini
image

Configuration
Capture d’écran du 2024-01-08 12-03-44

Après un téléversement où l'USB natif se comporte en port série pour les besoins du bootloader, le sketch bascule l'USB en HID puis les messages d'appui et de relâchement du bouton (GPIO0) sortent bien sur GIPO43 = TX (avec un adaptateur UART/USB ils iraient à l'ordi, cette carte n'en dispose pas)
image

la carte que j'utilise est une ESP32-S3N16R8.
Aprés le téléchargemet j'obtient sur les deux ports (USB et UART) les messages
ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x15 (USB_UART_CHIP_RESET),boot:0x0 (DOWNLOAD(USB/UART0))
Saved PC:0x40041a79
waiting for download
Il n'y a aucun signal sur la broche GPIO43 (vérifié au scope)
Les paramètres sont ceux de la configuration au type de carte près (ESp32S3 DevKit)
Inormations carte :
Uploading: Img_1.jpg…
BN ESp32C3 Dev Module
Mais si j'essai de déclarer la carte en ESp32 C3, j'ai au téléchargement l'erreur
This chip is ESP32-S3 not ESP32-C3. Wrong --chip argument?
Encore merci pour ton aide
JeDiVa

Ta carte devrait avoir un nom plus spécifique , diverses cartes utilisent un module ESP32-S3 N16R8
image

Sous le capot métallique : ESP32-S3 + 16M de mémoire Flash + 8M de PSRAM

(il faut admettre que certains vendeurs ne font pas beaucoup d'effort dans leurs annonces pour distinguer le microcontroleur et la carte qui l'utilise.... les vendeurs de voitures, eux , ne mettent pas en avant les références des moteurs !)

Ma carte LOLIN S3 Mini utilise un ESP32-S3 FH4R2 , puce dont la Mémoire Flash et la Ram sont moindres que la puce ou le module de ta carte

Ne tiens pas compte de 'ESP32-C3' c'est une erreur d'identification du matériel par l'IDE qui ne sait pas distinguer les divers matériels se présentant avec le même VID:PID, cette erreur ne porte pas à conséquence

La copie d'écran des paramètres USB n'est pas passée dans ton message précédent

:point_right:Après le téléversement certaines cartes ne lancent pas automatiquement le programme, un petit coup de Reset est nécessaire, c'est le cas de la mienne qui ne sait pas , dans les faits, resetter toute seule a la fin du téléversement pour certaines configs USB

Le reset ne change rien j'ai toujours le message waiting for download.
De plus avec des programmes de gestion d'afficheur ssd1306 ou de gestion de carte microsd les programmes demarrent directement.

Le Reset ne peut pas agir ......tant que le téléversement du code qui le teste n'a pas abouti, ce qui semble être le cas vu le 'waiting for download' (= le bootloader de l'ESP attend le code à flasher)

C'est sans doute en lien avec ton paramétrage USB dans l'IDE paramétrage qui peut influer sur le téléversement et l'activation du bootloader dans l'ESP ( avec le PIC18F4550 le flashage se faisait par ISCP , pas par USB , ici c'est plus délicat puisque l'USB joue, tour à tour, plusieurs rôles , dont le flashage du code)

Au cas où , pour forcer l'activation du bootloader côté ESP32-S3 :
1-faire un appui maintenu sur le bouton connecté sur GIPO0 (son nom change selon les cartes)
2-faire un bref appui sur Reset
3-relâcher le Bouton connecté au GIPO0
4-lancer ensuite le téléversement

De plus avec des programmes de gestion d'afficheur ssd1306 ou de gestion de carte microsd les programmes demarrent directement.

C'est un bon point, mais cela n'est pas garanti pour toutes les configurations USB de l'ESP32-S3, dont celle qui, pour faire du HID, utilise le contrôleur USB-OTG interne à l'ESP32-S3 (le reset par USB semble d'après la doc être une spécificité de l'autre contrôleur USB interne , CDC-JTAG)

*les 18Fx550 possèdaient un unique contrôleur USB , l'ESP32-S3 en possède deux ( CDC/JTAG et USB-OTG) qui n'ont pas le mêmes fonctionalités USB ..... d'où les choix à effectuer dans l'IDE pour utiliser l'un OU l'autre comme USB natif selon ce que l'on veut faire

A défaut d'un nom précis pour ta carte , donnes au moins un lien ou sa photo pour que je l'identifie et peut être repérer une particularité + ta copie d'écran de la configuration USB n'est pas passée dans le message #9

Je viens de fiare le test avec GPIO0 à 0 puis reset puis GpIo0 à 1 et téléchargement
Même résultat : Waitin for Download ....
Sur le boitier il est écrit : ESP32-S3-WROOM-1 en haut et N16R8 en bas.
Encore merci pour ton aide
JD

Tu désignes ici le module sous capot métallique contenant le microcontrolleur accompagné de sa mémoire Flash (16Mo), sa RAM (8Mo) et son quartz.
image

Ce module n'est pas tout seul j'imagine mais associé a d'autres composants sur une carte imprimée .....qui peut présenter des particularités à prendre en compte vu la diversité des clones et varianntes

je vois actuellement sur le marché chez des vendeurs multiples sur Amazon ou Aliexpress des cartes portant au dos l'inscription YD-ESP32-23, utilises-tu ce modèle de carte ?

Arriver au 14e message et ne pas connaitre la carte utilisée est regrettable et ne favorise pas l'aide
photo ? lien vers la page du produit sur le sire marchand ?

:warning:Tu n'a pas encore communiqué le paramétrage USB utilisé (j'ai montré le mien au message #8)

Avec tes infos je ne peux pour l'instant aller au delà du constat 'le téléversement n'aboutit pas' :confused:



J'espère que tu pourra voir les photos (carte et configuration)
J'ai essayé de changer de type de carte.
Avec ESP32-WROOM-DA Module pas de changement
Avec ESP32 Native USB pas de nouveau
Par contre avec ESP32-S3-USB-OTG, le programme démarre et la carte est reconnue comme port USB par le gestionnaire de périphérique.
Il ne me reste plus qu'a avancer dans la programmation emission réception.
A suivre
JD

OK , je vois maintenant ta carte , un des clones 'sans marque' de carte DevkitC ESP32-S3 d'Espressif

Si ça peut te servir voici des infos ( schéma inclus) sur cette carte (ou une carte jumelle :wink:)
https://mischianti.org/vcc-gnd-studio-yd-esp32-s3-devkitc-1-clone-high-resolution-pinout-and-specs/

Cette carte particulière n'a pas encore d'entrée dans l'IDE , il te faut donc faire avec le choix disponible à ce jour .... tu en as trouvé un qui a l'air de convenir :+1:(c'est aux fabricants de cartes d'envoyer à Espressif les fichiers de définition pour intégration dans le 'core'ESP32 donc dans l'IDE)

Question : pour le téléversement laisses tu branchés les 2 câbles USB à la carte ?

Non je suis oblige de debrancher le bus usb sinon le port com nest pas accessible


Bonjour
Je te joint la photo de la partie arrière de ma carte.
En ce qui concerne la configuration USB je n'ai accès,pour cette carte, qu'aux informations de la première image du post 15. Les éléments que tu me donne sont affichés pour une carte type ESP32S3 Dev Module mais pas sur la carte ESP32-S3-USB-OTG.
Bonne journée
JD

C'est donc la carte mentionnée au message #16 avec un schéma , ce qui n'est pas négligeable (en particulier pour comprendre le rôle des straps IN-OUT et USB-OTG dans l'alimentation éventuelle d'un périphérique USB par la carte YD-ESP32-23

En effet les divers fichiers de descriptions de cartes présent dans l'IDE sont plus ou moins fournis quand aux options USB j'ai la chance d'avoir une carte (LOLIN S3 Mini) bien renseignée dans l'IDE

Le choix LOLIN S3 (pas LOLIN S3 MINI) pourrait peut être convenir à ta carte , il pourrait savoir gérer les 16 Mo de mémoire Flash de ta carte tout en offrant tous les paramètres USB.

Jeviens de fare les essais avec la carte LOLIN S3. Le bus USB est bien activé.
Je vais pouvor continuer mes invistagations. Entre autre je vais chercher à modifier les codes VID, PID,nom de la carte, cadence d'intérogation par le PC, réception (l'émission fonctionne sur le bouton) gestion des interruptions, timers ...
Merci encore pour ton aide précieuse
JD