Radar Glasses

10,820

78

40

About: I am an engineer, teacher and maker. Remember, help mentor a kid...we need a smarter world. Kids need our help. Later, we'll need them...

Intro: Radar Glasses

Last summer while on vacation in Maine, we met another couple: Mike and Linda. Linda was blind and had been blind since the birth of (I think) their first child. They were really nice and we had a lot of laughs together. After we came home, I couldn't stop thinking about what it would be like to be blind. The blind have seeing eye dogs and canes and I am sure a lot of other things to help them. But still, there must be a lot of challenges. I tried to imagine what it would be like and I wondered, as an electronics nerd, if there was something I could do.

I burned my eyes one summer with a welder when I was around 20 years old (long story...dumb kid). It's something I'll never forget. Anyway, I had my eyes patched for a day. I remember my mother trying to walk me across the street. I kept asking her if the cars had stopped. She said something like, "I'm your mother...do you think I'd walk you out into traffic?" Thinking back on what a dweeb I was when I was a teenager, I wondered. But I couldn't get over not knowing if there was something about to hit me in the face as I walked. I was very happy and relieved when we took the patches off. That's the only thing close to 'experience' that I have had in my life with regards to blindness.

I recently wrote another Instructable about a young friend at work who lost his sight in his right eye and a device I made for him to tell him if there was something on his right side. If you want to read it it's here. That device used a Time-of-Flight sensor by ST Electronics. About a minute after finishing that project I decided that I could make a device to help the blind. The VL53L0X sensor I used on that project has a big brother/sister sensor called the VL53L1X. This device can measure greater distances than the VL53L0X. There was a breakout board for the VL53L0X from Adafruit and for the VL53L1X there was a breakout board from Sparkfun. I decided to create a pair of glasses with the VL53L1X on the front and a haptic feedback device (vibrating motor) behind the glasses near the bridge of the nose. I would vibrate the motor inversely proportional to the distance to an object i.e the closer an object was to the glasses, the more it would vibrate.

I should note here that the VL53L1X has a very narrow Field of View (programmable between 15-27 degrees) meaning, they are VERY directional. This is important as it gives good resolution. The idea is that the user can move their head like a radar antenna. This along with the narrow FOV allows the user to better discern objects at different distances.

A note about the VL53L0X and VL53L1X sensors: they are time-of-flight sensors. This means that they send out a LASER pulse (low power and in the Infrared spectrum so they are safe). The sensor times how long it takes to see the reflected pulse come back. So distance equals rate X time as we all remember from math/science classes right? So, divide the time in half and multiply by the speed of light and you get distance. But as was pointed out by another Instructables member, the glasses could have been called LiDAR Glasses as using a LASER in this way is Light Distance and Ranging (LiDAR). But as I said, not everyone knows what LiDAR is but I think most people know RADAR. And while infrared light and radio are all part of the electromagnetic spectrum, light is not considered a radio wave as microwave frequencies are. So, I'll leave the title as RADAR but now, you understand.

This project uses basically the same schematic as the one for the other project...as we'll see. The big questions for this project are, how do we mount the electronics on glasses and, what kind of glasses do we use?

Step 1: The Glasses

I decided that I could probably design a simple pair of glasses and print them with my 3D printer. I also decided that I only needed to 3D print the skeleton or frame of the glasses. I'd add a printed circuit board to solder in the components. The printed circuit board (protoboard) would be attached to the frames which would add strength to the whole assembly. A 3D rendering of the frames is shown above.

The STL files are also attached to this step. There are three files: left.stl, right.stl (the earpieces/arms) and glasses.stl (the frames).

Step 2: The Printed Circuit Board

I used an Adafruit Perma-Proto Full Sized Breadboard. I positioned the breadboard over the front of the glasses and centered them. The top edge of the glasses I made even with the top of the protoboard. The rectangular part of the glasses that extends out from the top is where the Time-Of-Flight sensor will eventually be mounted. A good portion of the top of this part of the frames sticks up above the protoboard. This is OK as we do not need to solder anything to the top of the sensor, just the bottom.

There is a hole in the center of the breadboard that is almost exactly on top of where the bridge of the nose will be in the glasses. I marked the 4 holes that are in the frame onto the protoboard using a fine tip marker. I then drilled the holes into the breadboard.

