close-circle
Close
0%
0%

MappyDot

Micro Smart LiDAR Sensor

Similar projects worth following
close
MappyDot is a smart ranging sensor which provides system designers with the ability to measure accurate distances on drones and robotic platforms for collision avoidance, area mapping, distance measurement, gesture recognition and motion sensing. The MappyDot uses the VL53L0X laser time-of-flight ranging sensor from STMicroelectronics, which is a tried and tested 940nm Class 1 laser sensor in use in millions of devices worldwide.

The MappyDot can be used for example to prevent your drone from colliding with objects or optimise its landing, make star trek like door sensors to open doors automatically, create vibration sensors for the blind or even fashion unique musical instruments.

The MappyDot is part of a planned suite of enhanced sensor breakouts that offer additional measurement filtering, an easy to use I2C interface, crosstalk reduction and an automatic bus addressing scheme. This helps you integrate the sensor easily compared to its standalone counterpart, which require a complicated bus multiplexing setup, large processing overheads, a code and memory heavy API and a difficult to use I2C interface.

MappyDots provide distance measurements up to 2 meters at a non-interpolated rate up to 50Hz, with a 25 degree field of view. Multiple MappyDots can be chained together easily to gather multi-dimentional data about an area much like radar, without reducing sampling rate due to processing overheads. They are also calibrated out-of-the-box to within ±1mm, and can be easily re-calibrated if integrated into a commercial enclosure. The MappyDot also performs low pass filtering on the motion data that arrives from the sensor, to provide you with the clearest picture of the environment around it. While distance measurement is the name of the game, the MappyDot also offers the following features:

  • Auto addressed bus scheme for chaining up to 112 devices.
  • A 2.8-5V signalling and operating voltage range which will work with your platform of choice.
  • A simplified I2C interface for easy integration into new or existing projects with next to zero code and processing requirements.
  • Reduced device initialisation and upkeep times. Many devices can now share the same bus with the fastest possible update rates. For example, you can poll 112 MappyDots, 50 times each, every second for a total of 5600 measurements per second (depending on your host processing speed).
  • Inter-sensor crosstalk reduction and measurement synchronisation to reduce measurement errors.
  • Low pass, real-time filtering to reduce background noise effects.
  • Automatic mode switching to get optimal measurements depending on the environment.
  • More advanced features and device pass-through for complex applications.
  • In-service firmware upgradability via I2C. There’s no need to disconnect already deployed and integrated devices.
  • Open source sensor firmware.
  • Threshold controlled, PWM or interrupt output from an onboard GPIO pin for standalone or distributed applications.
  • A tiny footprint - 13x17.8mm (0.51x0.70").
  • An easy to solder standard 2.54mm (0.1") pinout that can be used for either soldering directly to production boards or to header pins or wires for prototyping and breadboarding.
  • A user controllable LED (PWM, threshold, measurement or manual modes).
  • Device naming for easy recognition.
  • Precalibration for plug and play use, as well as auto user calibration.

All this is possible, without the need for any additional processing on your platform of choice.

When the devices are connected to a power source (2.8-5.5V), they automatically initialise with an array of addresses, which can be easily scanned and polled to determine what is on their I2C bus from a controller. From there the devices can be read with a few lines of code.

Upon first power up, the MappyDot allows users to obtain an accurate 16bit position with two lines of Arduino code:

  Wire.requestFrom(address, 2);
  distance = Wire.read() << 8; distance |= Wire.read(); 

It's that simple, there's nothing else to it. No special libraries to load, just read a value from the I2C lines.

The default MappyDot firmware offers different operating modes from the MappyDot Standard mode:

  • Highly Accurate - 1.2m - 5Hz
  • Long Range - 2m - 30Hz
  • High Speed - 1.2m - 50Hz
  • VL53L0X Default - 1.2m - 30Hz
  • MappyDot Standard - 2m auto switching - 50Hz

However, you can always tweak and update the firmware as you please via the I2C bootloader.

All MappyDot code, documentation and design on these project pages are licensed under the GNU General Public License (GPL) unless otherwise stated.

I sell on Tindie

  • 1 × STMicroelectronics VL53L0X Time-of-Flight (ToF) laser-ranging module
  • 1 × ATmega328PB Microcontroller
  • 1 × MIC5365-2.8 Power Management ICs / Linear Voltage Regulators and LDOs
  • 1 × LED Fiber Optics / Emitters
  • 1 × Passives Resistors and Capacitors

  • New Programming Board

    Blecky2 days ago 0 comments

    We now finally have a panel programming and testing board for the MappyDot panels and future sensors we are working on (before installing pogo pins):

    It's a simple but feature packed design. The way it works is that each board has a controllable power supply through a TCA6424A 24-Bit digital I/O expander. This allows for programming and testing of an individual device on the panel (it has also been designed to allow all boards to turn on at once for a purely aesthetic effect with the PWM LED output).

    Each of the other I/O pins from every board is then connected on a shared bus which is brought back to a Teensy. This can then test for dry joints/disconnected pins on the currently powered board. Now, because they are on a shared bus, there's no way to identify if a board has a short on a certain pin under test, but this is rare occurrence, so if this happens the panel can be taken out and checked manually.

    The test routine is just a script which uses avrdude to program the board and check for errors, then it will run a serial terminal program to run through the pin test (built into the firmware) and i2c data test routines as well as calibration. It cycles through every board and then it flags individual boards for errors that need to be fixed.

    This should speed things up over the existing individual board programmer and tester:

  • MappyDot 15% Off Sale

    Blecky11/28/2017 at 03:50 0 comments

    The MappyDot is 15% off until Wednesday this week on Tindie, so if you've missed out on those juicy Cyber Monday specials there's still time to tick that off this year's bucket list - https://www.tindie.com/products/blecky/mappydot-micro-smart-lidar-sensor/?pt=ac_prod_search

  • Adelaide Maker Faire

    Blecky11/07/2017 at 11:54 0 comments

    What a crazy weekend. I was in Adelaide for Maker Faire with a MappyDot stall:

    I met up with the awesome Mick from MickMakes. He's a really nice fellow and also grabbed me a coffee when I was looking visibly withdrawn from caffeine. I also briefly caught up with the guys from Core Electronics and we each showed off some kit.

    Getting to Adelaide from Melbourne was the first hurdle. Just a short 727km drive gets you there in about 9 hrs with a short break:


    The day itself was just as full on. Without stopping to eat, 4pm came around so quickly when they rung the bell for the end of the day. I would have loved to get around and see all the makers, but the kids wanted to play with the Mappyano and annoy the owners of the knitting stall next door, with repetitive renditions of chopsticks.

    The Tindie guys also sent some swag to give out, unfortunately it just didn't arrive in time for the Sunday. However I now have a perfectly fitting Tindie shirt which I will parade about Melbourne.

    Also congratulations to Anthony from South Australia for winning the MappyDot prize draw. Your MappyDot is on the way to you in the mail.

    I will totally do it again next time!

  • 3D Files

    Blecky10/26/2017 at 05:13 0 comments

    There's now a MappyDot 3D step file in the repository for you to use with any circuit layout/visualisation or design placement. There's also a field of view file as well to help people with the placement of their designs.


  • Hackaday Prize Finals

    Blecky10/22/2017 at 04:24 0 comments

    Wow, that was truly unexpected, the competition year on year has been harder and harder with some super polished and awesome projects out there. The Hackaday prizes are always a rollercoaster ride of emotions and they require so much work to meet the prize guidelines, so it's always a shame to see some really awesome projects not make it through. Don't lose focus though, keep going and get them out to the world!

    It's been an awesome journey this past year for MappyDot. The biggest challenge has been actually getting to the point where there is a tangible thing people can actually purchase and use. That has honestly been the most rewarding part of all of this with some good feedback coming in.

    A big thank you must go out to everyone that has supported the project so far as well as the judges!

    There's a crazy couple of weeks ahead while preparations are made for Makerfaire Adelaide, but soon after that there will be a few announcements about upcoming developments.

    On a final note, here's our video for the finals (apologies for the marketingish approach, the video was in the works for the Tindie store and Makerfaire and the deadline for finals after the Anything Goes announcement was really tight):



  • Mappyano - A LIDAR Piano

    Blecky10/16/2017 at 09:26 0 comments

    Just a sneak preview of a Mappydot piano that is being made up for Makerfaire Adelaide (and its own build guide for you to build one too). It is run by 8 MappyDots (on the dev breakout boards) and a Teensy 3.2 while using the awesome Teensy audio libraries to do all the work. The Mappyano has an integrated amplifier/speaker and power supply as well, so you just have to drive it with 5-12V and out comes all the noise you need to drive your housemates/spouse/fish crazy. There's 8 keys, but there will be some modifier buttons as well to change the note's output. There will also be USB out to allow for use as a midi device.

    The notes have a striking distance threshold and an output velocity that controls the Attack-Decay-Sustain-Release of the note. So depending on how you hit the air, the notes change their tone.

    Once everything is hooked up, there's some extra sections to restrict the viewing angle of each of the MappyDots which are held in with some small screws. This prevents excessive measurement overlap between each sensor:

  • Standalone MappyDots

    Blecky10/16/2017 at 01:41 0 comments

    I've written up a quick demo application for using the MappyDot as a standalone device.

    The example shows the MappyDot connected to an I2C slave 7 segment display which we are using as a measurement readout badge for MakerFaire Adelaide:

    There's a small trick to enabling the bootloader for this as the MappyDot is running in master mode during operation. During boot the MappyDot remains in I2C slave mode until the bootloader times out (1 second). So to load new firmware, you reset the MappyDot and run the firmware loading application in this time-frame (it's the same procedure as firmware recovery if you brick the firmware).

    This procedure allows you to load any arbitrary code on the MappyDot. The repository has the demo code used for this example.

  • MappyDot mBot

    Blecky09/29/2017 at 03:45 1 comment

    Edit: There's now a how to guide for you to work through to set this up.


    I've been getting a demo up and running for Maker Faire with the mBot robit and MappyDots:

    There is an extension for scratch which will be on the repo shortly, which allows you to connect a few MappyDots up to the mBot, to get it to drive around and avoid running into your legs or run away from your cat.

  • MappyDot at Maker Faire Adelaide

    Blecky09/25/2017 at 15:40 0 comments

    I will be at Maker Faire Adelaide this November 5th with a few hands on MappyDot demos, such as an air piano and a hand (The Force) controllable mBot. I'll be doing a road trip to Adelaide on the 2nd from Melbourne, so I'll snap a few pics along the way.

    I have received a new batch of MappyDot PCBs from OSHPark as well with a smaller size to make it easier to assemble:


    So from now until November I'll be making these up for sale at Maker Faire at a discounted price.

  • MappyDot Soft Launch

    Blecky09/11/2017 at 13:51 0 comments

    A small first batch of MappyDots has been unofficially soft launched on Friday as a way to get postage and packaging sorted out. There's still a few left on the Tindie store if you are interested in getting them early. There will be another larger batch available by the end of the week, so if you miss out there won't be too much delay.


    There are two packaging options, one is a simple mailer sent as a letter for smaller orders without tracking, to try and make things as cheap as possible. The other is for larger orders or if you want tracking. Australia Post only allows tracking on parcels, which has a limit of 500grams for the cheapest option, so since the MappyDots are tiny and only weigh a few grams, I have thrown in a few Aussie sweets to fill the extra weight and provide additional cushioning :)

    Sorting out customs forms and shipping has been interesting. When you create a waybill for a parcel on the AusPost website it creates a series of A5 customs documents for you to print. They require an A5 plastic sleeve to put these in, which is meant to be provided by the AusPost stores for free when you drop them off. Well it turns out the AusPost stores have no idea about this and don't actually stock them, nor do any of the major stationary or office supply stores. So after visiting 4 post stores I got them to contact the corporate center to find out how to actually do this. One store in Melbourne's CBD had them in stock so I took a trip in to grab a few.

    When I got there they first said they didn't have them. I said they were just called about 20 minutes ago and to take another look. Low and behold, they did have them but then they wanted to charge me for them. Since I have already spoken to the corporate center about it all, I said firstly they are free and secondly they don't even have a stock code, so they have no way to bill me for them. A few minutes later the staff member finally gave up on the sales terminal and gave me a large handful and served the next customer.

    Normally this isn't a problem because you fill out these forms by hand, rather than printing them. And they have an abundance of these handwritten forms. But it was interesting to see that our postage services really haven't caught up with international shipping and the internet in 2017.

    So far the MappyDot has been shipped to the US, Hungary and Spain. Hopefully we can dot the entire map!

