User Tools

Site Tools


LPS Node

Connects and buttons:

  1. uUSB: Used to power board (and have command-line interface)
  2. DC-jack: Power (5V)
  3. Terminal: Power (5V)
  4. Reset: Reset the board
  5. Exp connector: Designed for ESP8266 but can be used for other things. Contains 3V3 power, TX, RX and GND.
  6. USR & DFU: If pressed and held during reset or power on this will put the board into DFU bootloader mode. When the system is up and running the button is unused, but could be used to trigger functionality in the firmware.
  7. SWD: Connector for programming and debugging MCU. Uses same pin-out as Crazyflie 2.0 and this adapter can be used to connect debuggers.
  8. FTDI: Connector designed for the FTDI serial-to-USB cable (TTL-232R-3V3). Can be used as a serial port for debugging and to power the board. Note that signals are 3V3 and power is 5V.
  9. M3 mounting holes

MCU controlled LEDs:

  • POWER: On when board is powered
  • RANGING: Blinking when ranging is in progress
  • MODE: On in Anchor mode, off in Tag mode and blinking in Sniffer mode

DWM1000 controlled LEDs:

  • TX: Transmitting
  • RX: Receiving
  • SFD: Received packet timestamp
  • RXOK: Packet received without error


Configuring the node

The node can be used as:

  • An anchor: receives and answer ranging requests
  • A tag: Ranges with anchors and prints the distance
  • An UWB sniffer: Prints all messages received from the radio

To configure the node connect it to a computer (I will assume a computer running linux but it should work on mac and windows as well). The node will be recognised as a serial port. The name of the serial port can be found with dmesg:

$ dmesg
 [ .... ]
[22942.980255] usb 3-2: new full-speed USB device number 13 using xhci_hcd
[22943.109845] usb 3-2: New USB device found, idVendor=0483, idProduct=5740
[22943.109852] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[22943.109855] usb 3-2: Product: Loco Positioning Node
[22943.109858] usb 3-2: Manufacturer: Bitcraze AB
[22943.109861] usb 3-2: SerialNumber: 1C0030000F51485336373420
[22943.110697] cdc_acm 3-2:1.0: ttyACM3: USB ACM device

The serial port can be open with your favorite serial console, picocom:

$ picocom /dev/ttyACM3

The node will print startup messages:

SYSTEM	: CPU-ID: 1c0030000f51485336373420
TEST	: Initializing pressure sensor ... [OK]
TEST	: Pressure sensor self-test ... [OK]
TEST	: EEPROM self-test ... [OK]
TEST	: Initialize DWM1000 ... [OK]
CONFIG	: EEPROM configuration read and verified
CONFIG	: Address is 0x1
CONFIG	: Mode is Anchor
CONFIG	: Tag mode anchor list (6): 0x01 0x02 0x03 0x04 0x05 0x06 
SYSTEM	: Node started ...
SYSTEM	: Press 'h' for help.

You can type h for help:

0-9 - set address
a   - anchor mode
t   - tag mode
s   - sniffer mode
d   - reset configuration
h   - This help

All settings will take effect after reset. they are saved in an I2C EEPROM onboard. 'd' allows to erase this memory in case it would be corrupted.

Building and flashing

Building and flashing is described in the repository. It is possible to flash the board both using SWD and DFU.

To make the project type:


When developing on the node you will want to flash with an SWD debuger as it is faster and allow for debugging the code. The project is configured by default to use StLink-V2 but it can use any debugger compatible with OpenOCD. To flash with SWD type:

make flash

For just flashing the latest version or for ocasional development flashing via DFU is good enough and does not required any additional hardware. Flashing via DFU requires dfu-utils (>=0.8) and Python (>=2.7). To enter DFU mode hold down the DFU button (see 6 above) while power on or resetting the board. To flash the firmware via DFU type:

make dfu


Schematic of the Loco Positioning Node: loco_node_revd.pdf.

projects/lps/node.txt · Last modified: 2016-05-26 16:50 by arnaud