Pilotez une cafetière avec votre smartphone

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.

Cafetière contrôlée en Bluetooth par un smartphone Android

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).

Schéma de branchement de la cafetière pilotée en Bluetooth.

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);
  }
}
Photo d'arduino Uno relié à un module Bluetooth et à une boite de dérivation.

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 ».

Téléchargement de l'application Arduino bluetooth controller sur le Play Store.

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.

Associer le module Bluetooth avec un smartphone Android.

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.

Sélection du mode terminal dans de l'application Arduino bluetooth controller

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.

Envoi de donnée en Bluetooth vers l'Arduino

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 »

Sélection du mode Controller dans de l'application Arduino bluetooth controller

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é.

Programmation des boutons pour envoyer automatiquement les données (en Bluetooth) vers l'Arduino.

É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.

Test de contrôle de la cafetière avec un smartphone Android.

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

Extrait de l'article du magazine Programmez! de mai 2019, qui explique comment Hacker une cafetière avec du Bluetooth.

Une réflexion sur “Pilotez une cafetière avec votre smartphone

Laisser un commentaire