Next, I mounted the frames to the breadboard using M2.5 screws. Mine are nylon and I got a whole kit of screws from Adafruit for this purpose. Once the screws were attached I took a marker and drew a line around the frames onto the breadboard. For me, I marked straight down the indents on the sides of the frames where the ear pieces will be located. This is my preference...but maybe you'll want the ear parts of the frame to be visible.

Step 3: Cutting It Out

Next I took the 4 screws back out from holding the frames to the breadboard. I did a rough removal of material outside of the line we marked. I was careful to stay a little bit away from the lines because I would refine this later with the tabletop belt sander that I have. You can use a file...but we are getting ahead of ourselves.

You can rough cut around the line using whatever means you have. Maybe a bandsaw? Well, I don''t have one. I have a 'nibbler' for printed circuit boards so I used that. It actually took a fair amount of time and it is kind-of-a-drag to do. But printed circuit board material can shatter and crack and so, I wanted to go slow. I nibbled my way around and also up into the nose area...but only roughly. You can see what I was doing into the picture above.

Step 4: Sanding or Filing

I removed the material much closer to the line using my tabletop belt sander. Again, you can use a file if you don't have anything else. All I can say here about sanding is that, depending on the grit of abrasive in the sander, take care with how much material you try to remove. There's no going back. Sometimes a single slip can ruin the board (or at least make it look asymmetrical or blemished). So, take your time.

You can see my before and after pictures above.

Step 5: Fine Tuning

I reattached the frames with the 4 screws and went back to the belt sander. I very very carefully sanded off right up to the edge of the frames. I did need to use a round file in the nose section because I just couldn't make that sharp of a turn in my sander. See my final results above.

Step 6: Adding the Sensor

At this point I added the VL53L1X sensor breakout board. First I added two long M2.5 nylon screws pushing them through the holes in the frames and through the holes in the VL53L1X. I added a nylon nut to each screw and very gently tightened them. Over the top of each nut I added two (four total) nylon washers. These are needed to make sure that the VL53L1X sensor lays parallel to the protoboard.

I placed a 6 position terminal strip onto the board in a position so that the holes in the top of the VL53L1X lined up with the two screws I put at the top of the frames (with the nylon washers). I added nylon nuts to the ends of the screws and again, gently tightened them. See the pictures above.

Step 7: Schematic

As I said earlier, the schematic is roughly the same as the one for the Peripheral Radar project. One difference is that I added a pushbutton (a monetary contact switch). I imagine that at some point we'll need one to change modes or implement some feature...so, better to have it now than add it later.

I also added a 10K potentiometer. The pot is used to adjust the distance the software will consider as the maximum distance to respond to. Think of it as a sensitivity control.

The schematic is shown above.

The parts list (which I should have given earlier) is as follows:

SparkFun Distance Sensor Breakout - 4 Meter, VL53L1X - SEN-14722
Adafruit - Vibrating Mini Motor Disc - PRODUCT ID: 1201
Adafruit - Lithium Ion Polymer Battery - 3.7v 150mAh - PRODUCT ID: 1317
Adafruit Perma-Proto Full-sized Breadboard PCB - Single - PRODUCT ID: 1606
Tactile Switch Buttons (6mm slim) x 20 pack - PRODUCT ID: 1489
Sparkfun - JST Right-Angle Connector - Through-Hole 2-Pin - PRT-09749
10K ohm resistor - Junkbox (look on your floor)
10K-100K ohm resistor - Junkbox (look on your floor near the 10K resistors)
2N3904 NPN Transistor - Junkbox (or phone a friend)
Some hookup wire (I used 22 gauge stranded)

To charge the LiPo battery I also scooped up:
Adafruit - Micro Lipo - USB LiIon/LiPoly charger - v1 - PRODUCT ID: 1304

Step 8: Components Placement

I was trying to be as clever as I could about placing the components. I usually try and line up certain pins like power and ground...if I can. I try to at least minimize wire lengths. I needed to be sure to leave a space above where the bridge of the nose is for the vibration motor. In the end I arrived at the placement that can be see in the picture above.

Step 9: Grounds

I first soldered all of the components to the board in the positions I had decided on. Next, I added ground connections. Conveniently one of the big long strips on the PWB was still exposed so, I made this the common ground strip.

