Contrôler votre cafetière avec un Arduino

Dans un précédent tuto, nous avons vu comment démonter la cafetière (senseo) pour relier les boutons à un module relais. Nous allons maintenant voir comment la contrôler avec un Arduino.

Vous trouverez ici une présentation de l’Arduino, mais pour réaliser ce tuto vous avez besoin de connaitre quelques bases :

  • Installation de l’IDE Arduino,
  • Téléversement d’un sketch,
  • Utilisation d’une breadboard

Si vous cherchez un livre complet sur l’Arduino, je ne peux que vous conseiller le mien…

Dans cet exemple, il suffit de 2 boutons pour gérer la cafetière. Le 1er bouton pour une simple tasse et le 2ème, pour une tasse double. La LED en passant de l’état constamment allumée à clignotante permet d’indiquer que l’appui sur le bouton a bien été pris en compte, que le café est en cours de préparation et que l’on doit attendre avant d’en refaire un autre.

Matériel nécessaire :

  • La cafetière modifiée précédemment et 1 module d’au moins 4 relais
  • un Arduino Uno et son alimentation,
  • une breadboard avec des câbles Dupont,
  • Deux boutons poussoirs,
  • Une LED avec une 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).

Vous pouvez reproduire le schéma ci-dessous :

Dans cette configuration, les relais établissent le contact (avec l’alimentation ou les 3 boutons) lorsque le connecteur correspondant reçoit un signal bas (LOW ou 0V) et le coupent quand il reçoit un signal haut (HIGH ou +5V).

Téléverser le code correspondant dans l’Arduino (en adaptant éventuellement le temps de chauffe à votre cafetière) :

// Cafetiere_2_boutons
 const int ALIMENTATION = 2;
 const int ONOFF = 3;
 const int SIMPLE_TASSE = 4;
 const int DOUBLE_TASSE = 5;
 const int BOUTON_1 = 8;
 const int BOUTON_2 = 9;
 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;
 // Moment de la derniere utilisation
 unsigned long derniereUtilisation;
void setup() {
   pinMode(ALIMENTATION, OUTPUT);
   pinMode(ONOFF, OUTPUT);
   pinMode(SIMPLE_TASSE, OUTPUT);
   pinMode(DOUBLE_TASSE, OUTPUT);
   pinMode(BOUTON_1, INPUT_PULLUP);
   pinMode(BOUTON_2, INPUT_PULLUP);
   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() {
   // Si on appuie sur le bouton 1
   if (digitalRead(BOUTON_1) == LOW){
     appuyer(SIMPLE_TASSE);
   }
   // Si on appuie sur le bouton 2…
   if (digitalRead(BOUTON_2) == LOW){
     appuyer(DOUBLE_TASSE);
   }
   // 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){
     extinctionCafetiere();
   }
 }
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 extinctionCafetiere(){
   // Mise hors tension de la cafetière
   digitalWrite(ALIMENTATION, HIGH);
   // Indique que la cafetière est éteinte
   allumageCafetiere = 0;
 }
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);
   }
}

Pour préparer un café, les 3 boutons en façade de la cafetière sont désormais inutiles puisse qu’ils sont gérés par l’Arduino. Lorsque la LED témoin est allumée en continu, il suffit de :

  1. Mettre la tasse, l’eau, 1 ou 2 dosettes et d’appuyer sur un des 2 boutons de la breadboard (simple ou double tasse)
    • L’Arduino prend en charge l’alimentation et allume la cafetière, puis la LED clignote, l’eau chauffe, le café coule et l’eau contenue dans le réservoir se remet à chauffer.
  2. Prendre le café (et le boire)
    • Lorsque la LED s’arrête de clignoter, vous pouvez préparer un autre café. Mais de toute façon, la cafetière s’éteindra au bout de 5 minutes d’inactivité.

Bon, c’est pas mal, mais il faut quand même se lever pour appuyer sur le bouton de l’Arduino. Ce serait quand même plus pratique de déclencher la cafetière à distance. Alors ce sera l’objet du prochain tuto.


Répondre

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l'aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s