Abstract
We take it for granted that computer screens can update the text on their displays. What about braille, the writing system used by blind and visually impaired people? Braille writing usually consists of a series of permanently raised bumps on a surface like a piece of paper or a sign. How can you make these bumps change or "update" to display different text? Find out in this engineering project as you design and build your own refreshable braille display.
Summary
Previous experience with Arduino is recommended before you try this project. See our How to Use an Arduino page.
A kit is available from our partner Home Science Tools®. See the Materials section for details.
Solenoids can get hot if they stay on for long periods of time. Do not leave your solenoids on continuously.
This project idea was inspired by this electromechanical refreshable braille display by Vijay Varada.
Objective
Build a prototype refreshable braille display.
Introduction
Braille is a tactile (touch-based) writing system used by blind and visually impaired people. Each braille letter is made from a grid of dots with three rows and two columns called a cell. Each dot can be either flat or raised, with a unique pattern representing each character. People read the text by running their fingertips over the bumps (Figure 1). There are different variations of braille, and different languages may have their own versions. This project is based on "grade one braille" using the English alphabet (Figure 2), which you can learn more about from the reference in the Bibliography.

Braille letters are typically embossed on a surface like the paper page of a book or a plastic or metal sign, meaning they are permanent, and the text displayed is static and does not change. A refreshable braille display has cells with bumps that can be automatically raised and lowered to display different text (Figure 3). The braille display is often connected to another computer peripheral, like a braille keyboard, enabling a person to use a computer and read the on-screen text using braille.
Refreshable braille displays typically use piezoelectric actuators, small parts that bend when a voltage is applied to them. Piezoelectric actuators are compact but also expensive, meaning that refreshable braille displays with multiple character cells (needed to spell full words or sentences) can cost thousands of dollars. Vijay Varada set out to solve this problem by building a much lower-cost refreshable braille display using solenoids (electromagnets with a moveable core). Watch this video to learn about his project:
In this project, you will build your own single-cell refreshable braille display using solenoids. Unlike Vijay's project, this project will use the solenoids directly to raise and lower the braille dots without any additional mechanism or moving parts. The major advantage of this approach is its simplicity, but the downside is power consumption - the solenoids must continuously draw power to stay in the "raised" position. While not as practical for long-term use, this approach still works well for a prototype or demonstration at a science fair. Watch this video to learn more about solenoids and how to use them with an Arduino before you start your project:
Terms and Concepts
- Braille
- Tactile
- Braille cell
- Embossed
- Refreshable braille display
- Piezoelectric actuator
- Solenoid
Questions
- How does the braille writing system represent letters?
- What are some different technologies used in refreshable braille displays? What are the advantages and disadvantages of each?
- Can you find other examples of DIY/homemade refreshable braille displays online? How are they made? See the Bibliography for one more example.
Bibliography
- Perkins School for the Blind (n.d.). How the braille alphabet works. Retrieved May 8, 2024.
- Birch, J. (2017, October 3). BrailleBox - Braille News Reader. Hackster.io. Retrieved May 8, 2024.
- Finio, B. (n.d.). How to Use an Arduino. Science Buddies. Retrieved May 8, 2024.
- Science Buddies (n.d.). Engineering Design Process. Retrieved May 8, 2024.
Materials and Equipment 
Recommended Project Supplies
-
Electronics Kit for Arduino, available from our partner Home Science Tools®.
The kit includes the following parts that you need for this project:
- Arduino-compatible microcontroller board
- Note: This project will work with the Arduino UNO R3, UNO R4 Minima, UNO R4 WiFi, and compatible third-party boards.
- USB cable
- Breadboard
- Jumper wires
- Button
- 10kΩ resistor
- Arduino-compatible microcontroller board
- 12V power supply.
- Make sure the supply has enough current to power all six of your solenoids at once. For example, if your solenoids require 200mA each, then you would need at least a 1.2A supply.
- Make sure the plug is compatible with any adapter you buy (see next point). 5.5x2.1mm is a common size.
- 5.5x2.1mm barrel plug (female) to screw terminal adapter
- N-channel MOSFETs (6)
- Mini push-pull 12V solenoids (6)
- Rectifier diode, 1N4001 or similar (6)
- Spring clips (6)
- Additional jumper wires
- Wire strippers
- Windows or Mac computer. See this page if you have a Chromebook. Your computer will need:
- Access to the Arduino IDE, either installed local version or web-based editor. Watch this video for a comparison of the two options.
- USB port. The Science Buddies kit comes with a USB-A to C cable. The "C" end plugs into the Arduino, and the "A" end plugs into your computer. You will need an adapter or different cable if your computer only has USB-C ports. Watch this video to learn about the different types of cables and adapters.
- Craft supplies or materials to build the physical braille cell, such as:
- Double-sided tape or hot glue to hold the solenoids together
- Cardboard or thin wood to mount the solenoids to
- Wooden or plastic beads to use as the dots
Disclaimer: Science Buddies participates in affiliate programs with Home Science Tools®, Amazon.com, Carolina Biological, and Jameco Electronics. Proceeds from the affiliate programs help support Science Buddies, a 501(c)(3) public charity, and keep our resources free for everyone. Our top priority is student learning. If you have any comments (positive or negative) related to purchases you've made for science projects from recommendations on our site, please let us know. Write to us at [email protected].
Experimental Procedure

