Pyboard
Présentation
La pyboard, Py pour Python, Board pour carte (en anglais), est née en même temps que le langage MicroPython. En effet, la carte et le langage sont issus d’un financement participatif sur le site Kickstarter.
Le langage MicroPython est une réécriture complète du langage Python (spécialement adaptée aux microcontrôleurs).
La carte est équipée d’un puissant microcontrôleur (ARM STM32F405RG), de nombreuses entrées/sorties, mais aussi d’une horloge en temps réel, d’un lecteur de carte micro-SD, de quatre LED, d’un bouton programmable (en plus du bouton reset) et d’un accéléromètre.
La pyboard recto-verso (https://shop.mchobby.be)
L’avantage avec la carte nue, c’est que vous pouvez choisir de souder les connecteurs de votre choix (mâles, femelles, mixtes). Ils peuvent être soudés au-dessus ou en dessous de la carte (pour se fixer directement sur une beadboard).
Si vous n’avez pas de projet précis, choisissez des connecteurs classiques, fixés sur le dessus. Ainsi, la carte sera compatible avec les cartes d’extension les plus courantes.
Carte pyboard et ses 56 connecteurs
La pyboard possède 30 ports d’entrées/sorties numériques qui offrent 16 entrées analogiques (ADC), 20 sorties pseudoanalogiques (PWM), 2 véritables...
Modes de programmation
1. Éditeur de texte
Lorsque vous la connectez à l’ordinateur, la pyboard est automatiquement reconnue comme un périphérique de stockage (clé USB ou disque externe).
Contenu de la pyboard (sous Windows 10)
Pour programmer la carte, il suffit de modifier le fichier main.py avec un éditeur de texte. Vous pouvez copier ou sauvegarder différentes versions de votre programme sur votre disque dur.
Au démarrage, la pyboard exécute tout d’abord le fichier boot.py (qui contient les options de configuration de la carte). Ensuite, le fichier main.py, c’est-à-dire votre programme, est à son tour exécuté.
Si une carte microSD (formatée en FAT32) est insérée dans le lecteur, elle est utilisé à la place de la mémoire interne (flash) de la pyboard.
Premier programme
Vous pouvez modifier le fichier main.py avec Notepad, mais il est conseillé d’installer un éditeur de texte un peu plus adapté à la programmation, comme par exemple Notepad++, disponible gratuitement à l’adresse suivante : https://notepad-plus-plus.org/
Notepad++
Pour tester la programmation de la carte, nous allons faire clignoter l’une des LED. Ouvrez le fichier main.py, reproduisez le programme suivant, en respectant l’indentation (décalage du texte à l’intérieur de la boucle avec la touche [Tab]) et enregistrez le fichier.
# Pyboard_Blink
import pyb
while True:
pyb.delay(500)
pyb.LED(4).off()
pyb.delay(500)
Vous pouvez faire clignoter une autre LED en modifiant le numéro dans l’instruction pyb.LED (1 - LED rouge...
Exemples de code
1. LED
Après avoir contrôlé les LED internes, vous pouvez maintenant faire clignoter une LED reliée à une des broches de la carte.
a. Branchement
Dans cet exemple, la LED est connectée au port Y12 et à la masse avec une résistance (de 220 Ω à 1 kΩ) en série. Vous pouvez tout à fait utiliser une autre sortie, il faudra simplement en tenir compte dans le code.
Branchement d’une LED au port Y12
b. Programmation
La LED (reliée à la borne Y12) s’allume 1/2 seconde et s’éteint 1/2 seconde.
# LED_Numérique
# Appel des bibliothèques
from machine import Pin
import time
# Le port Y12 est relié à la LED
led = Pin('Y12', Pin.OUT)
# Boucle infinie (clignotement de la LED)
while True:
# Allume la LED
led.value(1)
# Attends 1/2 seconde
time.sleep(0.500)
# Éteins la LED
led.value(0)
# Attends 1/2 seconde
time.sleep(0.500)
2. Feu tricolore
Lorsque l’on sait allumer une LED, il est très facile d’en contrôler 3. Si vous le souhaitez, vous pouvez vous amuser à reproduire cet exercice, qui permet de simuler la séquence d’allumage d’un feu tricolore.
Le feu tricolore
a. Branchement
Vous pouvez utiliser un module comportant...
Carte d’extension Gravity
La carte d’extension (ou shield) Gravity transforme une partie des connecteurs femelles en connecteurs mâles. Elle duplique aussi les bornes 3V3 et GND afin de brancher directement les modules Gravity (ou les servomoteurs). La carte possède également une entrée (connectée à la borne Vin), pour éventuellement ajouter une alimentation externe.
L’installation est très facile, puisque le shield vient simplement s’enfoncer sur les connecteurs de la pyboard.
Shield Gravity (shop.mchobby.be)
1. Capteur analogique
a. Branchement
Connectez un capteur analogique (comme le module Analog Sound Sensor V2.2) à un des ports de la carte d’extension Gravity (X5, par exemple).
Branchement d’un capteur analogique
b. Programmation
Copiez le code suivant dans le fichier main.py.
# Capteur_analogique
# Appel des bibliothèques
import pyb
import time
# Définition du port du capteur
capteur = pyb.ADC('X5')
# Boucle infinie
while True:
# Lecture du capteur (port X5)
print (capteur.read())
# Pause
time.sleep(0.1)
Enregistrez le fichier et ouvrez une fenêtre de terminal. L’écran affiche le volume sonore ; si vous parlez devant le capteur, la valeur détectée augmente.
Affichage du volume sonore
Vous pouvez interrompre le programme...
Carte pyboard-UNO-R3
La carte d’extension UNO-R3 pour pyboard est née d’une collaboration entre Dominique Meurisse (shop.mchobby.be) et Frédéric Pierson (garatronic.fr). Au départ, l’idée était surtout de reproduire fidèlement la disposition des connecteurs de l’Arduino, afin de connecter la pyboard aux nombreux shields utilisant ce format.
Mais la carte peut tout à fait s’utiliser seule (sans shield Arduino). En effet, les créateurs de la carte n’ont pas pu s’empêcher d’ajouter un écran OLED, un buzzer, deux boutons poussoirs, une LED (et une sortie) Neopixel, ainsi que de nombreux autres connecteurs (servomoteur, UEXT, Rapido, batterie).
La carte présentée ici est encore à l’état de prototype, il est donc possible que la version finale soit légèrement différente.
Pyboard-UNO-R3 (shop.mchobby.be et garatronic.fr)
La pyboard pourrait éventuellement s’installer au-dessus de la carte d’extension (à condition de souder les connecteurs appropriés sur les deux cartes). Cependant, non seulement cela masquerait l’écran OLED (et les boutons), mais en plus cela risquerait de gêner l’installation des shields Arduino.
Il est donc plus simple d’insérer la pyboard en dessous, mais forcément la carte pyboard-UNO-R3 dépasse un peu.
Branchement de la pyboard à la carte pyboard-UNO-R3
1. Batterie Lipo
Le connecteur micro-USB assure l’alimentation de la carte et permet le rechargement d’une batterie Lipo de 3,7 V (connectée au connecteur batterie).
Rechargement de la batterie Lipo
2. Installation des bibliothèques
La carte nécessite l’installation de différentes bibliothèques. Pour cela, il suffit de télécharger et de copier le fichier *.py à la racine du lecteur PYBFLASH, ou dans un dossier nommé lib.
UNO (uno.py), PWM (pwm.py) et UNOEXTRA (unoextra.py) : https://github.com/mchobby/pyboard-driver/tree/master/UNO-R3
NeoPixel (ws2812.py) : https://github.com/mchobby/esp8266-upy/tree/master/neopixel
Ecran OLED :
-
Si vous avez mis à jour votre pyboard avec la dernière version de MicroPython (ssd1306.py) : https://github.com/micropython/micropython/tree/master/drivers/display
-
Si vous êtes resté...
Sources
Ce chapitre s’est beaucoup appuyé sur l’excellent travail que Dominique Meurisse a réalisé avec la pyboard. Pour aller plus loin, vous devriez vous procurer son dernier livre (de presque 800 pages) : MicroPython et Pyboard - Python sur microcontrôleur : de la prise en main à l’utilisation avancée (Éditions ENI).
N’hésitez pas également à consulter les sites suivants :
https://github.com/mchobby/pyboard-driver/tree/master/UNO-R3