View Images on This DIY Augmented Reality Headset

The CheApR headset is a great way to create a fully-customized augmented reality experience without breaking the bank.

Inspiration

While watching this video from Adam Savage's Tested YouTube channel about the Tilt Five augmented reality gaming headset, a-RN-au-D (Arnaud Atchimon) got the idea to build his own, cheaper version called CheApR. Augmented reality is like VR, but instead of being fully immersed in the virtual world, the wearable headset simply overlays graphics, thus augmenting reality. This lets users interact with virtual objects, view videos and images, and even play games while still being able to see normally. Having this much potential in a small and cheap device has incredible applications for makers.

How It Works

Virtual reality (VR) works by using a pair of small OLED screens placed behind lenses to show the user graphics and create the illusion of being in another world. On the other hand, augmented reality (AR) also uses small screens and lenses, except this time the images are projected in front of the viewer where they reflect off of the front lenses, letting the wearer see both what is on the screen and beyond.

Required Hardware

In order to reach his desired price-point of below $100 (many AR headsets cost over $500), Atchimon went with readily available off-the-shelf components. These include a Wemos D1 Mini ESP32 module, a pair of 1.54" TFT LCD screens, a couple of mirrors, a 3.7V LiPo battery, some resistors, a cheap pair of sunglasses (for the lenses), and a few resistors. The ESP32 is fairly power efficient, yet it is also capable of delivering impressive performance at a low cost as well. And although the screens are on the lower end in terms of resolution, they are still adequate for showing simple graphics and pictures.

Fabrication

The headset is comprised of just seven different parts, including a couple of lens mounts and the headset body itself. Atchimon used PLA filament at a layer height of 0.2mm. This ensures each piece is accurate, somewhat smooth, and sturdy yet flexible.

Assembly

The ESP32 module went in the center of the headset body, with a display flanking it on either side. Then wires were soldered to connect the screens to the ESP32 via SPI. Finally, the LiPo battery, MPU-6050 accelerometer/gyroscope module, buttons, and accompanying charging circuit were attached to the top.

With the electronics in place, the last few pieces, including the lenses and mount, were all put together. You can view how exactly it goes together with this video:

Sending Images

So at this point, Atchimon was faced with a large problem: how to get images from a computer to show up on the headset's screens. It was solved by using the ESP32's builtin WiFi capabilities to wirelessly transmit JPG images via TCP and show them one frame at a time. To make it work, Atchimon adapted a version of Lovyan03's ScreenShotSender and created cheApR_UI, which captures the center of the computer's screen and sends it to the headset.

From there, the headset parses the incoming image and places the pixel data into a buffer. This way, hardware direct memory access (DMA) can be used to automatically transfer this data to the LCDs with the help of the LovyanGFX library, thus freeing up valuable CPU cycles and making the interface far more fluid.

Augmented Reality

Simply sending images might work for some projects, but much more is required as well. That's why the headset also comes with features such as using OpenCV on the host computer with a webcam as an input device to capture images and recognize faces. The feed can also be changed to sources like videos or other images too. If the user wants something a bit more mobile, an ESP-EYE camera can be added to the front of the headset, which can send what the user sees and help align graphics to certain visual markers for something more interactive.

The CheApR headset is amazing in terms of price and customization, letting tinkerers modify nearly any part for a more personalized experience.

Arduino “having11” Guy
19 year-old IoT and embedded systems enthusiast. Also produce content for Hackster.io and love working on projects and sharing knowledge.
Related articles
Sponsored articles
Related articles