Build Your Circuit
Assemble your circuit as shown in Figures 4, 5, and 6. You can also access a Tinkercad simulation of the circuit here, where you can zoom in on the diagram for a more detailed view. Note: depending on where you purchased your breadboard, the left/right orientation of the power and ground buses may be switched.
- If any wires are too flexible to push into the breadboard (like the solenoid leads), use spring clips to connect them to jumper wires first.
- Each MOSFET has three pins: the gate, drain, and source. Each pin should go in its own row in the breadboard. Connect each MOSFET as follows:
- Connect the gate pin to an Arduino digital pin (pins 2 through 7 in the diagram).
- Connect a diode from the drain pin to +12V from your external power supply, with the stripe on the diode facing toward +12V.
- Connect the source pin to ground.
- Each solenoid has two wires, positive and negative. For each solenoid:
- Connect the negative wire to a MOSFET's drain pin.
- Connect the positive wire to +12V.
- Place the button so it straddles the gap in the middle of the breadboard.
- Connect one side of the button to +5V.
- Connect the other side to ground through a 10kΩ resistor.
- Connect the side with the resistor to an Arduino digital pin (pin 8 in the diagram).
- Connect power to your circuit.
- Make sure the entire circuit has a common ground.
- The Arduino GND pin should be connected to a ground bus on the breadboard.
- Both ground buses on the breadboard should be connected with a jumper wire.
- The negative wire from your external 12V power supply should be connected to a ground bus on the breadboard.
- Do not short-circuit 5V from your Arduino to 12V from your external power supply.
- Connect the 5V pin on your Arduino to one of the breadboard's power buses.
- Connect 12V from your external supply to the other power bus.
- Do not use a jumper wire to connect the two power buses. This will create a short circuit and can damage your Arduino.
- Make sure the entire circuit has a common ground.



Test Your Circuit
Once your circuit is assembled, you can use the solenoid_test.ino program to test it. This program will activate the solenoids one at a time so you can see if they work. If the circuit does not work — for example, if one solenoid never turns on, or stays on all the time — here are some things you can check:
- Double-check all of your connections for loose wires, particularly the spring clip connections to the solenoids.
- Make sure your MOSFETs are oriented properly in the breadboard. Each pin should be in its own row, with the writing on the front of the MOSFET facing to the right and the large metal tab on the back of the MOSFET facing to the left.
- Check your breadboard for short circuits. Make sure the gate, drain, and source pins for each MOSFET are properly connected separately and that you did not accidentally connect any wires in the same row of the breadboard (for example, connecting a grounding jumper wire to the drain pin instead of the source pin, or a solenoid's negative wire to the source pin instead of the drain pin).
Once you are sure that all six solenoids are working properly, arrange them in a grid of three rows and two columns, as shown in Figures 7 and 8. If you plan to build a more permanent display later, you can temporarily stick the solenoids together using double-sided tape.

Try Displaying Braille Characters
Once you are sure that all six solenoids are working properly, you are ready to test displaying braille characters.
- Arrange your solenoids in a grid of 3 rows and 2 columns.
- Download refreshable_braille_display.ino and upload it to your Arduino.
- The default value for the
textvariable is "hello". Your braille display should show the letter "h," then switch to "e" after you press the button, and so on. - Experiment with different words. You can also comment out the
whileloop that waits for a button press, and experiment with different delays to automatically cycle through the letters. - After testing, unplug your Arduino and 12V power supply so the solenoids do not overheat.
Build and Test a Better Braille Display
Real braille writing has very smooth, shallow bumps, so the reader can quickly run their fingers over the bumps without getting stuck. The pins of your solenoids are narrow and stick out pretty far, making it hard to easily run your fingertips over them. Can you design a better physical display? For example, you can drill or cut holes in something like a thin piece of wood or cardboard and mount the solenoids to the back with the pins poking through to the front. You could then attach wooden or plastic beads to the pins to create smoother bumps. This is an engineering design project, so we do not have specific instructions for this part of the project — your design is up to you! See Figure 9 for an example with cardboard and plastic beads.

After you have a prototype, you can test it yourself to make sure it is sturdy and that you can easily run your fingers over the bumps. If you know someone who knows how to read braille, you can even have them test it for you. Can they read the word that you enter in the text variable in your program? Do they have any feedback that you can use to improve your design?
Ask an Expert
Global Goals
The United Nations Sustainable Development Goals (UNSDGs) are a blueprint to achieve a better and more sustainable future for all.
Variations
- Use more solenoids to make a multi-character display. Note that you might need a bigger power supply to power more solenoids simultaneously (still 12V, but with a higher current rating).
- Can you design a bistable mechanism that only requires power to switch between raised/lowered states, but does not continuously draw power to maintain its state, like Vijay Varada did for his project?
- Can you edit the program to send characters to the Arduino from the computer keyboard via serial communication? This will let you do real-time translation from typed letters to braille, instead of entering a single static variable in the program.
- Advanced: can you combine this project with optical character recognition (OCR) to automatically convert a character written on a page into braille?
Careers
If you like this project, you might enjoy exploring these related careers:
Contact Us
Our kits are developed in partnership with Home Science Tools®. If you have purchased a kit for this project, Home Science Tools® is pleased to answer any questions.In your email, please follow these instructions:
- Include your Home Science Tools® order number.
- Please describe how you need help as thoroughly as possible:
Examples
Good Question I'm trying to do Experimental Procedure step #5, "Scrape the insulation from the wire. . ." How do I know when I've scraped enough?
Good Question I'm at Experimental Procedure step #7, "Move the magnet back and forth . . ." and the LED is not lighting up.
Bad Question I don't understand the instructions. Help!
Good Question I am purchasing my materials. Can I substitute a 1N34 diode for the 1N25 diode called for in the material list?
Bad Question Can I use a different part?
Contact Support















