Braille Rod Design For The Braille Display Project – A Closer Look

One of the main design issues for the Braille Display was, naturally, the raised dots themselves.

Braille is a character set of two columns of three dots each (a two by four variation is used for computer work, and allows 256 codes – however, to start with, I’m using the original 6 dot/64 character code). These dots have a very specific size and position, standardized to ‘about’ the following (depending on who standardized!):

  • 2.5mm from dot center to dot center, both horizontally and vertically.
  • 1.5mm dot width (at top – base can be wider).
  • 5-7mm for each ‘cell’ (area all six dots appear), including surrounding space/padding (in other words, the space between Braille characters on a line).
  • 10-14mm from row to row of characters.

As you can imagine, this tight layout makes Braille machines very interesting projects!

Of the measurements here, obviously the most important ones are the dot spacing and size. The Braille rod I created takes care of vertical (column) spacing. Composed of a single column, each rod shows all eight possible patterns on it, using 12.5mm per cell vertically. This is larger than spec, but since there is only one line displayed, not an issue.

Braille rod images

Probably one of the easiest ways to show the rods in use is with a interactive display. In the box here you have a “bird’s eye view” of the display – two rods, and embossed with the appropriate dots. Just click on any letter to see how it will work.

 

Press a
letter
below
to have it
displayed
in Braille
in the
Window:

 
A B C D
E F G H
I J K L
M N O P
Q R S T
U V W X
Y Z Space


Since each rod has eight patterns on it, we simply shift the rod forward and backward under a window to position the appropriate half of the character. Because there are only eight patterns, rods don’t have to move far. In fact, the pattern on each rod is designed to put the most common character patterns near the center, so there is less motion likely in regular use (see my article on patterns). For example, the space (no dots), which occurs most often in text, is in the center of the rod, reducing travel. The location of each bit pattern is managed in the program code, so it’s simple to use a layout that promotes the most efficient (and therefore faster) display.

Another aspect of the rods are that they are reversible. If you look closely, one rod has a notch at the front, and one has it at the back. However, these are the same rods, just reversed (one for the left side of the Braille character, one for the right). The reason for this is cost: when manufacturing these out of plastic, instead of molds for two rod types, a single mold can be used for both rods, and simply flipped – computer programming can handle the rest.

One more point is the off-center dot pattern. The reason for this is that the rods themselves are thick (about 3mm) and the space between rods so high (about 1-2mm), so there needed to be some way to get the dots as close together as possible. The result is that the dots are near one edge of each rod, and by reversing the rod, the two sets of dots are as close as possible together.

Looking at the rest of the rod design, most of it is straightforward: the notches underneath for the locking ridge and the movement gear; the curved notch at one end for rod orientation identification (both visual and by touch), and the raised ridge between Braille patterns on the rod to prevent wear on the dots from movement inside the device (these ridges are slightly higher and so protect the dots).

Obviously, the acrylic versions are a poor cousin of the final rods; for one thing, I am testing not with dots but with ridges, since the laser cutter can only do 2D cutting, not 3D. Once the design is finalized, I plan to get a 3D print of the rod made, with proper dots, and some contours on the body. Another option I’d like to explore when moving to 3D is a Gray code pattern etched or cut on the rod itself, for absolute positioning. Absolute positioning means the device would know where every rod is positioned at all times, and should really speed up the device.

But of course, like many parts, that’s for the future…

Unipolar, Bipolar, and Stepper Drivers: A Quick Guide To Stepper Motors

