Braille Vision: a Portable Text-to-braille Device
by Jchen in Circuits > Raspberry Pi
86 Views, 2 Favorites, 0 Comments
Braille Vision: a Portable Text-to-braille Device



The aim of our project, Braille Vision, was to improve media accessibility for the visually impaired, by letting them read text around them that has no braille transcriptions available. It works by first taking a photo of media such as a poster that is inaccessible to the visually impaired, reading the text from it, before converting this data into a VI accessible format (braille) via a braille display pad. Braille Vision performs this text-to-braille task through use of a Raspberry Pi that uses tesseract OCR to read text and send the data to an Arduino, which then controls the braille display pad.
We think that this project is a great way to start learning about the vast range of practical applications you can achieve with a Raspberry Pi, (this being our first project using one) as well as more general electronics, arduino and braille.
here's a demonstration of the finished product
Supplies


-Raspberry Pi 4 or 5 (At least 8gb recommended)
-if you haven't set up a Raspberry Pi before, you'll also need a high speed SD card (we used the SanDisk 64GB Extreme PRO), a micro HDMI to HDMI cable and suitable power adapter. For a full guide on setting up for the first time, I recommend Tom's Hardware.
-Raspberry Pi Camera Module 2
-Raspberry Pi Case (We used this one)
-Arduino Uno
-Soldering setup
-3d printer
-Hot glue gun
-1 piezo transducer
-1 rotary encoder
-3 10K resistors
-6 IRLZ34N MOSFET transistors
-6 1MΩ resistors
-6 1n4007 diodes
-6 mini solenoids (I used the pimoroni COM2700 https://shop.pimoroni.com/products/mini-solenoid?variant=2284520931338)
-A microswitch (We used this one)
-Some perfboard
-Lots of wires
-7.4V LiPo battery
-A 5v portable charger
-6 3M heat set inserts
-8 3M bolts
Learning Braille



In order to design a product that converts text to braille, we first had to learn braille. I highly recommend printing out the braille alphabet using a 3d printer and practicing with the physical thing. There are many open source 3d models available online - I sourced mine from Maker World, as I use a Bambu labs printer.
We also found the standard dimensions for braille published by the UKAAF, as we had to follow these for the design of our braille display pad, ensuring it has the same proportions and feels almost the same as any other piece of braille printed in the UK.
Set Up the Raspberry Pi

We first have to set up the Raspberry Pi with a monitor. We did this using an online guide (Tom's Hardware). After setting it up, you can attach the camera and test it by running the command
in a terminal.
Once this is done, you can install the necessary packages.
After all the packages are successfully installed, we can write the code in the text editor. In an editor such as Thonny, you can copy and paste the following code and save the file as "Braille.py".
Now, we want the code to run on the Raspberry Pi without having to use a monitor, keyboard and mouse. In order to do this, we can make the python script run on boot. To do this, first execute this in terminal
open the crontab file by writing:
At the bottom of the file, add this extra line of code:
before pressing Ctrl + C, Y, Enter.
Early Iterations













This project took many hours of brainstorming, sketching, 3d modelling and iterating. I've attached some sketches and printed models to give you an idea of the way this design has evolved over the course of many iterations.
Final Design Modelling and Printing





After completing the final design on Fusion 360, we 3d printed all the pieces. For the solenoid to braille dot adapter pieces, a .2mm nozzle makes a huge difference in quality and I would advise the use of one if possible. If all you have is a .4mm nozzle, you may need to sand down the adapter pieces afterwards.
I have attached all the necessary 3d models below in STEP format.
Electronics


We first planned out the electronics by drawing some sketches and finding diagrams online. The circuit design we created uses MOSFETs as drivers so that the low current output of the Arduino can control the high current draw solenoids. If you want to better understand how these transistors work, I recommend watching this youtube video by the engineering mindset.
Soldering and Assembly




After planning all the electronics out, we soldered everything together. You can do this by referencing the sketch of the solenoid driver circuit and rotary encoder diagram in the previous step. We produced 3 pairs of mosfet driver circuits on 3 pieces of perfboard and left everything else (the rotary encoder, microswitch and piezo transducer) without perfboard - directly soldered onto wires. We then attached these to the Arduino in the following arrangement:
- microswitch pin - 10
- rotary encoder pin A - 2
- rotary encoder pin B - 3
- rotary encoder switch pin - 12
- piezo transducer - A0
We then secured the loose pieces in the plastic casing with the help of some hot glue. The positions of all the pieces can be found by looking at the 3d model of the assembly which I have attached to this step.
Downloads
Arduino Code
Download the following code onto the Arduino Uno.
Many thanks to SimonM83 who wrote this rotary encoder instructable. I've used his code in this project.
Testing the Device


After putting everything together and plugging in the power, we can finally test the Braille Vision device. You have to press the microswitch to take a photo and wait until the piezo transducer beeps twice. After the second beep, you can press the microswitch again and begin scrolling through the braille text using the rotary encoder. I've made a youtube video demonstrating the device by translating an image of "Hello World" here.
I hope you've enjoyed reading through this instructable and hopefully it can provide some inspiration for your future Pi-based projects. :)