Accueil | Niveau de difficulté | Débutant | Test du Shield Motor I2C Wemos D1 Mini (ou Pro) pour piloter 2 moteurs 15Vdc

Test du Shield Motor I2C Wemos D1 Mini (ou Pro) pour piloter 2 moteurs 15Vdc

Aujourd’hui, je vous propose de découvrir le Shield Motor I2C pour Wemos D1 Mini. Ce petit shield construit autour du pilote Toshiba TB6612FNG permet de piloter 2 moteurs à courant continu (DC). La carte est capable de contrôler indépendamment la vitesse et la direction de chaque moteur (A, B). La puissance maximale admissible est de 1,2A par moteur. Elle supporte un pic de puissance à 3,2A. Par défaut, la carte se trouve à l’adresse 0x30 sur le bus I2C. La carte est livrée avec une librairie en C++ ainsi que 4 exemples de code Arduino. Le firmware du STM32F030 permettant de piloter la shield via le bus I2C n’est pas installé (ou correctement installé) sur certains clones. Il est préférable d’acheter le shield Motor directement sur la boutique officielle de Wemos sur Aliexpress. En plus la carte ne coûte pas plus cher.

Déballage du Shield Motor I2C TB6612FNG pour Wemos D1 mini

Le Shield Motor I2C est livré dans une pochette anti-statique avec un jeu de connecteur simples. Il est donc prévu pour venir fermer la pile de Shields. C’est assez logique compte tenu du câblage à réaliser.

wemos d1 mini shield motor deballage
Contenu du paquet du shield Motor v1.0.0 pour Wemos d1 mini ou Pro.

La communication avec la carte se fait via le bus I2C. Par défaut, se sont les broches D1 et D2 qui sont utilisées. La page officielle de la carte se trouve ici.

Le Shield est construit autour du circuit TB6612FNG de Toshiba. La fiche technique complète se trouvent ici.

 wemos d1 mini motor i2c shield TB6621FNG

Caractéristiques techniques

  • Interface I2C (voir paragraphe suivant pour modifier l’adresse par défaut 0x30)
  • Tension maximale d’alimentation (broche VM) : 15Vdc max
  • Courant de sortie (broche Iout) : 1.2A (moyen) – 3.2A (en pic)
  • Fonction Standby pour économie d’énergie
  • CW/CCW/short brake/stop motor control modes
  • Broches
    • VM: Alimentation moteur + (max. 15Vdc)
    • GND: borne négative moteur –
    • A1 A2: Moteur A
    • B1 B2: Moteur B
    • S: contrôle du standby
    • Pilotage du standby
      • Mode I2C: Contrôle la fonction standby du circuit TB6612FNG à l’aide du protocole I2C
      • Mode IO: Contrôle la fonction standby du circuit TB6612FNG avec la broche “S”
    • Modes reset
      • soudé: reset avec la d1 mini (reset à la mise sous tension ou par appui sur le bouton Reset de la wemos d1 mini). C’est le mode par défaut.
      • ouvert: reset par la broche marquée “DTR”

Comment modifier l’adresse I2C de la carte

Le Shield se trouve par défaut à l’adresse 0x30 sur le bus I2C. Il existe au dos de la carte 2 jumpers AD0 et AD1. En réalisant un pont en soudant les deux bornes de chaque jumper, on peut changer l’adresse du shield. Le ‘-‘ signifie que le pot est ouvert. Le ‘x’ signifie que le pont est fermé par une soudure.

AD1AD0Adresse
0x2D
x0x2E
x0X2F
xx0x30 (défaut)

Soudage des connecteurs

Il y a 4 connecteurs à souder sur le Shield Motor. Un de chaque coté qui permet d’empiler le shield sur la Wemos D1 Mini comme d’habitude. Le troisième (coté connecteur USB) sert à alimenter le moteur sur une batterie externe (la Wemos n’est pas assez puissante pour alimenter des moteurs) et à piloter pour les deux moteurs. Le quatrième connecteur situé en vis à vis du connecteur des moteurs n’est pas documenté. Il semble que ce soit tout simplement un port série. Les hackers pourront s’en servir pour reprogrammer le micro-contrôleur STM32F030 utilisé pour la communication I2C (tutoriel complet). La broche DTR permet de faire un Reset du TB6612FNG. Il faudra désouder le jumper RST au dos de la carte pour activer ce mode. Pour souder le connecteur moteur, je vous conseille de l’insérer sur une breadboard pour maintenir le shield à la vertical durant la soudure.

wemos d1 mini shield motor soudure connecteur moteur mise en placewemos d1 mini shield motor soudure connecteur moteur soude

Code Arduino / ESP8266

Wemos a développé une librairie en C++ pour Arduino. Le code source ainsi que quatre exemples de base sont disponibles sur GitHub ici :

  • Motor_base
  • Motor_base2
  • Motor_standby_i2c
  • Motor_standby_io

Pour appeler la librairie dans vos programmes Arduino, il suffira de la déclarer celle-ci en début de programme

La méthode Motor permet d’initialiser un objet pour chaque moteur A et B. La classe Motor prend comme paramètre :

  • L’adresse I2C de la carte. Par défaut 0x30
  • Utilisez la clé _MOTOR_A ou _MOTOR_B pour indiquer à quel moteur l’objet est associé
  • La fréquence PWM. Par défaut, elle est de 1000Hz.
  • Le mode standby. Par défaut, il est géré par le shield. Si vous devez le piloter depuis la Wemos, indiquez la broche utilisée. N’oubliez pas de souder le pont STBY au dos de la carte.

Ce qui donne par exemple pour le moteur A

Pour piloter le moteur, on dispose de la méthode setmotor qui prend 1 ou 2 paramètres. Le premier paramètre est l’ordre à exécuter. Le second est la consigne du paramètre. On retrouve les commandes proposées par le circuit intégré TB6612FNG de Toshiba, à savoir :

  • _SHORT_BRAKE. Un début d’explication sur l’intérêt de la fonction ici
  • _CCW qui signifie counter clockwise ou rotation en sens anti-horaire. On passe en paramètre un niveau de puissance compris entre 0% et 100%, ce qui correspond également à la vitesse maximale du moteur
  • _CW qui signifie counter wise ou rotation en sens horaire
  • _STOP, pas besoin d’explication
  • _STANDBY, permet de mettre en pause le moteur.

wemos d1 mini motor shield v1

Vous l’avez compris, il n’y a rien de bien compliqué dans l’utilisation de cette librairie. Comme d’habitude, on obtient un montage très compact et très facile à intégrer dans nos projets. Nous verrons dans un prochain tutoriel comment l’utiliser pour recycler une ancienne voiture télécommandée. Ce shield qui coûte moins de 3€ (hors frais de port) sera plus facile à utiliser qu’un pont en H L293D.