The picture above shows the ground connections and the 10K resistor. I'm not going to tell you where to place every wire as most people have their own ideas on how to do things. I'm just going to show you what I did.

Step 10: Wires

I added the rest of the wires as shown in the picture above. I added a piece of double stick tape under the vibration motor to ensure it is held in place. The sticky material that already came on the bottom of the motor didn't feel strong enough to me.

I used 22 gauge wire for my connections. If you have something smaller, use it. I used 22 gauge because that's the smallest I had on hand.

Step 11: Battery Bracket

I 3D printed a bracket to hold the LiPo battery (a rendering of it is shown above). I marked and drilled holes in the protoboard to mount the bracket to the opposite side of the glasses from the components as shown above.

I should note here that the bracket is very thin and flimsy and I have to print it with support material (I used ABS plastic for all of the parts for this project). You can easily break the bracket trying to get the support material off so go easy.

One thing I do to make my parts stronger is to dip them in acetone. Of course you have to be very careful doing this. I do it in a well ventilated area and I use gloves and eye protection. I do this after I remove the support material (of course). I have a container of acetone and, using tweezers, I completely dip the part into acetone for maybe a second or two. I immediately remove it and set it aside to dry. I usually leave parts for an hour or more before I touch them. The acetone will 'melt' the ABS chemically. This has the effect of sealing the layers of plastic.

The STL file for the bracket is attached to this step.

Step 12: Programming

After double checking all of my connections I attached the USB cable in order to program the Trinket M0.

To install and/or modify the software (attached to this step) you'll need the Arduino IDE and the board files for the Trinket M0 as well as the libraries for the VL53L1X from Sparkfun. All of that is here, and here.

If you are new to it, follow the instructions for using the Adafruit M0 on their learning site here. Once the software (added to this step) is loaded the board should start up and run on the power from the USB serial connection. Move the side of the board with the VL53L1X close to a wall or your hand and you should feel the motor vibrate. The vibration should get lower in amplitude the further away from the device an object is.

I want to emphasize that this software is the very first pass at this. I have made two pairs of glasses and I will be making two more right away. We (me and at least one other person working on this) will continue to refine the software and post any updates here. My hope is that others will also try this and post (maybe to GitHub) any changes/improvements they make.

Step 13: Finishing the Frames

I snapped the ear pieces into the notch on both sides of the glasses and applied acetone using a cue-tip. I soak up the acetone so I get a good amount when I press it into the corners. If they are snapped in tight then the acetone will be carried around via capillary attraction. I make sure they are positioned straight and if needed I use something to hold them in place for at least an hour. Sometimes I reapply and wait another hour. The acetone makes a great bond and my glasses seem quite strong at the frame boundary.

Of course, these glasses are just a prototype so, I kept the design simple and that is why there are no hinges for the arms of the glasses. They work pretty well anyway. But, if you want, you could always redesign them with hinges.

Step 14: Final Thoughts

I have noticed that the sensor doesn't do well in sunlight. This makes sense as I am sure that the sensor is saturated by IR from the sun making it impossible to separate that from the pulse that the sensor emits. Still, they'd make good glasses indoors and on nights and maybe cloudy days. Of course, I need to do more tests.

One thing I will do to change the design is add some kind of rubber to the notch that touches the bridge of the nose. If you tip your head down it's hard to feel the vibration as the glasses lift off of the skin a little under the force of gravity. I think some rubber to create friction will keep the glasses fixed to the nose so the vibration can be transferred to it.

I'm hoping to get some feedback on the glasses. I don't know that the glasses will be helpful to people but we'll just have to see. That's what prototypes are all about: feasibility, learning and refinements.

More sensors could have been added to the design. I chose to use one for this prototype because I think more than one vibration motor will be harder for the user to discern. But it might have been a good idea to have two sensors aiming out from the eyes. Then using two motors you could vibrate each side of the glasses. You could also use audio fed to each ear instead of vibration. Again, the idea is to try a prototype and get some experience.

If you made it this far, thanks for reading!

