SubPos Ranger

The SubPos Ranger allows you to accurately measure distance or obtain your position indoors for all hobbyist robotics applications.

Similar projects worth following
The SubPos Ranger is an open source development system for projects that require accurate distance measurement and positioning. The Ranger has been designed as a flexible radio frequency platform for hobbyist robotics and educational applications, to enable you to realise its autonomous positioning potential. This flexible design can even allow you to perform passive motion sensing to augment your existing positioning systems or even be used as radio modems and sniffers.

Key Features

  • Supports 2D and 3D Positioning – not just x and y, but z also.
  • 2.4GHz ISM Spectrum – supported worldwide.
  • Standards Compliant Hardware – supports 802.15.4 and can also utilise Zigbee or 6LoWPAN communication protocols.
  • Reconfigurable RF Chipset – enables many different 2.4GHz ISM applications.
  • Firmware Updates over USB – no need for any extra programming hardware.
  • Open Source Hardware and Software – hack, repurpose and play to your heart’s content.
  • Modular Design – the Ranger allow all sorts of connectivity options. You can connect it to anything such as a Raspberry Pi via USB or GPIO, Arduino or to your smartphone via Wi-Fi.
  • Low Level Raw Data and Parameters – access to all low level measurement data and parameter tweaks are available to discover interesting new applications (such as motion detection).
  • Node Position Calibration – get the position of nodes automatically; no manual fixed node measurements required.
  • 9-Axis Accelerometer – the client expansion board contains a 9 axis accelerometer for increased positioning accuracy.

What Can It Do?

The distance measurement or proximity capability of the Ranger Boards achieves accuracy of up to +-10cm in line of sight conditions. When combined with the client expansion board and Teensy module, a combined position from the distances between multiple Ranger Nodes is calculated completely on the client without any external processing required.

When operational, the client will output its position and control information much like a GPS receiver, to a serial UART/GPIO or via USB. As such, the system allows you to develop an autonomous platform which always knows where it is indoors. You will now be able to eat every piece of cat hair with your modified robot vacuum, or guide your sustenance procurement bot 2.0 to the fridge to gather lemonade.

The boards also support a remote ranging function that can be used to monitor the movement of another board. This means you can use an additional board to track the motion of another device, without being physically connected to it.

The RF chipset on board also provides a true 2.4GHz ISM transceiver interface, this means that the Ranger Board is completely reconfigurable and not limited to only standards and positioning purposes. Because of this, you could also use it in an array of different RF applications such as radio modems, motion detection or wireless sniffing devices.

Ranger Board with Client Expansion Board and Teensy.

How Does the Ranger Work?

The Ranger Boards support a software load that uses the 802.15.4 standard to communicate information between each board. When determining distance between two Ranger Boards, they initiate a ranging handshake over 802.15.4 to then perform a distance measurement.

The Ranger Boards accurately determine the distance between one and other through phase shift/difference measurement and accurate timing techniques in the onboard Atmel AT86RF233 chipset. This is similar to how laser range finders work, except instead of light it uses 2.4GHz radio frequencies. The multiple antennas on board allow for multiple out of phase measurements to mitigate multipath effects, to best determine the distance between the Ranger Boards.

Two Ranger Boards showing how antenna diversity works with multiple phase measurements to obtain distance between each other.

The client performs this measurement operation multiple times per second to all visible nodes in range. It then uses the node positions and these distances to determine its own position in relation to these nodes through trilateration.

The Ranger Client works with multiple Ranger Boards configured as Nodes by making a series of distance measurements.

Ranger Board Technical Specifications

  • Atmel ATxmega128A4U Microcontroller
  • Atmel AT86RF233 RF Chipset
  • Antenna Diversity (Phase/Multipath)
  • RF shield (not pictured) is included
  • Built-in Ceramic Antennas
  • USB CDC Serial Connection (No Driver Required) for Distance Output/Control
  • USB Firmware Update Bootloader
  • Dual UART Serial...
Read more »

  • 1 × Atmel ATxmega128A4U
  • 1 × Atmel AT86RF233
  • 1 × AS222-92 RF-Switch
  • 1 × FOX924B-16.000 TCXO
  • 2 × 2450AT18B100 Antennas

