Télécommander sa cafetière

Dans les précédents tutos, nous avons vu comment modifier la cafetière et comment la piloter avec un Arduino (et 2 boutons). Mais ce serait dommage de s’arrêter là. Parce que l’inconvénient, c’est qu’il faut quand même se lever pour appuyer sur le bouton. Je vous propose donc d’améliorer ce système et de contrôler la cafetière à distance en ajoutant simplement une vieille télécommande et un capteur infrarouge.

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,
  • 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).
  • Une télécommande (infrarouge) de récupération
  • Un capteur infrarouge de type VS1838B (moins de 2 euros )

La bibliothèque IRremote

Pour que l’Arduino puisse recevoir les signaux infrarouges de la télécommande, il faut ajouter la bibliothèque IRremote. Lancez l’IDE Arduino et dans les menus, sélectionnez Croquis – Inclure une bibliothèque – Gérer les bibliothèques. Ensuite, recherchez « IRremote » et cliquez sur Installer.

Branchement du capteur infrarouge

Attention, le schéma correspond à un capteur infrarouge de type VS1838B, si vous utilisez un autre modèle, l’ordre des pins peut être différent (il faudra donc adapter le schéma).

Décoder la télécommande

Chaque touche de la télécommande envoie un message différent. Il s’agit d’un signal lumineux (invisible à l’oeil nu) que le capteur infrarouge est capable de détecter. C’est un peu comme si vous envoyiez un message en morse avec une lampe de poche (mais c’est beaucoup plus rapide).

Mais le langage utilisé peut être différent d’une télécommande à l’autre. Cela permet par exemple de ne pas éteindre la télévision en essayant de fermer les volet. Pour utiliser votre télécommande, il faut donc connaitre le protocole de communication (le langage) qu’elle utilise, ainsi le signal (le message) des touches qui nous intéressent.

Pour cela, lancez l’IDE Arduino et ouvrez le fichier IRrecvDump que vous trouverez dans Fichier -Exemples – IRremote – IRrecvDump. Ensuite, téléversez le code dans l’Arduino et ouvrez le moniteur série.

Pointez la télécommande en direction du capteur, appuyez sur les boutons (que vous souhaitez utiliser) et notez le code qui s’affiche. Logiquement, j’ai choisi la touche « 1 » pour un café simple et la touche « 2 » pour un café double, mais évidement, vous pouvez utiliser n’importe quelles touches.

J’ai donc appuyé 4 fois de suite sur la touche « 1« , mais le résultat obtenu est un peu surprenant. Le signal envoyé par la télécommande (entouré en rouge) est soit « 401« , soit « 10401 » (les autres informations qui s’affichent dans le moniteur série ne seront utilisées dans ce tuto).

C’est la même chose avec la touche « 2« , le signal alterne régulièrement entre « 402 » et « 10402« .

Mais d’autres télécommandes envoient toujours le même signal (avec la même touche). Pour le savoir, il suffit simplement de tester…

Le schéma de branchement

Vous pouvez maintenant reproduire ce schéma, mais n’oubliez pas de l’adapter si vous utilisez un autre type de capteur infrarouge que le VS1838B.

Télécommander la cafetière

Le code ci dessous correspond à ma télécommande (« 401 » ou « 10401″ pour la touche « 1 » et « 402 » ou « 10402 » pour la touche « 2« ). Pour vous, les résultats seront certainement différents, il faudra donc adapter le code ci dessous (et remplacer les valeurs de ma télécommande par celles de la vôtre).

Mais attention, le signal de la télécommande est en hexadécimal, alors n’oubliez surtout pas d’ajouter le préfixe « 0x » pour l’indiquer à l’Arduino.

Ensuite vous pourrez téléverser le code modifié.

// Cafetiere_et_telecommande_infrarouge
//Appel de la bibliothèque
#include <IRremote.h>
// Parametrage du récepteur infrarouge
int pin_recept = 11;
IRrecv ir_recept(pin_recept); 
decode_results ir_decode;
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;
// Moment de la derniere utilisation
unsigned long derniereUtilisation;
void setup() {
  // Initialisation du récepteur IR et des sorties
  ir_recept.enableIRIn();
  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() {
  // Si le capteur capte un signal
  if (ir_recept.decode(&ir_decode)){
    //Si le signal est égal à
    switch (ir_decode.value) {
      // 401 ou 10401 (bouton 1)
      case 0x401:
      case 0x10401:
      appuyer(SIMPLE_TASSE);
      break;
      // 402 ou 10402 (bouton 2)
      case 0x402:
      case 0x10402:
      appuyer(DOUBLE_TASSE);
      break;    
    } 
    ir_recept.resume(); 
  }
  // 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);
  }
}

Boire un café

Il faut quand même préparer d’avance la cafetière (en mettant la tasse, l’eau et les dosettes).

Mais maintenant, quand vous voulez un café, il suffit de pointer la télécommande et d’appuyer sur le bouton (« 1 » ou « 2« ).

Évidement, il faut quand même se lever pour aller chercher le café. Malheureusement, je n’ai pas encore trouvé de solution à ce problème…

Aller plus loin

Si vous êtes satisfait de votre nouvelle cafetière, vous pouvez intégrer l’Arduino dans même boitier que le module relais (en faisant seulement dépasser le capteur infrarouge et la LED).

Dans ce cas, choisissez plutôt l’Arduino Nano qui possède les mêmes caractéristiques que l’Arduino Uno, en beaucoup plus compact. Vous pourrez certainement trouver (ou de fabriquer) un boitier un peu plus joli que ma boite de dérivation…

Il est également possible de remplacer la télécommande par un autre Arduino. Ce qui ouvre de nombreuses possibilités de communication entre les 2 appareils (liaisons filaires, infrarouge Bluetooth, radio, Ethernet, Wifi…). Si vous voulez en savoir plus, sachez que le chapitre 8, de mon livre est consacré à ce sujet.

Publicités

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