Nous avions déjà vu comment déclencher notre cafetière à distance en utilisant une télécommande infrarouge. Mais cette fois, nous allons remplacer la télécommande par un smartphone (ou une tablette) Android et contrôler la cafetière en Bluetooth.

Matériel nécessaire :
- La cafetière modifiée (avec 1 module d’au moins 4 relais)
- 1 smartphone Android
- 1 Arduino Uno et son alimentation,
- 1 breadboard avec des câbles Dupont,
- 1 module Bluetooth de type HC-05,
- 1 LED et 1 résistance d’environ 220 Ω (facultatives, car vous pouvez aussi regarder la LED interne de l’Arduino qui est reliée à la même borne).
Branchement et programmation de l’Arduino
N’oubliez pas d’inverser les bornes TX et RX. C’est à dire qu’il faut connecter le TX de l’Arduino au RX du module et le RX de l’Arduino au TX du module (sinon cela ne fonctionnera pas).

Le module Bluetooth utilise la liaison série (qui sert aussi à programmer l’Arduino). Pour éviter les problèmes, débranchez le module pendant le téléversement du code.
// Cafetiere_Bluetooth
const int ALIMENTATION = 2;
const int ONOFF = 3;
const int SIMPLE_TASSE = 4;
const int DOUBLE_TASSE = 5;
const int LED_TEMOIN = 13;
// Temps avant mise en veille de la cafetière (en minutes)
const int VEILLE = 5;
// Etat de la cafetière (0 éteinte, 1 allumée)
boolean allumageCafetiere = 0;
// Stockage du contenu du message
char message = 0;
// Moment de la derniere utilisation
unsigned long derniereUtilisation;
void setup() {
Serial.begin(9600);
// Initialisation des sorties
pinMode(ALIMENTATION, OUTPUT);
pinMode(ONOFF, OUTPUT);
pinMode(SIMPLE_TASSE, OUTPUT);
pinMode(DOUBLE_TASSE, OUTPUT);
pinMode(LED_TEMOIN, OUTPUT);
// Mise hors tension de la cafetière
digitalWrite(ALIMENTATION, HIGH);
// Les 3 boutons ne sont pas appuyés
digitalWrite(ONOFF, HIGH);
digitalWrite(SIMPLE_TASSE, HIGH);
digitalWrite(DOUBLE_TASSE, HIGH);
// La LED témoin est allumée
digitalWrite(LED_TEMOIN, HIGH);
}
void loop() {
// Réception du message en Bluetooth
if (Serial.available()>0){
message = Serial.read();
switch (message) {
// Simple tasse
case '1':
appuyer(SIMPLE_TASSE);
break;
// Double tasse
case '2':
appuyer(DOUBLE_TASSE);
break;
}
message = 0;
}
// Si la cafetière est allumée et qu'elle n'a pas été utilisée depuis longtemps
if ((millis() - derniereUtilisation) >= (VEILLE*60000) && allumageCafetiere == 1){
// Mise hors tension de la cafetière
digitalWrite(ALIMENTATION, HIGH);
// Indique que la cafetière est éteinte
allumageCafetiere = 0;
}
}
void appuyer(int bouton){
digitalWrite(LED_TEMOIN, LOW);
// Si la cafetière est éteinte
if (allumageCafetiere == 0){
// Mise sous tension de la cafetière
digitalWrite(ALIMENTATION, LOW);
delay(1000);
// Appui sur le bouton ON/OFF pour allumer la cafetière
digitalWrite(ONOFF, LOW);
delay(500);
// Relachement du bouton ON/OFF
digitalWrite(ONOFF, HIGH);
// Chauffage de l'eau dans la cuve
// Ajustez ces valeurs en fonction de votre cafetière
pause(90); // 90 secondes (1 min 30 sec)
// Indique que la cafetière est allumée
allumageCafetiere = 1;
}
// Appui sur le bouton
digitalWrite(bouton, LOW);
delay(500);
// Relachement du bouton
digitalWrite(bouton, HIGH);
// Préparation du café et chauffage de l'eau
// Ajustez ces valeurs en fonction de votre cafetière
if (bouton == SIMPLE_TASSE){
pause(70); // 70 secondes (1 min 10 sec)
}
else {
pause(100); // 100 secondes (1 min 40 sec)
}
// Mise à jour du moment de la dernière utilisation
derniereUtilisation = millis();
digitalWrite(LED_TEMOIN, HIGH);
}
void pause(int secondes){
// Faire clignoter la LED témoin en attendant. le nb de secondes indiqué
for (int i=0; i < secondes; i++){
digitalWrite(LED_TEMOIN, HIGH);
delay(500);
digitalWrite(LED_TEMOIN, LOW);
delay(500);
}
}

Contrôle de la cafetière
Pour contrôler la cafetière depuis un smartphone (ou une tablette) Android, vous devez télécharger une application qui se chargera d’envoyer les données en Bluetooth.
Pour cela, rendez-vous sur le Play Store et recherchez les termes : « arduino bluetooth ». Il existe de nombreuses applications qui peuvent convenir, elle fonctionnent toutes à peu près sur le même principe mais certaines sont plus pratiques à utiliser. Je n’ai évidement par pris le temps de toutes les essayer. Pour ce tuto, j’ai choisi d’utiliser « Arduino Bluetooth Controller ».

Après avoir installé l’application, vous allez dans les paramètres Bluetooth du téléphone. Si l’Arduino est allumé, vous devriez voir apparaître le module Bluetooth. Sélectionnez-le pour l’associer et tapez le code « 1234 ». Lorsque le module apparaît dans la liste des périphériques associés, vous pouvez passer à l’étape suivante.

Le mode terminal
Pour le moment, la LED du module Bluetooth clignote. Lancez l’application, sélectionnez le module HC-06 et « Terminal mode ». Le capteur ne clignote plus, il est prêt à recevoir les instructions du smartphone.

Si vous souhaitez un café simple, tapez 1 et appuyez sur « terminer » (tapez 2 pour un café double). L’Arduino reçoit le message (en Bluetooth) et déclenche la cafetière.

Programmation des boutons
Il est également possible de programmer les boutons pour qu’ils envoient « 1 » ou « 2 » à l’Arduino. Pour cela, sélectionnez « Controller mode » au lieu de « Terminal mode »

Appuyez sur le petit engrenage pour accéder aux paramètres. Et programmez les boutons de votre choix en leur affectant les valeurs « 1 » ou « 2 ». Ensuite, il suffit d’appuyer sur le bouton correspondant pour lancer la préparation du café.

Évidement, il faudra toujours préparer la cafetière (avec l’eau et les dosettes) mais ensuite, vous pourrez tranquillement vous asseoir et activer plus tard la cafetière depuis votre fauteuil.

Cet article a été publié en mai 2019 dans le numéro 229 de la revue [Programmez!]

Savez-vous que HTCPCP (HyperText Coffee Pot Control Protocol) est un protocole qui décrit la communication pour le controle d’une cafetière a été décrit dans une RFC (https://tools.ietf.org/html/rfc2324 ) ?
La célèbre erreur 418 (I’m a teapot) a été transposée au protocole HTTP
J’aimeAimé par 1 personne