Adaptation matérielle du firmware dw3000_uwb_ranging.ino pour Arduino Mega 2560 Pro (Mini).
SCK, MOSI, CS, RST) doivent passer par un convertisseur de niveau bidirectionnel
(TXS0108E, ou diviseur résistif 1k/2k pour un montage rapide). La ligne MISO (DW3000 → Mega) et IRQ (DW3000 → Mega) sont dans le sens 3.3 V → 5 V :
le Mega lit un niveau HAUT à partir de ~3 V, donc cela passe directement, mais un shifter bidirectionnel les gère aussi proprement.
| Signal | Broche Mega 2560 Pro | Sens | Niveau | Broche DWM3000 | Remarque |
|---|---|---|---|---|---|
| VCC | 3.3V | — | 3.3 V | VCC | Vérifier que la sortie 3.3V du Mega supporte ~150 mA crête (TX). Sinon, alim externe LDO 3.3V. |
| GND | GND | — | 0 V | GND | Masse commune obligatoire (Mega + shifter + DWM3000). |
| SCK | D52 | Mega → DWM | 5V → 3.3V | SCK | SPI matériel. Passer par level shifter A→B. |
| MOSI | D51 | Mega → DWM | 5V → 3.3V | MOSI | SPI matériel. Level shifter A→B. |
| MISO | D50 | DWM → Mega | 3.3V → 5V | MISO | SPI matériel. Niveau 3.3V lu comme HIGH par le Mega ; passer par shifter pour rester propre. |
| CS | D53 | Mega → DWM | 5V → 3.3V | CS_n | D53 = SS matériel — laisser ce pin en sortie même si on utilise un autre CS. |
| IRQ | D2 | DWM → Mega | 3.3V → 5V | IRQn | D2 = INT0 (broche d'interruption matérielle). D3, D18, D19, D20, D21 conviennent aussi. |
| RST | D5 | Mega → DWM | 5V → 3.3V | RSTn | Configurer en open-drain dans le code (DW3000 bus de reset). Level shifter A→B. |
Le firmware dw3000_uwb_ranging.ino est écrit pour ESP32. Pour le Mega 2560 Pro, il faut :
#define PIN_* par le mapping ci-dessus :
#define PIN_SCK 52 #define PIN_MOSI 51 #define PIN_MISO 50 #define PIN_CS 53 #define PIN_IRQ 2 // INT0 #define PIN_RST 5
Serial.printf(...) — l'AVR (ATmega2560) ne supporte pas printf sur Serial nativement. Utiliser Serial.print() + dtostrf() pour les double.dw3000_trilat.h inclut WiFi.h (ESP32 uniquement). Sur Mega : retirer la trilatération embarquée OU brancher un module ESP-01 / ESP8266 sur Serial1 (D18/D19) en pont WiFi.R1 = 1.8 kΩ (en série) et R2 = 3.3 kΩ (vers GND), donnant ~3.27 V depuis 5 V.
À appliquer sur SCK, MOSI, CS et RST. Les lignes MISO et IRQ (3.3V → 5V) restent en direct.
Inconvénient : la fréquence SPI maximale chute (~2-4 MHz fiable au lieu de 8). Utiliser SPI.setClockDivider() ou SPISettings(2000000, MSBFIRST, SPI_MODE0).
Schéma généré pour le projet UWB DW3000 — adaptation Mega 2560 Pro — avril 2026.