Station météo ESP8266 IOT Blynk

Bonjour,

J'essaye de construire une station météo connectée suivant le projet :
(ESP8266 & BME280 IoT Weather Station | IoT Projects Ideas)
L'IDE compile correctement mais je n'ai pas de communication entre le moniteur série et l'ESP Node MCU (donc pas de fonctionnement). Le code est le suivant :

 #include <Wire.h>
 #include <Adafruit_Sensor.h>
 #include <Adafruit_BME280.h>
 #include <Blynk.h>
 #include <ESP8266WiFi.h>
 #include <BlynkSimpleEsp8266.h>
 char auth[] = "*****";       // You should get Auth Token in the Blynk App.
 char ssid[] = "The IoT Projects";                       // Your WiFi credentials.
 char pass[] = "XXXXXX-XXXX-XXXX";
 float temperature;
 float pressure;
 float humidity;
 float altitude;
 define SEALEVELPRESSURE_HPA (1013.25)
 Adafruit_BME280 bme; // For I2C interface
 void setup() {
   Serial.begin(9600);
   Blynk.begin(auth, ssid, pass);

   Serial.println(F("BME280 Sensor event test"));
   if (!bme.begin(0x76))
   {
     Serial.println("Could not find a valid BME280 sensor, check wiring!");
     while (1);
   }

 }
 void loop() {
   Blynk.run(); // Initiates Blynk

     temperature = bme.readTemperature();
     pressure = bme.readPressure() / 100.0F;
     humidity = bme.readHumidity();
     altitude = bme.readAltitude(SEALEVELPRESSURE_HPA);
     double dewPoint = dewPointFast(temperature, humidity);

 Serial.print("Temperature = ");
   Serial.print(temperature);
   Serial.println("*C");
 Serial.print("Pressure = ");
   Serial.print(pressure);
   Serial.println("hPa");
 Serial.print("Humidity = ");
   Serial.print(humidity);
   Serial.println("%");
 Serial.print("Approx. Altitude = ");
   Serial.print(altitude);
   Serial.println("m");
 Serial.print("Dew point = ");
   Serial.print(dewPoint);
   Serial.println(" *C");
 Serial.println();
     Blynk.virtualWrite(V1, temperature); // For Temperature
     Blynk.virtualWrite(V2, pressure); // For Pressure
     Blynk.virtualWrite(V3, humidity); // For Humidity
     Blynk.virtualWrite(V4, altitude); //For Approx. Altitude
     Blynk.virtualWrite(V5, dewPoint); // For DewPoint
   delay(1000);
 }
 double dewPointFast(double celsius, double humidity)
 {
   double a = 17.271;
   double b = 237.7;
   double temp = (a * celsius) / (b + celsius) + log(humidity * 0.01);
   double Td = (b * temp) / (a - temp);
   return Td;
 }

Je ne comprends pas où est le problème. Serez vous l'âme charitable en mesure de m'aider ?

Ed

Tu veux dire que les Serial.print n'affichent rien ?

Quel module ESP8266 utilises-tu ?
Comment est connecté ton capteur ?
Si tu utilises les GPIO du port série, ça n'affichera rien.

Bjr lesept et merci de ton attention.

oui, les serial.print n'affichent rien.
l'ESP8266 utilisé est le NodeMCU (basé sur ESP-12)
le capteur est un BME280 (puce Bosch I2C) connecté de façon classique : SCL vers D1 et SCA vers D2). J'ai essayé le capteur connecté de cette façon avec un sketch plus classique et le capteur BME280 fonctionne).

Ed

Bonjour @edouard_bracame

