Module chauffage
Module chauffage

Si ce n’est pas encore fait, je vous propose de commencer par lire la présentation générale de ce projet ici

Maintenant que la température est mesurée, et que nous sommes aptes à ajouter facilement de nouveaux modules, nous allons connecter notre chauffage!

L’idée est simple: Une température de consigne est définie. S’il fait plus chaud, on coupe, s’il fait plus froid, on allume!

Attention! Ce module va être connecté au secteur! Prenez les précautions nécessaires!

Par ailleurs, avant de connecter le module, testez le en basse tension à l’aide de LEDs qui permettront de visualiser si tout fonctionne comme attendu.

Matériel nécessaire

Si vous avez décidé d’utiliser un module de communication autre que le HC12 précédemment, pensez à prendre quelque-chose de compatible avec ce que vous avez choisi ici!

Pour les tests:

En utilisation nominale:

  • J’utilise un arduino Pro Micro. Vous devrez adapter le code si vous n’utilisez pas ce dernier
  • Un fusible 1A
  • Un porte fusible
  • Des connecteurs type Wago
  • Un bornier
  • Un transformateur 230V – 5V si vous souhaitez connecter le module directement sur la connectique du chauffage (J’ai démonté un chargeur de téléphone)
  • Un chauffage avec fil pilote!

Présentation générale

Comme les autres modules, l’arduino va recevoir des commandes à partir de la liaison radio:

  • Allume le chauffage
  • Éteint le chauffage
  • Quel est l’état du chauffage ?

Des signaux vont alors être envoyés sur les 2 MOC3041 afin de modifier le signal secteur relié au fil pilote. Soit le signal sera complètement coupé, soit nous conserverons les demi alternance positive. Le chauffage va alors interpréter le signal obtenu sur le fil pilote, et s’allumera ou s’éteindra automatiquement.

Le fil pilote

Sur la majorité des chauffages électriques, en plus du fil de phase et du fil neutre, un troisième fil, appelé fil pilote, permet de commander automatiquement le chauffage.

Vous pouvez trouver plus d’informations sur cette technologie ici.

Différents signaux autorisés sur fil pilote – par Tux-Man [CC0], Wikipédia

Notre montage permet de gérer les quatre premiers ordres:

  • Pas de signal
  • Signal 220V
  • Alternance positive 220V
  • Alternance négative 220V

Dans la pratique nous ne gérerons que l’ordre confort et l’ordre arrêt

Le montage

Voici le schéma du montage

Schéma module chauffage

A droite, la partie reliée à l’arduino, à gauche la partie reliée au secteur

Voici ce qu’il faut en retenir:

  • Les deux composants noirs au milieu sont les MOC3041
  • Ils sont reliés à l’arduino via deux résistances afin de limiter le courant de commande.
  • Les MOC3041 vont laisser passer le courant si +5V est appliqué sur leur commande. Ils bloqueront le courant si +0V est appliqué.
  • En sortie des MOC3041, deux diodes, qui laisseront passer, soit les alternances positives, soit les alternances négatives
  • Un fusible permet de protéger le circuit: Les MOC3041 supportent 1A en pic.

Le code

Voilà le code utilisé sur l’arduino:

esclave_chauffage.ino


#include <SoftwareSerial.h>

int pin1 = 3;
int pin2 = 15;
int pinrx = 16;
int pintx = 10;
int setPin = 9;
boolean isOn = true;
boolean firstRun = true;

SoftwareSerial hc12(pintx, pinrx);

char EOT[1];
char EOL[1];

void setup() {
  pinMode(pin1, OUTPUT);
  pinMode(pin2, OUTPUT);
  
  /* Initialisation du port s?rie */
  Serial.begin(2400);
  pinMode(setPin,OUTPUT);
  digitalWrite(setPin,LOW);
  delay(300);
  hc12.begin(2400);
  hc12.print("AT+B2400");
  delay(200);
  hc12.print("AT+C093");
  delay(200);
  hc12.print("AT+P8");
  delay(200);
  digitalWrite(setPin,HIGH);// enter transparent mode
  
  EOT[0] = 4;
  EOL[0] = '\n';
}

void readSerial(unsigned int MAXBUF, char* buffer){
  
    buffer[0] = 0;
    int i = 0;
    while(hc12.available() && i < MAXBUF){
      
      buffer[i++] = hc12.read();
      delay(10);
    }
  }    

void reinitBuf(char* buf, int bufsize)
{
  for(int i = 0 ; i < bufsize; i++){
    buf[i] = 0;
  }
}

// the loop routine runs over and over again forever:
void loop() {
  
  if(firstRun){
    firstRun = false;
    digitalWrite(pin1, LOW);
    digitalWrite(pin2, LOW);
  }
  
  char messageRx[8];
  byte taille_messageRx = 8;
  readSerial(taille_messageRx, messageRx);
  if (messageRx[0] != 0) {
    Serial.println((char*)messageRx);
    if(strncmp((char*)messageRx, "CALL C", 6) == 0){
      Serial.println((char*) "Appel recu"); // Affiche le message
      if(messageRx[7] == '1'){
        Serial.println("ON");
        digitalWrite(pin1, LOW);
        digitalWrite(pin2, LOW);
        isOn = true;
      }else if(messageRx[7] == '0'){
        Serial.println("OFF");
        digitalWrite(pin1, LOW);
        digitalWrite(pin2, HIGH);
        isOn = false;
      }
      delay(1500);
      int length = 7;
      char message[100] = "";
      reinitBuf(message, 100);
      strcat(message, "RECE C");
      //strcat(message, EOT);
      strcat(message, EOL);
      hc12.flush();
      for(int i = 0; i < 10; i++){
        hc12.write(message);
      }
      hc12.write(EOT);
    }else if(strncmp((char*)messageRx, "CALL D", 6) == 0){
      Serial.println((char*) "Envoyer mode"); // Affiche le message
      char message[100] = "";
      reinitBuf(message, 100);
      if(isOn){
        strcat(message, "RECE D 1");
      }else{
        strcat(message, "RECE D 0");
      }
      delay(1500);
      //strcat(message, EOT);
      strcat(message, EOL);
      Serial.print(message);
     
      hc12.flush();
      for(int i = 0; i < 10; i++){
        hc12.write(message);
      }
      hc12.write(EOT);
    }
  }
}

Il faut importer la librairie SoftwareSerial pour le HC12.

Les différents pins à configurer sont:

  • Réception HC12: Ligne 5
  • Émission HC12: Ligne 6
  • Set HC12: Ligne 7
  • Commandes des MOC3041: Lignes 3 et 4

Adaptez la configuration du HC12 pour qu’elle soit en phase avec les autres modules.

Dans la fonction loop:

  • Si le message reçu est “CALL C”, alors l’arduino va commander le MOC3041 correspondant au paramètre
    • CALL C 0 : Eteindre le chauffage
    • CALL C 1: Allumer le chaufage
  • Si le message reçu est “CALL D”, alors l’arduino va communiquer l’état actuel du chauffage

Conclusion

Il ne reste plus qu’à activer la fonctionnalité chauffage dans le programme Java qui orchestre tout ça! Votre chauffage devrait maintenant être commandé automatiquement.

Notre logement se connecte de plus en plus! Peut être ajouterons nous plus tard des interrupteurs connectés!

Dernière modification: 12 novembre 2019

Auteur

Commentaires

Écrire une réponse ou un commentaire

Votre adresse email ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.