home castoo
chapitre electronique
Electronique carte Yunshan HW622

Mesure de la temperature
Projet "minute"
ESP LM75 I2C MQTT

novembre 2019

Un tout petit projet pour découvrir la puissance des circuits disponibles sur le marché !

But initial du montage :

Un circuit "minute" ! En effet il ne faut que quelques minutes pour réaliser un tel circuit.
Merci aux ingénieurs qui nous proposent des circuits "LEGO" comme l'ESP, le LCD OLED ou le "Sensor de température LM75".
Merci aux développeurs des librairies Arduino / ESP qui nous facilitent grandement la tâche pour exploiter ces circuits !
Merci aux inventeurs de I2C !
Merci aux développeurs de la suite MQTT, MOSQUITTO, INFLUXDB, GRAFANA !
Alors avec tous les cadeaux tombés du ciel vous prenez :
- Un circuit WEMOS D1 R1 ou D1 mini (un ESP8266 monté sur un circuit imprimé avec l'alim 3v3 / 5v, les résistances de polarisation de l'esp, une interface mini USB).
- Un circuit LCD OLED en I2C.
- Un sensor de température à base de LM75 (j'ai utilisé ce circuit plutôt qu'un DTxx car l'info humidité ne m'intéressait pas).
Vous sortez votre fer à souder car il y a 4 fils à souder sur une plaquette d'essai (Alim + et - et deux fils I2C (SCL et SDA)). Vous avez terminé !
Vous téléchargez à l'aide de l'interface Arduino un petit programme comme celui que je vous propose plus bas (Parametres : Type de carte "WeMos D1R1", Port "COM6" et vitesse "921600).
Il ne vous reste plus qu'à récupérer les données sous NODE-RED et à afficher de beaux graphiques avec GRAFANA.

Quelques photos du montage :


température esp 8266 lm75




Affichage de la température comme sur un vulgère thermomètre, mais le plus, c'est que toutes les 3 minutes (aproximativement) la température est envoyée vers un serveur mosquitto pour mémorisation et exploitation à votre convenance.

température esp 8266 lm75


Les trois circuits utilisés sont très faciles à trouver dans le commerce. Chercher dans moteur de recherche :
Esp-8266 D1 mini
sensor lm75
oled ssd1306
Il vous faudra sortir le portefeuille ! Au moins un billet de cinq euros !!!!

schema température esp 8266 lm75


Le schéma est on ne peut plus simple !!!!

température esp 8266 lm75


Comme on peut le voir il n'y a vraiment que peu de connexions à réaliser. Les fils alim et I2C sont simplement à souder sur les trois circuits.
Pour I2C sur l'ESP on utilise Gpio4 et Gpio5 ce qui correspond à D2 et D1 sur la carte "D1 mini".
Donc attention, si vous utilisez un esp sans le suport "D1 mini", il faut utiliser les sorties 5 et 4 et non pas 1 et 2 !

Côté NODE-RED maintenant vous connaissez ! On récupère les données reçues dans MOSQUITTO puis on utilise une fonction pour ne garder que la valeur numérique, ensuite on enregistre le résultat dans InfluxDB et en parallèle on va créer un petit graphique en directe dans node-red. Pour un graphique plus évolué on récupèrera les données de InfluxDB avec le logiciel Grafana...

température node red

Sur NODE-RED pour afficher les graphiques créés, il suffit d'aller sur l'adresse http://adresseIPnodered:1880/ui voici un exemple de ce que l'on peut facilement obtenir.

Graph node red



Le code de base qui doit vous permettre de démarrer pour vos propres projets...


// Mesure de la temperature interieur
// novembre 2019
// Castoo

#include "ESP8266WiFi.h"
#include "PubSubClient.h"
#include "Wire.h"
#include "SSD1306Wire.h"
#include "Temperature_LM75_Derived.h"
// l'adresse I2C (ici 0x3C) peut être différente en fonction du module utilisé
SSD1306Wire  display(0x3c, 4, 5);
Generic_LM75 temperature; // Declaration variable de lecture de la température

const char* box = "raspi-mqtt"; // Nom du ssid du serveur raspberry Mosquitto
const char* m_passe = "xxxxxxxxxxxxxx"; // Passe WiFi
const char* mqtt_server = "10.3.141.1"; // Adr de serveur mosquitto
const char* mqtt_user = "admin"; // login sur serveur mosquitto
const char* mqtt_password = "xxxxxxxxxxx"; // Passe sur serveur mosquitto
char msg_envoye[50];
char ch_result[10];

WiFiClient espClient; // déclaration Objet wifi
PubSubClient client(espClient); // déclaration objet mosquitto

// ------------------- Cnx au serveur Raspberry Mosquitto ------------------
void setup_wifi() {
	delay(10);
	WiFi.begin(box, m_passe);
	while (WiFi.status() != WL_CONNECTED) { 
		delay(500); 
	}
	randomSeed(micros());
}

// ----------------------------- Cnx à mosquitto ------------------------
void reconnect() {
  while (!client.connected()) {
    String clientId = "ESP8266CuveEau-";  // Creatation d'un ID aléatoire (identification ESP sur mosquitto)
    clientId += String(random(0xffff), HEX);
    if (!client.connect(clientId.c_str(),  mqtt_user, mqtt_password)) {	delay(5000); }
  }
}

void setup(){
	// initialisation de l'ecran (voir la documentation de la librairie)
	display.init();
	display.flipScreenVertically();
	display.setFont(ArialMT_Plain_24); // ArialMT_Plain_10
	display.setTextAlignment(TEXT_ALIGN_CENTER);
	display.clear();
	delay(500);
	setup_wifi(); // cnx wifi
	client.setServer(mqtt_server, 1883); // cnx mosquitto
	delay(2000);
	Wire.begin();
}

void loop(){
	float resultat = 0;
	resultat = temperature.readTemperatureC();
	snprintf (ch_result, 50, "%.2f °", resultat);
	display.clear();
	display.drawString(64, 22, ch_result);
	display.display();
	if (!client.connected()) { reconnect(); }
	client.loop();
	snprintf (msg_envoye, 50, "T %.2f °", resultat);
	client.publish("temp_interieur", msg_envoye);
	delay(100000);	// environ 3 minutes
    display.clear();
	display.drawString(64, 22, "Données émises");
	display.drawString(100, 32, msg_envoye);
	display.display();
}
	



Doc carte Wemos sur l'excellent site "Projets DIY" : Version D1 mini pro.




Doc sensor

Data-sheet du LM75.

Un circuit vraiment facile à tester, on trouve plein de circuits de mesure de température à base d'esp et de DTxxx. Je trouve qu'avec I2C, il est super facile d'avoir une lecture directe de la température à l'enfroit de la mesure et c'est bien pratique sans difficulté supplèmentaire...



accueil electronique

Bricolage Robotique Informatique Peinture Voyage
Téléc. portail Le robot "mécano" Astuces informatique Henri Bertrou Auvergne
Bat. Iphone 6S Le robot "solaire" Réseau couche app. Jean-Michel Castille Floride
Robot piscine Servo et IR" Réseau Les couches New York
Xiaomi M365 Le robot "thymio" Réseaux Outils L'Ouest américain
Mac Mini Le robot "Rovio" Unités grandeur inf. L'Ile Maurice
Putty SSH Windows L'Italie / Venise
Bases Raspberry Tunisie
Termius IPhone/IPad Grece
Le vieux ZX 81
...
Navigation La Rochelle CNC / Imp3D Electronique Programmation
Rencontre dauphins Les Minimes Construction CNC Alim. TPL 5110 Doc. programme
Analyse NMEA 0183 Le Vieux port CNC du commerce Carte ESP8266 Indent programme
graph. NMEA 0183 L'Ile de Ré Martyr CNC ESP8266 1 relai Prog. objet
Analyse trames AIS A visiter Réa. imp. 3D ESP8266 Alarme Prog. procédurale
Analyse AIS TCP-IP Cura impression 3D ESP8266 MQTT
Sortie en ketch Plateau CR10 ESP8266 Temp.
Echange GPS C80 Anémomètre.
HP Sun-Odyssey CNC / 3D en vrac MCP9808 Librairie
LCD yanmar Saisie Oled
Testeur nmea esp1 i2c