automatisation d'un puit

Vous connaissez une astuce pour le jardin transmise depuis 5 générations? Partagez-la!
Avatar du membre
apynala
Messages : 693
Enregistré le : 02 février 2014, 19:54

Re: automatisation d'un puit

Message par apynala »

Quelques photos de l'installation:

Le local en bazar:
20200804_200522.jpg
20200804_200522.jpg (86.78 Kio) Vu 518 fois
L'armoire électrique en bazar:
20200804_200449.jpg
20200804_200449.jpg (103.87 Kio) Vu 518 fois
L'arduino en ... bazar:
20200804_200456.jpg
20200804_200456.jpg (110.48 Kio) Vu 518 fois
Avatar du membre
apynala
Messages : 693
Enregistré le : 02 février 2014, 19:54

Re: automatisation d'un puit

Message par apynala »

Afin de détailler un peu, on peut voir sur la photo la cuve tampon de 1m3 et à sa gauche le ballon du surpresseur de 500l.

Dans l'armoire électrique, on a l'interrupteur différentiel pour protéger les personnes, suivit d'un disjoncteur pour la commande et un pour l'alim de la box internet. A leur droite, on a le condensateur pour la pompe du puits.

En dessous, le disjoncteur moteur et le contacteur pour le puits suivis d'un disjoncteur et du contacteur pour la pompe de surpression.

La dernière ligne se sont des borniers et le disjoncteur du groupe électrogène pour la charge des batteries solaires.

Sur la dernière photo, c'est la carte sur laquelle j'ai connecté l'arduino et les relais de commande des contacteurs.
Avatar du membre
Damien
Administrateur
Messages : 3330
Enregistré le : 15 août 2011, 00:00
Localisation : Tournai (Belgique)

Re: automatisation d'un puit

Message par Damien »

Merci Apy. Pas simple pour te suivre pour un néophyte comme moi mais passionnant malgré tout.
Avatar du membre
apynala
Messages : 693
Enregistré le : 02 février 2014, 19:54

Re: automatisation d'un puit

Message par apynala »

Vas-y, n'hésites pas à poser des questions, c'est avec plaisir que j'y répondrai.
Avatar du membre
Zara
Administrateur
Messages : 6209
Enregistré le : 14 mars 2011, 00:00
Localisation : Famenne

Re: automatisation d'un puit

Message par Zara »

je n'ai pas trop le temps pour le moment apy, je suis dans le miel et les conserves, je regarde plus tard, mais ca m’intéresse drôlement, j'ai déjà brûler deux groupes à 300 euros car pas de détection cuve vide

autre chose
j'espère que les coffrets que tu place sont plus beau :)
Avatar du membre
apynala
Messages : 693
Enregistré le : 02 février 2014, 19:54

Re: automatisation d'un puit

Message par apynala »

Zara a écrit :
06 août 2020, 17:01
...
autre chose
j'espère que les coffrets que tu place sont plus beau :)
Heureusement ... :trompette

Il faut quand même prendre en compte qu'on est encore en phase de tests. Après, on peu toujours espérer qu'une fois tout mis en place, j'arrangerai tout nickel (l'espoir fait vivre). :hilare :hilare :hilare
papy
Conseiller potager
Messages : 2249
Enregistré le : 24 juillet 2011, 00:00
Localisation : Frasnes-lez-anvaing

Re: automatisation d'un puit

Message par papy »

Damien a écrit :
06 août 2020, 11:24
Merci Apy. Pas simple pour te suivre pour un néophyte comme moi mais passionnant malgré tout.
Bj, idem pour moi, cela a l'air formidable mais j'y comprend pas grand chose :pleur
La patience et l'observation sont les deux qualités les plus importantes pour le jardinier
Avatar du membre
apynala
Messages : 693
Enregistré le : 02 février 2014, 19:54

Re: automatisation d'un puit

Message par apynala »

Ca y est,

Je viens de finir de mettre en place mon nouveau système de puits automatisé.
Toujours un arduino pour la gestion du bazar auquel j'ai connecté un nodeMcu qui me permet de piloter le démarrage.

