{"product_id":"challenger-rp2040-uwb-dwm3000","title":"Challenger RP2040 UWB (DWM3000)","description":"\u003cp\u003eThe Challenger UWB from \u003ca href=\"\/zh\/collections\/ilabs\"\u003eiLabs\u003c\/a\u003e is a small embedded computer equipped with a DWM3000 UWB module in the popular \u003ca href=\"\/zh\/collections\/adafruit-feather\"\u003eAdafruit Feather\u003c\/a\u003e form factor. It's based on an RP2040 microcontroller chip from Raspberry Pi which is a dual-core Cortex M0 that can run on a clock up to 133MHz.\u003c\/p\u003e\n\u003cp\u003eWe wanted to start playing around with ultra-wide band (UWB) radios and positioning so we created a new Challenger board based on our proven RP2040 technology and added a DWM3000 UWB module. This module is compatible with Apple’s U1 chip and supports channels 5 (6.5GHz) and 9 (8GHz).\u003c\/p\u003e\n\u003cp\u003eAs usual, we paired the RP2040 microcontroller with  8MByte high-speed flash capable of supplying data up to the max speed. The flash memory can be used both to store instructions for the microcontroller as well as data in a file system and having a file system available makes it easy to store data in a structured and easy-to-program approach.\u003c\/p\u003e\n\u003ch2\u003eBoard Features\u003c\/h2\u003e\n\u003ch3\u003ePCB\u003c\/h3\u003e\n\u003cp\u003eThe board is based on a popular form factor called “Feather” which is created and maintained by an American company called Adafruit. The entire specification for the Feather format is available here. The size of the PCB for the module is 50.80mm x 22.86mm but the entire module is a little bit bigger as the Type C USB connector protrudes about 1 mm outside the board and on this particular board the antenna of the radio module also stick out about 4.4mm’s on the other side of the board.\u003c\/p\u003e\n\u003ch3\u003eUWB Module\u003c\/h3\u003e\n\u003cp\u003eThe DWM3000 is an ultra-wideband (UWB) transceiver module developed by Qorvo Inc. It operates in the frequency range of 3.1 GHz to 10.6 GHz and has a maximum output power of 4 dBm. The module uses the IEEE 802.15.4a standard for UWB communication, which enables highly accurate ranging and positioning with an accuracy of up to 10 cm.\u003c\/p\u003e\n\u003cp\u003eThe DWM3000 module integrates a Qorvo DW3110 chip, which provides UWB communication capabilities. The module measures 21mm x 16mm x 2.5mm and has a power consumption of approximately 75mA during active mode and 1.5μA during sleep mode. It supports SPI and UART(Not supported on the Challenger board) interfaces for communication with external devices and has a built-in antenna for wireless communication.\u003c\/p\u003e\n\u003cp\u003eIt is designed for use in a variety of indoor positioning and communication applications, such as asset tracking, inventory management, and personnel tracking. It also features a small form factor and low power consumption, making it suitable for battery-powered devices.\u003c\/p\u003e\n\u003cp\u003eOverall, the DWM3000 is a highly accurate UWB transceiver module designed for indoor positioning and communication applications that require high precision and low power consumption.\u003c\/p\u003e\n\u003cp\u003eIt is IEEE 802.15.4a and IEEE 802.15.4z BPRF mode compliant and allows location of objects to a precision of 10 cm. The module has worldwide UWB support through its operation on UWB channel 5 (6.5 GHz) and channel 9 (8 GHz). The module is also interoperable with the Apple U1 chip and is designed to be compliant to the FiRa™ PHY and MAC specifications enabling interoperability with other FiRa™ compliant devices.\u003c\/p\u003e\n\u003cp\u003eHere’s a simple table with a few of the highlights of the module listed:\u003c\/p\u003e\n\u003ctable width=\"454\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd width=\"183\"\u003e\u003cstrong\u003eUWB Channels\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd width=\"271\"\u003e5, 9\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eIntegrated Antenna\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003eYes\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eMCU\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003eCustomer supplied\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eMCU Flash (KB)\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003eN\/A\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eBluetooth\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003eNo\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eMotion Sensor\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003eNone\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eIntended Applications\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003eTWR Tag or Anchor, TDoA Tag or Anchor\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eNumber of Tags\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003e100s (TWR), 1000s (TDoA)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eBattery Life\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003eMonths (TWR), Years (TDoA)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eLocation Accuracy (cm)\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003e\u0026lt; 15 (2D), \u0026lt; 30 (3D)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eVoltage (V)\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003e2.4 to 3.6\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003ePackage (mm)\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003e23xx x 13mm x 2.9mm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003ch3\u003eHeaders\u003c\/h3\u003e\n\u003cp\u003eOn each of the longer sides of the PCB there are holes intended for soldering pin header connectors. If you don’t want to use connectors for some reason you can also solder a wire directly into the hole, making a permanent connection to your external device. If you go this way please make sure that the wires are fixed in place, otherwise vibrations can cause the wire to brake at the soldering point.\u003c\/p\u003e\n\u003ch3\u003eLEDs\u003c\/h3\u003e\n\u003cp\u003eOn each side of the USB connector there is a small indicator LED placed. The LED which is marked CHG is the charge control indicator. This red LED will shine whenever the connected battery is being charged, and when the battery is fully charged the LED will turn off again. If you haven’t connected a battery to the board this LED will not come on at all.\u003c\/p\u003e\n\u003cp\u003eOn the other side of the USB connector there is a user programmable green LED. This LED is connected to pin D18 (BUILTIN_LED) and can easily be controlled by the user program.\u003c\/p\u003e\n\u003ch3\u003ePower\u003c\/h3\u003e\n\u003cp\u003eThe board can be powered from multiple sources. The most obvious way to run the board is by plugging it in to a USB cable and attach it to your computer. In this mode you can write software and test the board with all its functionality.\u003c\/p\u003e\n\u003cp\u003eThere is also a third way to supply the board. This way is more invasive and will disable the onboard 3.3V power regulator.\u003c\/p\u003e\n\u003cp\u003eYou will have to pull the EN header pin low and then supply your own 3.3V voltage on the 3.3V header pin. Please note that when disabling the onboard power regulator you will have to supply the 3.3V also when running the system on battery power.\u003c\/p\u003e\n\u003ch3\u003eBattery\u003c\/h3\u003e\n\u003cp\u003eAs described earlier the board can be powered from a \u003ca href=\"\/zh\/search?q=3.7V+LiPo+Battery\u0026amp;narrow_by=\u0026amp;sort_by=relevency\u0026amp;page=1\"\u003eLiPo battery\u003c\/a\u003e. The battery can be connected using a standard 2.0mm JST connector through the battery connector on the right side of the board or off the battery is an integral part of the system that you are designing it is possible to connect the battery through the BAT pin instead.\u003c\/p\u003e\n\u003cp\u003eSwitching between the battery voltage and the applied USB voltage or external 5V is done seamlessly by the onboard circuitry.\u003c\/p\u003e\n\u003cp\u003eCharging of the battery is done by either connecting a USB cable or by connecting a 5V power source to the header pin marked USB on the board. If you do this make sure you connect your voltage through a 1A schottky diode to avoid any excessive current draw in the system when the two levels are slightly different.\u003c\/p\u003e\n\u003cp\u003ePlease note that providing external charger circuitry could destroy the internal charger on the Challenger board.\u003c\/p\u003e\n\u003ch2\u003eSpecifications\u003c\/h2\u003e\n\u003ctable style=\"height: 252px;\" width=\"595\"\u003e\n\u003ctbody\u003e\n\u003ctr style=\"height: 18px;\"\u003e\n\u003ctd style=\"height: 18px; width: 161.516px;\"\u003e\u003cstrong\u003eDescription\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd style=\"height: 18px; width: 216.125px;\"\u003e\u003cstrong\u003eValue\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd style=\"height: 18px; width: 203.359px;\"\u003e\u003cstrong\u003eComment\u003c\/strong\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 36px;\"\u003e\n\u003ctd style=\"height: 36px; width: 161.516px;\" data-align=\"left\"\u003eBoard Size\u003c\/td\u003e\n\u003ctd style=\"height: 36px; width: 216.125px;\" data-align=\"left\"\u003e50,80 mm x 22,86 mm x 3,20 mm\u003c\/td\u003e\n\u003ctd style=\"height: 36px; width: 203.359px;\" data-align=\"left\"\u003eUSB protrudes by ~1mm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 18px;\"\u003e\n\u003ctd style=\"height: 18px; width: 161.516px;\" data-align=\"left\"\u003eMicrocontroller\u003c\/td\u003e\n\u003ctd style=\"height: 18px; width: 216.125px;\" data-align=\"left\"\u003eRP2040\u003c\/td\u003e\n\u003ctd style=\"height: 18px; width: 203.359px;\" data-align=\"left\"\u003e133MHz dual core Cortex M0\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 18px;\"\u003e\n\u003ctd style=\"height: 18px; width: 161.516px;\" data-align=\"left\"\u003eSPI\u003c\/td\u003e\n\u003ctd style=\"height: 18px; width: 216.125px;\" data-align=\"left\"\u003eOne SPI channel configured\u003c\/td\u003e\n\u003ctd style=\"height: 18px; width: 203.359px;\" data-align=\"left\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 18px;\"\u003e\n\u003ctd style=\"height: 18px; width: 161.516px;\" data-align=\"left\"\u003eI2C\u003c\/td\u003e\n\u003ctd style=\"height: 18px; width: 216.125px;\" data-align=\"left\"\u003eOne I2C channel configured\u003c\/td\u003e\n\u003ctd style=\"height: 18px; width: 203.359px;\" data-align=\"left\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 18px;\"\u003e\n\u003ctd style=\"height: 18px; width: 161.516px;\" data-align=\"left\"\u003eUART\u003c\/td\u003e\n\u003ctd style=\"height: 18px; width: 216.125px;\" data-align=\"left\"\u003eOne UART channel configured\u003c\/td\u003e\n\u003ctd style=\"height: 18px; width: 203.359px;\" data-align=\"left\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 18px;\"\u003e\n\u003ctd style=\"height: 18px; width: 161.516px;\" data-align=\"left\"\u003eAnalog inputs\u003c\/td\u003e\n\u003ctd style=\"height: 18px; width: 216.125px;\" data-align=\"left\"\u003e4 analog input channels\u003c\/td\u003e\n\u003ctd style=\"height: 18px; width: 203.359px;\" data-align=\"left\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 18px;\"\u003e\n\u003ctd style=\"height: 18px; width: 161.516px;\" data-align=\"left\"\u003eFLASH Memory\u003c\/td\u003e\n\u003ctd style=\"height: 18px; width: 216.125px;\" data-align=\"left\"\u003e8MByte 133 MHz\u003c\/td\u003e\n\u003ctd style=\"height: 18px; width: 203.359px;\" data-align=\"left\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 18px;\"\u003e\n\u003ctd style=\"height: 18px; width: 161.516px;\" data-align=\"left\"\u003eSRAM Memory\u003c\/td\u003e\n\u003ctd style=\"height: 18px; width: 216.125px;\" data-align=\"left\"\u003e264KByte\u003c\/td\u003e\n\u003ctd style=\"height: 18px; width: 203.359px;\" data-align=\"left\"\u003eDivided into 6 banks\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 18px;\"\u003e\n\u003ctd style=\"height: 18px; width: 161.516px;\" data-align=\"left\"\u003eUSB 2.0 controller\u003c\/td\u003e\n\u003ctd style=\"height: 18px; width: 216.125px;\" data-align=\"left\"\u003eUp to 12MBit\/s full speed\u003c\/td\u003e\n\u003ctd style=\"height: 18px; width: 203.359px;\" data-align=\"left\"\u003eIntegrated USB 1.1 PHY\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 18px;\"\u003e\n\u003ctd style=\"height: 18px; width: 161.516px;\" data-align=\"left\"\u003eJST Battery connector\u003c\/td\u003e\n\u003ctd style=\"height: 18px; width: 216.125px;\" data-align=\"left\"\u003e2.0mm pitch\u003c\/td\u003e\n\u003ctd style=\"height: 18px; width: 203.359px;\" data-align=\"left\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 18px;\"\u003e\n\u003ctd style=\"height: 18px; width: 161.516px;\" data-align=\"left\"\u003eOn board LiPo charger\u003c\/td\u003e\n\u003ctd style=\"height: 18px; width: 216.125px;\" data-align=\"left\"\u003e500mA standard charge current\u003c\/td\u003e\n\u003ctd style=\"height: 18px; width: 203.359px;\" data-align=\"left\"\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 18px;\"\u003e\n\u003ctd style=\"height: 18px; width: 161.516px;\" data-align=\"left\"\u003eRadio\u003c\/td\u003e\n\u003ctd style=\"height: 18px; width: 216.125px;\" data-align=\"left\"\u003eDWM3000\u003c\/td\u003e\n\u003ctd style=\"height: 18px; width: 203.359px;\" data-align=\"left\"\u003eUltra Wide Band Radio (UWB)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003ch2\u003eResources\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/ilabs.se\/product\/challenger-rp2040-uwb\/\"\u003eiLabs product page, with Arduino examples and more info\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/www.qorvo.com\/products\/d\/da008334\"\u003eDWM3000 datasheet\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/www.qorvo.com\/products\/d\/da008507\"\u003eDWM3000 Schematic\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/www.qorvo.com\/products\/p\/DWM3000#documents\"\u003eQorvo Documentation page\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eGetting Started\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eUsing the Arduino environment\u003c\/strong\u003e - \u003cspan\u003eiLabs have teamed up with Earle F. Philhower over at his \u003c\/span\u003e\u003ca href=\"https:\/\/github.com\/earlephilhower\/arduino-pico\"\u003eGithub\u003c\/a\u003e\u003cspan\u003e page to provide Arduino support for our RP2040-based boards. You can follow the instructions on Earle’s GitHub page or you can check out our instructions \u003c\/span\u003e\u003ca href=\"https:\/\/ilabs.se\/getting-your-challenger-rp2040-board-up-and-running-with-the-arduino-ide\/\"\u003ehere\u003c\/a\u003e\u003cspan\u003e on how to install the package.\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan\u003e\u003cstrong\u003eLibrary support for the UWB transceiver\u003c\/strong\u003e - iLabs has created an \u003ca href=\"https:\/\/github.com\/PontusO\/iLabs_UWB\"\u003eArduino support library which can be found here\u003c\/a\u003e.\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan\u003e\u003cstrong\u003eCircuitPython\u003c\/strong\u003e - \u003c\/span\u003eThe Challenger RP2040 UWB board is compatible with \u003ca href=\"https:\/\/learn.adafruit.com\/getting-started-with-raspberry-pi-pico-circuitpython\/micropython-or-circuitpython\"\u003eAdafruit's CircuitPython\u003c\/a\u003e, however to date there does not exist a support library in Python for the DWM3000 module.\u003c\/p\u003e\n\u003ch3\u003ePinout\u003c\/h3\u003e\n\u003cp\u003eThe onboard microcontroller (RP2040) has a number of communication channels that have been routed out to the side (header connector) connectors.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eUART – One UART (UART1) channel have been routed to the header pins (RX, TX)\u003c\/li\u003e\n\u003cli\u003eSPI – One SPI (SPI1) channel have been routed to the header pins (SCK, SDO, SDI)\u003c\/li\u003e\n\u003cli\u003eI2C – One I2C (WIRE1) channel have been routed to the header pins (SCL, SDA)\u003c\/li\u003e\n\u003cli\u003eAnalog pins – The micro controller have 4 analog input pins that all are available on the header pins (A0-A3)\u003c\/li\u003e\n\u003cli\u003ePWM – All pins can be used for PWM.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eThe pin chart below shows the placement of all pins and their respective functions. When working in an Arduino environment (or Platform IO) use the blue pins when writing your code and when working with CircuitPython use the orange marked pin assignments.\u003c\/p\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0176\/3274\/files\/challenger-uwb-pinout_1.jpg?v=1689688002\"\u003e\u003c\/p\u003e\n\u003ch3\u003eConnection between MCU and the DWM3000\u003c\/h3\u003e\n\u003cp\u003eThe processor connects to the SD card via the second spi (SPI1) communication channel.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eSPI1 Pin usage (Arduino pin names within parenthesis):\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eGPIO10 is the serial clock (PIN_SPI1_SCK)\u003c\/li\u003e\n\u003cli\u003eGPIO12 is the serial data input (PIN_SPI1_MISO)\u003c\/li\u003e\n\u003cli\u003eGPIO11 is the serial data output (PIN_SPI1_MOSI)\u003c\/li\u003e\n\u003cli\u003eGPIO9 is the DWM3000 chip select signal (DWM3000_SS)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eIn addition to the SPI bus signals, a reset, a interrupt and a wakeup signal is also connected to the module, these are mapped to the pins as follows:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eGPIO13 – RESET. This signal is used to reset the module and is an active low signal (D14 or DWM3000_RST).\u003c\/li\u003e\n\u003cli\u003eGPIO14 – IRQ. This is the interrupt signal from the DWM3000 module to the RP2040 (D15 or DWM3000_IRQ).\u003c\/li\u003e\n\u003cli\u003eGPIO15 – WAKEUP. This signal can be used to place the DWM3000 module in sleep mode. This signal needs to be high (=1) to enable the module (D15 or DWM3000_WAKEUP).\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eNote to Arduino users: The support library takes care of all the necessary configuration so you really don’t need to worry about the pins.\u003c\/strong\u003e\u003c\/p\u003e\n\u003ch2\u003ePackage Contents\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e1x Challenger RP2040 UWB board\u003c\/li\u003e\n\u003cli\u003e1x Pin header set\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"iLabs","offers":[{"title":"Default Title","offer_id":50847623840017,"sku":"105511","price":60.5,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0901\/6285\/6209\/files\/challenger-rp2040-uwb-dwm3000-ilabs-105511-40681552117955.jpg?v=1735216770","url":"https:\/\/abcd3032.myshopify.com\/zh\/products\/challenger-rp2040-uwb-dwm3000","provider":"Tayyab Zak","version":"1.0","type":"link"}