One of the biggest hurdles I had with stepper motors was the differences with them. On the one hand, some motors seemed to need little more than a transistor to run (such as the ULN2003 Darington IC I used with this motor. On the other hand, sometimes the complexity is higher (like the part count on Ladyada’s motor driver board). So why the confusion?

In a nutshell, there are two major kinds of stepper motors, and they need radically different ways of control. To understand, consider a typical ‘ordinary’ motor. This motor is in an endless game of ‘catch-up’ – a coil inside turns on (‘energizes’), and the rotor in the center spins towards a magnet because of attraction. But as soon as it gets there, the current changes, and another coil is energized, causing it to go to the next magnet. By timing this on and off attraction, the typical motor is spun around, always attracted to the next magnet, but never actually getting there before the power switches. The reason why is simple: if the power stayed on, the rotor would rotate to the next magnet, and then stop cold, since it would be ‘locked’ in position by magnetic attraction. So for a normal motor to work, it MUST turn the power on and off as it rotates.

But imagine it didn’t: instead, a motor moved by turning on magnetic coils in a series, slowly ‘tugging’ the center rotor around in a circle. Now you have a stepper motor – slower since the tugging and stopping takes time, but more powerful, since the magnets actually ‘grab’ the center rotor and hold it. And unlike a regular motor, you know where the position of the rotor is at all times, because YOU turned on a specific coil to tug it into position.

So, a stepper motor has coils inside, and we turn power on and off in a pattern via a computer to make the rotor turn – but then what’s the Unipolar versus Bipolar issue?

The two types of motors have to do with how the internals are wired up. Without over complicating things, a Unipolar motor has two pairs of windings (electrical coils), and a Bipolar has one pair. The difference comes in handy when you connect them up: since a Unipolar has two groups of coils, you can wire one up for reverse, and one for forward. But a Bipolar has the single pair of coils, so you need outside help for forward/reverse.

(By the way, for those familiar with the two motor types, this may sound too simplistic – however, I read a lot of questions from people asking what the motors are all about. I could add yet another article on the Internet about windings, center tapping, 4 versus 6 wires, etc, but the ones out there aren’t helping some people – hence this simplified view).

Of course, a Unipolar motor can only activate one pair of its coils at a time (no use turning on forward AND reverse coils together of course!), so you end up with half the motor off at any given time. This means that a Bipolar motor of the same build is roughly twice as powerful, since all the wires in it are active. But as we see, you need more external circuitry to manage a Bipolar motor, since the outside circuit has to reverse the current to reverse the motor. This circuit, called an H-Bridge, is more complicated than the driver for a Unipolar (which basically is four transistors or other power drivers, one for each line of the coils). That’s why LadyAda’s board has more going on with it – it’s a Bipolar stepper driver.

So there’s your options: somewhat better performance for a Bipolar motor over Unipolar, but more complicated circuitry. The choice is yours; however, if you want to hedge your bets, you can often use a Unipolar motor on a Bipolar stepper motor driver. The reason is that those two pairs of coils are wired together, so if you know how they are wired, you can make the motor ‘look’ like a bipolar to the stepper motor driver. So, if you spend extra on a bipolar driver, you can usually use either motors. The reverse, however, is rarely true; a Bipolar motor on a Unipolar circuit will often just thrash around (if you can get it working), since it needs the circuit to reverse the current. One exception to this is if you only need to use a Bipolar motor in one direction; in that case, you CAN use a Unipolar stepper driver, since the current never needs reversing – however it’s rare you’ll want to use a stepper motor, yet never need to reverse it.

I hope this very brief overview of the two types helped clear them up: hopefully it gives you an idea of what they are, and will send you on your way researching them in more detail!

Why This Design?

While working with my design for the Braille display, I’ve been well aware that others will wonder why I’ve made these particular choices.

The main reasons: cost and complexity (which usually means cost!)

There are other possible Braille Display ideas; and like others, I went through the designs, tweaking them with my own ideas. However, each had problems when considered from an ultra-low-cost standpoint.

Of course, the first design I tried was using solenoids to move individual pins up and down. However, solenoids are power hungry, and they would have to be custom made – and since the typical Braille character is about 2.5mm between dots (center to center), the tolerances are very tight. Finally, the driver circuit for a solenoid version would need to be much more robust – after all, activating a 40 character display would mean driving as many as 200-300 little magnetic solenoids, one for each pin! While there are ways to solve these problems, it became apparent that as a first device, it would be too complicated for others to make.

It didn’t take long until I realized that molded Braille dots on the edge of a disk would work well, and that showing half of the Braille character on each disk would keep complexity down while staying compact. Rotating the disks would show any character possible in Braille, and so the machine simply rotated half characters to a touch window at the top (side note: after patting myself on the back for such an innovative design, a couple of readers steered me to the Natesan Braille Display, which has been in development for several years).

The problem with this design? Again, looking at the very small tolerances of display, the disks would be about 3.5mm wide, maximum. And, since the disk’s edge already shows the Braille half characters, where does the drive gear go? One possibility was to turn the disk into a dot/gear combination (2mm of the disk edge for raised dots, 1.5mm for recessed gear teeth, for example). However, you go from tight to very tight tolerances, and the project ceases to be simple to design. Also, you still need to drive those gears, and that means either a motor per wheel (high power/expensive), or a motor moving between wheels, and yet somehow engaging each gear as it moved along. To do this, the recessed gear of each disk had to be brought out with a second gear, and then the motor’s gear had to selectively engage with each in turn.

In fact, it was this disk idea that led to the current version: while trying to come up with ways to drive each disk, I though of small 1mm racks that engaged each disk’s gear; then, a motor moved along, moving each rack in turn and at the same time driving (rotating) the disks. And that was my ‘aha’ moment – since I was moving the racks anyway, why not print the Braille dots on them, and skip the disks entirely!

From there, the design moved rapidly – using racks for the Braille characters, a motor moved underneath and engaged each individually, moving it forward/backward to position under a touch window. In turn, another motor moved that motor assembly left and right, to engage each rack in turn.

The final problem was how to keep racks in place after the motor had moved on. This piece of the puzzle was, simply put, Divine Intervention: it appeared fully formed in my brain one day, so much so I cannot in good conscience take credit for it. By pulling a ridge in line with the motor as the device moved, this ridge engaged in the underside of each rack between its teeth, locking the gear in place and preventing movement. By shaping it properly, The ridge engaged with each rack with low friction, and yet prevented forward/backward motion of each rack. A slot was cut out in the ridge for the motor’s toothed gear – as the ridge moved, the tooth slipped into each rack in turn between teeth, moved the appropriate rod/rack to the right position, and then moved to the next.

That’s the design – and unlike the others, very simple and low cost. An Arduino seems to be sufficient to drive it, two stepper motors are enough, and minimal parts needed besides the actual rods/racking.

But this is just the start; from here, there’s countless variations possible:

  • The current motor design is meant for tinkering, and so it was moved into a separate section in the design. In the final device, both motors will fit in the main section underneath the racks.
  • The ridge needs to be in contact constantly no matter the rack drive motor’s position, so it needs to be at a minimum about two times the width of the display – so for a 40 character device it will be about 80cm (32inches) long. However, the ridge could be replaced with a flexible spring, belt, or chain that loops under the motors; this way, it would lock the racks at the top, and engage with the left/right motor at the bottom of the ‘loop’ for motion.
  • The gear is currently huge, and designed to move one character along per tooth movement. Obviously, as I debug the drive controls, I can move to a smaller gear (and more/smaller teeth on the rack’s underside of each Braille stick).
  • Multiple motors. Right now, there is a single motor to move all racks, meaning one character at a time can move. However, imagine an 80-character device (=160 Braille rods/racks): obviously the time to display is slower. But add 7 more motor to move racks, space them evenly along the ridge, and you have almost the speed of a 10-character device, since they can move in parallel. The complexity will change (hopefully the Arduino can handle it, and a new driver board will definitely need to be constructed!), but this would be a faster option for those willing to spend the extra money.
  • Each rack can be shortened. Right now, each Braille position uses about 12mm/0.5 inch of space along the rod. Add a bit more space for the ends, and each rod is about 8 inches long. The reason for this was to provide standard space above/below each character for touch. If, after testing with the Blind, it’s possible to reduce this character height, then the rods can be shortened. The result is a much smaller device, since right now the device length (depth) is roughly twice the length of each rod. What’s the ultimate limit? It depends on what users decide, but if they can be packed in tightly, it’s possible to reduce the rod to a display size of under 2 inches for a 4×2 (computer) Braille display! Here’s how: take all 16 possibly 4-bit patterns, and overlap them carefully, resulting in a design with each of the 16 possible patterns in a 16 bit ‘string’ (note: I mention 16 instead of 8 because I was originally anticipating ‘computer’ Braille, which uses a 4×2 cell instead of 3×2, and adds space for control characters, etc). Turning this into a Braille dot/no dot design, it looks like this (with ‘O’ representing a raised dot, and ‘-’ as a blank spot):

      O O - - O - - - - O O O O - O - O O -

    Try it out – you’ll see that as you move along, every single 4-bit pattern is represented here (note the extra three spots at the end are just to flesh out the patterns so the last ones have a full 4 spots). The result is the rack only needs to move one dot place to get to the next pattern (about 2.5mm). Taken together, it means that if this design can truly be packed and is readable by the Blind, then the rod design can go from 8inches/20cm down to about 2.5mm x 19, or about 4.8cm (1.9inch), which opens up the possibility of multi-row displays…

I hope this explains my design decisions, and that, although I’m happy with my current design, it’s not meant to be the final word. However, you likely noticed that each improvement means more cost, or more complexity. Both of these have been ‘bad’ words during my work on this design: complexity and cost means fewer people can make this device, and the goal is first and foremost to get simple, low-cost designs out there ASAP.

And once they are out there, then other designs can appear, giving users everywhere choices, based on the cost/complexity tradeoffs they want.

The Braille Project Wins ASC V!

Last Monday I presented my Braille display project to a local thinktank/incubator group, The Awesome Sh*t Club, during their fifth event. ASC V is a group of forward-thinking people who pool money together and then use it to fund local projects, ideally ‘awesome’ ones – think “Dragon’s Den”, but altruistic instead of predatory.

In my case, I presented before 10 judges the current state of the Braille Display Project, as well as my hopes for the future:

  • Braille devices for easy Internet access for every blind person.
  • Low-cost design anyone can afford, especially in third-world countries.
  • Open source design to spur others to design better versions.
  • More options = lower costs for devices as competition increases.

I think I got my message across, because I won the award for the event – $500 to reinvest in my project. For me, that means more stepper motors and drivers, as well as necessary tools and supplies to do more with the design (for example, a small metal bending tool called a brake, and more Acrylic sheeting). I’ve already started ordering parts, and look forward to testing out variations of designs this month, as well as into the new year.

I’d like to take this opportunity to thank the judges for the chance to pitch and their approval, as well as to the audience in general – many of them were extremely supportive, and came up after the event to learn more about the device. All in, it was not just the winning but the feedback from the people there that helped spur on the project and make the night eventful for me. Thanks again!

If you’re someone with a ‘awesome idea, I heartily recommend checking them out. The next one is in February, and they limit to 10 ideas per meeting, which means you have a reasonable chance of getting your ideas across. Even if you don’t win, you get to be heard, and that can help a project along.

The Audrey Braille Display – LIVE!

It’s taken far longer than I wanted, but I am finally looking at a finished prototype for the Audrey Braille Display. Made of 3mm Acrylic laser-cut pieces (via the Victoria Makerspace laser cutter), it uses two stepper motors, connects to an Arduino (and LadyAda Motor Driver board), and displays 5 characters:

UM Audrey Model Braille Display

The goal now is to get this working smoothly, and thereby figure out what needs reworking. Hopefully, I can get to work on version 002 and have it ready later this month; in any case, as promised, here is the current design for this version, in Sketchup format:

Download Sketchup Model of Utopia Mechanicus Braille Display (Audrey Model) Version 001

Release under the Perl-Style Open Artistic License, the file contains the assembled model, with all parts as groups (and some collections of parts grouped as well, such as the motor mounts). This should make it easy to pull pieces out to see what they do, without damaging surfaces.

Olio Cooperative and the Under $20 Craft Fair

This Saturday was a chance to take my prototype out on the town – the Victoria Olio Cooperative had an under $20 crafts fair. I helped man the Makerspace booth (read: banquet table), and found it a great opportunity to discuss the benefits of Makerspace, and also discuss my first Makerspace project, the Open Source Braille Display. In fact, I even joined the Olio group, since they had a special rate (regularly $30/year, it was $20, as befits the event’s name). They fulfill a lot of artistic needs, such as high quality printing, button making, and t-shirt silk screening, to name just a few. So, I’m ready for my T-Shirt Design…

A view of the Olio room, with the tables around the outside (our table is ‘behind’ the camera in the picture).

A shot of the table set up with the Laser cutter (the Braille display is front and to the right in the picture). All pics were with my little Nokia phone, so that should explain the graininess…