Nous avons déjà utilisé un Arduino pour contrôler une cafetière avec des boutons, une télécommande infrarouge, un smartphone Android et même un Minitel. Maintenant, il est temps d’utiliser le MicroBit.

Matériel nécessaire
- La cafetière modifiée et 1 module d’au moins 3 relais
- Un MicroBit et son alimentation de 3V,
- Une alimentation de 5V pour le module relais (piles ou transformateur)
- Des connecteurs MicroBit – Dupont
- Des câbles Dupont (et éventuellement une breadboard)
Schéma de branchement
Le schéma ressemble beaucoup à celui de l’Arduino. Mais pour faciliter les branchements, j’ai décidé d’utiliser seulement les 3 sorties principales du Micro:bit (P0, P1 et P2). L’alimentation électrique de la cafetière ne sera donc pas gérée par le module relais.

Attention : le Microbit fonctionne en 3,3V alors que le module relais demande une alimentation de 5V pour fonctionner. Vous devez donc utiliser 2 alimentations séparées. Ça ne pose pas vraiment de soucis à condition de relier ensembles les bornes (-), comme sur le schéma.
Vous pouvez aussi utiliser ce type de module qui se connecte directement à la breadboard et peut fournir simultanément 2 tensions différentes (3,3 et 5V), en déplaçant les cavaliers.

Le schéma légèrement différent.

Code
Le programme est très simple à utiliser. Vous mettez tous les éléments sous tension et vous appuyez sur le bouton A pour faire un café simple ou sur le bouton B si vous souhaitez un café double.

# Appel de la bibliothèque "microbit"
from microbit import *
# Les boutons ne sont pas appuyes
pin0.write_digital(1)
pin1.write_digital(1)
pin2.write_digital(1)
# Définition des temps de chauffe (en sec)
# Ajustez ces valeurs suivant votre cafetiere
CHAUFF_CAFFETIERE = 90
SIMPLE_TASSE = 70
DOUBLE_TASSE = 100
# Fonctions
def SimpleTasse():
# Affichage de la taille de la tasse
display.show("1")
# Allumage de la cafetiere
# (appui et relachement du bouton)
pin0.write_digital(0)
sleep(500)
pin0.write_digital(1)
# Chauffage de l'eau dans la cuve
sleep(CHAUFF_CAFFETIERE * 1000)
# Simple tasse (appui et relachement du bouton)
pin1.write_digital(0)
sleep(500)
pin1.write_digital(1)
# Préparation du cafe
sleep(SIMPLE_TASSE * 1000)
# Extinction de la cafetiere
# (appui et relachement du bouton)
pin0.write_digital(0)
sleep(500)
pin0.write_digital(1)
display.clear()
def DoubleTasse():
# Affichage de la taille de la tasse
display.show("2")
# Allumage de la cafetiere
# (appui et relachement du bouton)
pin0.write_digital(0)
sleep(500)
pin0.write_digital(1)
# Chauffage de l'eau dans la cuve
sleep(CHAUFF_CAFFETIERE * 1000)
# Double tasse (appui et relachement du bouton)
pin2.write_digital(0)
sleep(500)
pin2.write_digital(1)
# Préparation du cafe
sleep(DOUBLE_TASSE * 1000)
# Extinction de la cafetiere
# (appui et relachement du bouton)
pin0.write_digital(0)
sleep(500)
pin0.write_digital(1)
display.clear()
# Boucle infinie
while True:
if button_a.was_pressed():
# Café simple
SimpleTasse()
elif button_b.was_pressed():
# Café double
DoubleTasse()
Si vous possédez un autre Microbit, vous pouvez l’utiliser pour télécommander la cafetière à distance.
Télécommande
Le programme est très court, il envoie simplement le message « 1 » ou « 2 » pour indiquer que l’on a appuyé sur le bouton A ou sur le bouton B.

# Appel de la bibliothèque "microbit"
from microbit import *
import radio
radio.config(group=1)
radio.on()
# Boucle infinie
while True:
if button_a.was_pressed():
# Café simple
radio.send('1')
elif button_b.was_pressed():
# Café double
radio.send('2')
Contrôle de la cafetière
Le code est presque identique à la 1ère version. Les boutons fonctionnent toujours, mais si le récepteur reçoit le message « 1 » ou « 2« , il réagit comme si vous aviez appuyé sur l’un des boutons.

# Appel de la bibliothèque "microbit"
from microbit import *
import radio
# Les boutons ne sont pas appuyes
pin0.write_digital(1)
pin1.write_digital(1)
pin2.write_digital(1)
# Définition des temps de chauffe (en sec)
# Ajustez ces valeurs suivant votre cafetiere
CHAUFF_CAFFETIERE = 90
SIMPLE_TASSE = 70
DOUBLE_TASSE = 100
# Fonctions
def SimpleTasse():
# Affichage de la taille de la tasse
display.show("1")
# Allumage de la cafetiere
# (appui et relachement du bouton)
pin0.write_digital(0)
sleep(500)
pin0.write_digital(1)
# Chauffage de l'eau dans la cuve
sleep(CHAUFF_CAFFETIERE * 1000)
# Simple tasse (appui et relachement du bouton)
pin1.write_digital(0)
sleep(500)
pin1.write_digital(1)
# Préparation du cafe
sleep(SIMPLE_TASSE * 1000)
# Extinction de la cafetiere
# (appui et relachement du bouton)
pin0.write_digital(0)
sleep(500)
pin0.write_digital(1)
display.clear()
def DoubleTasse():
# Affichage de la taille de la tasse
display.show("2")
# Allumage de la cafetiere
# (appui et relachement du bouton)
pin0.write_digital(0)
sleep(500)
pin0.write_digital(1)
# Chauffage de l'eau dans la cuve
sleep(CHAUFF_CAFFETIERE * 1000)
# Double tasse (appui et relachement du bouton)
pin2.write_digital(0)
sleep(500)
pin2.write_digital(1)
# Préparation du cafe
sleep(DOUBLE_TASSE * 1000)
# Extinction de la cafetiere
# (appui et relachement du bouton)
pin0.write_digital(0)
sleep(500)
pin0.write_digital(1)
display.clear()
# Programme
radio.config(group=1)
radio.on()
# Boucle infinie
while True:
# Réception des messages
message = radio.receive()
# interpretation du message
if message == '1':
# Café simple
SimpleTasse()
elif message == '2':
# Café double
DoubleTasse()
# Boutons
if button_a.was_pressed():
# Café simple
SimpleTasse()
elif button_b.was_pressed():
# Café double
DoubleTasse()
