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

Accéder aux soldes du Black Friday Amazon Black friday Banggood Black Friday Gearbest
10% de remise supplémentaire* sur les produits domotiques Xiaomi

Kits domotiques, caméras de sécurité, robot aspirateur, purificateur d'air... *Hors produits déjà en promotion

Voir le code promo
40 jours restants

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.

AD1 AD0 Adresse
0x2D
x 0x2E
x 0X2F
x x 0x30 (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 place wemos 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.

Inscrivez-vous à la newsletter hebdomadaire

Aucun spam et aucun autre usage ne sera fait de votre email. Vous pouvez vous dés inscrire à tout moment.

Comparateur de prix

Bons plans

Les offres suivantes se terminent bientôt. Utilisez le coupon indiqué pour profiter du prix promo

Tags:

  • Migui Pda

    Bonjour,

    excellent, ça sent directement l’usage pour fermer ses stores intérieurs (en lien MQTT avec Home-Assistant.io) :
    http://www.instructables.com/id/MQTT-Home-Automated-Blinds/

    Ce nouveau montage serait-il fonctionnel pour render cette gestion de store avec ce système solaire (à tester, bien entendu 😉 ) :
    https://github.com/TheAustrian/Wemos-D1-Mini-BME280-Weather-Station/blob/master/README.md

    Au plaisir 😉

  • Migui Pda

    Bonjour,

    prevue en est qu’il est possible de faire cela avec (la taille) d’un Wemos D1 Mini pour des stores IKEA et ce, avec une simple batterie solaire standard :

    https://somasmarthome.com/

  • Steph Des

    Bonjour et merci pour cet article qui a suscité toute mon attention.

    Pour deux différents projets, j’envisage l’utilisation de ce shield motor mais j’ai besoin de votre aide pour répondre à deux questions :

    – Est-ce que ce shield dispose d’une intégration en natif ou via le playground d’Espeasy (je ne trouve que pour l’adafruit motor shield)

    – J’ai besoin de motoriser une petite porte basculante (genre porte de poulailler). Je pense partir sur un moteur type Nema 17 mais avez-vous des conseils ? Comment gérer les fins de course ?

    Merci

    • Bonjour Steph et merci beaucoup. Le shield Moto pour Wemos est effectivement très interessant. Par contre je trouve que par moment il “bloque”. Ce n’est pas gênant pour s’amuser avec une voiture RC mais ça peut le devenir pour piloter la porte d’un poulailler. Faudrait pas qu’il reste ouvert toute la nuit. Open Bar pour les renards du coin ! Je vous conseille de partir sur une carte plus classique à base de point en H L293D ou L298N http://amzn.to/2fhWZco. Un exemple un peu dépassé mais je peux l’actualiser à l’occasion https://create.arduino.cc/projecthub/luciorocha/esp8266-l298n-motor-drive-smartphone-399228

  • gandolfi

    bonjour,

    merci pour ce super article. J’essaye de communiquer avec le shield en envoyant du pwm et du digital sur les ports mais je n’y arrive pas. j’utilise S4A avec scratch.

    j’ai réussi avec le shield de cet article.
    http://www.instructables.com/id/Motorize-IoT-With-ESP8266/

    As tu une idée comment faire ? ou est ce impossible sans utiliser I2C ?

    merci

    • Bonjour Gandolfi. Oui, il faut absolument passer par la librairie développée par Wemos…ou ré-écrire la sienne en s’inspirant du code source. Donc avec scratch c’est pas gagné, à moins d’utiliser une brique I2C en envoyer les bonnes commandes. Pour flasher le firmware, c’est pas gagné non plus. J’ai laissé tombé. Désolé

Projets DIY - Domotique et objets connectés à faire soi-même