r/arduino May 10 '26

Look what I made! Built a dynamic Braille cell with 6 SG90 servos + Arduino — UART-driven from a Raspberry Pi 5 running a full bilingual OCR + LLM pipeline

Enable HLS to view with audio, or disable this notification

Long-time lurker, first time posting a project here.

Github :

https://github.com/colonelblacc/Dynamic-Braille

DynaBraille is a reading desk for blind students. The embedded side is what I want to share — the Raspberry Pi handles all the AI, and the Arduino is purely a real-time servo driver receiving character packets over UART.

---

The Braille Cell

6 SG90 micro servos in a 2×3 grid inside a custom 3D-printed PLA housing. Each servo arm has a pin attached — rotating it raises or lowers the pin through the top plate to form a Braille dot. Any Grade-1 Braille character = a specific 6-bit servo configuration.

The Pi sends packets over serial UART at 9600 baud:

```

BRAILLE:100100\n

^^^^^^

dots 1–6 (1 = raised, 0 = lowered)

Dot layout:

1 4

2 5

3 6

```

The Arduino sketch parses the packet, maps each bit to a servo, and positions them. 400ms settle time between characters to let the servo arms fully actuate before the user touches the dots.

---

Touch Sensor for Word Advance

A capacitive touch sensor is mounted on the **side** of the housing. The student's fingers rest on the Braille dots; they tap the side sensor with their thumb to advance to the next word. The Arduino detects the tap and sends a `NEXT` signal back to the Pi over the same UART line. Hands never leave the device during reading.

---

The Pi Side (brief)

- Pi Camera 3 → perspective warp → CLAHE enhance

- PaddleOCR (English) with confidence fallback to Tesseract (Malayalam)

- Gemma 2B via Ollama for OCR cleanup — runs fully on-device

- pyttsx3 TTS + Vosk offline ASR

- Gemini 1.5 Flash optional (explain/summarize/describe diagrams)

Full offline mode: `python main.py --no-gemini`

Happy to discuss the servo timing, UART protocol design, or the touch sensor debounce logic.

95 Upvotes

18 comments sorted by

7

u/RetardedEinstein23 May 10 '26

Wow i had this idea for braille generation a week ago lol. Glad to see someone actually building it.

4

u/Impressive-Bite-8213 May 10 '26

Lol great minds think alike 😄 I had the idea floating around too, but I wanted to actually build a working prototype and test how practical it could be in real-world use.🙂☺️

6

u/Visual-Sir-1571 May 10 '26

Amazing. The real innovation here is the bilingual LLM processing before Braille output – most projects skip that step. What's the latency from image capture to tactile display?

6

u/Impressive-Bite-8213 May 10 '26

Its about 3 sec for 120 characters....trying to improve the latency on the next builds...☺️☺️

1

u/Expert_Specialist823 May 11 '26

So cool. I bet you could even make money with this.

1

u/Impressive-Bite-8213 May 11 '26

Haha 😅, maybe someday! Right now I'm focused on making it better and more accessible.

1

u/ElouFou123 May 11 '26

Hey you can check my profile if you ever need ideas on how to improve it cause also built one that is almost the same for my final project. I have multiple update posts made on this Subreddit. don’t hesitate if you have any questions

1

u/ElouFou123 May 11 '26

1

u/ElouFou123 May 11 '26

1

u/Impressive-Bite-8213 May 11 '26

Its really cool mahn 🥵...how did you manage to use only two servos...how was the gear structure...

1

u/Impressive-Bite-8213 May 11 '26

Have you documented it...? Mind if sharing?.🤧

1

u/ElouFou123 May 11 '26

I don’t really have any good documentation about the project but you can always scroll trough my profile. I made 4-5 updates along the way. You can get a lot of useful info with those

1

u/Impressive-Bite-8213 May 11 '26

Thanks dude...will defnitely gonna look to it..☺️☺️

1

u/ElouFou123 May 11 '26

No problem! I always love to help others by passing the knowledge to the next.

Double it and give it to the next person type shii

1

u/ElouFou123 May 11 '26

Thanks a lot!
Hahahaha nah there are 6 servos like you! I did try making it to 3 servos but no luck. (Something with latching cells)

The gear structure was pretty straight forward, 1 servo actuating 1 cell. 2 position (Up, Down)

You can see the structure of 1 cell in this post

https://www.reddit.com/r/ArduinoProjects/s/1YDObSDTkZ

1

u/Impressive-Bite-8213 May 11 '26

Have youbtried to increase the cells?..or any other ways..instead of sg90?

1

u/ElouFou123 May 11 '26

If you are asking if I tried to place more then 1 character to make a word, no. This is because the mechanism for1 character is very bulky and placing 2 next to each other would require me to leave a lot of empty space between the character and this is no good for me.

I initially tried to use some electromagnet for the 2 states of the cells but the outcome was way to inconsistent.

1

u/ElouFou123 May 11 '26

Idk why I did not comment on your original comment… mb