carte BBC micro:bit et liaison série


microbitserial

Nous allons présenter ici rapidement l'échange d'informations entre la micro:bit et :

Nous allons prendre comme exemple l'envoi par la micro:bit de l'information de pitch grâce au programme suivant à charger sur la carte :

microbitprog

On peut aussi utiliser le programme micro:python équivallent :

microbitpython

Dans ce programme, l'instruction print envoie directement sur la liaison série. Si vous souhaitez aller plus loin dans l'utilisation de la liaison série il faut se pencher sur le module UART

Raccordement de la micro:bit et port série

La liaison série va se faire au travers du cable USB. Il vous faut donc raccorder votre carte micro:bit au PC via un cable USB

Sous Windows votre carte va être raccordée via un port série. Windows nomme ces ports avec un nom du type COM1,COM2,COM3,etc. Il vous faut savoir sous quel port votre carte micro:bit est raccordée. Pour cela le plus simple est d'ouvrir une console Windows (cmd) puis de taper la commande mode Vous devriez voir apparaître le nom de votre port COM et son numéro.

Communication avec TeratermPro ou putty

Lancer le logiciel puis :

  1. Sélectionner le mode serial communication.
  2. Indiquez le port COM utilisé (le port indiqué par défaut doit être le bon ;))
  3. Aller dans le menu setup/serial et mettre la vitesse 115200 bauds.

Si tout est ok vous devez voir apparaître sur la console de TeraTerm la valeur du pitch de la carte. Bougez la carte pour voir les variations !

teraTerm

Communication avec Python

Voici un exemple de programme : (Pensez à modifier le nom du port COM !)

   
import time
import serial

print(serial.VERSION)
ser = serial.Serial(
    port='COM4',\
    baudrate=115200,\
    parity=serial.PARITY_NONE,\
    stopbits=serial.STOPBITS_ONE,\
    bytesize=serial.EIGHTBITS,\
        timeout=0)

print("connected to: " + ser.portstr)
count = 0

while True:
    ser.flushInput()
    time.sleep(0.1)
    line = ser.readline().rstrip().decode()
    tokens = line.split(':')
    if len(tokens)==2:
        print(str(count)+":"+tokens[0]+"-->"+tokens[1]+"["+line+"]")
    count +=1

ser.close()
  

Pour info l'instruction ser.flushInput() permet de vider le buffer pour récupérer la valeur la plus récente de pitch. Cette instruction est biensûr optionnelle et dépend de la gestion du flux que vous souhaitez réaliser.

In Python 3.x the strings are Unicode by default. When sending data to Arduino, they have to be converted to bytes. This can be done by prefixing the string with b:

>>> ser.write(b'5') # prefix b is required for Python 3.x, optional for Python 2.x

Voici le résultat de l'execution sur la console Python :

pythonconsole

Communication avec javascript via node.js

Voici la procédure à suivre pour l'installation :

N'hésitez pas à consulter p5jsServer sur un serveur node en local pour plus de détail sur node.js

  1. Décompresser l'archive serialNode dans le répertoire de votre choix.
  2. Ouvrez l'interpréteur de commande windows(cmd).
  3. Placez vous dans le répertoire serialNode (cd cheminserialNode)
  4. Installer les packages nécessaires :
    1. npm install serialport.
    2. npm install express
    3. npm install socket.io
  5. Modifiez si nécessaire le nom du port COM au début du programme server.js
  6. Vous n'avez plus qu'à lancer le serveur node avec la commande node server.js
  7. Puis lancer la page web associée en lançant votre navigateur avec l'adresse 127.0.0.1:3000
  8. La balle se déplace de gauche à droite suivant que vous inclinez la carte micro:bit d'avant en arrière.
   
Je vous laisse étudier le code associé : server.js pour le serveur node et sketch.js dans le répertoire public pour la page web sous p5js.
  

Communication avec Web USB

Il s'agit d'une fonctionnalité béta

N'hésitez pas à consulter web USB ticket from microbit pour plus de détails. ou encore microbit Web USB

( Christophe Béasse - octobre 2018 )