Bonjour,
Je lance un projet de Station Météo "Maison" avec mon fils de 7 ans.
Le câblage c'est pour lui, la programmation pour moi.
La 1° étape, le câblage, rien à dire, il a fait le travail.
Sur une carte MEGA 2560, un sensor température / humidité DHT + Sensor Effet Hall (pour l'anémomètre). Le code c'est bon aussi. Tout fonctionne.
On peut voir le Moniteur Série Arduino IDE les informations désirée.
La 2° Etape (c'est là où je cale), consiste à ajouter un ESP8266-1 pour intégrer la connexion WiFi à Blynk.
Et là c'est le drame.
L'ESP seul est bien connecté (sans le code BLYNK).
J'arrive même depuis peu à avoir des données sur le moniteur série de la MEGA 2560 en passant.
Dès que je veux, intégrer le code Blynk, plus rien ne fonctionne.
Ci-dessous les 2 Codes Arduino séparés :
ARDUINO - MEGA 2560
#include <SimpleDHT.h>
#define DHT_SENSOR_TYPE DHT_TYPE_11
const int ledPin = 8;
const int hallPin = 2;
static const int DHT_SENSOR_PIN = 4;
SimpleDHT11 dht11(DHT_SENSOR_PIN);
int sensorValue;
int tempoActive = 0;
// Temps à l'activation de la tempo
unsigned long tempoDepart = 0;
void setup(){
Serial.begin(9600);
pinMode( ledPin, OUTPUT );
pinMode( hallPin, INPUT );
Serial1.begin(115200);
}
void mesure_anemometre() {
// lecture du capteur a Effet Hall
sensorValue = digitalRead( hallPin );
//Serial.print("sensorValue = ");
//Serial.println(sensorValue);
// senseurValue = HIGH sans aimant
// senseurValue = LOW quand POLE SUD aimant
sensorValue = not( sensorValue );
// Allumer eteindre la LED
digitalWrite( ledPin, sensorValue );
}
void mesure_temp_humidite() {
// start working...
Serial.println("=================================");
Serial.println("Sample DHT11...");
// read without samples.
byte temperature = 0;
byte humidity = 0;
float t = (float)temperature;
float h = (float)humidity;
int err = SimpleDHTErrSuccess;
if ((err = dht11.read(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
Serial.print("Read DHT11 failed, err=");
Serial.print(SimpleDHTErrCode(err));
Serial.print(",");
Serial.println(SimpleDHTErrDuration(err));
return;
}
Serial.print("Sample OK: ");
Serial.print((int)temperature);
Serial.print(" *C, ");
Serial.print((int)humidity);
Serial.println(" H");
}
void loop() {
mesure_anemometre();
// Activation de la temporisation
//tempoActive = 1;
//tempoDepart = millis();
// Serial.print("tempoActive = ");
// Serial.println(tempoActive);
// Serial.print("tempoDepart = ");
// Serial.println(tempoDepart);
// Serial.print("millis = ");
// Serial.println(millis());
// Serial.print("delta = ");
// Serial.println(millis() - tempoDepart);
// Si la temporisation est active,
//if ( tempoActive ) {
// Et si il s'est écoulé 3 secondes,
if ( millis() - tempoDepart >= 3000 ) {
tempoDepart = millis();
mesure_temp_humidite();
// Et on désactive la temporisation pour ne pas afficher ce message une seconde fois
//tempoActive = 0;
}
//}
// Permet de vérifier le fonctionnement Echange MEGE 2560 <-> ESP8266-1
// read from port 1, send to port 0:
if (Serial1.available()) {
int inByte = Serial1.read();
//Serial.print("Test Serial1");
//Serial.println(inByte);
Serial.write(inByte);
}
// read from port 0, send to port 1:
if (Serial.available()) {
int inByte = Serial.read();
Serial1.write(inByte);
}
}
ARDUINO - ESP8266-1
/*
Ce programme permet de chercher tous les accès wifi disponibles à portée
*/
#include <ESP8266WiFi.h>
void setup() {
Serial.begin(115200);
// déconnection WiFi si une connexion préalable était faite
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);
Serial.println("Fait");
// put your setup code here, to run once:
WiFi.begin("Livebox-1F90", "mdp");
Serial.print("Connection en cours");
while (WiFi.status() != WL_CONNECTED) // tant que l'esp n'est pas connecté au réseau on attends
{
delay(3000);
Serial.print(".");
}
Serial.println();
Serial.print("Connecté, adresse IP : ");
Serial.println(WiFi.localIP()); // affichage de l'adresse IP
}
void loop() {
if (WiFi.status() != WL_CONNECTED) {
Serial.println("scan demarre");
// WiFi.scan donne le nombre de points wifi disponibles
int n = WiFi.scanNetworks();
Serial.println("scan terminé");
if (n == 0) {
Serial.println("aucun point");
} else {
Serial.print(n);
Serial.println(" nombre trouvé :");
for (int i = 0; i < n; ++i) {
// Print SSID and RSSI
Serial.print(i + 1);
Serial.print(": ");
Serial.print(WiFi.SSID(i));
Serial.print(" (");
Serial.print(WiFi.RSSI(i));
Serial.print(")");
Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE) ? " " : "*");
delay(10);
}
}
// Serial.println("");
// // attente pour un nouveau scan
delay(5000);
}
}
Mes questions :
Est-ce possible d'intégrer du code pour permettre une connexion à BLYNK ?
Si OUI, dans quel code je dois ajouter le code Blynk ?
Si NON, existe-t-il un autre moyen de récupérer les informations ?