Je travaille sur un projet d’arrosage automatisé semi-manuel basé sur un ESP32 Wrover (uPesy DevKit v2.1).
L’objectif est d’actionner une pompe pour arroser manuellement plusieurs pots via des boutons poussoirs, tout en affichant les données sur un écran LCD.
Matériel utilisé et leur utilité
ESP32 Wrover DevKit v2.1 → Cœur du projet, gère l’affichage, la lecture des boutons, et l’activation de la pompe (Modèle uPesy)
Écran LCD 20x4 I2C (Adafruit LiquidCrystal) → Affichage des informations (quantité d’eau écoulée, date du dernier arrosage, état du système)
Relais 10A 250V/AC → Alimentation de la pompe, Active/Désactive la pompe
Capteur de débit d’eau YF-S201 → Mesure le débit et la quantité d’eau écoulée
Boutons poussoirs (x3) :
Bouton 1 ("500mL") → Active la pompe pour délivrer 500mL d’eau
Bouton 2 ("ON") → Active la pompe en continu
Bouton 3 ("OFF") → Arrête la pompe immédiatement
LEDs d’indication :
Jaune (GPIO 17) → Pompe active via bouton 500mL
Verte (GPIO 5) → Pompe active via bouton ON
Rouge (GPIO 18) → Indique une erreur (ex : débitmètre défectueux)
Résistances 330Ω → Limitation du courant pour les LEDs
But du projet
Lancer l’arrosage via des boutons physiques (pas de cycle automatique)
Afficher en direct le débit et la quantité d’eau écoulée sur l’écran LCD
Sauvegarder la date et la quantité d’eau versée pour chaque pot (stockage prévu, mais actuellement sans carte SD) (c'est une partie qui peut être supprimée du code)
Possibilité de remettre à zéro la quantité d’eau versée via une combinaison de boutons
Demande d’aide
Câblage :
Mon Relais 10A 250V/AC est-il correct pour alimenter la pompe ?
Le capteur de débit doit-il être branché sur une entrée analogique ou digitale sur l’ESP32 ?
Dois-je ajouter des diodes de protection ou d’autres composants pour éviter d’endommager l’ESP32 ?
Simulation sur Tinkercad :
Certains composants (ESP32 Wrover, capteur de débit, relais 10A) ne sont pas disponibles. Comment les ajouter ou par quoi les remplacer pour la simulation ?
Où trouver les informations détaillées (fichiers JSON, modèles 3D, ou bibliothèques) pour les intégrer à Tinkercad ?
Alternative ESP32 :
J'ai un Elegoo UNO R3 venant de ce kit. Il est peut être plus judicieux de l'utiliser, ou d'autre élément de ce kit (Modèle Amazon)
Un coup d'oeil au code
Pas d'erreur visible sur PlatformIO via VSCode
Code du projet :
#include <Arduino.h>
#include <Wire.h>
#include <Adafruit_LiquidCrystal.h>
#include <RTClib.h>
// Pinout des boutons et LED
const int button500Pin = 15; // Bouton pour 500 mL
const int buttonOnPin = 2; // Bouton ON
const int buttonOffPin = 4; // Bouton OFF
const int pumpPin = 16; // Relais pour pompe
const int yellowLEDPin = 17; // LED jaune
const int greenLEDPin = 5; // LED verte
const int redLEDPin = 18; // LED rouge
// Capteur de débit
const int flowSensorPin = 21; // Capteur de débit
volatile int flowPulseCount = 0;
float calibrationFactor = 4.5; // Ajustez en fonction de votre capteur
// LCD I2C
Adafruit_LiquidCrystal lcd(0);
// RTC
RTC_DS3231 rtc;
// Variables globales
float totalFlow = 0; // Total d'eau écoulée dans la session actuelle
// Prototypes de fonctions
void startPumpForVolume(float volume);
void startPumpManual();
void stopPump();
void calculateFlowRate();
void displayFlowData();
void handleButtonPresses();
// Interruption pour le capteur de débit
void IRAM_ATTR flowPulseCounter() {
flowPulseCount++;
}
void setup() {
Serial.begin(9600);
// Initialisation des broches
pinMode(button500Pin, INPUT_PULLUP);
pinMode(buttonOnPin, INPUT_PULLUP);
pinMode(buttonOffPin, INPUT_PULLUP);
pinMode(pumpPin, OUTPUT);
pinMode(yellowLEDPin, OUTPUT);
pinMode(greenLEDPin, OUTPUT);
pinMode(redLEDPin, OUTPUT);
// Pompe et LED éteintes au démarrage
digitalWrite(pumpPin, LOW);
digitalWrite(yellowLEDPin, LOW);
digitalWrite(greenLEDPin, LOW);
digitalWrite(redLEDPin, LOW);
// Initialisation LCD
lcd.begin(20, 4);
lcd.setBacklight(1);
lcd.setCursor(0, 0);
lcd.print("Systeme d'arrosage");
delay(2000);
// Initialisation RTC
if (!rtc.begin()) {
lcd.setCursor(0, 1);
lcd.print("Erreur RTC !");
digitalWrite(redLEDPin, HIGH);
while (1);
}
// Initialisation capteur de débit
attachInterrupt(digitalPinToInterrupt(flowSensorPin), flowPulseCounter, RISING);
}
void loop() {
handleButtonPresses();
calculateFlowRate();
displayFlowData();
}
void handleButtonPresses() {
if (digitalRead(button500Pin) == LOW) {
digitalWrite(yellowLEDPin, HIGH);
startPumpForVolume(500);
digitalWrite(yellowLEDPin, LOW);
} else if (digitalRead(buttonOnPin) == LOW) {
digitalWrite(greenLEDPin, HIGH);
startPumpManual();
} else if (digitalRead(buttonOffPin) == LOW) {
stopPump();
digitalWrite(greenLEDPin, LOW);
}
}
void startPumpForVolume(float volume) {
totalFlow = 0;
digitalWrite(pumpPin, HIGH);
while (totalFlow < volume) {
calculateFlowRate();
displayFlowData();
}
stopPump();
}
void startPumpManual() {
digitalWrite(pumpPin, HIGH);
}
void stopPump() {
digitalWrite(pumpPin, LOW);
lcd.setCursor(0, 3);
lcd.print("Pompe stoppee ");
}
void calculateFlowRate() {
static unsigned long previousMillis = 0;
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= 1000) {
previousMillis = currentMillis;
float flowRate = (flowPulseCount / calibrationFactor); // L/min
flowPulseCount = 0;
float flowInMilliliters = (flowRate / 60.0) * 1000.0; // mL/s
totalFlow += flowInMilliliters;
}
}
void displayFlowData() {
lcd.setCursor(0, 1);
lcd.print("Debit: ");
lcd.print(totalFlow);
lcd.print(" mL ");
DateTime now = rtc.now();
lcd.setCursor(0, 2);
lcd.print("Dernier: ");
lcd.print(now.timestamp(DateTime::TIMESTAMP_DATE));
}
Merci pour vos conseils et coup de main pour mon projet, je ne suis qu'un débutant dans le domaine, internet et des heures de test font ma formation merci pour l'indulgence
Il faut s'assurer que le relai est capable de piloter une charge inductive mais la pompe a l'air d'être intégrée et protégée. (produit commercial fini)
A mon avis il vaut mieux viser le montage "en vrai"..
A mon avis il vaut mieux viser le montage "en vrai"..
Yep j'imagine, mais j'avoue que je suis perdu un peu pour le montage et je me suis dis qu'avec un logiciel comme TinkerCad ça allait m'aider à le faire/comprendre/ et pas tout cramer
Pour le montage il faut y aller doucement, par exemple vous ne mettez pas la pompe derrière le relai pour rester en courant faibles dans un premier temps.
le capteur de débit est un générateur de fréquence, il envoit X pulses par litre, le X en question est indiqué dans la doc du composant.
Donc dans l'idée, si tu es un as du codage, tu peux éventuellement crée un générateur de fréquence, avec un ESP32, juste pour ton simulateur, et tu le "câble" sur TinkerCad pour simuler le capteur de débit qui envoit ses pulses.
En ce moment, je cogite sur un "générateur de fréquence et rapport cyclique variables" avec un ESP32, mon petit truc marche et je m'en sers pour piloter un moteur.
Toi, le rapport cyclique, tu t'en fous tu n'a pas besoin qu'il varie.
Je peux te mettre ça sur TinkerCad.
Mais je crains que ce simulateur ait du mal à faire tourner en même temps 2 codes
Déjà merci pour les infos précédentes.
Voici mon projet terminé, ce n’est que le prototype,
Je vous donne le code (platformIO) ainsi que les schémas que j’ai faits via Fritzing.
Je suis preneur de tout avis et conseil
J’ai lu qu’il existait un module pour le simulateur Wokwi pour le couple vscode-platformIO.
C’est une information. Je n’ai jamais utilisé, ni même installé.
Jlcpcb et easyeda sont la même société, ce devrait etre simple.
Ce n’est pas plutôt le mécanisme général de la conception de circuit imprimé qui te pose problème ?
Il est vrai que ce n’est pas simple. Il faut commencer l’apprentissage avec des tutos très simples et ne pas chercher a aller plus vite que la musique.
Merci pour ton retour, en effet c’est plutôt la généralité de la conception finale qui bloque.
Le proto est là et fonctionnel, j’ai récupéré une plaque pour faire les soudures moi-même si il faut, vu la simplicité du projet je pense que c’est jouable.
Je pense faire un seul « boitier » comprenant la partie électronique et la gestion
Sachant que sur la plaque il n’y aura pas grand-chose de fixe ;
Les boutons seront « volant » pour être posés sur le boitier (je ne vais pas utiliser ceux présent sur la photo)
De même pour l’écran LCD
Le débitmètre sera lui à l’extérieur (au niveau des manipulations des vannes)
Je me demande si il y a des accessoires de plugins pour faciliter le montage et démontage, pour par exemple, déconnecter les 2 pompes et le débitmètre.
Je nage un peu
PS: bon effectivement il y a beaucoup de pont et de long chemin sur la breadboard mais c'était pour une meilleur visibilité perso du prototype.
Ton câblage est très bien.
Des fils à plat, des fils immobilisés, pas de filasse Dupont, disposée en vrac qui fait perchoir à mouche : c'est exactement ce qu'il faut.
Ton câblage définitif est quasiment défini.
Je reconnais la plaque sous l'emballage, en activité j'avais les mêmes : probablement provenance RS à 10 fois le prix de l'équivalent sur Ali.
Les seules cartes RS que je regretterais si j'en avais encore l'utilité sont les cartes pastillées double-face et dont une face contient un plan de masse.
Le plan de masse est un peu du gruyère avec tous les trous pour les pastilles, mais quand la fréquence augmente, c'est bien efficace.
Il m'en reste une au fond d'un tiroir, je la garde précieusement pour le cas où.......
Ton câblage est très bien.
Des fils à plat, des fils immobilisés, pas de filasse Dupont, disposée en vrac qui fait perchoir à mouche : c'est exactement ce qu'il faut.
Ton câblage définitif est quasiment défini.
Est ce que je peux le garder comme ça pour l'utilisation ou c'est préférable de faire un PCB définitif ?
Je reconnais la plaque sous l'emballage, en activité j'avais les mêmes : probablement provenance RS à 10 fois le prix de l'équivalent sur Ali.
Je l'ai prise au travail et effectivement les connaissants ils ont dû acheter ça sur RS.
A défaut de faire un PCB je peux utiliser cette plaque et mes fils de connexions du proto ?
Bien sur en les soudant.
Parfaitement si cela fonctionne et que c'est soudé..
Nous sommes un certain nombre ici à utiliser ces cartes pastillées.
Petits trucs :
Si tu as des résistances à souder, ou des condensateurs, plutôt que de choisir des modèles antédiluviens avec des longues pattes, tu peux utiliser des CMS.
Par exemple pour le modèle CMS (smd) 0805 :
08 est la longueur en 1/100 d'inches. Soit 8 x 0,254 = 2 mm
05 est la largeur. Soit 5 x 0,254 = 1,27 mm
Je te dis ça parce qu'un format 0805 se câble très facilement entre deux pastilles disposées sur la grille à 2,54 mm
Pour les composants que tu voudrais récupérer ou sur lesquels tu as des craintes et que tu voudrais pouvoir changer facilement, il existe d'autres connecteurs que ceux qui sont livrés avec les modèles.
Merci pour ces infos et le détails de ces composants,
J'ai une nouvelle question, peut être un peu bête ... comme la soudure électronique ce n'est pas du tout mon domaine, je ne voudrai pas faire n'importe quoi.
Je vais essayer d'être clair
Donc si je comprend bien je peux faire le même type de "câblage" (je sais pas si c'est le bon therme en électronique) mais sur ma carte pastillée Vero. En utilisant les câble de ponts du proto et autres barrettes à tige par exemple pour les relais.
Cela évite de faire une carte PCB en micro imprimé
La côté pratique des breadboards c'est les lignes de liaisons sur plusieurs pin (les GDN et VCC par exemple).
Comme on peut voir sur ma photo je les utilises (j'ai stabiloté quelques endroits). Mais sur la Vero il y en a pas. Comment les faire ? par cordon de soudure ? des barrettes spécifiques ?
Je retourne éplucher YouTube pour voir les différentes techniques (j'y trouverai peut être ma réponse en attendant votre retour. )
C'est important, surtout quand on débute, d'avoir des trous métallisés, car les pastilles (et les pistes quand il y en a) ne sont que collées sur le support epoxy.
Si on tremble un peu trop pendant l'opération de soudage, les pastilles peuvent se décoller.
Si elles sont recto/verso, elles sont renforcées mécaniquement par la métallisation du trou.