- Commande tactile pour les lumières et le ventilateur
- Commandes vocales hors ligne pour une utilisation mains libres
- Une interface utilisateur Web locale pour le contrôle à distance depuis un téléphone ou un ordinateur portable
- Minuterie d’étude (style Pomodoro)
- Liste de choses à faire
- Rappels de médicaments
- Affichage de la température
- Écran de verrouillage avec diapositive pour déverrouiller
- Écran tactile capacitif intégré
- Wi-Fi pour l’interface utilisateur Web locale (aucun cloud requis)
- MCU double cœur pour interface utilisateur + serveur Web + voix + capteurs
- Format compact et convivial
Schéma de circuit

- RX vers GPIO 44
- Émission vers GPIO 43
- Terre à Terre
- VCC à 3V
- DONNÉES vers GPIO 42
- Terre à Terre
- VCC à 3V
- IN1 vers GPIO 10
- IN2 vers GPIO 14
- IN3 vers GPIO 13
- VCC à 3V
- Terre à Terre
- IN1 vers GPIO 10
- IN2 vers GPIO 14
- IN3 vers GPIO 13
- VCC à 3v
- Terre à Terre
- Borne positive du moteur au GPIO 21
- Borne négative du moteur à GND
- Émission vers GPIO 44
- RX vers GPIO 43
- Terre à Terre
- VCC à 3v
- Données vers GPIO 42
- VCC à 3v
- Terre à Terre
Étape 6 : Connectez le buzzer (alertes et notifications)
- Borne positive du buzzer au GPIO 41
- Borne négative du buzzer à GND
- Réveillez le module en utilisant le mot de réveil par défaut
- Dire « Apprendre le mot d’éveil » pour entraîner une commande de réveil personnalisée (facultatif)
- Suivez les invites vocales pour enregistrer votre nouveau mot de réveil
- Dire « Apprendre le mot de commande » pour démarrer l’entraînement aux commandes de contrôle
- (par exemple, « Allumer un », « Vitesse du ventilateur trois », « Minuterie d’ouverture »)
- Répétez chaque commande lorsque vous y êtes invité (2 à 3 fois)
- Dire « Quitter l’apprentissage » terminer la formation

- Écran du contrôleur
- Écran de minuterie
- Écran de liste de tâches
- Écran de liste de médicaments

- Commandes Lumière 1, Lumière 2, Lumière 3 ON/OFF
- Contrôle le ventilateur ON/OFF

- Appuyez deux fois sur l’icône du ventilateur : une fenêtre contextuelle apparaît
- Utilisez + et – pour augmenter ou diminuer la vitesse du ventilateur

- Régler l’heure au format HH:MM:SS
- +/- ajuste les heures, les minutes, les secondes
- Lecture/Pause pour démarrer et arrêter la minuterie
À la fin du chronomètre :

- Le buzzer sonne
- L’écran Big Timer DONE apparaît
Écran de liste de tâches

- Les tâches ajoutées depuis l’interface utilisateur Web apparaissent ici
- Appuyez sur n’importe quelle tâche pour afficher le texte intégral
- La case à cocher sur le côté supprime la tâche (tâche terminée)
Écran de liste de médicaments
- Les médicaments ajoutés depuis l’interface utilisateur Web apparaissent ici
- Cocher la case arrête les rappels supplémentaires pour cette dose

Écran de verrouillage
- Verrouillage automatique après inactivité
- Affiche l’heure, la température, faites glisser pour déverrouiller
- Réveillez-vous par le toucher ou la voix

Interface utilisateur Web (tableau de bord Web local)

Commandes d’éclairage et de ventilateur

- Lumière 1, Lumière 2, Lumière 3 ON/OFF
- Ventilateur marche/arrêt
- Vitesse du ventilateur réglée via le menu déroulant
Ajouter une section de tâches

- Ajouter des tâches (max 5 tâches)
- Le bouton D supprime une tâche
- Les modifications se synchronisent instantanément sur l’appareil
Section Liste des médicaments

- Ajouter le nom du médicament + l’heure + AM/PM
- Ajouter un bouton pour enregistrer
- Le bouton D supprime le médicament
- Synchronisation en temps réel avec l’appareil
#include
#include
#include
#include
#include
#include "DFRobot_DF2301Q.h"
#define LGFX_ESP32_S3_BOX_V3
#include
#define GPIO_LIGHT1 10
#define GPIO_LIGHT2 14
#define GPIO_LIGHT3 13
#define FAN_PWM_PIN 21
#define BUZZER_PIN 41
#define DHTPIN 42
#define ASR_RX 44
#define ASR_TX 43
enum Screen { SCREEN_MAIN, SCREEN_TIMER, SCREEN_TASKS, SCREEN_TASK_DETAIL, SCREEN_MEDICINES };
Screen currentScreen = SCREEN_MAIN;
- drawMain() : Lumières et ventilateur
- drawTimer() : minuterie d’étude
- drawTasks() : liste de tâches
- drawTaskDetail() : vue complète des tâches
- drawMedicines() : rappels de médicaments
- drawLockScreen() : Horloge + Température + glisser pour déverrouiller
if(lcd.getTouch(&x, &y)) { ... }
- Boutons pour basculer les lumières et le ventilateur
- Appuyez deux fois pour ouvrir la fenêtre contextuelle de vitesse du ventilateur.
- Les valeurs de la minuterie sont ajustées
- Les tâches sont sélectionnées ou supprimées
- Le curseur de l’écran de verrouillage déverrouille l’interface utilisateur
uint8_t cmd = asr.getCMDID();
if(cmd){
handleVoiceCommand(cmd);
}
ledcAttach(FAN_PWM_PIN, FAN_PWM_FREQ, FAN_PWM_RES);
case 1: duty = 51; // 20%
case 2: duty = 102; // 40%
case 3: duty = 153; // 60%
case 4: duty = 204; // 80%
case 5: duty = 255; // 100%
WebServer server(80);
- /11, /12, //13 – Basculer les lumières
- /fan – Activer/désactiver le ventilateur
- /speed?val=3 – définir la vitesse du ventilateur
- /add, /deltask – gérer les tâches
- /addmed, /delmed – gérer les médicaments
- /status – État JSON en direct
- Utilise millis() pour le compte à rebours
- Montre grand MINUTERIE TERMINÉE écran
- Joue une alerte sonore
Rappel de médicaments :
- Synchronisation de l’heure NTP
- Vérifie toutes les quelques secondes
- Déclenche popup + buzzer
- Fenêtre contextuelle de fermeture automatique
- Permet de marquer le médicament comme pris
if(!isLocked && millis() - lastUserInteraction > 10000){
isLocked = true;
}
- Heure (NTP)
- Température ambiante (DHT11)
- Glisser pour déverrouiller l’interface utilisateur
- Gérer les requêtes Web
- Lire les commandes vocales
- Minuterie de mise à jour
- Vérifier l’heure des médicaments
- Lire la température
- Toucher la poignée
- Écran de verrouillage automatique
- Actualiser l’interface utilisateur
Retrouvez l’histoire de Raspberry Pi dans cette vidéo :

