Difference between revisions of "Brancher des périphériques USB sur un ESP8266"

Line 2: Line 2:
 
|Main_Picture=Brancher_des_périphériques_USB_sur_un_ESP8266_usbhost_wiki.jpg
 
|Main_Picture=Brancher_des_périphériques_USB_sur_un_ESP8266_usbhost_wiki.jpg
 
|Licences=Attribution (CC BY)
 
|Licences=Attribution (CC BY)
|Description=Saviez vous que vous pouvez brancher des périphériques USB sur un Arduino ou un ESP ?
+
|Description=<translate>Saviez vous que vous pouvez brancher des périphériques USB sur un Arduino ou un ESP ?
Que ce soit un clavier, une souris, un manette de jeu ou un contrôleur MIDI, c'est possible !
+
Que ce soit un clavier, une souris, un manette de jeu ou un contrôleur MIDI, c'est possible !</translate>
 
|Area=Electronics, Music and Sound, Play and Hobbies
 
|Area=Electronics, Music and Sound, Play and Hobbies
 
|Type=Technique
 
|Type=Technique
Line 17: Line 17:
 
}}
 
}}
 
{{ {{tntn|Introduction}}
 
{{ {{tntn|Introduction}}
|Introduction=Je jouais avec '''Mozzi''', une '''bibliothèque de synthèse audio''' (https://sensorium.github.io/Mozzi/), quand je me suis rendu compte que si je voulais vraiment pouvoir exploiter tout le potentiel de cette bibliothèque, j'allais devoir faire un contrôleur.
+
|Introduction=<translate>Je jouais avec '''Mozzi''', une '''bibliothèque de synthèse audio''' (https://sensorium.github.io/Mozzi/), quand je me suis rendu compte que si je voulais vraiment pouvoir exploiter tout le potentiel de cette bibliothèque, j'allais devoir faire un contrôleur.
  
Si seulement, je pouvais brancher un '''clavier''' ou un '''contrôleur midi''', ça serait carrément plus simplement ! Mais attends ?! C'est possible en fait!
+
Si seulement, je pouvais brancher un '''clavier''' ou un '''contrôleur midi''', ça serait carrément plus simplement ! Mais attends ?! C'est possible en fait!</translate>
 
}}
 
}}
 
{{ {{tntn|TutoVideo}}
 
{{ {{tntn|TutoVideo}}
Line 28: Line 28:
 
|Step_Picture_00=Contrôler_des_neopixels_comme_un_DJ_Envoyer_un_message_sur_discord_wemos.png
 
|Step_Picture_00=Contrôler_des_neopixels_comme_un_DJ_Envoyer_un_message_sur_discord_wemos.png
 
|Step_Picture_01=Brancher_des_périphériques_USB_sur_un_ESP8266_usbhost_mini_def.png
 
|Step_Picture_01=Brancher_des_périphériques_USB_sur_un_ESP8266_usbhost_mini_def.png
|Material=* Un microcontrôleur 3.3v (par ex: Wemos Mini)
+
|Material=<translate>* Un microcontrôleur 3.3v (par ex: Wemos Mini)
* Un USB Host Mini
+
* Un USB Host Mini</translate>
|Tools=Un petit tournevis plat / Un cutter fin
+
|Tools=<translate>Un petit tournevis plat / Un cutter fin</translate>
 
}}
 
}}
 
{{ {{tntn|Separator}}}}
 
{{ {{tntn|Separator}}}}
 
{{ {{tntn|Tuto Step}}
 
{{ {{tntn|Tuto Step}}
|Step_Title=Choisir l'USB Host
+
|Step_Title=<translate>Choisir l'USB Host</translate>
|Step_Content=Merci à CircuitatHome pour la création de l'USB Host
+
|Step_Content=<translate>Merci à CircuitatHome pour la création de l'USB Host
 
https://www.circuitsathome.com/usb-host-shield-hardware-manual/
 
https://www.circuitsathome.com/usb-host-shield-hardware-manual/
  
Line 45: Line 45:
  
  
Malheureusement avant de pouvoir brancher notre USB Host, il va nous falloir '''régler plusieurs problèmes''' sinon '''cela ne marchera pas.'''
+
Malheureusement avant de pouvoir brancher notre USB Host, il va nous falloir '''régler plusieurs problèmes''' sinon '''cela ne marchera pas.'''</translate>
 
|Step_Picture_00=Brancher_des_périphériques_USB_sur_un_ESP8266_3V3_only.png
 
|Step_Picture_00=Brancher_des_périphériques_USB_sur_un_ESP8266_3V3_only.png
 
|Step_Picture_01=Brancher_des_périphériques_USB_sur_un_ESP8266_usbhost_mini.jpg
 
|Step_Picture_01=Brancher_des_périphériques_USB_sur_un_ESP8266_usbhost_mini.jpg
Line 51: Line 51:
 
}}
 
}}
 
{{ {{tntn|Tuto Step}}
 
{{ {{tntn|Tuto Step}}
|Step_Title=Régler le problème d'alimentation
+
|Step_Title=<translate>Régler le problème d'alimentation</translate>
|Step_Content=Si vous avez acheté '''un clone de l'USB Host Mini''', il n'y a pas de '''jumper pour le VBUS'''.
+
|Step_Content=<translate>Si vous avez acheté '''un clone de l'USB Host Mini''', il n'y a pas de '''jumper pour le VBUS'''.
  
 
Cela veut dire que les périphériques USB '''seront alimentés en 3.3v'''
 
Cela veut dire que les périphériques USB '''seront alimentés en 3.3v'''
Line 64: Line 64:
 
Il va falloir couper une trace sur le circuit pour régler ce problème.
 
Il va falloir couper une trace sur le circuit pour régler ce problème.
  
J'ai utilisé un '''petit tournevis plat''', mais si vous avez un '''cutter fin c'est surement mieux.'''
+
J'ai utilisé un '''petit tournevis plat''', mais si vous avez un '''cutter fin c'est surement mieux.'''</translate>
 
|Step_Picture_00=Brancher_des_périphériques_USB_sur_un_ESP8266_usbhost_mini_fix.jpg
 
|Step_Picture_00=Brancher_des_périphériques_USB_sur_un_ESP8266_usbhost_mini_fix.jpg
 
}}
 
}}
 
{{ {{tntn|Tuto Step}}
 
{{ {{tntn|Tuto Step}}
|Step_Title=Brancher l'USB Host
+
|Step_Title=<translate>Brancher l'USB Host</translate>
|Step_Content=OK, j'espère que vous n'avez pas cassé votre carte! Maintenant il est temps de la brancher !
+
|Step_Content=<translate>OK, j'espère que vous n'avez pas cassé votre carte! Maintenant il est temps de la brancher !
  
 
J'ai utilisé un Wemos Mini D1 avec mon USB Host Mini, voici comment le brancher.
 
J'ai utilisé un Wemos Mini D1 avec mon USB Host Mini, voici comment le brancher.
Line 81: Line 81:
 
*RST -- RST
 
*RST -- RST
  
<br />
+
<br /></translate>
 
|Step_Picture_00=Brancher_des_périphériques_USB_sur_un_ESP8266_usbhost_esp.jpg
 
|Step_Picture_00=Brancher_des_périphériques_USB_sur_un_ESP8266_usbhost_esp.jpg
 
}}
 
}}
 
{{ {{tntn|Tuto Step}}
 
{{ {{tntn|Tuto Step}}
|Step_Title=Régler le problème avec la bibliothèque USB Host
+
|Step_Title=<translate>Régler le problème avec la bibliothèque USB Host</translate>
|Step_Content=Vous avez peut-être remarqué que pour la broche SS (Chip Select / CS) j'ai utilisé la '''broche D3''' au lieu de la '''broche par défaut D8.'''
+
|Step_Content=<translate>Vous avez peut-être remarqué que pour la broche SS (Chip Select / CS) j'ai utilisé la '''broche D3''' au lieu de la '''broche par défaut D8.'''
  
 
J'ai eu un problème avec l'USB Host qui mettait mon Wemos Mini en mode programmation et bloqué l'exécution du sketch.
 
J'ai eu un problème avec l'USB Host qui mettait mon Wemos Mini en mode programmation et bloqué l'exécution du sketch.
Line 104: Line 104:
 
  <code>#elif defined(ESP8266)typedef MAX3421e<P0, P5> MAX3421E; // ESP8266 boards</code>
 
  <code>#elif defined(ESP8266)typedef MAX3421e<P0, P5> MAX3421E; // ESP8266 boards</code>
 
{{Info|Pourquoi P0 au lieu de D3 ? c'est parce que le GPIO0 est le D3 sur le Wemos Mini.}}
 
{{Info|Pourquoi P0 au lieu de D3 ? c'est parce que le GPIO0 est le D3 sur le Wemos Mini.}}
https://escapequotes.net/esp8266-wemos-d1-mini-pins-and-diagram/
+
https://escapequotes.net/esp8266-wemos-d1-mini-pins-and-diagram/</translate>
 
|Step_Picture_00=Brancher_des_périphériques_USB_sur_un_ESP8266_image_Ky517r0vQa.jpg
 
|Step_Picture_00=Brancher_des_périphériques_USB_sur_un_ESP8266_image_Ky517r0vQa.jpg
 
}}
 
}}
 
{{ {{tntn|Tuto Step}}
 
{{ {{tntn|Tuto Step}}
|Step_Title=Downgrader ESP8266
+
|Step_Title=<translate>Downgrader ESP8266</translate>
|Step_Content=On y est presque, si vous essayez de compiler un exemple dans la bibliothèque, '''il ne marchera pas!'''
+
|Step_Content=<translate>On y est presque, si vous essayez de compiler un exemple dans la bibliothèque, '''il ne marchera pas!'''
  
 
{{Info|Ce problème a été réglé récemment, cette étape n'est nécessaire que si vous utilisez la version 1.3.2 de cette bibliothèque}}
 
{{Info|Ce problème a été réglé récemment, cette étape n'est nécessaire que si vous utilisez la version 1.3.2 de cette bibliothèque}}
Line 121: Line 121:
 
Aller dans '''Outils''' / '''Type de carte''' / '''Gestionnaire de carte''' et changer la version à '''2.4.2'''
 
Aller dans '''Outils''' / '''Type de carte''' / '''Gestionnaire de carte''' et changer la version à '''2.4.2'''
  
<br />
+
<br /></translate>
 
|Step_Picture_00=Brancher_des_périphériques_USB_sur_un_ESP8266_esp8266_lib.jpg
 
|Step_Picture_00=Brancher_des_périphériques_USB_sur_un_ESP8266_esp8266_lib.jpg
 
}}
 
}}
 
{{ {{tntn|Tuto Step}}
 
{{ {{tntn|Tuto Step}}
|Step_Title=Test l'USB Host
+
|Step_Title=<translate>Test l'USB Host</translate>
|Step_Content=Il y a beaucoup d'exemples dans l''''USB Host Shield Library 2.0.'''
+
|Step_Content=<translate>Il y a beaucoup d'exemples dans l''''USB Host Shield Library 2.0.'''
  
 
Afin de tester si tout marche correctement, je vous conseille de commencer par '''USB_desc'''.
 
Afin de tester si tout marche correctement, je vous conseille de commencer par '''USB_desc'''.
Line 139: Line 139:
 
Vous devriez voir un long message décrivant votre périphérique.
 
Vous devriez voir un long message décrivant votre périphérique.
  
<br />
+
<br /></translate>
 
|Step_Picture_00=Brancher_des_périphériques_USB_sur_un_ESP8266_usbhost_ex.jpg
 
|Step_Picture_00=Brancher_des_périphériques_USB_sur_un_ESP8266_usbhost_ex.jpg
 
}}
 
}}
 
{{ {{tntn|Tuto Step}}
 
{{ {{tntn|Tuto Step}}
|Step_Title=Exemple : Manette XBOX360
+
|Step_Title=<translate>Exemple : Manette XBOX360</translate>
|Step_Content=Si vous avez une manette de '''XBOX360 pour PC''', vous pouvez tester l'exemple : X'''BOX/XBOXUSB'''
+
|Step_Content=<translate>Si vous avez une manette de '''XBOX360 pour PC''', vous pouvez tester l'exemple : X'''BOX/XBOXUSB'''
  
 
*'''L2/R2''' vibre quand vous appuyez dessus.
 
*'''L2/R2''' vibre quand vous appuyez dessus.
 
*L2/R2 : 0/255
 
*L2/R2 : 0/255
 
*Stick (Hat) X/Y : -32768 / 32768
 
*Stick (Hat) X/Y : -32768 / 32768
*Les LED peuvent aussi être contrôlées ! (appuyer sur '''pad''' / '''back''' / '''start''' / '''xbox''' pour essayer)
+
*Les LED peuvent aussi être contrôlées ! (appuyer sur '''pad''' / '''back''' / '''start''' / '''xbox''' pour essayer)</translate>
 
}}
 
}}
 
{{ {{tntn|Tuto Step}}
 
{{ {{tntn|Tuto Step}}
|Step_Title=Exemple : Souris
+
|Step_Title=<translate>Exemple : Souris</translate>
|Step_Content=Je n'ai pas réussi à utiliser ma souris. L'exemple se trouve ici : '''HID/USBHIDBootMouse'''
+
|Step_Content=<translate>Je n'ai pas réussi à utiliser ma souris. L'exemple se trouve ici : '''HID/USBHIDBootMouse'''</translate>
 
}}
 
}}
 
{{ {{tntn|Tuto Step}}
 
{{ {{tntn|Tuto Step}}
|Step_Title=Exemple : Contrôleur Midi
+
|Step_Title=<translate>Exemple : Contrôleur Midi</translate>
|Step_Content=Ouvrez l'exemple '''USBH_MIDI/USBH_MIDI_dump'''
+
|Step_Content=<translate>Ouvrez l'exemple '''USBH_MIDI/USBH_MIDI_dump'''
  
 
La plupart des périphériques MIDI n'utilisent qu'une petite partie du buffer ('''bufMidi''')
 
La plupart des périphériques MIDI n'utilisent qu'une petite partie du buffer ('''bufMidi''')
Line 167: Line 167:
 
*bufMidi[0] : Note ON (9) / Note OFF (8)
 
*bufMidi[0] : Note ON (9) / Note OFF (8)
 
*bufMidi[2] : Note
 
*bufMidi[2] : Note
*bufMidi[3] : Velocity
+
*bufMidi[3] : Velocity</translate>
 
}}
 
}}
 
{{ {{tntn|Tuto Step}}
 
{{ {{tntn|Tuto Step}}
|Step_Title=Conclusion
+
|Step_Title=<translate>Conclusion</translate>
|Step_Content=Utiliser des périphériques USB ouvre la porte à énormément de possibilités avec nos microcontrôleurs
+
|Step_Content=<translate>Utiliser des périphériques USB ouvre la porte à énormément de possibilités avec nos microcontrôleurs
  
 
Nous n'avons vu qu'une infime partie de ce qu'il est possible de faire.
 
Nous n'avons vu qu'une infime partie de ce qu'il est possible de faire.
Line 177: Line 177:
 
*Vous pouvez utiliser un '''Hub USB''' pour contrôler plusieurs périphériques USB.
 
*Vous pouvez utiliser un '''Hub USB''' pour contrôler plusieurs périphériques USB.
 
*Il y a plein de broches sur l'USB Host, c'est parce qu’elle sont utilisables comme des GPIO ! Il est possible de brancher des boutons / LED même un écran LCD dessus.
 
*Il y a plein de broches sur l'USB Host, c'est parce qu’elle sont utilisables comme des GPIO ! Il est possible de brancher des boutons / LED même un écran LCD dessus.
*Il est même possible d'utiliser des '''clés''' '''USB.'''
+
*Il est même possible d'utiliser des '''clés''' '''USB.'''</translate>
 
}}
 
}}
 
{{ {{tntn|Notes}}
 
{{ {{tntn|Notes}}
|Notes=
+
|Notes=<translate></translate>
 
}}
 
}}
 
{{ {{tntn|Tuto Status}}
 
{{ {{tntn|Tuto Status}}
|Complete=Draft
+
|Complete=Published
 
}}
 
}}

Revision as of 14:50, 21 April 2019

Author avatarRémi Sarrailh (µsini) | Last edit 9/11/2020 by Madnerd

Brancher des périphériques USB sur un ESP8266 usbhost wiki.jpg
Saviez vous que vous pouvez brancher des périphériques USB sur un Arduino ou un ESP ? Que ce soit un clavier, une souris, un manette de jeu ou un contrôleur MIDI, c'est possible !

Introduction

Je jouais avec Mozzi, une bibliothèque de synthèse audio (https://sensorium.github.io/Mozzi/), quand je me suis rendu compte que si je voulais vraiment pouvoir exploiter tout le potentiel de cette bibliothèque, j'allais devoir faire un contrôleur.

Si seulement, je pouvais brancher un clavier ou un contrôleur midi, ça serait carrément plus simplement ! Mais attends ?! C'est possible en fait!

Video overview

Materials

  • Un microcontrôleur 3.3v (par ex: Wemos Mini)
  • Un USB Host Mini

Tools

Un petit tournevis plat / Un cutter fin

Step 1 - Choisir l'USB Host

Merci à CircuitatHome pour la création de l'USB Host https://www.circuitsathome.com/usb-host-shield-hardware-manual/

Dans ce tutoriel nous allons utilisé un clone de l'USB Host Mini.

La puce sur celle-ci est un MAX3421E qui ne fonctionne quand 3.3v

Si vous voulez utiliser un microcontrôleur en 5v (comme l'Arduino Uno / Nano) utiliser plutôt le Shield USB Host.


Malheureusement avant de pouvoir brancher notre USB Host, il va nous falloir régler plusieurs problèmes sinon cela ne marchera pas.


Step 2 - Régler le problème d'alimentation

Si vous avez acheté un clone de l'USB Host Mini, il n'y a pas de jumper pour le VBUS.

Cela veut dire que les périphériques USB seront alimentés en 3.3v

Malheureusement, aucun de mes périphériques ne marche, car ils nécessitent tous du 5v.

Vous pouvez en apprendre plus sur ce lien (en japonais)

https://ht-deko.com/arduino/shield_usbhost_mini.html

Il va falloir couper une trace sur le circuit pour régler ce problème.

J'ai utilisé un petit tournevis plat, mais si vous avez un cutter fin c'est surement mieux.




Step 3 - Brancher l'USB Host

OK, j'espère que vous n'avez pas cassé votre carte! Maintenant il est temps de la brancher !

J'ai utilisé un Wemos Mini D1 avec mon USB Host Mini, voici comment le brancher.

Je n'ai pas relié la broche INT, car celle-ci ne semble pas nécessaire au fonctionnement
  • D3 -- SS
  • D7 -- MISO
  • D6 -- MOSI
  • D5 -- SCK
  • RST -- RST





Step 4 - Régler le problème avec la bibliothèque USB Host

Vous avez peut-être remarqué que pour la broche SS (Chip Select / CS) j'ai utilisé la broche D3 au lieu de la broche par défaut D8.

J'ai eu un problème avec l'USB Host qui mettait mon Wemos Mini en mode programmation et bloqué l'exécution du sketch.

https://github.com/felis/USB_Host_Shield_2.0/issues/457

Afin de changer la broche SS, il va falloir changer une ligne dans la bibliothèque.

Télécharger USB Host Shield Library 2.0

Ouvrez le fichier UsbCore.h dans libraries/USB_Host_Shield_Library_2.0 et changer cette ligne

#elif defined(ESP8266)typedef MAX3421e<P15, P5> MAX3421E; // ESP8266 boards

Avec cette ligne

#elif defined(ESP8266)typedef MAX3421e<P0, P5> MAX3421E; // ESP8266 boards
Pourquoi P0 au lieu de D3 ? c'est parce que le GPIO0 est le D3 sur le Wemos Mini.

https://escapequotes.net/esp8266-wemos-d1-mini-pins-and-diagram/




Step 5 - Downgrader ESP8266

On y est presque, si vous essayez de compiler un exemple dans la bibliothèque, il ne marchera pas!

Ce problème a été réglé récemment, cette étape n'est nécessaire que si vous utilisez la version 1.3.2 de cette bibliothèque

Il y a une incompatibilité entre la bibliothèque et la version 2.5 d'ESP8266 sur le logiciel Arduino.

Il va falloir downgrader celle-ci à 2.4.2

https://github.com/felis/USB_Host_Shield_2.0/issues/449

Aller dans Outils / Type de carte / Gestionnaire de carte et changer la version à 2.4.2





Step 6 - Test l'USB Host

Il y a beaucoup d'exemples dans l'USB Host Shield Library 2.0.

Afin de tester si tout marche correctement, je vous conseille de commencer par USB_desc.

  • Téléverser USB_desc
  • Ouvrez le Moniteur Série (115200)
  • Brancher votre périphérique USB
  • Redémarrer la carte (ESP8266)
Il n'est pas possible de brancher "à chaud" le périphérique USB (du moins dans les exemples) Vous devez redémarrer votre carte à chaque fois que vous débrancher et rebrancher un périphérique.

Vous devriez voir un long message décrivant votre périphérique.





Step 7 - Exemple : Manette XBOX360

Si vous avez une manette de XBOX360 pour PC, vous pouvez tester l'exemple : XBOX/XBOXUSB

  • L2/R2 vibre quand vous appuyez dessus.
  • L2/R2 : 0/255
  • Stick (Hat) X/Y : -32768 / 32768
  • Les LED peuvent aussi être contrôlées ! (appuyer sur pad / back / start / xbox pour essayer)

Step 8 - Exemple : Souris

Je n'ai pas réussi à utiliser ma souris. L'exemple se trouve ici : HID/USBHIDBootMouse

Step 9 - Exemple : Contrôleur Midi

Ouvrez l'exemple USBH_MIDI/USBH_MIDI_dump

La plupart des périphériques MIDI n'utilisent qu'une petite partie du buffer (bufMidi)

00001679: 64: 09 90 2F 13 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

0000174A: 64: 08 80 2F 7F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

  • bufMidi[0] : Note ON (9) / Note OFF (8)
  • bufMidi[2] : Note
  • bufMidi[3] : Velocity

Step 10 - Conclusion

Utiliser des périphériques USB ouvre la porte à énormément de possibilités avec nos microcontrôleurs

Nous n'avons vu qu'une infime partie de ce qu'il est possible de faire.

  • Vous pouvez utiliser un Hub USB pour contrôler plusieurs périphériques USB.
  • Il y a plein de broches sur l'USB Host, c'est parce qu’elle sont utilisables comme des GPIO ! Il est possible de brancher des boutons / LED même un écran LCD dessus.
  • Il est même possible d'utiliser des clés USB.

Comments

Published