Montre DIY open-source: écran e-paper 1.54" avec rafraîchissement partiel, microcontrôleur nRF52840 BLE low-power, boîtier imprimé 3D. Autonomie visée: 2-4 semaines.
Après recherche multi-agent (écrans, MCUs, projets de référence), voici les composants retenus.
Comparatif des écrans e-paper candidats. Critères: taille <2", partial refresh (sans flicker), disponibilité retail.
Ghosting: tous les panneaux Good Display avec partial refresh accumulent du ghosting après ~5 updates consécutifs. Solution: full refresh périodique (toutes les 5 partial updates, ou toutes les 1-5 minutes). Le VCOM peut être ajusté dans le code pour mitigater.
Comparatif des MCUs pour montre batterie. Critère principal: sleep current (plus bas = meilleure autonomie), puis SPI pour e-paper, puis écosystème dev.
Projets open-source de montres DIY existants. Watchy v3 est le seul qui combine e-paper + case 3D + open hardware complet — c'est notre base. Les autres servent de référence pour le power management (PineTime, Bangle.js 2) et le firmware (InkWatchy).
Liste complète des composants avec liens d'achat. Le XIAO nRF52840 a un chargeur LiPo onboard (BQ25101) — si tu utilises le XIAO directement sans PCB custom, skip le TP4056, le LDO et l'USB-C, ce qui ramène à ~$18.
Le hardware de Watchy v3 (repo sqfmi/watchy-hardware) est notre base. On copie le circuit boost e-paper (MCU-agnostique), le pinout FPC, et on remplace l'ESP32-S3 par le nRF52840.
Le SSD1681 ne génère pas les ±15V seul. Il pilote un MOSFET externe (GDR) pour le +15V (PREVGH) et une pompe à diode pour le -15V (PREVGL). Ce sous-circuit est indépendant du MCU — directement réutilisable.
• LDO: remplacer AP2112K (~55µA Iq) par ME6211 (~1µA Iq) — crucial pour le budget sommeil
• RTC: nRF52840 a RTC interne + oscillateur 32kHz, pas besoin d'IC externe (PCF8563 optionnel pour précision)
• Antenne BLE: le XIAO a déjà l'antenne — sur PCB custom, suivre le layout Raytac MDBT50Q
• USB: le XIAO a USB-C natif — sur PCB custom, remplacer Micro-USB par USB-C
• Diviseur batterie: utiliser résistances haute valeur (3.6MΩ/1MΩ) pour réduire la conso idle
Stack recommandé: GxEPD2 (driver e-paper) sur Arduino-core nRF52840. Le driver GDEY0154D67 est MCU-agnostique — zéro modification nécessaire.
• GxEPD2_154_GDEY0154D67.cpp/h — driver SSD1681, init, partial/full refresh, hibernate
• GxEPD2_EPD.cpp/h — base SPI + busy-wait
• Adafruit_GFX — rendu texte/bitmaps
• Pattern display.hibernate() avant sleep MCU
• Pattern sleep nRF52 de InfiniTime SystemTask.cpp (~50 lignes)
• Pin definitions (~20 lignes) — mapper CS/SCK/MOSI/DC/RES/BUSY sur GPIO du XIAO
• Main loop — wake → update display (partial) → hibernate → sleep → repeat (60s pour l'heure, bouton pour menu)
• BLE companion — notification forwarding + time sync (Bluefruit a des exemples)
• Watch faces — au minimum une face analogique + une digitale
Le partial refresh accumule du ghosting après ~5 updates consécutifs. Solution: full refresh toutes les ~5 partial updates (ce que font Watchy et InkWatchy). Le full refresh prend 2.6s (fast mode 1.5s via 0xd7 au lieu de 0xf7).
Le partial refresh repose sur deux buffers du SSD1681: 0x24 (image NEW) et 0x26 (image PREVIOUS). Le contrôleur ne change que les pixels où new != previous.
• GxEPD2 — driver e-paper complet
• InfiniTime — sleep pattern nRF52 FreeRTOS
• InkWatchy — ghosting fix, BLE HID, UI Rust/Slint
• Watchy firmware — Arduino base, GxEPD2, RTC, deep-sleep
Estimation basée sur les consommations mesurées du nRF52840 (PineTime/InfiniTime) et de l'écran e-paper (GxEPD2 hibernate).
Autonomie théorique: 200mAh / ~4 mAh/jour ≈ ~50 jours (sans BLE actif). Avec BLE connecté pour notifications: ~1-2 semaines.
Le BMA423 en mode low-power consomme ~14µA, le nRF52840 System ON ~1.5µA, mais les composants passifs (LDO Iq, diviseur ADC, pulls) ajoutent ~10-20µA. Réel visé: 20-60µA idle → 2-4 semaines avec BLE, 4-8 semaines sans.
8 phases sur ~6-8 semaines (dont 2-4 semaines d'attente shipping).
Liens GitHub, datasheets, guides d'achat.
| Risque | Mitigation |
|---|---|
| Soudure BMA423 LGA-12 (2x2mm) | Utiliser breakout Adafruit LIS3DH (~$7.50, I2C compatible) si pas d'expérience soudeuse fine |
| Boost e-paper (~15V) | Copier exactement le schéma Watchy (L2+Q3+D3-D5+C20-C21) — validé en prod par des milliers de Watchy |
| Ghosting e-paper | Full refresh toutes les 5 partial updates — pattern utilisé par tous les projets e-paper |
| Antenne BLE sur PCB custom | Suivre le layout Raytac MDBT50Q reference design (pi-match network) |
| LDO Iq trop haute | Remplacer AP2112K (55µA) par ME6211 (1µA) — divise par 55 la conso sleep du régulateur |