# Arduino Data Glasses for My Multimeter

174,363

1,690

169

Video of the working device

Trying to build a cheap Arduino Data Glasses for everybody. Why? I just wanted one.

It's working, and now it can even help to avoid accidents. From the first idea to the working prototype, it took 4 Month

The challenge was, that It should be constructed out of common materials that can be found easily. The project is more about how to build the optical system for this HMD. One thing is clear, you can not just place a screen in front of your eyes, because it will not be possible for them to focus it.

In the logs you can see from the first tests to what I have now.

The optical design was the most difficult part, but I think I found a solution for this. The costs of the prototype amounted to +-70Euros.

And now I have a Head-Up Display For Hight Voltage

## Step 1: What's Inside and How Does It Work?

The received Bluetooth data is displayed, on the OLED display. It's then reflected over the mirror, goes through the lens and you can see the picture in the little transparent acrylic glass.

That is the simple explication. The details are coming now :)

## Step 2: The Lens. the Most Tricky Part

I made the data glasses work, but it was more a trial an error challenge.

So I took a google crash course in optics.

First of all I had to understand the difference between a real and a virtual image with lenses. Then a very important thing is, that a human eye can only focus an object at a distance of min 25cm. And all what I needed was this formula (1/f) = (1/o) + (1/i) where f is focal length of the lens o is object distance to the lens and i is the distance of the virtual image.

Here are the values I used:

with f=10cm and o=7.3cm

you will get an i=-27.03cm (virtual images have always a negative value) and a magnification M=3.7

Lens Calculation Website
http://hyperphysics.phy-astr.gsu.edu/hbase/geoopt/image4.html

## Step 3: Alternative Lens

I know that the lens is hard to find. I uses one of a cheap cardboard wich has lenses with a Focal length of 100mm and not like the google cardboard 45mm

UPDATE

I think I found a good solution for the lens. I just checked the physical data (FL = +- 110mm). and they should be perfect. I have no time right now, to test them, but if somebody could do it and give me a feedback, this would be great. A small Fresnel lens should do the job. and they are cheap and easy to find on the internet. And you can cut them with a cutter.

An otherf alternative is a the lens of a head mounted magnifier. Normally they deliver 3 to 5 lenses and one of these should have a FL between 110mm and 120mm which works fine. It's just a little bit heavier and not so easy to cut

## Step 4: Electronics

Here are all the electronic parts for the data glasses

I just used a smaller battery in the final version.

To use the 280mA battery, I had to change the 3k resistor against a 5.6k resistor on the original board. The charging current is now reduced to +- 200mA.

## Step 5: the Enclosure

For the first tests, I used an enclosure made out of cardboard. This was a cheap solution and worked very well

For the final version, I used my 3D printer. The style file has been created in 123design. I need to make a few modifications to the design, but it's not bad for the first try.

## Step 6: Connecting the Owon B35T Multimeter With the Data Glasses

This multimeter has an intern bluetooth 4.0 communication, so you can connect it to your phone or tablet

I had to reverse engineer the serial protocol.

Config of the BT module. I used a simple Arduino program to send and receive Data to and from the module. First you have to set the module to Central.

AT+ROLE1 moule = central

AT+RESET reset AT+SHOW1 show Bluetooth name in response

AT+IMME0 connect automatically

AT+FILT0 scan for devices

AT+DISC? Show devices

To connect to the Owon B35T type AT+CONE0(Mac adress of the Multimeter)

These softwares can be found on github https://github.com/awall9999/Arduino-Glass

## Step 7: The Final Arduino Data Glasses

Here you can see, how all the parts fit in the enclosure. I tried different holders for the acrylic reflector

Here is also a part list:

Link to the software on github

## Step 8: Pictures and Videos of the First Steps

Test setup with different lenses

First bluetooth test video

One of the prototypes video

Things to do:

