Au départ lorsque nous sommes arrivé dans notre maison, il y avais une piscine extérieur, un peu à l’ombre, qu’on utilisait modérément car même l’été, elle ne chauffait pas beaucoup. J’ai donc décider de bricoler un système de chauffage pas trop énergivore et surtout pas trop chère. Après avoir fait des rechercher sur ce qui se faisait, j’ai décidé de faire un système de chauffage solaire à partir de tuyaux placés sur le toit de la cabane à proximité de la piscine. le tout serait branché sur la pompe de filtration de la piscine et hop je n’aurais plus à m’en occuper. Mais ça a été un peu plus compliqué que ça et a force de tâtonnement voilà le résultat auquel je suis arrivé : J’ai du utiliser une pompe séparée et des tuyaux d’arrosage noir, pour l’allumage et l’extinction de la pompe, un petit système électronique à base d’un Arduino et d’une prise télécommandée.

Chauffer l’eau

Le système de chauffage de la piscine en lui même est très simple, il est composé d’un tuyau noir qui est enroulé en spirale, posé sur le toit de la cabane en plein soleil. Une pompe récupère l’eau la plus froide au fond de la piscine l’envoi dans le tuyau, l’eau chauffe en circulant et une fois chauffée elle redescend dans la piscine.

Premiers essais

Ce qui était prévu au départ c’était d’utiliser le système de filtration de la piscine et de faire passer l’eau par les tuyaux qui servent au chauffage en même temps. Cependant 2 problèmes se posaient : le premier était un problème de débit de la pompe qui était trop important pour la taille des tuyaux qui servait à chauffer l’eau, le second problème était que la filtration de la piscine fonctionnait essentiellement la nuit aux heures creuses et donc à un moment où il n’y a pas de soleil donc pas de chauffage.

Dans un premier temps j’ai fait fonctionner la pompe à l’aide d’un timer programmable qui allumait la

pompe, la laisser fonctionner pendant 15 minutes puis s’arrêtait 15 minutes le temps que  les tuyaux chauffent à nouveau. L’inconvénient de ce système C’est qu’au bout de quelques minutes l’eau qui coule des tuyaux n’est plus assez chauffée et la pompe tourne pour rien j’ai donc décidé de créer un petit appareil qui va mesurer la température de l’eau à la sortie du tuyau et arrêter la pompe dès que la température est en dessous d’une certaine valeur. Le programme va alors se mettre en pause et laisser le temps au tuyau de chauffer à nouveau. Une fois ce temps écoulé la pompe se remet en route et on recommence à mesurer la température…

Gestion de la pompe en fonction de la température de l’eau

Ce petit module sera fabriqué à partir d’une carte Arduino Nano, d’un capteur de température et d’un émetteur hertzien 433 Hz qui pilotera une prise télécommandée  sur laquelle sera branchée la pompe.

Vous trouverez en fin d’article tous les liens vers les librairies que j’ai utilisé et les pages qui m’on aider à programmer le tout.

Voici pas a pas la création de ce module

\"51+GP5gfY3L._SL1024_\"

La première étape sera de mesurer la température de l’eau qui sort des tuyaux pour cela j’utilise une sonde de température de type ds-18b20 étanche,  qui sera connecté à l’Arduino. La sonde de température fonctionne très simplement, elle dispose de trois broches, une pour l’alimentation une pour la Terre et la troisième qui renvoie les données de température. Il faut utiliser une résistance de 4.7kΩ avec, afin de la protéger (désolé pour mon vocabulaire de débutant en électronique)

Pour l’utilisation de cette sonde j’ai utilisé la librairie One wire

\"71Wz-aGbLzL._SL1500_\"

Une fois qu’on peut mesurer la température de l’eau il faut qu’on puisse allumer et éteindre la pompe quand on le souhaite. Plutôt que d’utiliser un relais électrique, j’ai décidé d’utiliser une vieille prise télécommandée et de piloter cette prise à l’aide d’un émetteur 433Hz.  c’est prise fonctionne de façon très simple une télécommande envoie un code pour l’allumage et un code pour l’extinction.

Dans un premier temps il va donc falloir  connaître ces deux codes. Le module que j’ai acheté et composé de deux éléments un émetteur et un récepteur nous allons donc tout d’abord utiliser le récepteur pour savoir quels sont ces deux codes. Ce récepteur se branche très facilement sur une breadboard à l’aide de trois fils, un pour l’alimentation, un pour la terre et un avec les données. Une fois branché sur l’Arduino j’ai utiliser la librairie rcswitch et un programme présent dans cette librairie « ReceiveDemo_Simple ».