View all 27 project logs

Enjoy this project?

Share

Discussions

Bub Rascal wrote 11/18/2017 at 22:05 point

The line

distance = Wire.read() << 8 | Wire.read();

has undefined result, because order of evaluation of functions in C is undefined. The same for C++ and Wiring.

At least add a comment what the order is expected to be.

  Are you sure? yes | no

Blecky wrote 11/18/2017 at 23:05 point

Ah good catch. I do explain the byte ordering in the documentation on the SensorDots site, but I have tweaked the "one liner" Arduino code to remove this ambiguity.


Thank you!

  Are you sure? yes | no

jean.perardel wrote 09/12/2017 at 08:19 point

Really cool sensors! 

Thanks for sharing! 

  Are you sure? yes | no

Blecky wrote 09/12/2017 at 10:20 point

Thank you Jean :)

  Are you sure? yes | no

Dan DWRobotics wrote 08/23/2017 at 18:30 point

This looks like a very interesting project indeed. I imagine you would be able to mount multiple units on a rotating cylinder and pole the units in a scanning motion as they traverse the forward facing plane. In effect you could make a rudimentary imaging sensor, much like the lidar on the boston dynamics bots. I imagine the data would be usable despite the wide angle of focus by combining data from each section of the scan to get a map of distances that would translate to 3d map of distances of everything in a forward facing 2 meter arc. Would be most useful for a full size robot!!

  Are you sure? yes | no

