Voici mon programme qui fonctionnait avant branchement.
Je m’explique quand je branchais le wemos, le moniteur de serie affichait bien que la connexion wifi était réussie ainsi que la connexion MQTT.
Depuis que j’ai essayé de brancher mon capteur à mon wemos je n’ai plus que des symbole dans le moniteur de serie.
Une idée ???
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
/* WIFI */
#define wifi_ssid "******box"
#define wifi_password "****************"
/* MQTT */
#define mqtt_server "192.168.0.7"
#define mqtt_user "gladys" // username
#define mqtt_password "****************" // password
#define gladys_topic "gladys/master/device/mqtt:jardin:capteur-ultrason/feature/mqtt: jardin:capteur-ultrason:quantite/state"
#define mqtt_cuve "mqtt:jardin:capteur-ultrason" //Topic capteur cuve
/* Buffer qui permet de décoder les messages MQTT reçus */
char message_buff[100];
long lastMsg = 0; //Horodatage du dernier message publié sur MQTT
long lastRecu = 0;
bool debug = false; //Affiche sur la console si True
/* Constantes pour les broches */
const byte TRIGGER_PIN = 7; // Broche TRIGGER
const byte ECHO_PIN = 6; // Broche ECHO
/* Constantes pour le timeout */
const unsigned long MEASURE_TIMEOUT = 25000UL; // 25ms = ~8m à 340m/s
/* Vitesse du son dans l'air en mm/us */
const float SOUND_SPEED = 340.0 / 1000;
//Création des objets
WiFiClient espClient;
PubSubClient client(espClient);
void setup() {
/* Initialise le port serie */
Serial.begin(9600); //Facultatif pour le debug
/* Initialise les broches */
pinMode(TRIGGER_PIN, OUTPUT);
digitalWrite(TRIGGER_PIN, LOW); // La broche TRIGGER doit être à LOW au repos
pinMode(ECHO_PIN, INPUT);
setup_wifi(); //On se connecte au réseau wifi
client.setServer(mqtt_server, 1883); //Configuration de la connexion au serveur MQTT
}
//Connexion au réseau WiFi
void setup_wifi() {
delay(10);
Serial.println();
Serial.print("Connexion a ");
Serial.println(wifi_ssid);
WiFi.begin(wifi_ssid, wifi_password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("Connexion WiFi etablie ");
Serial.print("=> Addresse IP : ");
Serial.print(WiFi.localIP());
}
//Reconnexion
void reconnect() {
//Boucle jusqu'à obtenur une reconnexion
while (!client.connected()) {
Serial.print("Connexion au serveur MQTT...");
if (client.connect("ESP8266Client", mqtt_user, mqtt_password)) {
Serial.println("OK");
} else {
Serial.print("KO, erreur : ");
Serial.print(client.state());
Serial.println(" On attend 5 secondes avant de recommencer");
delay(5000);
}
}
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
long now = millis();
/*Envoi d'un message par minute*/
if (now - lastMsg > 1000 * 60) {
lastMsg = now;
/* 1. Lance une mesure de distance en envoyant une impulsion HIGH de 10µs sur la broche TRIGGER */
digitalWrite(TRIGGER_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER_PIN, LOW);
/* 2. Mesure le temps entre l'envoi de l'impulsion ultrasonique et son écho (si il existe) */
long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT);
/* 3. Calcul la distance à partir du temps mesuré */
int distance_mm = measure / 2.0 * SOUND_SPEED;
float c = 2000 - distance_mm;
c = c / 2000;
c = c * 100;
//Inutile d'aller plus loin si le capteur ne renvoi rien
if ( isnan(c)) {
Serial.println("Echec de lecture ! Verifiez votre capteur HRC-04");
return;
}
if ( debug ) {
Serial.print("Cuve : ");
Serial.print(c);
}
client.publish(gladys_topic, String(c).c_str(), true); //Publie la température sur le topic temperature_topic
}
if (now - lastRecu > 100 ) {
lastRecu = now;
client.subscribe("homeassistant/switch1");
}
}
Si tu alimentes ton capteur en 5v, il te faut un adaptateur de tension 5v vers 3.3v sur chaque entrée utilisée , car les entrées et sorties du wemos ne supportent que le 3.3v. Deuxieme piste dans ton programme tu utilises les pins 6 et 7;. je pense que tu dois mettre D6 et D7, car si tu ne mets pas le “D” le wemos comprends GPIO 6 et Gpio 7 qui correspondent aux pins de gestion de la mémoire Flash. voila
Au niveau du branchement je raccorde le GND sur GND et les autres ports à partir du wemos sur LOW LV : 3.3, LV1 : D6, LV2 : D7 et coté capteur sur HV : 5V HV1 : Echo et HV2 : trigger
Pour en revenir au sujet, j’ai testé tamosta avec un sr04 et un esp12e , bah clairement je m’embête plus à écrire du code, c’est sans prise de tête. ( PR en cours pour gérer les capteurs de distance)
Juste un petit retour pour vous dire que tout est bien opérationnel par contre j’ai une question dans l’api MQTT j’ai du choisir la fonctionnalité “Humidité - pourcentage”
qui se rapproche le plus de ce que je souhaitais mais serait-il possible d’avoir un libellé spécifique à mon besoin style “capacité cuve - pourcentage” ou sinon d’avoir une jauge qui serait vraiment top