4 minute(s) de lecture

PybStick Je découvre une petite merveille qu’est la PYBStick dans sa version lite: un projet commun entre Garatronic et McHobby à base d’un microcontrôleur STM32F401CE qui peut se programmer en micropython et prendre le contrôle d’un GPIO de 26 broches pour toutes sortes de projets électroniques #DIY passionnants comme j’ai l’habitude d’en faire avec des Raspberry pi. Ce petit projet est une découverte pour moi alors il s’agit d’un premier billet “Hello World” en attendant le projet final que j’ai en tête.

Hardware

PybStick Niveau dimension c’est impressionnant comme c’est fin: si vous connaissez la taille d’un Raspberry pi zéro, vous pouvez apprécier la finesse de la PYBStick. Elle est de plus dotée d’un connecteur USB , de deux petits boutons poussoirs et de 4 leds rouge, verte, orange et bleue dont on peut prendre le contrôle.

J’ai en tête de faire une version allégée de mon LedDroid: il s’agit d’un Raspberry pi3 qui commande une bande de leds RGB neopixels, un afficheur 7 segments et quelques boutons poussoirs afin de sélectionner une animation parmi plusieurs. A l’origine j’ai créé ce projet pour un groupe de musiciens qui voulait décorer leur scène avec un tel décors lumineux à activer/désactiver à la demande. J’ai rapidement détourné son utilisation pour faire clignoter mes leds dans un sapin de Noël et toutes sortes d’objets, et je me suis dit qu’une version allégée la plus minuscule possible, avec des animations qui s’enchaînent toutes seules et sans afficheur 7 segment serait bienvenue. J’ai alors pensé à un Raspberry pi Zéro qui ferait bien l’affaire, mais je n’ai absolument pas besoin d’autant de puissance pour faire clignoter des Leds, pas besoin de réseau, de sorties usb, hdmi, et pas besoin non plus qu’un OS prenne le temps de démarrer et de devoir l’éteindre proprement aussi… avec la PYBStick j’ai tous les avantages que je recherche: un système miniaturisé, qui peut contrôler des leds RGB , programmable en micropython depuis mon environnement de DEV Raspberry pi4, et qui démarre dès qu’on le branche. C’est donc décidé je vais créer ce projet avec une PYBStick la plus simple: celle en version Lite.

Un modèle de PYBStick Lite m’a été gracieusement offert par Frédéric, le gérant de la startup Garatronic: j’ai présenté mon projet en me demandant quand ils seront commercialisés (très bientôt!), et Frédéric m’a proposé d’être bêta-testeur alors j’ai sauté sur l’occasion.

Software

Tout peut se contrôler depuis un Raspberry pi4, au même titre que n’importe quel autre ordinateur sous linux, windows ou mac os. Dans cet article je ne parlerai que du contrôle de la PYBStick depuis un Raspberry.

Tout d’abord chapeau bas niveau documentation: tout est parfaitement décrit en Français et Anglais dans le Github de McHobby. Il y a tous les schémas, explications et procédures de flashage dont on a besoin. Depuis un Raspberry pi il suffit d’installer les commandes utiles pour le flashage de la carte et l’appel à l’interpréteur de micropython REPL, et vous pouvez utiliser votre IDE Python pour écrire vos scripts python. Voici comment installer l’utilitaire de flashage et l’interpréteur REPL

sudo apt-get install dfu-util
sudo apt-get install screen

PybStick Pour flasher la carte avec la dernière version micropython il faut suivre la procédure vers la fin du Github dans la section “Bouton Reset et Mode DFU” pour récupérer le fichier .dfu, et le flasher sur la carte, ce qui ne prend que quelques minutes à peine c’est très rapide. Une fois le fichier .dfu téléchargé, entrez ceci, et le tour est joué! (remplacer ‘monfichier.dfu’ par le nom complet avec chemin où vous avez déposé votre fichier .dfu). Attention le flashage d’un micocontrôleur dfu impose qu’il soit le seul sur la machine… débranchez bien les autres si vous en avez.

sudo dfu-util --alt 0 -D monfichier.dfu

Quand c’est terminé: il suffit de débrancher et rebrancher la carte sur un USB libre de son Raspberry pi ce qui monte automatiquement un nouveau lecteur nommé “PYBFLASH” dans lequel on retrouve 4 fichiers:

  • boot.py
  • main.py
  • pybcdc.inf
  • README.txt

Ouvrez le fichier main.py avec votre éditeur python préféré et vous pouvez y coder votre script micropython: il sera démarré automatique dès que la PYBStick est branchée.

Pour tester le script avec les logs: l’interpréteur REPL entre en action: en ligne de commande exécutez ceci pour l’activer et vous y verrez tous vos messages d’erreurs s’il y en a, ou vos “print”sur la console:

screen /dev/ttyACM0

Pour rebooter la PYBstick il suffit d’entrer CTRL-D dans l’interpréteur REPL: pas besoin de la démonter/débrancher/rebrancher à chaque fois c’est très pratique.

exemple micro-python

Ce petit script ci-dessous va afficher le message “Hello World!” dans l’interpréteur REPL et faire clignoter les 4 leds jusqu’à ce que vous appuyez sur le bouton poussoir User (A).

# main.py -- put your code here!
from pyb import Switch
from pyb import LED
from time import sleep

print('Hello World!')

pyb_leds = [LED(1), LED(2), LED(3), LED(4)]
sw = Switch()

# éteint toutes les leds
for led in pyb_leds:
    led.off() 

blink = True    
while blink:
    for led in pyb_leds:     # parcours des leds
            led.on()         # allume la led
            sleep(0.1)       # attente 0.1 secondes
            led.off()        # éteint la led
            if sw.value():   # bouton user 'A' pressé
                blink = False 
                
print('bye!')

J’ai vraiment hâte de démarrer mon projet de contrôle d’une bande de leds RGB neopixels avec cette merveille de PYBStick !