Voici ce que répond le nodemcu quand on se connecte dessus:
Capture d’écran de 2020-08-16 18-31-54.png
Capture d’écran de 2020-08-16 18-31-54.png (43.49 Kio) Vu 324 fois
Je vous mets dans le message suivant le code de l'arduino et celui du nodemcu.
Avatar du membre
apynala
Messages : 693
Enregistré le : 02 février 2014, 19:54

Re: automatisation d'un puit

Message par apynala »

Le code de l'arduino:

// sorties numeriques
byte impulsion = 4;
byte contactPuits = 12;
byte contactCuve = 11;

// entrees analogiques
byte niveauPuits = 0;
byte cuveH = 2;
byte cuveB = 1;
byte lumiere = 3;
byte pressostat = 7;

// seuil de lumiere
int sLum = 850;
int lu;

int puit;
int cH;
int cB;
int pres;

unsigned long tps0;
unsigned long tps;
unsigned long dtps;


void setup()
{

// initialisation des 4 relais ou pas :) plutot ou plus :P
// Putain j'arrive pas a trouver la logique avec le nodemcu
// ça m'enerve
// pourtant c'est simple
// un petit coups de The Agonist
// Putaiiiiiiiiiiiiiiiiiin !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// Voilà je l'ai

// Ah ben non

pinMode(impulsion,OUTPUT);
digitalWrite(impulsion,LOW);
pinMode(contactPuits,OUTPUT);
digitalWrite(contactPuits,HIGH);
pinMode(contactCuve,OUTPUT);
digitalWrite(contactCuve,HIGH);
pinMode(1,INPUT);
digitalWrite(1,LOW);
pinMode(2,INPUT);
digitalWrite(2,LOW);

// initialisation port série pour l'affichage des valeurs lors des tests
Serial.begin(9600);

Serial.println("Demarrage de l'arduino");

}


void loop()
{
Serial.print("Lumiere \t");

lu = analogRead(lumiere);

Serial.println(lu);


digitalWrite(impulsion, HIGH);
delay(1000);
puit = analogRead(niveauPuits);
cH = analogRead(cuveH);
cB = analogRead(cuveB);
pres = analogRead(pressostat);
Serial.print("puit \t");
Serial.println(puit);
Serial.print("cuve haut \t");
Serial.println(cH);
Serial.print("cuve bas \t");
Serial.println(cB);

Serial.print("pressostat \t");
Serial.println(pres);
delay(1000);
digitalWrite(impulsion, LOW);

// boucle de remplissage de la cuve
if(digitalRead(6) || cB < 500)
{
Serial.println("demarrage puits");
puits();
}


if(digitalRead(5))
{
Serial.println("demarrage cuve");
cuve();
}

if(!digitalRead(5))
{
Serial.println("Arret cuve");
digitalWrite(11,HIGH);
}


delay(30000);
}


void puits()
{
tps0 = millis();
dtps = 0;

while(cH < 250 && dtps < 420000 && puit > 250 && lu > sLum)
{
tps = millis();
dtps = tps - tps0;
Serial.print("tps \t");
Serial.println(dtps);

Serial.println("demarrage pompe puit");
digitalWrite(contactCuve,HIGH);
digitalWrite(contactPuits,LOW);
digitalWrite(impulsion, HIGH);
delay(1000);
cH = analogRead(cuveH);
cB = analogRead(cuveB);
puit = analogRead(niveauPuits);
pres = analogRead(pressostat);
lu = analogRead(lumiere);
Serial.print("puit \t");
Serial.println(puit);
Serial.print("cuve haut \t");
Serial.println(cH);
Serial.print("cuve bas \t");
Serial.println(cB);
delay(1000);
digitalWrite(impulsion, LOW);
delay(20000);
}
digitalWrite(contactPuits,HIGH);
}

void cuve()
{
if(cB > 250 && pres > 500 && lu > sLum)
{
digitalWrite(impulsion, HIGH);
delay(1000);

cB = analogRead(cuveB);

pres = analogRead(pressostat);
lu = analogRead(lumiere);

Serial.print("cuve bas \t");
Serial.println(cB);
delay(1000);
digitalWrite(impulsion, LOW);
Serial.println("demarrage pompe surpresseur");
digitalWrite(11,LOW);
}
else
{
digitalWrite(11,HIGH);
}

}
Avatar du membre
apynala
Messages : 693
Enregistré le : 02 février 2014, 19:54