• Finishing the Software, to auto connect to a Owon Multimeter
• Adding a battery indicator in the display. (The BLE module has this feature)
• Building different reflectors with tint and mirror foils, to make the glasses work in a bright area,
• Reducing the weight and redesigning the enclosure.
• Testing with a smaller 0.49 inch display.

Grand Prize in the
Epilog Contest 8

Second Prize in the
Arduino Contest 2016

## Recommendations

• ### Arduino Class

76,261 Enrolled

## 169 Discussions

I can't find the exact battery type he used in this project. Can I use a 3.7v 500mAh Lipo battery?

I am new to Arduino and would like to try out this project! is it possible for anyone to give me a list of all the codes needed for this project and where do I get the bluetooth test app from which is shown in the Bluetooth 4.0 test video?

I complete this project almost 99% the one problem is still not resolved is, an image is opposite means 001 is displayed like 100. I don't know what to do????? can any buddy help me....

image that through mirror will be opposite, and if you see the opposite image through glass it will be normal back.

The code the he give is completed sir..i think you may have problem on bluetooth connection. firstly you should use serial test coding that he give to connect to hm-11. https://github.com/awall9999/Arduino-Glass/blob/ma... In this part, im not using the step:

AT+ROLE1 moule = central

AT+RESET reset AT+SHOW1 show Bluetooth name in response

AT+IMME0 connect automatically

AT+FILT0 scan for devices

AT+DISC? Show devices

i do not know why my aduino does not respond the at+disc?

im not remember how cuz im try and error. Try enter AT+ROLE1 , then AT+CONN @ AT+CONNA @ AT+CONNE @ AT+CONNF. It will connect to the owon multimeter automatically. you should see respond on the serial monitor. And it is actually data from the multimeter. After that, you can use the oledtest coding that he give https://github.com/awall9999/Arduino-Glass/blob/ma... or this coding (without microOled + it will print data of multimeter on the serial monitor):

#include <Wire.h> // Include Wire if you're using I2C

#include <SPI.h> // Include SPI if you're using SPI

#include <SFE_MicroOLED.h> // Include the SFE_MicroOLED library

//////////////////////////

// MicroOLED Definition //

//////////////////////////

#define PIN_RESET 9 // Connect RST to pin 9 (req. for SPI and I2C)

#define PIN_DC 8 // Connect DC to pin 8 (required for SPI)

#define PIN_CS 10 // Connect CS to pin 10 (required for SPI)

#define DC_JUMPER 0

// Also connect pin 13 to SCK and pin 11 to MOSI

//////////////////////////////////

// MicroOLED Object Declaration //

//////////////////////////////////

// Declare a MicroOLED object. The parameters include:

// 1 - Reset pin: Any digital pin

// 2 - D/C pin: Any digital pin (SPI mode only)

// 3 - CS pin: Any digital pin (SPI mode only, 10 recommended)

MicroOLED oled(PIN_RESET, PIN_DC, PIN_CS);

//MicroOLED oled(PIN_RESET, DC_JUMPER); // Example I2C declaration

// I2C is great, but will result in a much slower update rate. The

// slower framerate may be a worthwhile tradeoff, if you need more

// pins, though.

String bluedata;

String command;

byte value;

byte valueall[15];

char valuechar[15];

void setup()

{

Serial1.begin(9600);

Serial.begin(9600); // Initialize the OLED

delay(1000);

// Delay 1000 ms

Serial.print("ArduinoGlasses V1.0");

delay(2000);

Serial.print("Glasses");

// oled.clear(ALL);

}

void loop()