Une fois ce programme téléversé, il ne reste plus qu’à utiliser la télécommande d’appuyer sur les bouton d’allumage et d’extinction et comme par magie les codes apparaissent sur le terminal de l’Arduino.

\"deux_codes\"

On n\’a plus besoin  du récepteur et on peut brancher à la place l’émetteur qui enverra les codes que nous a donnée la télécommande.

Le programme fonctionne de la façon suivante : une fois démarré il envoie un signal à la prise pour mettre la pompe en route puis attends quelques secondes que l’eau chaude commence à couler dans le tuyau. Ensuite il relève la température à intervalle de temps régulier. Si la température est supérieure au minimum que l’on a choisi, le programme continue. Si la température est inférieure à la température minimum le programme envoie un signal pour arrêter la pompe, fais une pause de 10 minutes pour laisser le temps de chauffer l’eau dans les tuyaux, puis recommence le programme.

Le programme

#include <OneWire.h>
#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

// Code de la prise
const long priseOn = 4538709;
const long priseOff = 344404;

// pin de la sonde de temperature
int DS18S20_Pin = 2;
OneWire ds(DS18S20_Pin);

// temporisation
const long pause_debut = 15000; //15 secondes
const long pause_chauffe = 600000; //10 minutes
const long pause_amorcage =  20000; //20 secondes

// temperture limite basse (24°) pour l\'arret de la pompe
const int temp_basse = 24; 

void setup(void) {
 Serial.begin(9600);
 mySwitch.enableTransmit(10);
delay(2000);

// On allume l\'interupteur de la pompe
Serial.println(\"Allumage\");
sendPrise(priseOn);

// on attends avant de commencer à mesurer
delay(pause_debut);}
   

void loop(void) {
  // on fait couler un peu d\'eau avant de prendre la température
  delay(pause_amorcage);
  // On prends la température
  float temperature = getTemp();
  Serial.print(\"Température : \");
  Serial.println(temperature);
  // si la temperature est inférieur a la limite basse
  if(temperature<temp_basse) {
    // On arrete la pompe
    Serial.println(\"Extinction\");
    sendPrise(priseOff);
    // ensuite on attend que ca chauffe
    Serial.println(\"On attend que ca chauffe ! \");
    delay(pause_chauffe);
    // On rallume l\'interupteur de la pompe
    Serial.println(\"Allumage\");
    sendPrise(priseOn);
  }
  // On peu recommencer au déut
}

// Allumage et extinction de la prise
void sendPrise(long code) {
  Serial.print(\"Code \");
  Serial.print(code);
  mySwitch.send(code, 24);
  delay(50);
   mySwitch.send(code, 24);
  delay(50);
   mySwitch.send(code, 24);
  delay(50);
   mySwitch.send(code, 24);
  delay(50);
}

// Gestion de la température
float getTemp(){
  byte data[12];
  byte addr[8];

  if ( !ds.search(addr)) {
    //no more sensors on chain, reset search
    ds.reset_search();
    return -1000;
  }

  if ( OneWire::crc8( addr, 7) != addr[7]) {
    Serial.println(\"CRC is not valid!\");
    return -1000;
  }

  if ( addr[0] != 0x10 && addr[0] != 0x28) {
    Serial.print(\"Device is not recognized\");
    return -1000;
  }

  ds.reset();
  ds.select(addr);
  ds.write(0x44,1); // start conversion, with parasite power on at the end

  byte present = ds.reset();
  ds.select(addr);  
  ds.write(0xBE); // Read Scratchpad

  for (int i = 0; i < 9; i++) { // we need 9 bytes
    data[i] = ds.read();
  }
  ds.reset_search();
  byte MSB = data[1];
  byte LSB = data[0];
  float tempRead = ((MSB << 8) | LSB); //using two\'s compliment
  float TemperatureSum = tempRead / 16;

  return TemperatureSum;
}

La construction du module

La mise en place et les ajustements

Sources

La librairie rc switch : https://github.com/sui77/rc-switch

La librairie one-wire : https://github.com/PaulStoffregen/OneWire

Les pages sur lesquelles j’ai trouvé pleins d’informations qui m’ont aider a réaliser ce module :

Pour piloter des dispositifs sans fil a l’aide de l’émetteur 433Hz et de prise télécommandées : http://faitmain.org/volume-1/dispositifs.html

Toutes les infos sur les branchement et l’utilisation de la sonde de température ds18b20 : https://skyduino.wordpress.com/2012/04/26/arduino-capteur-de-temperature-ds18b20/

\"71Wz-aGbLzL._SL1500_\"
\"deux_codes\"

Le programme

\r\n

\r\n

La construction du module

\r\n \r\n

La mise en place et les ajustements

\r\n \r\n\r\n \r\n

Sources

By Xxavier