Page 2 sur 6

Re: automatisation d'un puit

Posté : 05 août 2020, 21:20
par apynala
Quelques photos de l'installation:

Le local en bazar:
20200804_200522.jpg
20200804_200522.jpg (86.78 Kio) Vu 2972 fois
L'armoire électrique en bazar:
20200804_200449.jpg
20200804_200449.jpg (103.87 Kio) Vu 2972 fois
L'arduino en ... bazar:
20200804_200456.jpg
20200804_200456.jpg (110.48 Kio) Vu 2972 fois

Re: automatisation d'un puit

Posté : 05 août 2020, 23:43
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.

Re: automatisation d'un puit

Posté : 06 août 2020, 11:24
par Damien
Merci Apy. Pas simple pour te suivre pour un néophyte comme moi mais passionnant malgré tout.

Re: automatisation d'un puit

Posté : 06 août 2020, 15:42
par apynala
Vas-y, n'hésites pas à poser des questions, c'est avec plaisir que j'y répondrai.

Re: automatisation d'un puit

Posté : 06 août 2020, 17:01
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 :)

Re: automatisation d'un puit

Posté : 06 août 2020, 21:18
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

Re: automatisation d'un puit

Posté : 08 août 2020, 15:55
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

Re: automatisation d'un puit

Posté : 16 août 2020, 19:41
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 2778 fois
Je vous mets dans le message suivant le code de l'arduino et celui du nodemcu.

Re: automatisation d'un puit

Posté : 16 août 2020, 19:43
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);
}

}

Re: automatisation d'un puit

Posté : 16 août 2020, 19:43
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);
}