Catégories
Arduino électronique Projets Arduino Projets électroniques

Projet Réduire sa facture d’électricité avec Arduino

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

Laisser un commentaire