MiWiC > Programmation > Cafetière connectée : utiliser un capteur de température VMA324

Cafetière connectée : utiliser un capteur de température VMA324

 

Débutant

Tuto créé par e-make, le 4 février 2019

 

Depuis plusieurs semaines, je travaille sur un projet de cafetière orientée IOT (internet of things).
Le principe de fonctionnement est plutôt simple : La cafetière est composée d’un corps de chauffe et d’une pompe pour le circuit d’eau. Un capteur de température DS18b20 avec son module VMA324 assureront l’asservissement pour que le système puisse pleinement maîtriser les actionneurs (pompe, résistance de chauffe…). L’un de mes objectifs était que la cafetière ne nécessite aucun nettoyage après utilisation. Comme il est difficile de mettre cela en place avec du vrai café, je vais être contraint d’utiliser du café lyophilisé. Ce dernier sera versé de façon très précise dans la tasse à l’aide d’un petit moteur pas à pas (28BYJ-48).

Outils nécessaires


 

cafetière connectée

Matériel nécessaire

1 Arduino (Uno, Mini Pro ou autre)
1 VMA324
1 Afficheur LCD 1602
 

 

Suivez le guide !

 

cafetière connectée
1

 

Voici une photo de la cafetière en l'état actuel. J'ai fabriqué le boitier en mdf de 10mm. Il a été préparé et peint par la suite.

2

 

Concernant le côté connecté de la machine, la cafetière fonctionnera avec un réveil indépendant permettant de régler l’heure à laquelle le café sera prêt. La communication sera assurée par un des modules nrf24l01. L’horloge interne est un module DS18B20 et les variables seront stockées sur une carte SD.

Cafetière Connectée
3

 

Ce projet étant long à réaliser, il n’est pas encore terminé.
J’en suis rendu à l’étape de l’intégration.
Dans ce tutoriel je vais donc vous montrer comment utiliser le capteur de température DS18b20 avec le module Velleman VMA324.
Tout d’abord, voici comment câbler le montage sur une carte Arduino Uno:
V → 5 V
G → GND
S → D2
Je vous conseille vivement de faire l’acquisition des cartes arduino uno fabriquées par Velleman car elles ont un très bon rapport qualité prix et avec ces dernières, vous êtes certains de ne pas avoir de problèmes de drivers (ce qui est souvent le cas avec les cartes vendues sur les sites chinois).

Cafetière connectée
4

 

Voici un code simple pour tester le fonctionnement :et afficher la température sur le moniteur série :
 

#include // Inclusion des librairies nécessaires
#include
#define ONE_WIRE_BUS 2 // Le module est branché sur l'entrée numérique 2
OneWire oneWire(ONE_WIRE_BUS); // La technologie One Wire est une technologie comparable à l'I2C. Il s'agit d'un bus de communication permettant l'utilisation de plusieurs capteurs à communication série sur une seule et même broche numérique.
DallasTemperature sensors(&oneWire);

float x = 0; // Création d'une variable pour stocker des nombres à virgules
void setup(void)
{
Serial.begin(9600); // Démarrage du port serie pour utiliser le moniteur
sensors.begin();
}
void loop(void)
{
sensors.requestTemperatures(); // Commande pour demander la température
x = sensors.getTempCByIndex(0); // Je stocke la valeur dans la variable x car cela est plus simple pour travailler avec après
Serial.println(x); // Affichage de la valeur sur le moniteur serie
delay(500); // Delais de lecture
}
5

 

Je tiens à vous faire part d’une info intéressante concernant les instructions d’utilisation de moniteur série. En effet, pour afficher quelque chose sur le moniteur série, il existe deux instructions : Serial.println() et Serial.print().
L’instruction Serial.print() permet d’afficher les éléments voulus à la suite sur une seule ligne tandis que Serial.println() permet d’afficher les éléments en sautant une ligne à chaque fois.

6

 

Pour pouvoir utiliser directement la sonde comme thermomètre, on peut maintenant ajouter un afficheur LCD.
Pour savoir comment le câbler, vous pouvez vous référer à mon tutoriel dans lequel je vous ai montré comment fabriquer une trottinette connectée
Sur la photo, 22,31°C ça peut sembler être beaucoup mais il s'agit bien de la température réelle de la pièce ou se trouve la sonde (mon PC chauffe beaucoup ;) ).

7

 

Voici donc le code détaillé que j'ai utilisé : 
 

// Code libre d'utilisation, rédigé pour MakeItWithCOnrad.fr

#include // Inclusion des librairies nécessaires (A télécharger si ce n'est pas déjà fait)
#include
#include
#define ONE_WIRE_BUS 2 // Le module est branché sur l'entrée numérique 2

OneWire oneWire(ONE_WIRE_BUS); // La technologie One Wire est une technologie comparable à l'I2C. Il s'agit d'un bus de communication permettant l'utilisation de plusieurs capteurs à communication série sur une seule et même broche numérique.
DallasTemperature sensors(&oneWire);

LiquidCrystal lcd(13, 12, 11, 10, 9, 8);

float x = 0; // Création d'une variable pour stocker des nombres à virgules

void setup(void)
{
Serial.begin(9600); // Démarrage du port serie pour utiliser le moniteur
sensors.begin();
lcd.begin(16, 2); // Démarrage écran
}
void loop(void)
{
sensors.requestTemperatures(); // Commande pour demander la température
x = sensors.getTempCByIndex(0); // Je stocke la valeur dans la variable x car cela est plus simple pour travailler avec après
Serial.println(x); // Affichage de la valeur sur le moniteur serie
delay(1000); // Délais de lecture
lcd.setCursor(2,0); // On place le cursseur au digit 2 sur la ligne 1 (ici nommée 0)
lcd.print("TEMPERATURE:"); // Affichage du texte souhaité
lcd.setCursor(2,1);
lcd.print(x); // Affichage de la température stockée dans la variable x
lcd.setCursor(8,1);
lcd.print("DEGRES");
}
8

 

Et voici un capteur de plus que je sais utiliser !
Il ne reste plus qu'a l’intégrer dans un réel projet ou alors à simplement le placer dans un joli boitier imprimé en 3D pour en faire un thermomètre.
En bonus, voici une photo supplémentaires du projet que je suis entrain de réaliser :
On peut apercevoir une petite pompe péristaltique homemade !

 

Lancez-vous !
Une question, une hésitation ? Rejoignez notre communauté Facebook pour échanger sur le sujet !