
Développer un système d’alarme connecté à une centrale de contrôle avec des fonctions tels que; envoi de messages entre deux systèmes (centrale de surveillance et système d’alarme), affichage de l’heure en temps réel sans utilisation de délais, lecture de la température et de l’humidité, détection de mouvements et utilisation d’un clavier numérique pour la saisie de valeurs.
Le projet sera réalisé en trois (3) étapes:
Pondération: 25/40
Date de remise: 2022.12.02 – 16h00



// Projet de session 2022
// Document de départ
// ==============================================
// Insérez ICI le commentaire d'entête du fichier
// ==============================================
#include "mesdefines.h"
// NOTE IMPORTANTE: Ne placez aucune macro, enum, déclaration de fonctions,
// const,include (sauf pour 'mesdefines.h),dans ce fichier.
// Déclaration des objets à portée globale:
TM1637 affichageHorloge(CLK, DIO);
DS1307 horloge;
Adafruit_ILI9341 ecranCentraleSurveillance = Adafruit_ILI9341(TFT_CS, TFT_DC);
LiquidCrystal_I2C ecranPrincipal(LCD_ADRESSE_I2C,LCD_NB_COLONNE,LCD_NB_LIGNE);
// ********************************************************
void setup()
// ********************************************************
{
Serial.begin(UART_VITESSE_CONSOLE);
//NOTE: Placer une chaine de caractères entre F() permet de la stocker
// dans la mémoire programme au lieu de la mémoire variable.
//
// Étant donné qu'il n'y a pas beaucoup de mémoire variable,
// c'est une bonne pratique.
Serial << F(MSG_DEMARRAGE_DU_PROJET);
Serial << F(MSG_PROJET_PAR );
Serial << F(MSG_DEBUT_INIT);
initialisationDesAppareils();
Serial << F(MSG_FIN_INIT);
afficherPageEcran(centraleEcranOuverture);
afficherPageEcran(ecranOuverture, UNE_SECONDE * 2);
afficherPageEcran(ecranInstruction);
// Début de Lecture du bouton et affichage de l'heure en mode non bloquant
// ...
// Fin de Lecture du bouton
if (connexionALaCentrale()){
afficherPageEcran(systemeEnLigne);
}
} // setup
// ********************************************************
void loop()
// ********************************************************
{
afficherTemps();
} // loop()
// ********************************************************
void afficherPageEcran(Ecrans ecran, int delai = 0)
// ********************************************************
{
} // afficherPageEcran
// ********************************************************
void initialisationDesAppareils()
// ********************************************************
{
//Initialisation du UART de la centrale
//Initialisation du UART du système d alarme
//Initilisation du LCD
//Initialisation du TFT
//Initialisation du bouton
//Initialisation du 4-digit
//Initialisation du RTC
} // initialisationDesAppareils
// ********************************************************
boolean connexionALaCentrale()
// ********************************************************
{
// Retourner 'true' ou 'false' selon le cas.
} // connexionALaCentrale
// ********************************************************
void afficherTemps()
// ********************************************************
{
} // afficherTemps
NOTE IMPORTANTE: Vous devez démarrer votre projet à partir du code précédent et programmer les différentes fonctions en place. Si ce n’est pas le cas, votre projet sera refusé.




| Respect du devis, commentaires, implémentation des fonctions, pages écrans | 30% |
| Affichage de l’heure, clignotement du ‘:’ et fonction non bloquante | 20% |
| Élaboration du schéma de connexion des éléments électroniques sous Wokwi | 10% |
| Utilisation correct du fichier « mesdefines.h » | 10% |
| Utilisation correct des deux enum: Ecrans et codesAlarme | 10% |
| Communication UART entre les deux systèmes | 20% |
LEA, au plus tard à la date mentionnée plus haut.
Il faut remettre,
1 – un fichier .zip du projet:

2 – un fichier contenant le lien vers le projet Wokwi.
Pondération: 15/40
Date de remise: 2022.12.09 – 16h00
ATTENTION, Il ne faut pas réaliser l’étape 02 dans le projet de l’étape 01. IL FAUT TRAVAILLER À PARTIR D’UNE COPIE.
1.0 – Afficher l’écran suivant (après le dernier écran de l’étape 01)

2 – Ajouter un clavier numérique au projet:

2.2 – Voici comment lire les touches du clavier:
char key = keypad.getKey();
if (key != NO_KEY) { // Si touche appuyée
valeurCle = key - 48; // convertir la valeur du caractère en valeur numérique. Par exemple, '0' vaut 48.
Serial << key;
ecranPrincipal << key;
}
3 – Connecter un détecteur de mouvement et une DEL


4 – Lire et valider le code d’alarme


IMPORTANT,
LEA, au plus tard à la date mentionnée plus haut.
Pour l’étape 02 de l’épreuve synthèse, il faut enregistrer votre étape 01 en ‘save copy’ sous WOKWI et travailler avec cette nouvelle copie.
Il faudra remettre un lien vers la version 02 de votre projet.
ATTENTION, Il ne faut pas réaliser l’étape 02 dans le projet de l’étape 01.
Il faut remettre,
1 – un fichier .zip du projet:

2 – un fichier contenant le lien vers le projet Wokwi.

Pondération: 10/10
Date de remise: 2022.12.19
4.1 – Exemple d’utilisation d’un écran TFT ILI9341 (voir les exemples pointés par ce lien).
Voici les broches à utiliser, sous Wokwi, pour relier un écran TFT ILI9341 à un Arduino MEGA:
Et pour les librairies:
#include "SPI.h" #include "Adafruit_GFX.h" #include "Adafruit_ILI9341.h"
