# Project export: Portable Braille

This document was generated by HackStack to give an AI agent context about a hackathon project. Sections are labeled with their provenance; content marked as truncated was cut to keep this document small.

## Project metadata

- Hackathon: TreeHacks 2025
- Tagline: Educational device that encourages young visually impaired people to learn and practice Braille in order to increase chances for future employment and expand general literacy level of the community.
- Devpost: https://devpost.com/software/portable-braille-cdq8v5
- GitHub: https://github.com/Adil-Jussupov/PortableBraille
- Video: https://www.youtube.com/embed/0vI_fjJIOsE?enablejsapi=1&hl=en_US&rel=0&start=&version=3&wmode=transparent
- Result: winner (NVIDIA: Robo Prize (Jetson Dev kit per team member); TreeHacks Grand Prize | 3rd Place (iPhone 16 Pro per team member))
- Team: 1 GitHub contributor(s) — Adil-Jussupov (15 commits)

## Devpost submission (written by the team)

### Inspiration

Literacy level of Blind and Visually impaired community even in United States is lower than 10%. And the reason is simple - Braille (tactile text) is not affordable and not accessible today. I follow Haben Girma - the first deaf-blind person graduated Harvard Law school. She is a brilliant person, wrote books, influencer and advocates for people with disabilities rights. I saw how efficient she is in communications with people. However, she needs a special person who assists her by typing speech of her interlocutors, so it can be converted to Braille format and Haben can read it in tactile format. I believe that she could do even more if there is a device that could do handle it, keeping her communication private and without relying on assistance.

### What it does

For visually impaired people the device allows users to read and write text on the phone privately, texting, surfing web, swiping Instagram, and of course learn and practice reading and writing. It is the first device that encourages blind users to improve their reading skills in most delightful ways - communication with loved ones and friends. Also device allows to "read" face expressions while talking to people, by face expression recognition using RayBan|Meta glasses and doing computing on the Jetson Orin Nano. It is the only solution today that doesn't require connection to internet and work even faster than BeMyEyes (powered by OpenAI). For deaf-blind users convert all speeches to text, and then converts it to tactile Braille and render in on the device, so user doesn't need an assistant.

### How we built it

We 3d-printed an enclosure of the device on the 3d printer. Soldered Li-Po battery to battery-management-System module for correct charging/discharging and powered the microcontroller and Step-up boost DC-DC converter to power up braille module, which needs 200V for operating. Braille module gets data from microcontroller. There is a keypad of at least 6 buttons for typing braille combinations. Keypad also connected to the microcontroller. Microcontroller syncs with a phone over Bluetooth Low Energy. We hacked RayBan|Meta glasses in analog way to connect in to Jetson Orin Nano.

### Challenges we ran into

Education Open

### Accomplishments we're proud of

First really portable braille display that fits a pocket It encourages to practice reading Connected different platforms, even closed, to each other Allows blind and visually impaired individuals to receive and follow contemporary AI trends: not to listen but to read audio messages.

### What we learned

how to power the hardware device with AI connect different platforms altogether still learning...

### What's next

test the device with more users to collect more feedback explore if this project can transform to a Product

## README (from the GitHub repository)

# PortableBraille
Educational device that encourages young visually impaired people to learn and practice Braille in order to increase chances for future employment and expand general literacy level of the community.

# Plan for designing and making the device:

1. Collected data sheets of potential components
2. Draw a schematics of the device
3. Put all components on a breadboard and run the test firmware
4. Choose electroni components to use
5. Draw several sketches of the device itself, with Phone, in hands
6. Make 3d-models of standard components
7. Asseble all standard components in general assembly
8. Model a boundry box of the device according to sketches
9. Refine the 3d-model of the device
10. Create a 3d-model of an enclosure of the divice in accordance with its 3d-Model
11. Convert parts to STL or 3dmf format
12. Slice parts and send to 3d-print
13. Put all the components inside the enclosure and if somethind doesn't fit, andjust the model and reprint.
14. Improve firmware
15. Test with user.


## Detected evidence (automated analysis)

Indexed codebase: 3 recognized source files, 2 KB.
- C (language) — detected in the code
- C++ (language) — detected in the code

## Codebase structure (from repository index)

### Files (62 of 62)