View all 9 components

  • End of the Ranger

    Blecky02/24/2017 at 10:24 0 comments

    Hi everyone, I'm back from a bit of a break and to tear the band-aid off, I have decided to discontinue this project.

    I have tried for a while to work out a way to manufacture smaller batches of this project, but it just isn't feasible on such a scale. Prices for smaller batches would push the price up nearly to what you can get a pre-made Decawave module for.

    I was also working on tweaking the hardware to support passive time of flight (no communication required between node and client, just one way signals from the nodes). This would have allowed a more scalable and faster system at the cost of slightly lower accuracy. Unfortunately the Atmel AT86RF233 time of flight measurement module is both documented poorly and doesn't seem to work at all through testing. And with the release of this sort of functionality on the Decawave modules, it just doesn't make sense to continue with the Atmel hardware.

    Having said that, I have a completely new and exciting project coming up soon.

    It's certainly been a fun ride with a lot learnt. I thank everyone for their support throughout this project.

  • ZigBit RTB Sources

    Blecky07/21/2016 at 08:15 0 comments

    Here is the source code modifications to allow you to run the Atmel Ranging Toolbox on an Atmel ATxmega256A3U-and-AT86RF233-ZigBit module -

    This was the code that ran on the original demo here:

    You can obtain the sources and the precompiled hex from the github repo:

    Note you will need an Atmel ICE or equivalent to program the Zigbit as the serial bootloader doesn't work with this.

    The Ranger supports much more functionality over the ZigBit modules, such as antenna diversity, USB and many more software features, however this gives you an idea of the functionality of the RTB libraries if you have some ZigBits laying about.

  • Making A Ranger

    Blecky07/18/2016 at 15:40 0 comments

    Making up some Rev.02a boards. These boards have more bypass caps, better RF components and placement, more efficient via stitching as well as as few minor tweaks over the Rev.02. The final version (b) will have a dashed RF shield fill to make manufacturing easier, but the rest is pretty much final.

    End result:

  • Now With Double the Measurement Rate!

    Blecky07/15/2016 at 17:43 1 comment

    While working on getting the accelerometer to aid the update rate when averaging is enabled, it was discovered that the distance measurements themselves weren't occurring as fast as they should.

    It turns out the original Atmel libraries for ranging had quite a large arbitrary delay set (100ms) between each distance calculation for display purposes. This delay has now been removed and it now effectively doubles the measurement rate. This in turn halves the amount of time it takes to reach a desired result, when averaging is performed across a large number of samples. So if you look at the current demo video again, just imagine it running at twice the speed.

    How exciting is that!? Free hardware upgrade!

    New demo update:

  • 802.15.4 Sniffer

    Blecky07/12/2016 at 05:20 0 comments

    Here's a quick demonstration of the 802.15.4 sniffing firmware you can load onto a Ranger Board via the USB bootloader. It can be used to diagnose issues with the Ranger Positioning System or for general purpose protocol analysis. The output can also be forwarded to Wireshark for nicer protocol decoding and logging.

  • Motion Detection

    Blecky07/09/2016 at 07:03 0 comments

    Here's a quick demo of the motion detection that you can perform between two or more nodes. With this you can use the Ranger boards as an occupancy sensor, door beam or even for fitness tracking.

  • Kickstarter Live

    Blecky07/07/2016 at 03:43 0 comments

    So after many hours of sleepless coffee fueled crazy times, a surprise Kickstarter campaign for the Ranger is now live!

  • Demo Video

    Blecky07/03/2016 at 10:56 3 comments

    I finally got the time to put together a demo video:

    The client is connected to the laptop with a USB connection. However, the client does all the positioning calculations, the laptop is just displaying the node positions and the current client position.

    Averaging is turned right up which is why it takes a little while to update the position. This is because I live in an apartment block with lots of 2.4GHz RF flying about, so this helps to cope with that. I am integrating an accelerometer on the client to provide better intemediate updates when averaging is turned up too. But as you can see, it's pretty spot on in terms of accuracy.

  • Small Update

    Blecky06/28/2016 at 16:57 0 comments

    I had meant to get a demo video up the other day but was battling with random issues with the system.

    The issue was that the node batteries were running low as I hadn't charged them in a while. The MCU was still running, but the TRX chipset was failing to transmit. I have implemented a battery low warning monitor by using the internal bandgap reference on the xmega to solve this (I will implement functionality that sends this info to the client too, but for the moment it's just a blinky LED).

    I have also been running into intermittent lockups on the Ranger. It turns out there is some errata in the TRX that leads to a "potential long PLL settling times". While this was handled, what wasn't handled was an unknown errata issue where the PLL never settles or initialises. This looks to be settled now as I perform a TRX reset when this occurs (after a longer timeout period; a few ms).

    So, the video will have to wait a day or so.

  • USB Bootloader and Serial

    Blecky05/30/2016 at 13:39 0 comments

    Not a huge update, but I've just been getting the USB bootloader and serial interface working with the ATXMEGA1284U on the ranging board, so the firmware can be updated once released and you don't need a USB->UART adapter to configure it:

    If anyone is doing any XMEGA work with USB and wants to know the different clock options, this post with ASCII art helped immensely -

    Read more »

