IHM : Communication entre PC et carte Micro:bit

(actualisé le ) par wlaidet

Matériels et logiciels

Installations

Branchez en USB votre carte Micro:bit puis attendez l’installation des drivers. Sous W10 vous ne devriez pas avoir de problème.

Sous W7, if faudra installer un driver supplémentaire pour communiquer en direct avec la carte micro:bit depuis un PC :

https://support.microbit.org/support/solutions/articles/19000013984-how-do-i-connect-the-micro-bit-to-my-computer

Téléchargez et installez Mu (Python).

Vous êtes prêts !

Ci-dessous vous trouverez les scripts à transférer sur votre carte Micro:bit et à exécuter sur votre PC à l’aide de Mu.

Ouvrez Mu, passer le en mode Micro:bit, copiez/collez le code correspondant ci-dessous, enregistrez puis flashez (transférer le script sur) votre carte Micro:bit comme dans la vidéo.

Ensuite, vous pouvez utiliser votre éditeur Python favori ou encore Mu en mode Python3.

Il faudra veiller à ce que pyserial soit installé :

Avec Pyzo : conda install pyserial

Copiez/collez le code ci-dessous correspondant puis exécutez-le.

Vidéo de présentation

Codes python du projet

Script à transférer vers la carte micro:bit :

from microbit import *

uart.init(baudrate=115200)

display.scroll('Pret')

while True:
    #print(temperature())
    if uart.any():
        #display.scroll('Recu')
        msg_bytes = uart.read()
        if msg_bytes == b'temperature':
            temp = temperature()
            print(temp)
            display.scroll(temp)
        else:
            if msg_bytes == b'11':
                display.set_pixel(1, 1, 9)
            else:
                msg_str = str(msg_bytes, 'UTF-8')
                display.scroll(msg_str)
    sleep(1000)

Télécharger

Script à exécuter sur le PC :

# coding: utf-8
import serial, time

import tkinter as tk

port = "COM3"
baud = 115200
s = serial.Serial(port)
s.baudrate = baud


def demande_temperature():
    s.write(b'temperature')
    data = s.readline()
    data = int(data[0:4])
    print(data)
    texte_temperature.set("Température : "+str(data))
   
def envoie_message():
    message_bytes = bytes(texte_message.get(), 'utf-8')
    s.write(message_bytes)
   
def quitter():
    s.close()
    ma_fenetre.destroy()

   
 
# Fenêtre principale
ma_fenetre = tk.Tk()
 
ma_fenetre.title("Titre de la fenetre")
ma_fenetre.geometry("300x200")
 
# Création d'un bouton pour recuperer la temperature
button_temperature = tk.Button(ma_fenetre, text="Temperature", command=demande_temperature)
button_temperature.grid(row=1, column=0, padx=5, pady=5)

# Creation d'un label pour afficher la temperature
texte_temperature = tk.StringVar()
texte_temperature.set("Température : ")
label_temperature = tk.Label(ma_fenetre, textvariable=texte_temperature , bg="grey")
label_temperature.grid(row=1, column=1, padx=5, pady=5)

# Création d'un bouton pour envoyer un message
button_message = tk.Button(ma_fenetre, text ="Envoyer", command=envoie_message)
button_message.grid(row=2, column=1, padx=5, pady=50)

# Création d'un champ de saisie d'un message
texte_message = tk.StringVar()
texte_message.set('coucou')
champ_message = tk.Entry(ma_fenetre, textvariable=texte_message, bg="bisque", fg="maroon", width="20")
champ_message.focus_set()
champ_message.grid(row=2, column=0, padx=5, pady=5)

# Création d'un bouton Quitter
button_quitter = tk.Button(ma_fenetre, text="Quitter", command=quitter)
button_quitter.grid(row=3,column=0, padx=5, pady=5)
 
ma_fenetre.mainloop()

Télécharger