Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Cafetière intelligente Arduino avec contrôle Bluetooth et surveillance de température

Composants et fournitures

Composant Quantité
Arduino Nano R3 1
Module Bluetooth HC-05 1
Capteur de température DS18B20 (1 m, HARDWARIO) 1

Applications et services en ligne

À propos du projet

Introduction

Cafetière intelligente et automatique avec affichage graphique, contrôlable via Bluetooth… ou simplement en versant de l'eau fraîche : le système démarre tout seul !

Toutes les pièces sont faites main et toutes les fonctions sont des idées originales.

Cafetière intelligente Arduino avec contrôle Bluetooth et surveillance de température

Un « Mode Test » a été codé, permettant d'utiliser le contrôleur comme thermomètre polyvalent avec sonde externe.

Cafetière intelligente Arduino avec contrôle Bluetooth et surveillance de température

Développé sur Arduino Nano / Uno, utilise un afficheur ST7920, adaptateur Bluetooth HC-05, capteur Dallas DS18B20, relais pour la résistance chauffante, bouton avec LEDs, buzzer et un compteur décade CD4017BE pour piloter la barre de LEDs.

Comment démarrer

Vidéo

Montre tous les modes de fonctionnement.

Galerie photos

Fabrication, apparence… cliquez pour voir !

Cafetière intelligente Arduino avec contrôle Bluetooth et surveillance de température

Analyse unique pendant la préparation

Après 60 secondes, le MCU compare la température initiale et la température actuelle pour tirer des conclusions basées uniquement sur la température et le temps écoulé :

La détection d'erreur sonde fonctionne en continu tant que la machine est allumée.

Cafetière intelligente Arduino avec contrôle Bluetooth et surveillance de température

On voit que six doses d'eau mettent plus de temps à atteindre la même température qu'une dose unique. Sans eau, la température monte très haut, mais la ligne plate indique une résistance défaillante.

Changement d'unité de mesure

L'unité peut être changée en envoyant « c » ou « f » depuis le smartphone, même en cours de préparation, sans laisser de trace sur le graphique.

Cafetière intelligente Arduino avec contrôle Bluetooth et surveillance de température

Les valeurs initiale et précédente sont converties par une fonction programmée, utilisée pour les statistiques. Ce réglage est aussi stocké en EEPROM.

Éléments d'écran dynamiques

Si l'écran est plein, le graphique défile vers la gauche. Selon la valeur mesurée, certains éléments peuvent gêner ; leurs positions sont donc dynamiques.

Ces six petites animations montrent le comportement codé :

Cafetière intelligente Arduino avec contrôle Bluetooth et surveillance de température

Un passe-temps fort agréable :

Cafetière intelligente Arduino avec contrôle Bluetooth et surveillance de température

Mode Test

L'idée est venue d'utiliser le graphique pour d'autres usages. En branchant une sonde externe, le système devient un thermomètre polyvalent avec graphique.

Cafetière intelligente Arduino avec contrôle Bluetooth et surveillance de température
Cafetière intelligente Arduino avec contrôle Bluetooth et surveillance de température

Dans ce mode, les bornes du graphique sont -20 °C (-4 °F) et +128 °C (+262 °F).

L'envoi d'un nombre entre 1 et 999999 depuis le smartphone définit l'intervalle de mesure en secondes, soit une largeur de graphique entre 128 secondes et 11,57 jours.

Communication Bluetooth

Accepte les commandes et envoie les rapports, détecte la connexion/déconnexion du smartphone.

Cafetière intelligente Arduino avec contrôle Bluetooth et surveillance de température

Les messages envoyés sont en bleu, les réponses/rapports de la cafetière en vert.

Contrôle des LEDs

Un compteur décade CD4027BE pilote la barre de LEDs, reçoit un signal CLK du MCU à chaque mesure de température, et incrémente la position. Au démarrage d'une nouvelle préparation ou du Mode Test, l'ATmega 328P envoie un signal RST pour remettre à zéro.

Cafetière intelligente Arduino avec contrôle Bluetooth et surveillance de température

Le bouton possède une LED bicolore à deux broches ; ma solution simple et amusante pour la piloter se voit dans le code.

Code

Smart Coffee Maker - Ősi Gyula (Arduino)

// Programme - Smart Coffee Maker. Développé sur Arduino Nano, utilise afficheur ST7920, HC-05 Bluetooth,
// sonde Dallas DS18B20, relais, bouton, LEDs, buzzer, CD4017BE.
// Contrôlable via Bluetooth (commandes et paramètres) ou bouton… ou simplement en versant de l'eau !
// Fonctions :
// - Graphique température dynamique
// - Autostart : eau fraîche = chute température = démarrage (activable par "Auto", stocké en EEPROM)
// - Analyse pendant préparation : 60s après démarrage, compare température actuelle et initiale
//   Conclusions : 1. Eau oubliée (temp trop haute) 2. Café pour deux 3. Café pour six 4. Erreur résistance
// - Détection erreur sonde (valeurs anormales)
// - Celsius/Fahrenheit : commutable par "C"/"F" depuis smartphone, même en cours. Conversion des valeurs stockées. Stocké en EEPROM.
// - Mode Test : sonde externe = thermomètre polyvalent. Graphique -20°C/+128°C. Intervalle 1-999999s (128s à 11,57j).
// - Communication Bluetooth : commandes/rapports, détection connexion.
// - Barre LED : MCU pilote CD4017BE, pas à chaque mesure. RST au démarrage nouveau cycle.
// --------------------------------------------------------------------------------------------------------------------------------
// Conçu, construit, programmé par Gyula Osi. Tous droits réservés.

