Découvrez notre nouvelle Chaîne YouTube "Ingénierie & Bourse"

Objectifs de la vidéo

  • Comprendre la notion des heures creuses et les heures pleines
  • Comprendre l’utilité des heures creuses
  • Savoir utiliser le module RTC pour la programmation des taches dans les heures creuses (ou pleines)
  • Comprendre le principe du tarification des HC et et HP
  • Savoir programmer un chronogramme avec Arduino
  • Savoir créer des actions temporisées avec Arduino et la planification des actions
  • Etc.

Importance

Certains appareils, comme les chauffe-eau électriques, ont une capacité et une isolation adaptées pour maintenir l’eau suffisamment chaude pendant plusieurs heures. De ce fait, faire monter la température à une heure où l’utilisateur n’en a pas un besoin immédiat n’est pas gênant et est même financièrement intéressant si cela s’effectue à un tarif attractif4. D’autre appareils gros consommateurs mais non prioritaires (lave-vaisselle, lave-linge, sèche-linge, radiateurs à inertie, etc.) peuvent, dans la plupart des cas, être programmés pour bénéficier du tarif « heures creuses », lire la suite…

Exemple de chronogramme des HC et HP

 

heures-pleines-heures-creuses

Comment connaitre les plages des HC ?

Heures creuses

Comment lire la date et l’heure du module RTC ?

Programme Arduino

Fonction d’initialisation du module RTC

void InitRTC(void)
{
  if (! rtc.begin()) 
  {
    Serial.println("Le module RTC non disponible");
    while (1); // Attente RESET
  }
  else
  {
    Serial.println("Le module RTC est OK");
    rtc.writeSqwPinMode(DS1307_SquareWave4kHz);
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // Date du PC

    //rtc.adjust(DateTime(2020,1,24,10,10,10));     // Ajustement manuel 
    // Ex: 10 Janvier 2020 à 10:00:00:
    // rtc.adjust(DateTime(2020, 1, 10, 10, 0, 0));
  }
}

Fonction de lecture du module RTC

void GetDateHeure(word *DateHeure)
{
  // Lecture du module RTC
  DateTime now = rtc.now();

  // Récupération de la date 
  DateHeure[5]=now.year();        // Années
  DateHeure[4]=now.month();       // Mois
  DateHeure[3]=now.day();         // Jours 

  // Récupérration de l'heure 
  DateHeure[2]=now.hour();
  DateHeure[1]=now.minute();
  DateHeure[0]=now.second();
}

Le programme complet


/* 
 *  Projet Réduction de la facture d'électricité avec Arduino 
 *  wwww. Electronique-Mixte.fr
*/

#include  <Wire.h>
#include  "RTClib.h"
#define   PinM1 4
#define   PinM2 5
#define   PinM3 6


RTC_DS1307 rtc;
word DateHeure[6]={0,0,0,0,0};
word H,M; 

/*
 * JoursSem[0]: Secondes
 * JoursSem[1]: Minutes
 * JoursSem[2]: Heures
 * JoursSem[3]: Jours
 * JoursSem[4]: Mois
 * JoursSem[5]: Années 
 */
 
/*
  Mois      1-12
  Jours     1-31
  Heures    0-23
  Minutes   0-59
  Secondes  0-59
*/


 
void setup () 
{
  // Init port série (Test du Module RTC)
  Serial.begin(2400);
  
  // Init Module RTC (Ajustement de la date & l'heure) 
  InitRTC(); 

  // Init des Sorties digitales  
  pinMode(PinM1, OUTPUT); 
  pinMode(PinM2, OUTPUT); 
  pinMode(PinM3, OUTPUT); 
   
}
void loop () 
{
  // Lecture du module RTC 
  GetDateHeure(DateHeure);
  
  //Récupération des Heures & les Minutes
  M=DateHeure[1]; // Minutes   0-59
  H=DateHeure[2]; // Heures    0-23

  // Heures Creuses 1 - 12h-16h 
  if(H>=12 && H<16) 
  {
    // Allumage de la Machine à laver; 
    digitalWrite(PinM1, HIGH); 
    // Mise en marche du chauffe-eau;
    // Mise en  marche lave vaisselles; 
    // ...
    
  }
  else
  // Heures Creuses 2 - 21:30-00:00 (inclus) 
  if((H*60+M>=21*60+30) && (H>=0))
  {
    // Allumage de la Machine à laver;
    digitalWrite(PinM1, HIGH);  
    // Mise en marche chauffe-eau;
    // Mise en  marche lave vaisselles; 
    // ...
  }
  else
  // Heures Creuses 3 - 1:00-7:30 
  if((H>=1) && (H*60+M<=7*60+30))
  {
    // Allumage Machine à laver; 
    digitalWrite(PinM1, HIGH); 
    // Mise en marche chauffe-eau;
    // Mise en  marche lave vaisselles; 
    // ...
  }
  else
  // Heures Pleines
  {
    // Arrêt  de la Machine à laver; 
    digitalWrite(PinM1, LOW); 
    // Mise en arrêt du chauffe-eau;
    // Mise en  arrêt de lave vaisselles; 
    // ...
  }
}




void GetDateHeure(word *DateHeure)
{
  // Lecture du module RTC
  DateTime now = rtc.now();

  // Récupération de la date 
  DateHeure[5]=now.year();        // Années
  DateHeure[4]=now.month();       // Mois
  DateHeure[3]=now.day();         // Jours 

  // Récupérration de l'heure 
  DateHeure[2]=now.hour();
  DateHeure[1]=now.minute();
  DateHeure[0]=now.second();
}

void InitRTC(void)
{
  if (! rtc.begin()) 
  {
    Serial.println("Le module RTC non disponible");
    while (1); // Attente RESET
  }
  else
  {
    Serial.println("Le module RTC est OK");
    rtc.writeSqwPinMode(DS1307_SquareWave4kHz);
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // Date du PC

    //rtc.adjust(DateTime(2020,1,24,10,10,10));     // Ajustement manuel 
    // Ex: 10 Janvier 2020 à 10:00:00:
    // rtc.adjust(DateTime(2020, 1, 10, 10, 0, 0));
  }
}

Tout les Projets Arduino


0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Anti-Robot *

You have successfully subscribed to the newsletter

There was an error while trying to send your request. Please try again.

FPGA | Arduino | Matlab | Cours will use the information you provide on this form to be in touch with you and to provide updates and marketing.