Gestion énergétique d'un système d'hydroponie : Différence entre versions

Ligne 77 : Ligne 77 :
  
 
La fonction "int" permet juste de nommer une sortie du relais (par exemple la sortie 2 correspond au ventilateur).
 
La fonction "int" permet juste de nommer une sortie du relais (par exemple la sortie 2 correspond au ventilateur).
 +
  
 
<u>'''Partie 2: Initialisation des variables'''</u>
 
<u>'''Partie 2: Initialisation des variables'''</u>
Ligne 94 : Ligne 95 :
 
''veut dire: "sur la sortie de la broche nommée "batterie", mettre une tension de 5V"''
 
''veut dire: "sur la sortie de la broche nommée "batterie", mettre une tension de 5V"''
  
<u>Partie 3: Ecriture de la boucle</u>
+
Cette parti sert à
 +
 
 +
 
 +
<u>'''Partie 3: Ecriture de la boucle'''</u>
 +
 
 +
 
 +
<u>'''Code complet:'''</u>
 +
 
 +
const int sensorPin = A0;
 +
 
 +
int batterie = 5;
 +
 
 +
int hydro = 4;
 +
 
 +
int bulleur = 3;
 +
 
 +
int ventilateur = 2;
 +
 
 +
 
 +
void setup()
 +
 
 +
{
 +
 
 +
Serial.begin(9600); //open a serial port
 +
 
 +
pinMode(batterie,OUTPUT);
 +
 
 +
digitalWrite(batterie, HIGH);
 +
 
 +
pinMode(hydro,OUTPUT);
 +
 
 +
digitalWrite(hydro, HIGH);
 +
 
 +
pinMode(bulleur,OUTPUT);
 +
 
 +
digitalWrite(bulleur, HIGH);
 +
 
 +
pinMode(ventilateur,OUTPUT);
 +
 
 +
digitalWrite(ventilateur, HIGH);
 +
 
 +
}
 +
 
 +
void loop()
 +
 
 +
{
 +
 
 +
digitalWrite(batterie, LOW);
 +
 
 +
delay(300000);
 +
 
 +
digitalWrite(batterie, HIGH);
 +
 
 +
 
 +
digitalWrite(hydro, LOW);
 +
 
 +
delay(600000);
 +
 
 +
digitalWrite(hydro, HIGH);
 +
 
 +
 
 +
digitalWrite(bulleur, LOW);
 +
 
 +
delay(1200000);
 +
 
 +
digitalWrite(bulleur, HIGH);
 +
 
 +
int sensorVal = analogRead(sensorPin);
 +
 
 +
float voltage = (sensorVal/1024.0)*5.0;
 +
 
 +
float temperature = (voltage - .5) * 100+35;
 +
 
 +
Serial.print("temperature: ");
 +
 
 +
Serial.print(temperature);
 +
 
 +
if(temperature > 25){
 +
 
 +
digitalWrite(ventilateur, LOW);
 +
 
 +
delay(600000);
 +
 
 +
digitalWrite(ventilateur, HIGH);
 +
 
 +
}
 +
 
 +
}
  
<u>Code complet:</u>
+
{{Warning|Le moindre point virgule ou la moindre accolade sont importants, veiller}}<br />
 
|Step_Picture_00=Pilotage_de_l'hydroponie_via_Arduino_Capture.PNG
 
|Step_Picture_00=Pilotage_de_l'hydroponie_via_Arduino_Capture.PNG
 
|Step_Picture_01=Pilotage_de_l'hydroponie_via_Arduino_Capture1.PNG
 
|Step_Picture_01=Pilotage_de_l'hydroponie_via_Arduino_Capture1.PNG

Version du 29 mai 2019 à 12:47

Tutorial de avatarCyprien Cayla | Catégories : Alimentation, Énergie

Ce tutoriel permet le pilotage d'une plantation hydroponique via un petit système électronique contrôlé par une carte Arduino, de l'assemblage des composants à l'écriture du programme de guidage. Cette installation a été étudiée et documentée lors d'une escale du Nomade des Mers à Taipei (Taïwan) et est dorénavant utilisée pour gérer le système hydroponique du bateau.

