thotro / arduino-dw1000

A library that offers functionality to use Decawave's DW1000 chips/modules with Arduino.
Apache License 2.0
527 stars 288 forks source link

Problems to get started with arduino mini pro #78

Closed DF9BI closed 7 years ago

DF9BI commented 8 years ago

Hello, I made some tests with DW-1000 and arduini mini pro and have some strange behaviour, and hope, someone can help.

When I try BasicConnectivityTest, I get the following:

DW1000 initialized ... Committed configuration ... Device ID: DECA - model: 1, version: 3, revision: 0 Unique ID: FF:FF:FF:FF:00:00:00:00 Network ID & Device Address: PAN: 0A, Short Address: 05

When I call DW1000.getPrintableDeviceMode(msg), the arduino performes a reset.

MikeS159 commented 8 years ago

Could you provide a diagram of how the Arduino is connected to the Decawave. (Is it based on the example in this project?)

DF9BI commented 8 years ago

Hello Mike,

the wiring is the same as in this project as in AdapterBoardTestBed.png. But I made my own adapter PCB. Before, I soldered the wires directly to the DWM1000. Same result.

I use arduino pro 3.3V with 8 MHz. Power comes from the 5V USB connector over a TS1117 3.3V regulator. Power line is ok, no drops in voltage.

Rotzbua commented 8 years ago

Device ID: DECA - model: 1, version: 3, revision: 0

Model and version correct, so it seems fine.

When I call DW1000.getPrintableDeviceMode(msg), the arduino performes a reset.

msg must be a minimum size of char[128]. If msg is too huge you run out of ram.

DF9BI commented 8 years ago

Hello Rotzbua, that seems to be a good hint. Now I can call DW1000.getPrintableDeviceMode(msg) and I get: Device mode: Data rate: 6800 kb/s, PRF: 16 MHz, Preamble: 128 symbols (code #4), Channel: #5

I have to check the other examples.

DF9BI commented 8 years ago

Hello, now it is working. I programmed one as tag and the other as anchor with the examples. I had some problems with the timing. I had delay(100) in the loop. With this, i did not get any ranges. I removed all delays and it works. There is on problem remaining, the short adress of the anchor changes every time when I switch power on and off. So, I have to find how I can indentify the anchors by a fixed ID.

thank you for the hints and

best regards

Stefan DF9BI

greymfm commented 8 years ago

I myself modified that part in the library to solve that problem. Do not use the random function, use static addresses, so you know your anchors:

void DW1000RangingClass::startAsAnchor / startAsTag (char address[], const byte mode[]){ ... _currentShortAddress[0]=address[0]; _currentShortAddress[1]=address[1];

DF9BI commented 8 years ago

Hello greymfm,

thank you for the hint. It works, but I don´t see, how the bytes are converted.

In the example, the DWM ist started with: DW1000Ranging.startAsAnchor("82:17:5B:D5:A9:9A:E2:9C", DW1000.MODE_LONGDATA_RANGE_ACCURACY);

And I get as the short adress: 3238

I don´t find this bytes in "82:17:5B:D5:A9:9A:E2:9C", only if I take the first two chars in the string, 8 and 2 what is 38H and 32H would make sense.

DF9BI commented 8 years ago

Ok, thats it. I changed the adress string to "00:17:5B:D5:A9:9A:E2:9C" and now, the short adress is 3030.

I get the hex-value of the first two characters in the string, not the first two bytes.

DF9BI commented 8 years ago

So, I changed the following lines: _currentShortAddress[0]=_currentAddress[0]; //random(0,256); _currentShortAddress[1]=_currentAddress[1]; //random(0,256);

Now, I get the first two bytes of the addressstring as short adress

AliSiddiqui4 commented 7 years ago

I am getting this error after uninstalling my arduino 1.6.13 and then installing 1.6.8.

avrdude: verification error, first mismatch at byte 0x0002 0x8b != 0x8e avrdude: verification error; content mismatch