Variante ANCRE du projet UWB DW3000 : carte tout-en-un NodeMCU ESP8266 (ESP-12F) avec écran OLED 0.96" SSD1306 soudé sur le PCB (Micro-USB, CH340), + module DWM3000 (Qorvo, SPI) raccordé en externe. L'OLED affiche localement l'ID de l'ancre et la distance mesurée vers le Tag.
GPIO4 (SDA = D2) et GPIO5 (SCL = D1), mais certaines variantes utilisent GPIO14/GPIO12. Conséquence importante : si le fabricant a utilisé D5/D6 (= HSPI SCK/MISO) pour l'OLED, il y a conflit avec le DWM3000 → vérifier la sérigraphie au dos du PCB ou la fiche AliExpress avant montage. Idéal : OLED sur D1/D2, DWM3000 sur D5–D8 (libres).
A0 en haut → VIN en bas (broches utilitaires, non utilisées ici).D0 en haut → 3V3 en bas — c'est là que partent les 8 fils du DWM3000.D1 (SCL) et D2 (SDA) sont réservés à l'OLED interne — ne rien y connecter en externe.| Signal | Sérigraphie | GPIO | Côté | Position (USB en bas) | DWM3000 | Couleur fil |
|---|---|---|---|---|---|---|
| VCC | 3V3 | — | Droite | 1ère broche en bas (juste au-dessus de l'USB) | VCC | Rouge |
| GND | GND | — | Droite | 2ème en bas | GND | Noir |
| SCK | D5 | GPIO14 | Droite | 8ème depuis le bas | SCK | Orange |
| MOSI | D7 | GPIO13 | Droite | 6ème depuis le bas | MOSI | Vert |
| MISO | D6 | GPIO12 | Droite | 7ème depuis le bas | MISO | Bleu |
| CS | D8 | GPIO15 | Droite | 5ème depuis le bas | CS_n | Violet |
| IRQ | D3 | GPIO0 | Droite | 4ème depuis le haut | IRQn | Rose |
| RST | D0 | GPIO16 | Droite | 1ère depuis le haut | RSTn | Cyan |
| Signal OLED | Sérigraphie ESP8266 | GPIO | Câblage | Adresse I²C par défaut |
|---|---|---|---|---|
| SCL | D1 | GPIO5 | Interne (piste PCB) | 0x3C (parfois 0x3D) |
| SDA | D2 | GPIO4 | Interne (piste PCB) | |
| VCC / GND | — | — | Alimentés par le PCB depuis le rail 3V3 du régulateur AMS1117 — rien à faire. | |
⚠ À vérifier sur ta carte : certaines variantes du fabricant câblent l'OLED sur d'autres GPIO (par ex. GPIO14/GPIO12). Lance un I²C scanner dès la première mise sous tension : si rien n'est détecté sur D1/D2, essayer Wire.begin(SDA, SCL) avec des broches alternatives, ou consulter la sérigraphie au dos du PCB.
Définitions de broches à adapter dans le firmware (ESP8266 / Arduino) :
// ============ DWM3000 (HSPI matériel) ============ #define PIN_SCK 14 // D5 — HSPI CLK #define PIN_MOSI 13 // D7 — HSPI MOSI #define PIN_MISO 12 // D6 — HSPI MISO #define PIN_CS 15 // D8 — HSPI CS (⚠ strap pin pull-down) #define PIN_IRQ 0 // D3 — IRQ DW3000 (⚠ strap pin BOOT — pull-up 10 kΩ) #define PIN_RST 16 // D0 — Reset DW3000 (GPIO16, pas d'IRQ mais sortie OK) // ============ OLED SSD1306 (I²C) ============ #define OLED_SDA 4 // D2 #define OLED_SCL 5 // D1 #define OLED_ADDR 0x3C #define OLED_W 128 #define OLED_H 64
Côté Arduino IDE :
esp8266 by ESP8266 Community (v3.1.2+ recommandé)NodeMCU 1.0 (ESP-12E Module)Adafruit_SSD1306 + Adafruit_GFX115200 baud160 MHz recommandé (le DS-TWR a besoin de marge sur les timings)dw3000_uwb_ranging.ino utilise la lib Makerfabs (ESP32). Pour ESP8266 il faudra :
SPIClass(VSPI) par le SPI matériel ESP8266 (SPI.pins(14, 12, 13, 15)).delayMicroseconds() et timings DS-TWR (en UWB µs) restent valides à 160 MHz mono-cœur.dw3000_trilat.h (WiFi UDP) → ESP8266WiFi.h + WiFiUdp.h (API très proche mais include différent).0x3C par défaut, parfois 0x3D).D3 (GPIO0) = IRQ DW3000 : doit être HIGH au démarrage. Le DWM3000 met sa ligne IRQ à 0 par défaut → ajouter une résistance pull-up 10 kΩ entre D3 et 3V3, ou maintenir RST_DW3000 à 0 (DWM3000 désactivé) le temps du boot puis le relâcher dans setup().D8 (GPIO15) = CS DW3000 : doit être LOW au boot. La carte LoLin a déjà un pull-down 12 kΩ ; le module DW3000 doit aussi être déconnecté du rail 3V3 ou en RST=0 pour ne pas tirer la ligne HIGH avant que l'ESP8266 démarre.D4 (GPIO2) = LED bleue onboard : pas utilisée ici, mais ne pas y mettre un signal LOW au boot.SD0-SD3, CMD, CLK (côté gauche, GPIO6-11) — connectées au flash SPI interne de l'ESP-12E. Les exposer est trompeur, ne jamais y câbler.D0 (GPIO16) — n'a pas d'interruption, n'a pas de PWM, et conflit avec la fonction wake-from-deep-sleep. OK pour un GPIO de reset, pas pour autre chose.RX/TX (GPIO3/GPIO1) — bus série USB ; câbler dessus rend le flashage impossible.VU = 5 V brut depuis l'USB (post-diode) — utile pour alimenter du 5 V externe, mais jamais en sortie GPIO.| Board | NodeMCU 1.0 (ESP-12E Module) |
| Board package | esp8266 by ESP8266 Community (v3.1.2+)URL gestionnaire de cartes : https://arduino.esp8266.com/stable/package_esp8266com_index.json |
| Upload Speed | 115200 baud (fiable). 921600 possible si le câble USB est court et de bonne qualité. |
| CPU Frequency | 160 MHz (recommandé pour DS-TWR) |
| Flash Size | 4MB (FS:2MB OTA:~1019KB) |
| Flash Mode | DIO (par défaut, compatible LoLin V3) |
| Debug Port / Level | Disabled / None |
| lwIP Variant | v2 Lower Memory (laisse plus de RAM pour DS-TWR) |
| Erase Flash | Only Sketch (utiliser All Flash Contents uniquement au premier flash ou en cas de bug WiFi) |
| Port | COM correspondant au CH340G (Windows : Gestionnaire de périphériques → « USB-SERIAL CH340 (COMx) ») |
La LoLin V3 auto-reset via le CH340G. Si l'IDE bloque sur « espcomm sync failed » :
Le mode flashage met automatiquement D8 (CS) à LOW et D3 (IRQ) à HIGH via le CH340 — c'est pour ça qu'il faut respecter les contraintes des strap pins ci-dessus.
| Carte | Broches | USB | SCK / MOSI / MISO | CS / IRQ / RST | OLED SDA/SCL | Notes |
|---|---|---|---|---|---|---|
| NodeMCU + OLED 0.96" intégré (réf. ce schéma) | 30 | Micro-USB | D5 / D7 / D6 | D8 / D3 / D0 | D2 / D1 (interne) | Carte tout-en-un AliExpress 1005006919941965. ESP-12F + OLED SSD1306 soudé. CH340G. |
| LoLin V3 (NodeMCU classique, sans OLED) | 30 | Micro-USB | D5 / D7 / D6 | D8 / D3 / D0 | D2 / D1 (externe) | Large PCB (~31 mm). CH340G. Double rail 3V3+GND. OLED à câbler séparément. |
| NodeMCU Amica V2 | 30 | Micro-USB | D5 / D7 / D6 | D8 / D3 / D0 | D2 / D1 | Plus étroite (~25 mm), chip CP2102. Pinout identique. |
| Wemos D1 Mini | 16 | Micro-USB | D5 / D7 / D6 | D8 / D3 / D0 | D2 / D1 | Compact (~25×35 mm). Mêmes alias de broches, breadboard friendly. |
| Wemos D1 R2 (forme Uno) | — | Micro-USB | D13 / D11 / D12 | D10 / D2 / D5 | D14 / D15 | Format Arduino Uno — alias de pin différents, vérifier la sérigraphie. |
| ESP-01 / ESP-01S | 8 | — | — | — | — | ⚠ Trop peu de GPIO pour DWM3000 + OLED simultanément. |
Schéma adapté à la variante ANCRE NodeMCU LoLin V3 + DWM3000 + OLED 0.96" — projet UWB DW3000 — 2026.