Outils pour utilisateurs

Outils du site


micropython

Micropython

Python pour Micro Controlers
English Version

Carte utilisée pour les essais

Ressources

Installation pour Linux

sudo apt install picocom
sudo usermod -a -G dialout $USER

Se déconnecter, se reconnecter

En terminal

picocom /dev/ttyACM0 -b9600

Reset

Ctrl + D ou appuyer sur le button derrière le micro-usb

Communication entre la pyboard et le PC

Exemple

  • MPU 6050 Accéléromètre et Gyroscope

Inspiré de itechnofrance

Documentation sur la MPU 6050

Branchement de la MPU 6050à la pyboard lite

La communication entre les 2 cartes se fait en I2C: Inter-Integrated Circuit. Il permet de relier facilement un microprocesseur et différents circuits.
Il existe d’innombrables périphériques exploitant ce bus, il est même implémentable par logiciel dans n’importe quel microcontrôleur. Le poids de l’industrie de l’électronique grand public a permis des prix très bas grâce à ces nombreux composants.

Le système de la PyBoard est écrit pour communiquer en I2C avec:

  • SDA sur Y10 (Serial Data Line) : ligne de données bidirectionnelle
  • SCL sur Y9 (Serial Clock Line) : ligne d'horloge de synchronisation bidirectionnelle

Branchement de la MPU 6050à la pyboard lite

Les fichiers

Les fichiers du dossier pyboard doivent être copié sur la pyboard.

Le fichier mpu6050_receiver.py doit être excécuté sue le PC relié en USB à la pyboard.

USB_VCP – USB virtual comm port

Communication entre la PyBoard et le PC en USB

pyboard

boot.py
import pyb
main.py
usb = pyb.USB_VCP()
 
def send_data(data):
    global usb
    print(data)
    toto = ujson.dumps(data)
    usb.write(toto + "\n")

PC

boot.py
from time import sleep
import serial
import ast
 
 
def datagram_to_dict(data):
    """Décode le message.
    Retourne un dict ou None
    """
 
    try:
        dec = data.decode("utf-8")
    except:
        print("Décodage UTF-8 impossible")
        dec = data
 
    try:
        msg = ast.literal_eval(dec)
    except:
        print("ast.literal_eval impossible")
        print("Ajouter ast dans les import")
        msg = dec
 
    if isinstance(msg, dict):
        return msg
    else:
        print("Message reçu: None")
        return None
 
init = 1
while init:
    try:
        print("Connexion à ttyACM0 ....")
        sleep(1)
        seri = serial.Serial('/dev/ttyACM0', 9600, timeout=1)
        print("Connecté à ttyACM0")
        init = 0
    except:
        print("Connexion impossibble à ttyACM0")
 
while True:
    rcv = seri.readline()
 
    data = datagram_to_dict(rcv)

Entrée analogique pour capter un potentiomètre

Les broches analogiques sont: X1 à X8, X11, X12, Y11, Y12

Les broches analogiques mesurent en 3.3V sur 12 bits (0-4095) soit une précision de 0,8 mV = 0.0008 V!

ADC

See pyb.Pin and pyb.ADC.
 
from pyb import Pin, ADC
 
adc = ADC(Pin('X19'))
adc.read() # read value, 0-4095

DAC

from pyb import Pin, DAC
 
dac = DAC(Pin('X5'))
dac.write(120) # output between 0 and 255
micropython.txt · Dernière modification : 2020/10/19 07:14 de serge