Hello everyone!
I start learning DW1000 chip, Arduino Uno and this lib https://github.com/thotro/arduino-dw1000 .
When using 1 Tag and 1 Anchor, measured range is quite correct, but when using 1 Tag and 2 Anchor, only first Anchor that Tag connected shows correct range, second Anchor shows very wrong range: measured range = real range - x (x is very huge). So sometimes, if second Anchor is near the Tag, measured range will be negative. If I shutdown 1 of 2 active anchor, the remaining anchor show correct range.
Arduino Code
I am using example tag code, anchor code of above lib (https://github.com/thotro/arduino-dw1000 )
- DW1000Ranging_ANCHOR
- DW1000Ranging_TAG
For each anchor, I set with different address.
Pin Connection
| Arduino Uno | DWM1000 |
|---|---|
| 5V | VDDAON+VDD3V3 |
| GND | VSS |
| 10 | CS |
| 11 | MOSI |
| 12 | MISO |
| 13 | CLK |
| 9 | RST |
| 2 | IRQ |
Processes that I log when using 2 anchor, 1 tag (no mention to BLINK, RANGING_INIT message)
- Tag send POLL message (broadcast).
- 2 Anchor receives POLL message and send POLL_ACK message back.
- Tag receive 2 POLL_ACK message from 2 anchor and then send RANGE message (Broadcast)
- 2 Anchor receives POLL_ACK and compute range then send RANGE_REPORT message back to the tag.
Each anchor have its own relay delay (anchor 1: 7000us, anchor 2: 21000us). This is process that i log in the tag
Send Poll: Broadcast
Set timePollSent
_networkDevicesNumber: 2
Recieve: 1300
Receive POLL_ACK
Set timePollAckReceived
Recieve: 1320
Receive POLL_ACK
Set timePollAckReceived
Send Range: Broadcast
Set timeRangeSent
_networkDevicesNumber: 2
Recieve: 1300
Recieve RANGE_REPORT
82-130: 0.24
Recieve: 1320
Recieve RANGE_REPORT
84-132: -0.92
Note
82 - 130 - 1300: Anchor 1 short address
84 - 132 - 1320: Anchor 2 short address
Maybe i need connect some more DW1000 pin, but i’m not sure because 1 anchor and 1 tag working fine.
Does anyone face this issue? Please help me, thanks all.