Difficulté
Moyen
Durée
2 jour(s)
Coût
80 EUR (€)
Autres langues :
français
Licence : Attribution (CC BY)

Introduction

Cette installation est spécialement utile lorsque l'on dispose d'une source d'énergie limitée ou inconstante car elle permet de répartir l'énergie entre les différents composants en réduisant au maximum les pertes.

On peut ainsi grâce à une certaine alternance:

- Contrôler la température de la pièce grâce au déclenchement ou pas d'un petit ventilateur d’appoint

- Contrôler le fonctionnement des différentes pompes à eau

- Contrôler la charge des batteries afin de stocker l'énergie non utilisée

Matériaux

Les références des composants présentés ici sont donnés à titre d'exemple et peuvent tout à fait être remplacés par d'autre à fonction équivalente.
  • une carte Arduino UNO REV3 A000066
  • un régulateur de charge et de décharge (ex : 4-8V 1A Module de Chargeur Charge Batterie Mini Li-ion USB Arduino TP4056
  • un convertisseur de tension : DC/DC booster MT3608 (composant électrique qui va transformer le 3,7 V des batteries en 5V)
  • un module de 4 relais 5V pour Arduino
  • un domino à 10 connecteurs
  • des fils
  • un truc non identifié
  • 2 batteries 18650, 3.6V
  • 2 supports de batteries 18650
  • un bouton ON/OFF

Outils

Pour le circuit électronique:

- un fer à souder

- du fil d'étain

Pour la programmation:

-le programme Arduino, facilement téléchargeable gratuitement sur le site Arduino (https://www.arduino.cc/en/Main/Software#)


Étape 1 - Conception du circuit électrique

Étape 2 - Ecriture du programme

Partie 1: Attribution des variables

Cette partie consiste à définir les constantes et à nommer les relais.

La fonction "const int" permet de créer une constante qui sera la valeur lue par le capteur en A0.

La fonction "int" permet juste de nommer une sortie du relais (par exemple la sortie 2 correspond au ventilateur).


Partie 2: Initialisation des variables

La fonction "Serial.begin" donne le débit de transfert de donnée en caractère par seconde (baud). 9600 est une valeur standard et est largement suffisante pour ce type de programme.

La fonction "PinMode" configure la broche choisi pour un certain comportement en entrée "INPUT" ou en sortie "OUTPUT" (ici en sortie).

La fonction "digitalWrite" permet de donner l'action à faire surla broche choisie avec le "PinMode". Elle mettra donc 5V de tension pour "HIGH" et 0V pour "LOW".

Par exemple:

pinMode(batterie,OUTPUT);

digitalWrite(batterie, HIGH);

veut dire: "sur la sortie de la broche nommée "batterie", mettre une tension de 5V"

Cette parti sert à


Partie 3: Ecriture de la boucle


Code complet:

const int sensorPin = A0;

int batterie = 5;

int hydro = 4;

int bulleur = 3;

int ventilateur = 2;


void setup()

{

Serial.begin(9600); //open a serial port

pinMode(batterie,OUTPUT);

digitalWrite(batterie, HIGH);

pinMode(hydro,OUTPUT);

digitalWrite(hydro, HIGH);

pinMode(bulleur,OUTPUT);

digitalWrite(bulleur, HIGH);

pinMode(ventilateur,OUTPUT);

digitalWrite(ventilateur, HIGH);

}

void loop()

{

digitalWrite(batterie, LOW);

delay(300000);

digitalWrite(batterie, HIGH);


digitalWrite(hydro, LOW);

delay(600000);

digitalWrite(hydro, HIGH);


digitalWrite(bulleur, LOW);

delay(1200000);

digitalWrite(bulleur, HIGH);

int sensorVal = analogRead(sensorPin);

float voltage = (sensorVal/1024.0)*5.0;

float temperature = (voltage - .5) * 100+35;

Serial.print("temperature: ");

Serial.print(temperature);

if(temperature > 25){

digitalWrite(ventilateur, LOW);

delay(600000);

digitalWrite(ventilateur, HIGH);

}

}

Le moindre point virgule ou la moindre accolade sont importants, veiller


Commentaires

Draft