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