{

if(Serial1.available()){

delay(100);

while(Serial1.available()) {

if (value == 43 || value == 45){

for (int i=0; i < 15; i++){

valueall[i] = value;

}

int a=0;

String value = ((char*)valueall);

//oled.println(test.substring(0, 6));

for (a=0; a <15; a++){

//oled.print(valueall[a]);

valuechar[a]=valueall[a];

//oled.print("-");

}

//oled.clear(ALL);

//oled.clear(PAGE);

//command = valuechar[1];command += valuechar[2];command += valuechar[3];command += valuechar[4]; // build number

if (valuechar[0] == 43 && valueall[7] == 49) Serial.print("+");

if (valuechar[0] == 45 && valueall[7] == 49) Serial.print("-");

if (valuechar[0] == 43 && valueall[7] == 41) Serial.print("~");

if (valuechar[0] == 45 && valueall[7] == 41) Serial.print("~");

if (valuechar[0] == 43 && valueall[7] == 17) Serial.print("+");

if (valuechar[0] == 45 && valueall[7] == 17) Serial.print("-");

if (valuechar[0] == 43 && valueall[7] == 9) Serial.print("~");

if (valuechar[0] == 45 && valueall[7] == 9) Serial.print("~");

Serial.print(valuechar[1]);

if (valueall[6] == 49) Serial.print(".");

Serial.print(valuechar[2]);

if (valueall[6] == 50) Serial.print(".");

Serial.print(valuechar[3]);

if (valueall[6] == 52) Serial.print(".");

Serial.print(valuechar[4]);

if (valueall[9] == 64 && valueall[10] == 128) Serial.print("mV");

if (valueall[9] == 0 && valueall[10] == 128) Serial.print("V");

if (valueall[9] == 0 && valueall[10] == 32) Serial.print("R");

if (valueall[9] == 32 && valueall[10] == 32) Serial.print("K");

if (valueall[9] == 16 && valueall[10] == 32) Serial.print("M");

if (valueall[9] == 0 && valueall[10] == 64) Serial.print("A");

if (valueall[9] == 64 && valueall[10] == 64) Serial.print("mA");

if (valueall[9] == 128 && valueall[10] == 64) Serial.print("uA");

if (valueall[9] == 0 && valueall[10] == 2) Serial.print("Grad C");

if (valueall[9] == 0 && valueall[10] == 1) Serial.print("Grad F");

if (valueall[9] == 0 && valueall[10] == 8) Serial.print("Hz");

}

}

}

}

lastly, if still got problem .Try checking the wiring bluetooth module:

hm-11 to arduino pro micro

9 - vcc arduino

12 - ground arduino

11- reset arduino

2(Tx) - Rx arduino

4(Rx) -Tx arduino

Great idea.

Congrats.

Very cool! The number of times I've needed a third hand to hold my meter!

Sadly my old meter (Fluke 79) was made before Bluetooth was even a twinkle!

Great project!

I just wanted to pass on a good source of inexpensive lenses of all types, as well as beam splitter mirrors that transmit 50/50 (for a brighter image than plain acrylic). Go to surplusshed. com, they have hundreds of lens types you can browse, or use the lens finder if you know what you're looking for. A lens similar to the one in this project (double convex, 19mm diameter, 10.8cm focal length) is item L14219 for \$4.50.

They have various types of plate beam splitters for next to nothing.

Also it's just a good place for optics, electronics, robotics parts--all kinds of miscellaneous surplus stuff for cheap. No connection with them, just a satisfied customer.

Noice. Looks like a fun project.

Amazing project! Congratulations.

Thanks for sharing

Thumbs up on this one mate such intuitive use of OTS components. RESPECT!

How clever! I’ve often contemplated doing this with my welder. I’d like it to read out the amperage of the weld to a heads up display in my welding helmet in real time so I know exactly how much current I’m giving it with the foot pedal.

Amazing achievement! Thank you.

This is a wonderful project as far as the wearable display is concerned. For remote multimeter i have several mooshimeters, which have the ability to link to an android or IOS device. The newest software allows the meter to talk to you.

I mention this as an off the shelf albeit pricier way to remotely measure dangerous voltages from a safe a vantage point, and not in any way to diminish what you have achieved.

First rate project! Thank you.