Bonjour les amis,
voila je viens vers vous pour essayer de résoudre mon soucis de codage
Je m'explique. je voudrais réaliser une station de contrôle avec un simple capteur dht22 et un capteur ultrasonic de type hcsr04 le tout avec les data envoyé sur thingspeak.
DHT22 = temperature et humidité
HCSR04 = Cuve Niveau D'eau
j'ai réaliser la partie du code pour le dht22 et cella fonction ! mais le problème viens au moment ou j'essaye d’intégré le code pour le hcsr04 je me tape des erreurs sur erreurs a ne plus savoir ou chercher
je vous met le code en description
#include "DHT22.h"
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>// WIFI SETTINGS
#define WIFI_SSID "nomwifi"
#define WIFI_KEY "123456789"#define FIELD_TEMPERATURE 1
#define FIELD_HUMIDITY 2
#define FIELD_DISTANCE 3// THINGSPEAK SETTINGS
#define THINGSPEAK_HOST "api.thingspeak.com"
#define THINGSPEAK_API_KEY "ABCDEFGH12345678"// defines pins numbers
const int trigPin = 2; //D4
const int echoPin = 0; //D3
#define PIN_DHT D3// PROGRAM SETTINGS
#define TIME_SLEEP 1000
#define CPT_PUBLISH 30// defines variables
HTTPClient http;
long duration;
int distance;
DHT dht(PIN_DHT, DHT22);uint16_t cptLoop = 0;
float temperature = 0;
float humidity = 0;
float distancecm = 0;uint16_t cptTemperature = 0;
uint16_t cptHumidity = 0;
uint16_t cptDistance = 0;void setup() {
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
Serial.begin(9600); // Starts the serial communication
Serial.println("\nSetup");
}
// Initialisation du WIFI
WiFi.begin(WIFI_SSID, WIFI_KEY);Serial.printf("Connecting to %s with key %s\n", WIFI_SSID, WIFI_KEY);
uint32_t timer = millis();
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(200);// Si il n'arrive pas à se connecter au bout de 20 secondes, le système redémarre (au cas ou un bug serait survenu)
if (millis() - timer >= 20000)
{
Serial.println("Unable to connect, restarting...");
ESP.restart();
}
}Serial.println(" WiFi connected");
// Initialisation pour le DHT22 et le YL100
dht.begin();}
void loop()
{
// Incrémentation de 1 du compteur de boucle
cptLoop++;// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);// Lecture des capteurs
float _temperature = dht.readTemperature();
if (_temperature >= -40 && _temperature <= 80)
{
temperature += _temperature;
cptTemperature++;
}float _humidity = dht.readHumidity();
if (_humidity >= 0 && _humidity <= 200)
{
humidity += _humidity;
cptHumidity++;
}float _distance = dht.readdistance();
if (_distance >= 0 && _distance <= 200)
{
distance += _distance;
cptdistance++;
}// Calculating the distance
distance= duration*0.034/2;// Si le compteur de boucle arrive à CPT_PUBLISH
if (cptLoop >= CPT_PUBLISH)
{
temperature = temperature / cptTemperature;
humidity = humidity / cptHumidity;
distance = distance /cptdistance;// Affichage à l'écran des valeurs lues
Serial.println("======");
Serial.printf("Temperature : %s C°\n", String(temperature).c_str());
Serial.printf("Humidity : %s %%\n", String(humidity).c_str());
Serial.printf("Distance: %s %%\n", String(distance).c_str());// Si nous ne sommes plus connectés au WiFi
if (WiFi.status() != WL_CONNECTED)
{
Serial.println("Connection to the SSID lost, trying to reconnect...");uint32_t timer = millis();
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(200);if (millis() - timer >= 20000)
{
Serial.println(" Unable to connect, restarting...");
ESP.restart();
}
}
}// Création de l'URL
String url;
url.reserve(256);
url = "http://"+ String(THINGSPEAK_HOST) +"/update?api_key="+ String(THINGSPEAK_API_KEY);// Ici on intègre les champs et leurs valeurs.
if (cptTemperature > 0)
url += "&field"+ String(FIELD_TEMPERATURE) +"="+ temperature;
else
Serial.println("Unable to read temperature");if (cptHumidity > 0)
url += "&field"+ String(FIELD_HUMIDITY) +"="+ humidity;
elseSerial.println("Unable to read humidity");
if (cptDistance > 0)
url += "&field"+ String(FIELD_DISTANCE) +"="+ distance;
else
Serial.println("Unable to read humidity");Serial.printf("Fetching %s\n", url.c_str());
// Etablissement de la communication HTTP
http.begin(url);
int httpCode = http.GET();// Si nous n'avons pas réussi à émettre les données, nous redémarrons le système (au cas ou un bug serait survenu)
if(httpCode != HTTP_CODE_OK)
{
Serial.printf("[HTTP] GET... failed, code: %d, error: %s\n", httpCode, http.errorToString(httpCode).c_str());
ESP.restart();
}Serial.println("Data sent !");
http.end();
// Remise à zéro
cptLoop = 0;temperature = 0;
humidity = 0;
distance = 0;cptTemperature = 0;
cptHumidity = 0;
cptdistance = 0;}
delay(2000);
}
Dernière code erreur en date :
Arduino : 1.8.8 (Windows 10), Carte : "NodeMCU 1.0 (ESP-12E Module), 80 MHz, 115200, 4M (3M SPIFFS)"
Ultrasonic_Sensor-1:49:3: error: 'WiFi' does not name a type
WiFi.begin(WIFI_SSID, WIFI_KEY);
^
Ultrasonic_Sensor-1:51:3: error: 'Serial' does not name a type
Serial.printf("Connecting to %s with key %s\n", WIFI_SSID, WIFI_KEY);
^
Ultrasonic_Sensor-1:54:3: error: expected unqualified-id before 'while'
while (WiFi.status() != WL_CONNECTED)
^
exit status 1
'WiFi' does not name a type
Merci pour les infos les amis en espérant que ce poste vous intéresse