Share

    Recommendations

    • Fix It! Contest

      Fix It! Contest
    • Tiny Home Contest

      Tiny Home Contest
    • Furniture Contest 2018

      Furniture Contest 2018

    40 Discussions

    0
    None
    ravi1721ei

    Question 5 days ago

    how to programme the trinket mo microntroller..i try to programme this but i am unable to do this since 1 week.Please help me.

    2 more answers
    0
    None
    tpsullyravi1721ei

    Answer 3 days ago

    Are you trying to program it using C/C++ or Python? Will it just not load?

    0
    None
    ravi1721eitpsully

    Reply 2 days ago

    I use aurdino IDE.But I am unable to do program.so please help me how to program as soon as possible please

    0
    None
    bardenbob

    4 weeks ago

    For what it's worth, I was inspired by this Instructable to try and examine the performance of the hardware in a different form factor. I purchased two VL53L1X breakout boards from an ebay vendor; one in a protective case and one without. Crucially, both of these boards were significantly smaller than the Sparkfun board utilised here and the smaller size was key to my plans. When the sensors arrived I breadboarded the major components together and discovered one of the example Sparkfun sketches would disable the Trinket M0 USB port assignment. After about a week of troubleshooting and assistance from Adafruit I concluded there was no major hardware incompatiblity but the problem could be worked around by changing the Arduino code. With this difficulty out of the way I attempted to characterize the performance of the sensor. It was here that I ran into a brick wall. There is a mention of some difficulty in this Instructable using the sensor in bright sunlight. The manufacturer, ST Microelectronics, also discusses degradation with bright sunlight. I had hoped that any reduction in range would be acceptable (even down to 2M from the nominal 4M might be OK). Unfortunately I found the distance measured outside to be totally unusable with each successive reading completely random. The manufacturer's website indicates better sunlight preformance when it's programmed to short range but I did not see any such improvement. I also attempted to shield the sensor from extra sunlight by placing it in a tube and adding sunglass lenses. Admittedly these attempts were pretty crude but again I saw no improvement. ST Micro makes different filters for the sensors which I did not see on the units I purchased. Most of their range performance data does not utilize these filters. The distances I measured inside seemed to be too short by 6 inches or so but I believe that could have been corrected with software. Accordingly I think the sensor would be usable inside in many applications. Unfortunately it is outside where I believe the blind could use some help and so for me this sensor is unsatisfactory. I'd appreciate any suggestions.

    5 replies
    0
    None
    tpsullybardenbob

    Reply 4 weeks ago

    Hi. I've had good luck indoors using the sensors on the glasses. But yes, outside they don't work really at all. In the shade, looking at some bushes they seemed to work. But when I turned my head to look away from those bushes, they just seemed to act like there is something at the closest distance limit.

    Years ago I made an IR communications system for my work (1995?). It worked great indoors and I could get up to 120 feet transmitting 9600 bps (if I remember the rate correctly...maybe it was 1200). When I tried to use them outside the sensor saturated so it could not detect the modulated IR pulses. By using a toilet paper tube (I swear...a moment of inspiration) on the receive sensor, I could get it to work outside up to 40 feet but only if the receiver wasn't facing the sun. You tried something similar with no luck...I'm sure these time-of-flight sensors are fast...faster than my old IR system.

    I have seen another Instructable that used sonar for glasses for the blind. That was what I was going to initially try. I'm glad I didn't as someone has already gone to the trouble of building them (I hate re-inventing the wheel). But that may be the best approach for outdoors. But they won't be very directional. Using a very short wavelength RF signal (like 10 GHz) you might get better resolution but, I think wearing a microwave transmitter on the head would be bad in many ways. So, again, sound might be better for outdoors.

    Again, inside I'm having good luck with the sensor. I'm using Sparkfun's library and not trying to implement the manufacturers supplied code because both Sparkfun and Adafruit have wrap them up as libraries/objects.

    Are the eBay boards really using the same sensor? Sound like a dumb question but I wonder about knock-off parts these days (I have encountered a few). Just wondering.

    0
    None
    bardenbobtpsully

    Reply 4 weeks ago

    We must be on the same wavelength because I too used a toilet paper roll. If I had gotten any improvement I would have tried painting the inside flat black but alas... The parts I bought came from China so they could have been knock offs or STM floor sweepings but they seemed to conform to the Sparkfun library. I'm guessing they didn't perform much worse than yours. As for the sonar sensors, I didn't think they'd be directional enough and more importantly, they are too large for what I was envisioning. My daughter works with blind people and thinks that if the device is large or ugly they won't be used. The electronics I planned on using were small enough to fit under the brim of a baseball cap or in a cell phone arm band holder. It's too bad there isn't a programmable attenuator on the front end of the receiver portion of the sensor. That might keep it out of saturation although it would reduce the range. At least it might work somewhat.

    0
    None
    tpsullybardenbob

    Reply 4 weeks ago

    Wow, that is funny about using a toilet paper tube.

    At this moment the glasses are set for 2 meters to 50 mm and again, inside they work fine. I am making software changes so that the vibration level is adjustable and the distance set point it set by cycling through button presses. I am adding a piezo beeper so maybe you could let out a chirp for a fast approaching object. I'm not sure how well it will work but I'm giving it a try.

    I agree about the sonar sensors being big and bulky as well as their inherent low resolution. That's why I looked for something else. I was thinking about making a larger pair that looked like Geordi's goggles on Star Trek TNG. I doubt that would be universally acceptable so something more discrete like what you are doing might be better.

    0
    None
    bardenbobtpsully

    Reply 4 weeks ago

    I too had variable vibration levels which changed as a function of distance. Closer objects were "louder" and had a shorter rep rate (think torpedo approaching a target). I'm not all that familiar with cell phone vibration motors but I decided to be safe and add a reverse connected diode across the motor terminals similar to what you see used with relay coils. If there's some inductive kick-back it could prevent a latent failure.

    0
    None
    tpsullybardenbob

    Reply 27 days ago

    It's hard to believe I didn't put a diode on that motor. Thanks!

    0
    None
    SabineS22

    2 months ago on Introduction

    Great idea, worth every effort! Maybe you can put your electronics and the vibrator on side of the glasses, and only the most crucial part of the sensor in front of normal sunglasses. Or you could use one of this cheap camera glasses and exchange the camera eye with your sensor. There is a guy on youtube, who made his own google glasses. He just clicked his printed case onto the sides. Keep on!

    1 reply
    0
    None
    tpsullySabineS22

    Reply 2 months ago

    Thanks. I agree. I hope a future prototype has the glasses free to look through or is just something to add to regular glasses.

    0
    None
    Artuino

    Question 2 months ago

    Your idea is great!..just want to know is it's safe for your brain having such electronics on your head?

    2 more answers
    0
    None
    tpsullyArtuino

    Answer 2 months ago

    The CPU speed and communications speeds are far far slower than say a cell phone. A lot of research has been done in this area. But I think a comparison against existing electronics is fair and this set of electronics generates far lower frequencies than many other devices we are exposed to.

    Thanks!

    0
    None
    Artuinotpsully

    Reply 2 months ago

    Good to hear that!...thanks.

    0
    None
    Ashraf Minhaj

    2 months ago

    You see a problem, you try to solve the problem - and you do solve them. That's a gift of mother nature you have.

    1 reply
    0
    None
    drelectron

    2 months ago

    Really cool & well developed instructable. I will note that technically this is more of a LIDAR, not a RADAR because the VL53L1X - SEN-14722 uses infrared laser (not radio waves)...but still a really cool instructable.

    3 replies
    0
    None
    tpsullydrelectron

    Reply 2 months ago

    You are correct. But most people know what RADAR is and few know what LiDAR is. I wrote software to process LiDAR data to create 3D raised relief maps of the earth and I have given several talks about it to engineers and many of them didn't know what LiDAR was. Maybe as more applications of LiDAR make it out into the world it will enter common use. But, for now, I thought people would 'get' the title. I wondered if it was "Walking LiDAR' or 'LiDAR Glasses if people would have clicked right past it.

    But again, you are correct. And such a small time of flight sensor is just so cool. I still keep finding things to use it for. Thanks!

    0
    None
    The Lightning Stalkertpsully

    Reply 2 months ago

    That's good because putting a RADAR that close to your eyes would give you cataracts.

    0
    None
    drelectrontpsully

    Reply 2 months ago

    Seems perfectly reasonable! Perhaps adding a brief explanation in the description of the Instructable could help bridge the gap of understanding between RADAR & LiDAR (or even a link as I know most people don't want to read lengthy instructables). This is a great project/application that people can relate to (since it involves the eyes) and would be an excellent way to explain how RADAR & LiDAR are similar, but different technology. Again, job well done!