SERVO:Lite pour Micro:Bit

Après le STOP:bit et le LAMP:bit, je vais maintenant vous parler du Servo:Lite de Kitronik. Une carte d’extension qui facilite le branchement des servomoteurs. Le Servo Lite permet en effet d’en piloter jusqu’à 3 (ou seulement 2 si vous utilisez les LED NeoPixel).

Carte d'extension ServoLite pour MicroBit

La boutique MC Hobby qui m’apporte son soutien depuis le début, m’a accordé une très grosse réduction sur l’achat de ce produit.
Mais, je ne suis pas payé pour en parler (ou en faire la publicité). Je n’ai pas non plus de lien d’affiliation (si vous cliquez sur un lien ou si vous achetez ce produit, je ne touche aucune commission). Je parlerai, évidement des points positifs. Mais je n’hésiterai pas non plus à vous parler aussi des points négatifs.

Le montage ne présente aucune difficulté. Il est d’ailleurs clairement expliqué sur le site de Kitronik.

Montage de la carte Servo:Lite
Source Kitronik

LED Neopixel

Souvenez-vous, je vous avais déjà parlé des LED adressables de type NeoPixel au mois d’avril :

  • Ce sont des LED RGB (Red, Green, Blue).
  • Elles peuvent bien sûr se colorer de chacune des 3 couleurs, mais surtout, elles peuvent prendre n’importe quelle couleur en variant la proportion entre le rouge, le vert et le bleu (un peu comme pour la peinture).
  • Elles forment une chaîne (ou un réseau) qui les relies entre elles et sont toutes pilotables individuellement.
  • Rien n’empêche d’en ajouter pour prolonger la chaîne (à condition que l’alimentation puisse suivre).

Installation de la bibliothèque

Le plus simple pour les piloter est d’installer la bibliothèque NeoPixel. Vous disposerez ainsi d’instructions spécifiques facilitant beaucoup le contrôle des LED.

Avec MakeCode, déroulez le menu « Avancé » et cliquez sur « Extensions« .

MakeCode version MicroBit

Cliquez sur « neopixel » et attendez quelques instants…

Sélection de la bibliothèque neopixel

Ça y est, la bibliothèque est installée. Vous avez maintenant accès à de nouvelles fonctions.

Ajoutde la bibliothèque neopixel dans MakeCode

En MicroPython (avec Mu), c’est encore plus facile, il suffit d’appeler la bibliothèque au début du code.

from neopixel import NeoPixel

Programmation

Les LED sont reliées au port P0 du Micro:Bit. Au début du programme, il faut créer un objet (« strip » dans cet exemple) et indiquer le port utilisé (P0), le nombre (5) et le type de LED (RGB).

Baissez éventuellement la luminosité en indiquant une valeur comprise entre 0 et 255.

Définissez la couleur de chaque LED en précisant auparavant son numéro de 0 à 4 (bouton A). Pour que le changement soit visible, il faut ensuite demander la mise à jour de l’affichage.

Mais il est également possible de choisir la même couleur pour l’ensemble des LED (bouton B) et là l’affiche se met automatiquement à jour.

Programmation des LED Neopixels avec MakeCode
# Appel des bibliothèques
from microbit import *
from neopixel import NeoPixel
# Crée l'objet "strip" pour piloter 5 LED
strip = NeoPixel(pin0, 5)

# Définis les couleurs
ROUGE = (255, 0, 0)
ROSE = (255, 0, 100)
JAUNE = (255, 125, 0)
VERT = (0, 255, 0)
ORANGE = (255, 40, 0)
CYAN = (0, 255, 255)
BLEU = (0, 0, 255)
VIOLET = (180, 0, 255)
BLANC = (255, 255, 255)
OFF = (0, 0, 0)

# Boucle infinie
while True:
    # Si bouton A appuyé
    if button_a.is_pressed():
        strip[0] = (ROUGE)
        strip[1] = (ORANGE)
        strip[2] = (JAUNE)
        strip[3] = (VIOLET)
        strip[4] = (BLEU)
        # Affiche toutes les LED 
        strip.show()
    # Si bouton B appuyé
    if button_b.is_pressed():
        for i in range(0, 5):
            # Programme la couleur de la LED  
            strip[i] = (VERT)
        # Affiche toutes les LED 
        strip.show()
    # Petite pause (0,01 seconde)
    sleep(10)

Servomoteurs

Mais l’intérêt principal de la carte est bien sûr la gestion des servomoteurs. Pour tester cela, je vais utiliser un simple servomoteur SG90.

Contrôle d'un servomoteur SG90 avec la carte ServoLite et le Microbit

Attentions, ne vous trompez pas de sens, branchez :

  • Le fil marron sur la borne GND
  • Le fil rouge sur la borne VCC
  • Le fil jaune sur la borne SIG
Branchement du servomoteur à la carte Servo:Lite

