Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Du 22 au 24 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. micro:bit
  3. Pyboard
Extrait - micro:bit Programmez la carte avec MakeCode et MicroPython
Extraits du livre
micro:bit Programmez la carte avec MakeCode et MicroPython
2 avis
Revenir à la page d'achat du livre

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.

images/08-01.png

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.

images/08-02.png

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).

images/08-04.png

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/

images/08-05.png

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.

images/08-12.png

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.

images/08-13.png

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.

images/08-15.png

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).

images/08-16.png

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.

images/08-17.png

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.

images/08-19.png

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.

images/08-20.png

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).

images/08-21.png

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 :

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 :

http://wiki.mchobby.be

http://docs.micropython.org

https://github.com/mchobby/pyboard-driver/tree/master/UNO-R3