Re: automatisation d'un puit

Message par apynala »

Celui du nodemcu:

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <WiFiClientSecure.h>
#include <WiFiServer.h>
#include <WiFiUdp.h>


const char* ssid = "****";
const char* password = "****";

IPAddress ip(192, 168, 1, 76);
IPAddress passerelle(192, 168, 1, 1);
IPAddress masque(255, 255, 255, 0);

WiFiServer server(80);

char crecu[25];

void setup()
{
Serial.begin(115200);
delay(10);

Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);

WiFi.begin(ssid, password);
WiFi.config(ip, passerelle, masque);

// Connexion au wifi

while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");

// Demarrage du serveur

server.begin();
Serial.println("Server started");

// Initialisation des pins en sortie

pinMode(D0,OUTPUT);
digitalWrite(D0,HIGH);
pinMode(D1,OUTPUT);
digitalWrite(D1,LOW);
pinMode(D2,OUTPUT);
digitalWrite(D2,LOW);
pinMode(D3,OUTPUT);
digitalWrite(D3,LOW);
pinMode(D4,INPUT);

}

void loop()
{

// Declaration des variables pour les boucles

byte i = 0;
byte drapeau = 0;
int lecta = 0;

// Recherche d'un client

WiFiClient client = server.available();

// Si presence d'un client

if(client.connected())
{

// Lecture et affichage sur le port série

while (client.available())
{
char c = client.read();
Serial.print(c);

// Capture des 25 premiers caracteres

if(i < 25)
{
crecu = c;
drapeau = 1;
i++;
}
}

// Analyse des caracteres envoyes et changement d'etat des pins

Serial.println(crecu);
if(crecu[5] == 0x30 && //0
crecu[6] == 0x6F && //o
crecu[7] == 0x6E) //n
{
digitalWrite(D0,LOW);
Serial.println("Rst arduino");
delay(2000);
digitalWrite(D0,HIGH);
Serial.println("Fin du rst");
}



Serial.println(crecu);
if(crecu[5] == 0x31 && //1
crecu[6] == 0x6F && //o
crecu[7] == 0x6E) //n
{
digitalWrite(D1,HIGH);
Serial.println("Demarrage du matin");
}

if(crecu[5] == 0x31 && //1
crecu[6] == 0x6F && //o
crecu[7] == 0x66 && //f
crecu[8] == 0x66) //f
{
digitalWrite(D1,LOW);
Serial.println("Fin du demarrage du matin");
}

if(crecu[5] == 0x32 && //2
crecu[6] == 0x6F && //o
crecu[7] == 0x6E) //n
{
digitalWrite(D2,HIGH);
Serial.println("Demarrage force du puits");
}

if(crecu[5] == 0x32 && //2
crecu[6] == 0x6F && //o
crecu[7] == 0x66 && //f
crecu[8] == 0x66) //f
{
digitalWrite(D2,LOW);
Serial.println("Fin demarrage force du puits");
}






client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println("Refresh: 30");
client.println();
client.print("<html><head><title>Commande du puit</title></head><body bgcolor=\"#E6E6FA\" style=\"text-align:center;\"><h1>Commande manuelle du puit");
client.print("</h1><br/> <br/><h1>Rst arduino</h1><a href=\"0on\"> On </a><a href=\"0off\"> Off </a><br/><br/>");
client.print("</h1><br/> <br/><h1>Demarrage du matin</h1><a href=\"1on\"> On </a><a href=\"1off\"> Off </a><br/><br/>");
client.print("</h1><br/> <br/><h1>Demarrage force du puits</h1><a href=\"2on\"> On </a><a href=\"2off\"> Off </a><br/><br/>");
client.print("<h1>");


client.println("</body></html>");
client.println();


}

// Arret du client

client.stop();
delay(500);
}
Modifié en dernier par apynala le 26 août 2020, 23:50, modifié 1 fois.
Répondre

Retourner vers « Trucs et astuces au jardin »