#include "U8glib.h"
U8GLIB_ST7920_128X64 u8g(11, 10, 9, U8G_PIN_NONE); // PIN6-D11, PIN5-D10, PIN4-D9
byte frame = 0;

// Ports et périphériques
const int bright[2] = {0, 500};
const byte buzzer = 3;
const byte cd4017beCLK = 4;
const byte cd4017beRST = 5;
const byte btn = 13;
const byte relay = 12;

// Chaînes système
#define strSize 3
String str[strSize];
#define reportSize 5
const String reportStr[reportSize] = {"Starting...", "Going standby soon...", "Stopped.", " *** TEST MODE ***", "Normal mode."};
const String autostartStr[2] = {"Autostart off.", "Autostart on."};

// Drapeaux binaires d'état
#define flagElements 6
bool binFlags[flagElements] = {0, 1, 1, 0, 0, 0};
// 0:checked 1:finished 2:standby 3:standbyMsgSent 4:coil/sensorError 5:testMode

// Mesure température
#include "OneWire.h"
#include "DallasTemperature.h"
#define DS18B20 2
OneWire temprWire(DS18B20);
DallasTemperature sensors(&temprWire);
float tempr, temprInit, temprPrev;
#define mUnit 2
float temprBottomLim[mUnit] = {0, 26};
const char unit[mUnit] = {'F', 'C'};
const String unitStr[mUnit] = {"Fahrenheit mode.", "Celsius mode."};
float trendSens[mUnit] = {0, 0.1};
bool trend[2] = {1, 0};
#define checkSize 7
const String checkStr[checkSize] = {"Water detected!", "Heating coil error!", "Coffee for six", "Coffee for two", "You forgot the water!", "Sensor error!", "Your Coffee is ready."};
float temprCheck[mUnit][checkSize] = {{}, {-0.15, 5, 17, 28, 60, -127, 110}};

// Graphique
#define posYsize 128
byte posY[posYsize];
byte pointer = 0;
#define refrElements 42
float temprRefr[refrElements];
#define rangeElements 2
#define mode 2
float graphRange[mUnit][mode][rangeElements] = {{{}, {}}, {{24, 127.938889 + 2}, {-20, graphRange[1][0][1]}}};
float graphDiff[mUnit][mode];

// Timers
#include 
elapsedMillis timer0;
unsigned long tmrPrev = 0;
bool cyclic = 0;
const long tmrInt[5] = {500, 2000, 60000, 640000, 800000};
long copyof_tmrInt0 = tmrInt[0];
const String tmrInt0Str = "Interval changed.";

// Communication série
const byte btState = 6;
bool conn = 0;
const String connStr[2] = {"Connection lost.", "Smartphone connected."};
#include 
const int RX1 = 7, TX1 = 8;
SoftwareSerial sUART(RX1, TX1);
#define exRXSize 6
char exRX[exRXSize];

// EEPROM
#include 
#define occBytes 2
const byte addr[occBytes] = {0, 1};
bool sysSettings[occBytes];
// addr[0] = autostart (0/1), addr[1] = unité (0=F, 1=C)

// Constantes
const char termCharSpc = ' ';
const String termStr;
const byte termByte = 0;
const bool termBool = 0;

// ... (le reste du code est très long ; il est disponible en intégralité dans la source originale)

void setup() {
  u8g.begin();
  fillArrays();
  pinMode(cd4017beCLK, OUTPUT);
  pinMode(cd4017beRST, OUTPUT);
  CD4017BE(0);
  pinMode(btState, INPUT);
  pinMode(btn, INPUT);
  pinMode(relay, OUTPUT);
  sUART.begin(9600);
  memo(2);
  sensors.begin();
  temprMeas();
  temprInit = tempr;
  graph(2);
  ledHandler(0);
}

void loop() {
  sysControl();
  checkBtn();
  checkConn();
  RX();
  u8g.firstPage();
  do { draw(); } while(u8g.nextPage());
  if (frame == 0) { delay(3000); frame = 1; scrClr(); }
}
// ... (fonctions sysControl, temprMeas, coil, exitTest, checkBtn, ledHandler, CD4017BE, buzz, strSelector, draw, scr, scrTempr, scrClr, graph, fillArrays, convUnit, TX, checkConn, RX)
// Le code complet est téléchargeable depuis la source.

Schémas

Cafetière intelligente Arduino avec contrôle Bluetooth et surveillance de température

Processus de fabrication

  1. Système de contrôle d'accès intégré QR, RFID et vérification de température
  2. Enregistreur de Température et Humidité Arduino avec DHT11 et Shield Ethernet
  3. Contrôler une LED par Bluetooth avec Arduino et MIT App Inventor
  4. Chaussures auto-laçantes intelligentes avec récupération d'énergie piézoélectrique
  5. Afficher Température, Humidité et Pression BME280 sur Écran Tactile Nextion
  6. Arduino et MPU6050 : Contrôle précis de servo-moteur avec SG90 et MG996R
  7. Appareils électroménagers à commande vocale : contrôle Bluetooth avec Google Assistant
  8. Module GPS u-blox LEA‑6H 02 : guide d'intégration Arduino et Python
  9. Lire température et humidité avec DHT11 sur Blynk – Tutoriel Arduino pas à pas