Le connecteur nommé SERVO_1 est relié au port P01 du Micro:Bit et SERVO_2 est relié au port P02.

Ce type de servomoteur peut prendre n’importe quel angle entre 0 et 180°. Il suffit simplement d’indiquer l’angle souhaité avec le bloc : régler position servo broche P1 (ou P2) à angle.

Programmation d'un servomoteur avec MakeCode

Dans cet exemple de code, les LED s’allument en rouge et le servomoteur est à la position à 0° au début du programme. Si l’on appuie sur le bouton A, les LED deviennent vertes et le servomoteur se positionne à 90°. Puis au bout de 2 secondes, le moteur revient à sa position de départ. La fonction « positionDepart » allège le code et facilite les modifications ultérieures.

Programme MakeCode pour contrôler un servomoteur avec le MicroBit

J’ai un peu modifié les angles dans la version MicroPython, par rapport à la version MakeCode, car le servomoteur ne se comporte pas exactement de la même manière. Il vous faudra peut être quelques essais afin de trouver les valeurs qui fonctionnent le mieux chez vous.

# TestServo
# Appel des bibliothèques
from microbit import *
from neopixel import NeoPixel
# Crée l'objet "strip" pour piloter 5 LED
strip = NeoPixel(pin0, 5)

# Définis les couleurs
ROUGE = (255, 0, 0)
VERT = (0, 255, 0)

def positionDepart():
    for i in range(0, 5):
        # Programme la couleur de la LED  
        strip[i] = (ROUGE)
    # Affiche toutes les LED 
    strip.show()
    # Positionne le servomoteur
    pin1.write_analog(10)

positionDepart()

# Boucle infinie
while True:
    # Si bouton A appuyé
    if button_a.is_pressed():
        for i in range(0, 5):
            # Programme la couleur de la LED  
            strip[i] = (VERT)
        # Affiche toutes les LED 
        strip.show()
        # Positionne le servomoteur
        pin1.write_analog(70)
        # Pause
        sleep(2000)
        positionDepart()
    # Petite pause (0,01 seconde)
    sleep(10)

Voilà un petit exemple d’utilisation du servomoteur (pour ouvrir la barrière, appuyez sur le bouton A). Si vous souhaitez reproduire cette scène, téléchargez et imprimez la barrière (sur Thingiverse).

Barrière contrôlée par un Micro:Bit et la carte Servo Lite

Pour utiliser la SERVO_2 (reliée au port P02), il suffit de l’indiquer dans le programme. Bien sûr, rien ne vous empêche d’utiliser 2 moteurs en même temps. Pour en ajouter un 3ème, c’est un peu plus compliqué car il faut déactiver les LED Néopixel, mais je vous reparlerai bientôt (avec un exemple concret).

Problème rencontré

L’interrupteur OFF/ON s’est dessoudé au bout de quelques heures de test. Je pense qu’il s’agit plutôt d’une mauvaise manipulation de ma part (je n’avais pas mes lunettes et j’ai bêtement forcé sur les soudures en actionnant le bouton dans le mauvais axe). Mais, le bouton est un composant CMS (composant soudé en surface), la fixation est donc beaucoup moins solide qu’avec un composant traversant le circuit.

Alors s’il vous plait, soyez doux avec ce pauvre interrupteur !

J’ai essayé sans succès, de le ressouder, mais j’avais un faux-contact et ensuite, après quelques essais, le bouton s’est finalement désintégré. J’ai donc été obligé de relier les contacts de façon permanente, avec un peu d’étain.

Réparation de l'interrupteur cassé sur la carte ServoLite

Je vous rassure, la carte fonctionne toujours très bien, mais maintenant je suis obligé de retirer au moins une des piles pour l’éteindre.

Conclusion

Malgré cette mésaventure, je suis très content de cette carte d’extension. Elle est compacte, facile à utiliser et surtout, elle résout le problème de l’alimentation (le Micro:Bit fonctionne en 3,3 V alors que les servomoteurs nécessitent 5 V).

La carte SERVO:Lite permet aussi d’animer le robot MOVE.

Mais ce sera l’objet d’un prochain article…


3 réflexions sur “SERVO:Lite pour Micro:Bit

  1. Bonjour,

     » elles peuvent prendre n’importe quelle couleur en variant la proportion entre le rouge, le vert et le bleu (comme pour la peinture). »

    Pas vraiment « comme en peinture ». Le rouge, le vert et le bleu sont les couleurs primaires en synthèse *additive*, alors qu’en synthèse *soustractive* (cas de la peinture, des filtres de couleur sur les projecteurs ou les objectifs…) ce sont le rouge, le *jaune* et le bleu.

    J’aime

  2. Bonjour Eric,
    Vous avez tout à fait raison, je vais introduire une nuance et plutôt dire « un peu comme pour la peinture », pour suggérer que c’est le même principe, mais que ce n’est pas exactement la même chose.
    Merci pour cette remarque.

    J’aime

Laisser un commentaire