```
.DS_Store
DataSheets/.DS_Store
DataSheets/iphone15pro.p2m
Enclosure/.DS_Store
Enclosure/~$PB_Enclocure_Bottom_P11.SLDPRT
Enclosure/Camera_holder.SLDPRT
Enclosure/Keycap.SLDPRT
Enclosure/Mold_case.SLDPRT
Enclosure/Part1.SLDPRT
Enclosure/PB_assembly.SLDASM
Enclosure/PB_Enclocure_Bottom_P11.SLDPRT
Enclosure/PB_Enclocure_Bottom.SLDPRT
Enclosure/PB_Enclocure_top.SLDPRT
Enclosure/PB_top_P11.SLDPRT
Enclosure/Standard_Parts/Braille_flat_8.SLDPRT
Enclosure/Standard_Parts/dc-dc_converter.p2m
Enclosure/Standard_Parts/DC-DC_Metec.SLDPRT
Enclosure/Standard_Parts/esp32_wroom_top.p2m
Enclosure/Standard_Parts/ESP32-WROOM.SLDPRT
Enclosure/Standard_Parts/hiletgo_mini_esp-32_top.p2m
Enclosure/Standard_Parts/iPhone15Pro.SLDPRT
Enclosure/Standard_Parts/keypad_top.p2m
Enclosure/Standard_Parts/Keypad.SLDPRT
Enclosure/Standard_Parts/li-po_battery.p2m
Enclosure/Standard_Parts/LiPo20x37.SLDPRT
Enclosure/Standard_Parts/Mini-ESP32.SLDPRT
Enclosure/Standard_Parts/tp4056.p2m
Enclosure/Standard_Parts/TP4056.SLDPRT
Enclosure/STL/Camera_holder.3MF
Enclosure/STL/Frame_for_mold.3MF
Enclosure/STL/Keycap.3MF
Enclosure/STL/Keypad.3MF
Enclosure/STL/Mold_case.3MF
Enclosure/STL/PB_Bottom_P11.3MF
Enclosure/STL/PB_Bottom.3MF
Enclosure/STL/PB_Enc_Bot.3MF
Enclosure/STL/PB_Enc_top_HIPS.3mf
Enclosure/STL/PB_Enc_top.3MF
Enclosure/STL/PB_Enclocure_Bottom.STL
Enclosure/STL/PB_Enclocure_top_blank.3MF
Enclosure/STL/PB_Enclocure_top_solid_hips.3MF
Enclosure/STL/PB_Enclocure_top_solid_hips.STL
Enclosure/STL/PB_Enclocure_top_solid_split.3MF
Enclosure/STL/PB_Enclocure_top_solid_split.SLDPRT
Enclosure/STL/PB_Enclocure_top_w_buttons.3MF
Enclosure/STL/PB_Enclocure_top_w_buttons.SLDPRT
Enclosure/STL/PB_Enclocure_top.3MF
Enclosure/STL/PB_Enclocure_top.STEP
Enclosure/STL/PB_Enclocure_top.STL
Enclosure/STL/PB_half1.3MF
Enclosure/STL/PB_half2.3MF
Enclosure/STL/PB_top_P11.3MF
Enclosure/STL/PB_top_test.3MF
Enclosure/STL/PB_whole.3MF
Enclosure/STL/PD__top.STL
Firmware/.DS_Store
Firmware/FirmwarePortableBraille/.DS_Store
Firmware/FirmwarePortableBraille/brailleconst.cpp
Firmware/FirmwarePortableBraille/brailleconst.h
Firmware/FirmwarePortableBraille/FirmwarePortableBraille.ino
IMG_4217.HEIC
README.md
```

### Dependencies

No dependency index available.

### Recent commits (newest first)

- updated enclosure, new printed button caps
- Recent updates
- Updates for Apr-4
- Version with PCB - wrong PCB sizes
- Video pitch
- Added table to convert Braille to text
- Multi button press added
- test of 9 buttons keypad
- Minor changes to 3d-Models
- Design 3d models of enclosure
- Keypad added
- Designed the main schematics
- Add model of standard parts
- Merge branch 'main' of https://github.com/Adil-Jussupov/PortableBraille
- Created 3d-models of standard parts
- Update README.md
- Update README.md
- Datasheets and dimensions
- Initial commit

## Key source files (fetched from GitHub, selected and truncated for size)

### Firmware/FirmwarePortableBraille/brailleconst.h

```c
// brailleconst.h
#ifndef BRAILLECONST_H
#define BRAILLECONST_H

extern const int asciiCodes[];
extern const char toText[]; // declaration of a constant


#endif
```

### Firmware/FirmwarePortableBraille/brailleconst.cpp

```c++
// brailleConst.cpp

#include "brailleconst.h"
 
const int asciiCodes[] = {
  32,
  32,
  32,
  32,
  15,
  46,
  32,
  32,
  39,
  45,
  42,
  32,
  47,
  32,
  124,
  35,
  44,
  32,
  58,
  46,
  105,
  32,
  106,
  119,
  59,
  63,
  33,
  32,
  115,
  32,
  116,
  41,
  97,
  32,
  101,
  32,
  99,
  32,
  100,
  32,
  107,
  117,
  111,
  122,
  109,
  120,
  110,
  121,
  98,
  32,
  104,
  92,
  102,
  32,
  103,
  32,
  108,
  118,
  114,
  40,
  112,
  38,
  113,
  32
};

const char toText[] = {
  '0',
  '0',
  '0',
  '0',
  '0',
  '0',
  '$',
  '0',
  '0',
  '0',
  '0',
  '0',
  '0',
  '0',
  '0',
  '0',
  '0',
  '0',
  '0',
  'i',
  '*',
  'j',
  '0',
  '0',
  '0',
  '0',
  '0',
  's',
  '0',
  't',
  '0',
  'a',
  '0',
  'e',
  '0',
  'c',
  '0',
  'd',
  '0',
  'k',
  'u',
  'o',
  'y',
  'm',
  'w',
  'n',
  'x',
  'b',
  '0',
  'h',
  '0',
  'f',
  '0',
  'g',
  '0',
  'l',
  'v',
  'r',
  '0',
  'p',
  'z',
  'q',
  '@',
};
```