Le débit du moniteur série est-il bien réglé sur le très bas débit choisi dans le code ((9600 bauds)?

Si tu déconnectes le capteur, est-ce que le terminal affiche des choses ?
A minima "BME280 Sensor event test"

EDIT : je me suis permis de cacher ton ID Blynk.

Bjr al1fch,

Merci pour ta réponse. Oui j'ai bien réglé le moniteur série sur 9600 bauds. Sans succès. J'ai aussi modifié et recompilé sur 115200 sans plus de succès. ci-dessous l'impression écran.

Non, capteur débranché => pas d'affichage. D'ailleurs je ne comprends pas la présence du "F" dans l'instruction " Serial.println(F("BME280 Sensor event test"));"
Merci pour le masquage des infos Blynk mais il s'agit des infos du site web !

La macro F sert à économiser la RAM : (source)

The F() macro

When an instruction like :

Serial.print("Write something on  the Serial Monitor");

is used, the string to be printed is normally saved in RAM. If your sketch prints a lot of stuff on the Serial Monitor, you can easily fill the RAM. If you have free FLASH memory space, you can easily indicate that the string must be saved in FLASH using the syntax:

Serial.print(F("Write something on the Serial Monitor that is stored in FLASH"));

Peux-tu fournir une référence de ton module ESP8266, ou une image, ou un pinout (schéma des pins) : je pense que tu n'as pas connecté le capteur comme il faut. Les D1 et D2 sur le module du site où tu as trouvé le montage sont peut-être différents de ceux de ta carte.

Bonsoir,

Ce programme date de février 2021. Il ne devrait plus fonctionner tel quel car depuis début Janvier 2022, Blynk ne fonctionne plus de cette manière.

Il faut ouvrir un compte sur : https://blynk.io/ et il y a un abonnement mensuel. En tant qu'ancien utilisateur de Blynk, j'avais un abonnement à prix réduit mais je n'ai pas donné suite.

J'avais des applis qui fonctionnaient avec l'ancien Blynk. Elles ne fonctionnent plus désormais.

Donc, le programme n'arrivant pas à se connecter à Blynk, ça tourne sans fin.

Rajoute deux mouchards avant et après Blynk.begin (auth, ssid, pass); et tu verra ce message :
jusqu'ici c'est bon
[68] Connecting to Livebox

Je te mets ci dessous le programme modifié que j'ai testé.

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#define BLYNK_PRINT Serial
#include <Blynk.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
char auth[] = "xxxxxxxxxxxxxxxx";
char ssid[] = "Livebox";
char pass[] = "xxxxxxxl";
float temperature;
float pressure;
float humidity;
float altitude;
#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BME280 bme; // For I2C interface
void setup() {
  Serial.begin(115200);
  
  Serial.println();
  Serial.println("jusqu'ici c'est bon");
  
  Blynk.begin(auth, ssid, pass);
  
  Serial.println("ici c'est pas bon");
  
  Serial.println(F("BME280 Sensor event test"));
  if (!bme.begin(0x76))
  {
    Serial.println("Could not find a valid BME280 sensor, check wiring!");
    while (1);
  }

}
void loop() {
  Blynk.run(); // Initiates Blynk

  temperature = bme.readTemperature();
  pressure = bme.readPressure() / 100.0F;
  humidity = bme.readHumidity();
  altitude = bme.readAltitude(SEALEVELPRESSURE_HPA);
  double dewPoint = dewPointFast(temperature, humidity);

  Serial.print("Temperature = ");
  Serial.print(temperature);
  Serial.println("*C");
  Serial.print("Pressure = ");
  Serial.print(pressure);
  Serial.println("hPa");
  Serial.print("Humidity = ");
  Serial.print(humidity);
  Serial.println("%");
  Serial.print("Approx. Altitude = ");
  Serial.print(altitude);
  Serial.println("m");
  Serial.print("Dew point = ");
  Serial.print(dewPoint);
  Serial.println(" *C");
  Serial.println();
  Blynk.virtualWrite(V1, temperature); // For Temperature
  Blynk.virtualWrite(V2, pressure); // For Pressure
  Blynk.virtualWrite(V3, humidity); // For Humidity
  Blynk.virtualWrite(V4, altitude); //For Approx. Altitude
  Blynk.virtualWrite(V5, dewPoint); // For DewPoint
  delay(1000);
}
double dewPointFast(double celsius, double humidity)
{
  double a = 17.271;
  double b = 237.7;
  double temp = (a * celsius) / (b + celsius) + log(humidity * 0.01);
  double Td = (b * temp) / (a - temp);
  return Td;
}

Change juste tes identifiants wifi et Blynk

Cordialement.

1 Like

OK pour l'utilisation de la mémoire flash au lieu de la RAM. Ci après la photo du module NodeMCU acheté sur Aliexpress. Pour moi çà correspond au PINOUT standard (il manque juste la LED habituelle sur le circuit imprimé !)


Comme indiqué, j'ai dejà utilisé avec un sketch plus classique et le BME280 connecté de cette façon sans problème ...

Merci fitness04 pour ta réponse. J'ai ouvert un compte gratuit sur Blynk : 2 projets seulement sont possible dans la version gratuite et j'ai bien vu que la méthode de connexion avait changé (la doc en ligne n'est d'ailleurs pas à jour). Je galère à trouver le Token qui est apparemment la méthode de connexion la plus simple (je ne suis pas programmeur, loin de là !). J'ai essayé ton sketch modifié est apparemment çà se connecte sur le site blynk (mais le token n'est pas OK). Donc çà avance un peu et je n'ai pas de message d'erreur "could not find BME280 sensor" ce qui semble indiquer que le BME est trouvé à la bonne adresse. En comparant ton sketch avec le miens apparemment seule la bibliothèque "wire.h" diffère (conflit ?). Je continue mes expériences :grinning:

Capture blynk
Rectificatif : il manquait aussi " ```
#define BLYNK_PRINT Serial". Après modification et compilation du sketh initial, le wifi est OK et on a accès au serveur Blynk.

Quelques nouvelles après quelques jours d'inactivité sur le sujet pour cause d'obligations domestiques ...
Le sketch ci après fonctionne et pourra vous donner quelques indications au cas ou vous seriez intéressé. Pour info, le Token est fourni par Blynk lors de l'inscription (à conserver précieusement donc). Le site en ligne et l'appli ont des bugs plus ou moins importants, la doc n'est pas à jour mais l'essentiel est dans la découverte ... Je vais continuer à fignoler et développer l'interface car je voudrais ajouter un anémomètre et utiliser la mise en veille pour installer l'électronique à l'extérieur.
Merci à tous les intervenants de ce site pour leur aide précieuse, je reviendrai sans doute pour la suite du développement ...

le code est actuellement (testé avec succès)

fichier .ino pour station meteo ESP8266 et BME280.txt (2.3 KB)

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.