Farid Stein wrote 08/21/2017 at 20:55 point

This project looks extremely interesting and I can't wait to have a look at your firmware. I use the sensor myself in some projects and have had my share of trouble with it.

Any estimation when you will make it public?

  Are you sure? yes | no

Blecky wrote 08/27/2017 at 16:00 point

Hi Farid, the source code will be made public at the end of the month to coincide with the product's release :)

  Are you sure? yes | no

Cody Barnes wrote 08/21/2017 at 20:53 point

This could be useful to my work on the Eyedrivomatic project as a safety to prevent people from driving wheelchairs off of curbs or worse. What is the accuracy and resolution in "Highly Accurate" mode?

  Are you sure? yes | no

Blecky wrote 08/27/2017 at 16:19 point

For something like that I'm assuming that you would be aiming to detect a change in distance as you reach the curb's drop off point. The main thing to consider is the slightly limited ranging capabilities of the VL53L0X sensor outdoors.

It does start to degrade on bright days (it will still work, but the standard deviation increases). Temperature can also give a few cm's of error, however this can be re-calibrated easily though with a command (say every few minutes).

For shorter measurements less than 60cm on a bright sunny day (I haven't had any recently to test this myself), the highly accurate mode should give you around about +-4cm when measuring distance from the pavement. This is a worst case estimate, but generally it will be better than that, especially for shorter distances.

  Are you sure? yes | no

Ted Yapo wrote 06/28/2017 at 13:07 point

I looked at the VLX53L0X datasheet, and the field-of-view is 25 degrees, which seems wide if you want to use them in a narrow array.  I guess you could angle them into a coarse array, but I wonder about collimating optics of some sort.  I saw the application note about issues with crosstalk even using flat windows, so I'm not sure using a common lens system would be practical because of reflections in the lens system.  Ideally, you could slap a 12.5mm webcam lens on there, but it probably wouldn't work. The part is probably too small to easily fit separate lenses on top.  I guess it could also make the laser less eye-safe. What is your thought?

  Are you sure? yes | no

Blecky wrote 06/29/2017 at 11:52 point

Hi Ted,

I will be modelling these effects with the prototype boards to see what works and doesn't work. The main thing is that you would be using this for collision avoidance, so 25degrees is useful as you don't require as many devices to cover an entire area. In terms of reducing cross talk for narrower applications, shielding these overlaps with non reflective black surfaces will remove cross-talk effects in these cases.

I may consider an optional tubular add on for these types of requirements.

  Are you sure? yes | no

Corcovado wrote 11/26/2017 at 13:39 point

I'm likewise wondering if a collimating lense or lenses could be added. Have you proceeded with this?

  Are you sure? yes | no

ɖҿϝիɟթվ wrote 06/21/2017 at 11:36 point

I see someone found the VL53L0X sensor! Personally I'm mostly interested in how you are going to achieve the levitation effect ;-)

  Are you sure? yes | no

Blecky wrote 06/21/2017 at 12:39 point

;)

  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