Brancher des périphériques USB sur un ESP8266 : Différence entre versions

Ligne 1 : Ligne 1 :
 
{{ {{tntn|Tuto Details}}
 
{{ {{tntn|Tuto Details}}
 +
|SourceLanguage=none
 +
|Language=fr
 +
|IsTranslation=0
 
|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)
Ligne 12 : Ligne 15 :
 
|Currency=EUR (€)
 
|Currency=EUR (€)
 
|Tags=arduino, esp8266, esp32, usb host, clavier, souris, manette, xbox, MIDI
 
|Tags=arduino, esp8266, esp32, usb host, clavier, souris, manette, xbox, MIDI
|SourceLanguage=none
 
|Language=fr
 
|IsTranslation=0
 
 
}}
 
}}
 
{{ {{tntn|Introduction}}
 
{{ {{tntn|Introduction}}
Ligne 49 : Ligne 49 :
 
{{ {{tntn|Tuto Step}}
 
{{ {{tntn|Tuto Step}}
 
|Step_Title=Régler le problème d'alimentation
 
|Step_Title=Régler le problème d'alimentation
|Step_Content=If you buy a '''clone of the USB Host Mini''', there is no jumper for VBUS.This means your '''USB devices''' will be '''powered with 3.3v''', which didn't works with any of my devices who all require '''5V.'''
+
|Step_Content=Si vous avez acheter '''un clone de l'USB Host Mini''', il n'y a pas de '''jumper pour le VBUS'''.
  
You can find more details here: https://ht-deko.com/arduino/shield_usbhost_mini.html (in japanese)
+
Cela veut dire que les périphériques USB '''seront alimentés en 3.3v'''
  
You will have to cut this trace, to fix this.I used a '''small screw driver''' to do this, but you probably should use a '''small cutter instead.'''
+
Malheureusement '''aucun de mes périphériques ne marchent''' 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 trâce sur le circuit pour règler ce problème.
 +
 
 +
J'ai utiliser un '''petit tournevis plat''', mais si vous avez un '''cutter fin c'est surement mieux.'''
 
}}
 
}}
 
{{ {{tntn|Tuto Step}}
 
{{ {{tntn|Tuto Step}}
 
|Step_Title=Brancher l'USB Host
 
|Step_Title=Brancher l'USB Host
|Step_Content=OK, I hope you didn't break your board! Now it is time to plug it!
+
|Step_Content=OK, j'espère que vous n'avez pas cassé votre carte! Maintenant il est temps de la brancher !
  
I used a '''Wemos Mini D1''' with my USB Host Mini device, here is how to plug it.
+
J'ai utilisé un Wemos Mini D1 avec mon USB Host Mini, voici comment le brancher.
  
 
{{Info|Je n'ai pas relier la broche INT, car celle-ci ne semble pas nécessaire au fonctionnement}}<br />
 
{{Info|Je n'ai pas relier la broche INT, car celle-ci ne semble pas nécessaire au fonctionnement}}<br />
  
* D3 -- SS
+
*D3 -- SS
* D7 -- MISO
+
*D7 -- MISO
* D6 -- MOSI
+
*D6 -- MOSI
* D5 -- SCK
+
*D5 -- SCK
* RST -- RST
+
*RST -- RST
  
 
<br />
 
<br />
Ligne 73 : Ligne 81 :
 
{{ {{tntn|Tuto Step}}
 
{{ {{tntn|Tuto Step}}
 
|Step_Title=Régler le problème avec la bibliothèque USB Host
 
|Step_Title=Régler le problème avec la bibliothèque USB Host
|Step_Content=You may have notice SS (Chip Select/CS) is plugged on '''D3 instead of D8.'''
+
|Step_Content=Vous avez peut être remarquer que pour la broche SS (Chip Select / CS) j'ai utilisé la '''broche D3''' au lieu de la '''broche par défaut D8.'''
  
I run into an issue where the USB Host set my Wemos Mini in '''firmware flashing''' mode, which '''stop the sketch from running.'''https://github.com/felis/USB_Host_Shield_2.0/issues/457
+
J'ai eu un problème avec l'USB Host qui mettait mon Wemos Mini en mode programmation et bloquer l'exécution du sketch.
  
In order to '''change the SS pin,''' we need to change a line in the library.
+
https://github.com/felis/USB_Host_Shield_2.0/issues/457
  
Download '''USB Host Shield Library 2.0'''
+
Afin de '''changer la broche SS''', il va falloir changer une ligne dans la bibliothèque.
  
Open '''UsbCore.h''' in '''libraries/USB_Host_Shield_Library_2.0''' and change this line
+
Télécharger '''USB Host Shield Library 2.0'''
  <code>#elif defined(ESP8266)typedef MAX3421e<P15, P5> MAX3421E; // ESP8266 boards
+
 
</code>
+
Ouvrez le fichier '''UsbCore.h''' dans '''libraries/USB_Host_Shield_Library_2.0''' et changer cette ligne
With this line
+
   
  <code>#elif defined(ESP8266)typedef MAX3421e<P0, P5> MAX3421E; // ESP8266 boards
+
<code>#elif defined(ESP8266)typedef MAX3421e<P15, P5> MAX3421E; // ESP8266 boards </code>
</code>
+
 
Notice we used '''P0''' instead of '''D3,''' it is because '''GPIO0''' is '''D3''' on the '''Wemos Mini'''.https://escapequotes.net/esp8266-wemos-d1-mini-pins-and-diagram/
+
Avec cette ligne
 +
 
 +
  <code>#elif defined(ESP8266)typedef MAX3421e<P0, P5> MAX3421E; // ESP8266 boards</code>
 +
{{Info|Pourquoi P0 au lieu de D3 ?, c'est parceque le GPIO0 est le D3 sur le Wemos Mini.}}
 +
https://escapequotes.net/esp8266-wemos-d1-mini-pins-and-diagram/
 
}}
 
}}
 
{{ {{tntn|Tuto Step}}
 
{{ {{tntn|Tuto Step}}
 
|Step_Title=Downgrader ESP8266
 
|Step_Title=Downgrader ESP8266
|Step_Content=OK, we are almost done, if you try to compile an example from the library, '''it will not works.'''
+
|Step_Content=On y est presque, si vous essayer de compiler un exemple dans la bibliothèque, '''il ne marchera pas!'''
  
'''''Note''''' '': This was recently fix, so this step is only required if your version of '''USB Host Shield Library 2.0''' is '''1.3.2 or lower'''.''
+
{{Info|Ce problème a été réglé récemment, cette étape n'est nécessaire que si vous utiliser la version 1.3.2 de cette bibliothèque}}
  
It is because the library is not compatible with Arduino ESP8266 2.5, '''you need to downgrade it to 2.4.2'''https://github.com/felis/USB_Host_Shield_2.0/issues/449
+
La raison pour laquelle la compilation ne marche pas et à cause d'une incompatibilité entre la bibliothèque et la version 2.5 d'ESP8266 sur le logiciel Arduino.
  
Go to '''Tools / Boards / Boards Manager''' and change your version to '''2.4.2.'''
+
'''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'''
 +
 
 +
<br />
 
}}
 
}}
 
{{ {{tntn|Tuto Step}}
 
{{ {{tntn|Tuto Step}}
 
|Step_Title=Test l'USB Host
 
|Step_Title=Test l'USB Host
|Step_Content=There is a lot of examples in '''''USB Host Shield Library 2.0'''In'' order to test that everything is working correctly, you should first try '''USB_desc.'''
+
|Step_Content=Il y a beaucoup d'exemples dans l''''USB Host Shield Library 2.0.'''
  
* '''Upload''' USB_desc
+
Afin de tester si tout marche correctement, je vous conseille de commencer par '''USB_des'''c.
* Open '''Serial Monitor''' (115200)
 
* '''Plug an USB device'''
 
* '''Reset your board''' (ESP8266)
 
  
''Note: You can't hot-plug your USB device (at least in the examples), you need to '''reset the board''' each times you '''unplug, plug''' your device.''
+
*'''Téléverser''' USB_desc
 +
*Ouvrez le  '''Moniteur Série''' (115200)
 +
*'''Brancher votre périphérique USB'''
 +
*'''Redémarrer la carte''' (ESP8266)
 +
{{Info|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.}}
  
You should see a message like this:
+
Vous devriez voir un long message décrivant votre périphérique.
  
 
<br />
 
<br />
Ligne 116 : Ligne 136 :
 
{{ {{tntn|Tuto Step}}
 
{{ {{tntn|Tuto Step}}
 
|Step_Title=Exemple : Manette XBOX360
 
|Step_Title=Exemple : Manette XBOX360
|Step_Content=If you have an '''XBOX360 for PC,''' use the example '''XBOX/XBOXUSB'''
+
|Step_Content=Si vous avez une manette de '''XBOX360 pour PC''', vous pouvez tester l'exemple : X'''BOX/XBOXUSB'''
  
* '''L2/R2''' vibrates when you press it.
+
*'''L2/R2''' vibre quand vous appuyer dessus.
* L2/R2 : 0/255
+
*L2/R2 : 0/255
* Stick (Hat) X/Y : -32768 / 32768
+
*Stick (Hat) X/Y : -32768 / 32768
* Led can also be control ! (use the '''pad''' / '''back''' / '''start''' / '''xbox''' buttons to try it)
+
*Les LEDs peuvent aussi être contrôlés ! (appuyer sur '''pad''' / '''back''' / '''start''' / '''xbox''' pour essayer)
 
}}
 
}}
 
{{ {{tntn|Tuto Step}}
 
{{ {{tntn|Tuto Step}}
 
|Step_Title=Exemple : Souris
 
|Step_Title=Exemple : Souris
|Step_Content=I didn't manage to make my mouse works.The example is in '''HID/USBHIDBootMouse'''
+
|Step_Content=Je n'ai pas réussi à utiliser ma souris. L'exemple se trouve ici : '''HID/USBHIDBootMouse'''
 
}}
 
}}
 
{{ {{tntn|Tuto Step}}
 
{{ {{tntn|Tuto Step}}
 
|Step_Title=Exemple : Contrôleur Midi
 
|Step_Title=Exemple : Contrôleur Midi
|Step_Content=Open '''USBH_MIDI/USBH_MIDI_dump''' example
+
|Step_Content=Ouvrez l'exemple '''USBH_MIDI/USBH_MIDI_dump'''
  
Most Midi devices, will only use a small part of the buffer ('''bufMidi''')
+
La plupart des périphériques MIDI n'utilise qu'une petit partie du buffer ('''bufMidi''')
  
 
<code>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</code>
 
<code>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</code>
Ligne 137 : Ligne 157 :
 
<code>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</code>
 
<code>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</code>
  
* 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
 +
}}
 +
{{ {{tntn|Tuto Step}}
 +
|Step_Title=Conclusion
 +
|Step_Content=Utiliser des périphériques USB ouvre la porte à énormement de possibilités avec nos microcontroleur
  
=== Summary ===
+
Nous n'avons vu qu'une infime partie de ce qu'il est possible de faire.
Using USB devices open up a lot of possibilities for our microcontroller, we only touch the surface of all the thing we can do with this USB Host device.
 
  
* You can use a '''USB Hub''' to use multiple USB devices.
+
*Vous pouvez utiliser un '''Hub USB''' pour contrôler plusieurs périphériques USB.
* There are a lot of pins on the USB Host, it is because there are GPIO on it! You can plug '''buttons''' / '''leds''' even an '''LCD screen''' on it!
+
*Ils y a pleins de broches sur l'USB Host, c'est parcequ'elle sont utilisables comme des GPIO ! Ils est possible de brancher des boutons / leds même un écran LCD dessus.
* You can also use '''USB drive.'''
+
*Il est même possible d'utiliser des '''clés''' '''USB.'''
 
}}
 
}}
 
{{ {{tntn|Notes}}
 
{{ {{tntn|Notes}}

Version du 21 avril 2019 à 14:12

Auteur avatarRémi Sarrailh (µsini) | Dernière modification 9/11/2020 par 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 d'introduction

Matériaux

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

Outils

Un petit tournevis plat / Un cutter fin

Étape 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 le Shield USB Host plutôt.

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




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

Si vous avez acheter 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 marchent 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 trâce sur le circuit pour règler ce problème.

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

Étape 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 relier la broche INT, car celle-ci ne semble pas nécessaire au fonctionnement

  • D3 -- SS
  • D7 -- MISO
  • D6 -- MOSI
  • D5 -- SCK
  • RST -- RST


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

Vous avez peut être remarquer 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 bloquer 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 parceque le GPIO0 est le D3 sur le Wemos Mini.

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

Étape 5 - Downgrader ESP8266

On y est presque, si vous essayer 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 utiliser la version 1.3.2 de cette bibliothèque

La raison pour laquelle la compilation ne marche pas et à cause d'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


Étape 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.


Étape 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 appuyer dessus.
  • L2/R2 : 0/255
  • Stick (Hat) X/Y : -32768 / 32768
  • Les LEDs peuvent aussi être contrôlés ! (appuyer sur pad / back / start / xbox pour essayer)

Étape 8 - Exemple : Souris

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

Étape 9 - Exemple : Contrôleur Midi

Ouvrez l'exemple USBH_MIDI/USBH_MIDI_dump

La plupart des périphériques MIDI n'utilise qu'une petit 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

Étape 10 - Conclusion

Utiliser des périphériques USB ouvre la porte à énormement de possibilités avec nos microcontroleur

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.
  • Ils y a pleins de broches sur l'USB Host, c'est parcequ'elle sont utilisables comme des GPIO ! Ils est possible de brancher des boutons / leds même un écran LCD dessus.
  • Il est même possible d'utiliser des clés USB.

Commentaires

Draft