home castoo
chapitre electronique
Electronique carte Yunshan HW622

Mesure de la température
Projet ESP 1 en I2C

novembre 2019

Un petit circuit comme l'ESP8266 dans sa version 1 permet cependant d'exploiter la puissance de l'I2C

Pour pouvoir exploiter l'I2C avec ce circuit il faut (à ma connaissance) s'y prendre en deux fois :
- Un premier câblage pour programmer l'esp avec entre autres Gpio0 à l'état bas et Gpio2 à l'état haut. - Un deuxième câblage avec le signal I2C-SDA sur Gpio0 et I2C-SCL sur Gpio2. Pour le point un, la programmation, je triche un peu, j'utilise un petit programmateur (à 1,89 euros). Son utilisation est super simple on enfiche l'esp à programmer, on positionne le petit bouton sur "prog", on connecte à la liaison usb du micro et on envoie le télé versement.

Quelques photos du montage :


température esp1 8266 lm75




Test du montage sur une plaque d'essai.

température esp1 8266 lm75

Le schéma est aussi simple qu'avec un esp-12 mais ici la ligne SDA de l'I2C est relié à la ligne Gpio2 et le SCL à la broche Gpio2. Un adaptateur AMS1117 est utilisé pour convertir le 5v de l'interface USB en 3v3 nécessaire au montage. Ce circuit est au format CMS il peut donc être directement soudé sur les broches de la prise USB. Vous pouvez éventuellement ajouter un condensateur de chaque côté du circuit un de 100nF côté 5v et un 10 microF côté 3v3.

schema esp1 8266 lm75




Le schéma des connexions de l'esp8266-1.

matériel esp1 8266 lm75




Le petit programmateur bien pratique de l'ESP8266-1.
Le régulateur AMS1117 et la prise USB bien pratique pour alimenter un montage.

mosquitto esp1 8266 lm75




Dés que le montage est alimenté il envoie ses résultats vers le serveur mosquitto qui est déclaré dans le programme, il est alors facile de les exploiter avec node-red et éventuellement grafana.



recuperer lib ecran oled
Attention pour la librairie de l'écran Oled "SSD1306Wire.h", c'est celle-ci qu'il faut télécharger sur le site "github", elle est différente de celle qui est disponible dans l'environnement "Arduino".
On la reconnait au "w" de Wire qui doit dans notre cas être une majuscule. (Merci à Guy, pour cette précision qui peut éviter pas mal de galère !).
Merci également à tous les contributeurs(46) de ce petit package qui contient plusieurs librairies. Vous devez charger le zip complet comme montré sur l'image ci-contre.



Le code de base qui doit vous permettre de démarrer pour vos propres projets...
Le sensor de température n'est pas très précis (en réalité, il suit la température, mais dans mon cas avec 3 degrés de plus ! j'enlève donc dans le programme les 3 degrés, les courbes avec cette petite adaptation sont bonnes !). Le programme est le même que celui utilisé dans l'exemple du site à base de 8266-12 les sorties utilisées en Gpio sont simplement adaptées.


// Mesure de la temperature interieur avec un ESP8266-1
// Exploitation de l'I2C
// 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, 0, 2);
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 = "xxxxxxxxxxxxx"; // 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 = "xxxxxxxxxxxxx"; // 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 = "ESP8266TempESP1-"; // 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();
	resultat -= 3;  // Etalonnage (pour ma part il y avait 3 degrés de trop !)
	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_int2", 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 sensor Data-sheet du LM75.



Un circuit vraiment facile à tester, les composants utilisés sont vraiment très abordables. Utiliser l'I2C sur un petit processeur comme l'esp avec une interface wifi ouvre la porte à de nombreux projets...



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