Documentation technique de la version française et du pilote de LED RGB (XL-2020RGBC-2812B)
Topologie de communication et brochage matériel
I. Table de configuration des broches et caractéristiques électriques
Catégorie de matériel
Alias du port
Broche STC32G
Description de la logique de commande
🌈 LED RGB Adressable
WS2812_DI
P0.0
Signal de commande unique, protocole 800Kbps, initialisé à 0.
📳 Moteur de Vibration
MOTOR
P2.5
Commande tout-ou-rien. Sortie à 1 active la vibration, 0 l'arrête.
▲ Bouton de direction (Haut)
KEY_UP
P0.1
Entrée avec résistance de pull-up interne. Actif à l'état bas (0).
▼ Bouton de direction (Bas)
KEY_DOWN
P0.3
Entrée avec résistance de pull-up interne. Actif à l'état bas (0).
🆘 Bouton d'urgence / Appairage
KEY_SOS
P0.2
Entrée avec résistance de pull-up interne. Actif à l'état bas (0).
II. Décisions clés de conception (Design Decisions)
💡 Décision 1 : Interface utilisateur 100% en Français (French-only UI)
Conformément aux exigences actuelles, le système prend uniquement en charge l'affichage en langue française. Toutes les chaînes de l'interface ont été traduites pour tenir sur l'écran OLED de 120 pixels de largeur (maximum 15 caractères par ligne). Les coordonnées horizontales des icônes ont été ajustées en conséquence pour garantir un centrage parfait et éviter les chevauchements.
📡 Décision 2 : Intégration de la LED RGB Adressable (XL-2020RGBC-2812B)
Les trois LED d'origine sont remplacées par une unique LED intelligente utilisant un protocole de type WS2812B (800Kbps). Pour conserver la logique temporelle existante de clignotement et de contrôle d'état, nous émulons LED_R, LED_G, LED_B en tant que bits mémoire virtuels. Lorsque l'interruption détecte un changement d'état, elle génère dynamiquement la trame GRB 24 bits et l'envoie à la broche P0.0 par modification logicielle directe (bit-bang) avec désactivation temporaire des interruptions.
III. Rendu de l'interface et gestion de l'écran
1. Envoi séquentiel de trames binaires (`LCD_DrawMonoBitmap`)
Utilise l'interface SPI matérielle pour adresser une fenêtre rectangulaire, éliminant tout besoin de mémoire tampon en RAM (zéro allocation de frame buffer). Les performances de balayage d'écran sont ultra-rapides et optimales.
2. Définition des coordonnées d'affichage
L'affichage utile sur l'écran circulaire est optimisé dans les coordonnées suivantes :
Page Horloge : Icône de batterie à X=92, Y=27, et pourcentage "85%" à X=62, Y=24. La date "JEU 07-02" est au centre à Y=155. Les icônes et textes "ARME" (X=52) / "DESARME" (X=42) sont parfaitement centrés à Y=202.
Menu d'appairage : Affiche le titre "MENU APPAI." à Y=30. Les éléments du menu (ex. "DETEC. PORTE") sont dessinés de manière dynamique et le choix actif est encadré à Y=118 par un rectangle de couleur cyan.
Alerte & SOS : Pour l'alarme SOS, le titre "SOS EMIS" s'affiche à Y=125, et "BRACELET ACTIF" à Y=155. Pour les capteurs, le nom (ex. "PORTE ENTREE") est affiché à Y=120, et le texte "ZONE X | ALARME" est affiché à Y=155.
IV. Liste de contrôle des validations (Task Checklist)