View all 20 project logs

Enjoy this project?



Luke Weston wrote 10/05/2016 at 13:48 point

Are the hardware schematic or EDA files available for the AT86RF233 nodes?

I've found the ESP8266-based files, but not the AT86RF233 one.

  Are you sure? yes | no

Jonathan Beri wrote 07/08/2016 at 12:16 point

Have you considered a single-chip solution like the samr21? well also get you more oomph with a M0+.

Atmel sells a very affordable devboard you can play around with:

  Are you sure? yes | no

Blecky wrote 07/08/2016 at 12:23 point

I did, however those chipsets don't have a phase measurement unit or time of flight capabilities. Those dev boards are also significantly more expensive than the Ranger Boards, and they don't feature antenna diversity (check the kickstarter for pricing).

  Are you sure? yes | no

Jonathan Beri wrote 07/08/2016 at 12:38 point

ah, didn't look into the ToF features of the chip, seems like a critical piece :) I wasn't suggesting the Atmel devboard as an alternative to the ranger but simply to help your evaluation - Ranger clearly does far more. Eager to follow the updates!

  Are you sure? yes | no

Blecky wrote 07/08/2016 at 12:43 point

No problem at all! I'm all for making it easier, unfortunately the Atmel dev kits are all pretty pricey for some (the ranging ATREB233SMAD-EK dev kit this from Atmel is $414USD).

  Are you sure? yes | no

femtoduino wrote 04/03/2019 at 02:30 point

I checked an older SAM R21 datasheet. the PMU and Time-of-flight features are part of the internal AT86RF233 module. See "34.2 Extended Feature Set Application Schematic"

  Are you sure? yes | no

patrickpoirier51 wrote 06/27/2016 at 13:43 point

Might be interested to integrate these into a Micro Uav for localisation in a SWARM development project.  Do you think that - on a later stage,- the client could be reduced in size and weight to fit into a form factor of approx.  20mm x 30mm ?

  Are you sure? yes | no

Blecky wrote 06/27/2016 at 15:50 point

It should be possible to make it smaller, especially if using the VQFN version of the Ranger MCU and going double sided. However the challenge would be integrating the client MCU, as you really need this to speed up the calculations (the Ranger MCU is constantly getting distance calcs without delay), but it could be done (unless you don't actually need trilateration and just distance measurements between each device).

The only issue I foresee is you would get limited benefit from the antenna diversity which helps significantly with multipath effects. 

The other option is to consider the Decawave modules as they are smaller, the only downside is the price. The BOM for this whole board is less than the Decawave module, and you still would need to interface to it.

  Are you sure? yes | no

patrickpoirier51 wrote 06/27/2016 at 16:29 point

Trilateration and antenna diversity are necessary, but implementation could be achieved by soldering  RG178 folded sleeve dipoles  directly on board (I might be wrong on this one if your design require a very special type of antenna pattern) . As for the processing, would it be possible to implement the Teensy directly on board  ?

  Are you sure? yes | no

DrYerzinia wrote 06/27/2016 at 18:58 point

Its definitely doable with the DWM1000, I've been working on a cat tracking device using them and this is the board I most recently spun:

16.13x14.88 mm

I'm using the ATSAM D11.  It has more than enough grunt to handle the trilateration. I have another variation that uses the WLCSP20 package which leaves more room on the board for other things.  Also if battery management is separated from this board it really us just the processor and the DWM1000.

Cost of those modules has been bothering me for a while now and I've been planing to spin my on variation for a form factor that can fit on a flex board that conforms to the shape of a cat collar but now that I've seen these chips I think they are the way to go.

Haven't put it up as a project here yet but I'll post it when I do, lots of footage to edit.

  Are you sure? yes | no

patrickpoirier51 wrote 06/27/2016 at 20:28 point

Thanks DrYerzinia for this info. I will dig deeper into this and check on your updates.

Funny, that  you printed  ''The Professor''  on your  board :-)

  Are you sure? yes | no

DrYerzinia wrote 06/28/2016 at 05:03 point

So I posted most of the basics as text.  I'll be adding a lot more detail in the coming weeks as I get the super tiny version up and running and do more testing but it works quite well.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates