- Plan d'implémentation - Bracelet Intelligent
+ 手环端开发计划书 (V1.2) - 纯法语 UI & 幻彩 RGB LED
-
Plan d'implémentation du Bracelet (V1.2)
-
Documentation technique de la version française et du pilote de LED RGB (XL-2020RGBC-2812B)
+
手环端开发计划书 (V1.2)
+
STC32G12K128 核心手环系统开发及 UI 渲染方案说明(法语及单线 RGB 版)
-
Topologie de communication et brochage matériel
+
手环系统硬件接口与数据流拓扑图
+
+
+
📊 代码逻辑运行流程图
+
+
主循环与 Timer1 中断、RF 双模解码流程
+
+
+
-
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
+
硬件功能分类
+
端口别名
+
STC32G 引脚
+
驱动电气逻辑说明
-
🌈 LED RGB Adressable
+
🌈 单线制幻彩 RGB LED
WS2812_DI
P0.0
-
Signal de commande unique, protocole 800Kbps, initialisé à 0.
+
单线级联数据输入,800Kbps 归零码协议,推挽输出,上电初始化输出 0。
-
📳 Moteur de Vibration
+
📳 振动驱动马达
MOTOR
P2.5
-
Commande tout-ou-rien. Sortie à 1 active la vibration, 0 l'arrête.
+
直流控制,输出 1 开启马达,输出 0 停止。
-
▲ Bouton de direction (Haut)
+
▲ 方向按键 (上)
KEY_UP
P0.1
-
Entrée avec résistance de pull-up interne. Actif à l'état bas (0).
+
按下为 0,带内部上拉输入。
-
▼ Bouton de direction (Bas)
+
▼ 方向按键 (下)
KEY_DOWN
P0.3
-
Entrée avec résistance de pull-up interne. Actif à l'état bas (0).
+
按下为 0,带内部上拉输入。
-
🆘 Bouton d'urgence / Appairage
+
🆘 紧急/对码按键
KEY_SOS
P0.2
-
Entrée avec résistance de pull-up interne. Actif à l'état bas (0).
+
按下为 0,带内部上拉输入。
-
II. Décisions clés de conception (Design Decisions)
+
二、 核心设计决策 (Design Decisions)
-
💡 Décision 1 : Interface utilisateur 100% en Français (French-only UI)
+
💡 决策 1:纯法语语言包(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.
+ 由于系统调整为仅需要法语界面,因此移除了原本复杂的中文字库寻址及字库空间分配方案。全界面文案已替换为符合法语习惯的词汇。为了适应 120 像素宽的 OLED 屏幕边界,各短语的长度被严格控制在 15 个字符以内以防止屏幕溢出,并微调了各个关键界面的显示坐标(如 "DESARME" 页面图标与文字)实现完美居中。
-
📡 Décision 2 : Intégration de la LED RGB Adressable (XL-2020RGBC-2812B)
+
📡 决策 2:单线制幻彩 RGB LED 驱动集成 (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.
+ 原三路 GPIO 独立驱动的共阳极三色 LED 更换为内置 IC 的单线级联式幻彩 LED 珠。由于 STC32G 工作在 24MHz 1T 模式下(每周期 41.67ns),通过在软件上实现精准 NOP 指令延时的 bit-bang 驱动,通过 P0.0 引脚向 LED 发送符合 800Kbps 时序(T0H/T0L/T1H/T1L 归零码)的 24 位 GRB 数据流。为了不影响原有各状态下复杂的灯效和马达波形逻辑,我们仅将 LED_R/G/B 重新定义为内存中的虚拟 bit 变量。在 1ms 中断服务程序末尾,当检测到这些虚拟变量的数值发生改变时,自动触发一次单线数据发送,从而实现了上层逻辑的 100% 兼容。
-
III. Rendu de l'interface et gestion de l'écran
+
三、 UI 渲染引擎细节与坐标规划
-
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.
L'affichage utile sur l'écran circulaire est optimisé dans les coordonnées suivantes :
+
2. 圆形视口安全区域划分
+
由于屏幕物理切边,有效显示区收拢在 X 坐标 [10, 110],Y 坐标 [30, 210] 的安全圆形范围内:
-
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.