As an educator, it is my priority to make sure that educational content is accessible to everyone. I have seen students with visual and hearing impairments struggle in the age of adolescence because of the neglect they received at a young age. That's why my aim from this project is to design an inclusive learning tool for children with visual and hearing impairments.
I created a smart tactile board that helps teach basic concepts such as letters, and numbers using touch and sensory feedback.
The smart tactile board has 3D pressable letters and numbers which would enable a student with a visual impairment to feel the shape of the letter. Those pressable letters can do one of two things; either play the sound of the letters, or show the sign language of the letter on an OLED screen.
The design is inspired from Bees and how hard working they are. Hence, the hexagonal shape, and the name of the project "TactiBee" combining both the tactile functions and the bees for inspiration.
Here's an overview of the design process featuring the 2.5D components. Now, let's have a look at the details behind the process observed.
The design process was done on Fusion 360.
The electronic components were inserted to fusion using GrabCad.
I started by sketching the sides of the hexagon (6 sides). They all contained tabs for the base and the top of the prototype.
All rectangles contained T-slots to make sure they were stable in the final prototype.
2 rectangles had a different design. One had room for the ultrasonic sensor and the toggle switch, and one had room for the Arduino.
I then started sketching the base of the prototype and used the tool "project" to make sure that the tabs were in the correct place in comparison with the base.
I then extruded the components by 3mm to make sure that they all fit together and with the base of the hexagonal interactive board "TactiBee".
I used the "joint" tool to join all the components together and was actually able to start mounting two electronic components; the ultrasonic sensor, and the toggle switch.
Speaker enclosure was then created by forming two rectangles and two squares and connecting them together using an X-slot.
The speaker would be placed in the center as it would be clear in the fabrication section.
I then projected the tabs from the speaker enclosure onto the base and made sure that that after the assembly, both components were jointed properly.
OLED enclosure was then created by building 5 different sides that would enable the user to see the OLED clearly as it was at an angle.
The OLED was mounted into its correct place to make sure that the measurements for the enclosure were correct.
At this point, I changed the appearance of the bodies into "wood" to resemble the real life prototype.
The top face of the hexagon has openings for the buttons, straps for the speaker to produce sound clearly, and the OLED enclosure mounted on the top.
I extruded the full shape and changed the appearance as a last step before mounting the electronic components.
I then mounted all of the electronic components using the "joint" tool.
I then exported all the faces of the project as "DXF" files in order to get them ready for laser cutting.
Designing the 3D printed pressable buttons, I started by sketching a square with the desired dimensions. And then I was able to extrude the text by 6 mm and the actual square by 4 mm. This way the letter was easily recognizable through touching.
I then created a circle of 6.1 mm (the width of the push buttons head) and I used the "extrude cut" feature which enabled the button to fit into the 3D shapes.
I also designed the "Brialle language" for each letter and each number using the same methodologies "extrude and extrude cut".
I then exported the 3D files as STL and Step files. to make sure that they'll be easily imported in the original design.
For the Laser cutting:
I added my exported DXF files to RDworks and I was able place the pieces into two sheets of plywood.
To laser cut my DXF file, I opened it on my PC and connected my PC to the laser cutter.
Added the following parameters to RDworks:
Cut areas, had speed of: 40 and power of: 45
Speed cut areas, had speed of: 300 and power of: 10
I turned on the laser cutter and then made sure that I inserted my plywood sheet inside of it and kept it steady using the connectors.
I pressed "download" in RDworks and named the file "Bee".
I then went to the laser cutter and moved the nosle until it reached the place where the printing would start, I then pressed "origin"
I pressed "frame" to see where the design will be placed and to make sure that it is within the plywood.
I made sure I closed the glass door of the laser cutter and then pressed "start".
For 3D printing:
The Ultimaker Cura parameters were as follows:
Layer height: 0.2
Printing temperature: 215
Infill Density: 20
Support: Tree support (touching build plate)
To 3D print the letters and brialle, I added the gcode file to the printer's SD card after properly naming it and adding the correct support items. The name included the time each file will take and the grams each file used.
-To change the filament colour, I followed the following steps:
1) Chose unload filament.
2) Chose that the current filament is PLA.
3) Added the new filament.
4) Made sure that the colour of the filament is the correct colour.
-To print my file, I followed the following steps:
1) Placed the SD card inside the machine.
2) Chose my file from the SD card.
3) Waited for the printer to reach 60 °C and to calibrate.
4) Waited to the printer make the very first layer. Just to make sure that my design is placed correctly.
It was just a matter of time before I had the letters and braille in my hand. I had to leave the file of the numbers to be printed overnight because my slot had ended.
-I then had the chance to remove the support.
I then took the time to assemble my project and mount the electronic components. I also had to do some "Sanding" to make sure that the tabs would fit into the correct slots.
Also I connected the nails and nuts to the T-slots to insure stability.
The tool for sanding is displayed in the photo carousel.
The assembly was done as follows:
-Connected the tabs to their designated places.
-Used M3 Screws and Nuts to assemble the T-slots.
-Used a jumper wire/ some rings/ and even thread at some point to put the OLED screen in its designated place.
-The OLED enclosure cabinet was connected through tabs to the face of the prototype.
-The ultrasonic sensor, toggle switch, and push buttons fit right through their designated places due to accurate measurement.
-The speaker fit into its enclosure box where it can point upwards for clarity of sound.
-The arduino was stabilized using 3 M3 screws into the base of the prototype.
-The 3D printed buttons fit right into the push buttons due to accurate measurement of the opening in the 3D structure.
-Used glue to stick some beauty features ;The sound and visual signs, the logo for TactiBee, a Bee for decoration purposes, and the 3D printed Braille language.
MP3 Module + SD card
Speaker
Ultrasonic sensor
OLED
Toggle switch
Push Button
Arduino (Uno) – The central unit controlling all inputs and outputs, processing signals from the buttons and sensors, and sending commands to the MP3 module and OLED screen.
Six Push Buttons – Each button corresponds to either:
An English letter
An Arabic letter
A number
When pressed, a button triggers:
A sound output via the MP3 module.
A visual representation of the corresponding sign language letter or number on the OLED display.
Toggle Switch – Allows switching between two modes:
Sound Mode – The system plays the corresponding letter/number sound.
Image Mode – The OLED screen displays the sign language representation of the pressed button.
Ultrasonic Sensor (HC-SR04) – Acts as an energy-saving feature by detecting the presence of a person:
If someone is in front of the circuit, the system activates and responds to button presses.
If no one is detected, the circuit remains inactive to conserve power.
MP3 Module (DFPlayer Mini or similar) – Responsible for playing pre-recorded audio files that correspond to the pressed button.
OLED Display (128x64, I2C) – Displays images of sign language letters or numbers based on user input.
1KΩ Resistor (for MP3 Module) – Ensures stable signal transmission between the Arduino and the MP3 module.
Two 1KΩ Resistors (for Toggle Switch) – Provides proper voltage division and prevents unintended switching.
Power Source 5V– Supplies energy to the Arduino and connected components.
Designed using Tinkercad, illustrating how all components are wired together.
I used a regulated 5V adapter directly connected to the Arduino. I then connected the Arduino's 5V pin to the breadboard's positive, and the GND pin to the breadboard's negative to ensure stable voltage for all components. A 9V adapter through the barrel jack would require the Arduino’s internal regulator to step it down to 5V, which would waste energy as heat. Since my MP3 module and OLED display both require 5V, using a 5V adapter eliminates unnecessary conversion steps, ensuring efficiency and preventing potential overheating or instability.
A 5V adapter is the ideal power source for this circuit as it ensures stable voltage, preventing malfunctions in components like the MP3 module and OLED display. It provides sufficient current to power multiple components simultaneously, unlike a USB port or batteries, which may be insufficient. The adapter offers long-term reliability, eliminating the need for frequent battery replacements, making it cost-effective and environmentally friendly. Additionally, it supports the circuit’s energy-saving feature, ensuring immediate activation when the ultrasonic sensor detects a user. This guarantees consistent performance and efficient operation of the interactive learning tool.
1) Library inclusion:
mp3tf16p.h: Controls the MP3 module for audio playback.
SPI.h & Wire.h: Enable communication with various peripherals.
Adafruit_GFX.h & Adafruit_SSD1306.h: Manage the OLED display.
2) Pin Definitions:
Assigns pin numbers to components.
Defines buttons for different letters/numbers.
Sets toggle switch pins to differentiate between sound and image modes.
Reserves a reset pin for the OLED display.
3) Ultrasonic Sensor Function:
Purpose:
Measures distance using an ultrasonic sensor.
Logic:
Sends a short trigger pulse.
Waits for the echo return pulse.
Calculates distance based on pulse duration.
4) Creating the MP3 Player and Display Objects
Purpose:
Initializes the MP3 player module using digital pins 10 & 11.
Sets up the OLED display with the reset pin.
5) Including the BitMaps that code for the sign languages.
6) Setup Function .
7) Loop Function (Processing Inputs):
Purpose:
Reads button presses and responds accordingly based on the toggle switch position:
If TOGGLE_PIN_1 is LOW → Play sound via MP3 module.
If TOGGLE_PIN_2 is LOW → Display an image on the OLED.
Logic:
Checks if the toggle switch is in sound mode (TOGGLE_PIN_1 LOW).
If button A is pressed → Play audio file 1.
If button B is pressed → Play audio file 2.
If the toggle switch is in image mode (TOGGLE_PIN_2 LOW).
If button A is pressed → Show image "A".
If button B is pressed → Show image "B".
Updates button states to detect fresh presses.
8) Play sound function
Purpose:
Plays a sound from the SD card connected to the MP3 module.
Logic:
Compares button state.
Based on the button plays the track on the SD card.
N.B: Track number is assigned based on the order by which the track is added and not by the alphabetical order.
The volume chosen "30" is also stated in the code.
9) Display Image Function
Purpose:
Displays the corresponding letter image on the OLED.
Logic:
Clears previous content.
Uses the BitMaps as reference.
Shows the sign language image.
Updates the display.
This Arduino code manages an interactive learning board using:
- Push buttons to trigger sound or images.
- Toggle switch to switch between sound and image modes.
- MP3 module for audio playback.
- OLED display for sign language representation.
-Ultrasonic sensor (not fully implemented in loop()) to enable interaction only when a user is present.
The code was developed using references from official Arduino and Adafruit documentation, as well as open-source libraries. The following resources were cruicial in finalizing the implementation:
DFMini MP3 Player Library – Used for controlling the MP3 module, this video had a complete guide. Reference: GitHub - Makuna/DFMiniMp3.
Adafruit SSD1306 OLED Display Library – Used for managing the OLED display and rendering graphics. Reference: Instructables.
Ultrasonic Sensor Integration – Used for distance measurement and activation of components. Reference: TinkerCad code blocks.
Toggle switch to swap between modes- Used a video as a reference.
I also used this link to get a better idea on how to organize the code.
1️) OLED Responsiveness to Button Presses:
This video demonstrates how the OLED display reacts to button presses.
Each button corresponds to a letter or number, and when pressed, the screen displays the sign language representation for that character.
The response time and clarity of the display are highlighted.
2️) MP3 Module Audio Feedback:
This video showcases the MP3 module's functionality in response to button presses.
Pressing a button triggers the correct pronunciation of a letter or number.
The video includes both Arabic and English audio outputs for numbers.
🔊 (Ensure sound is on to hear the audio feedback clearly!)
3️) Full System Integration (OLED, MP3, Toggle, and Ultrasonic Sensor):
This video presents the combined functionality of the OLED display, MP3 module, toggle switch, and ultrasonic sensor.
The toggle switch determines whether pressing a button triggers a sound output or an image display.
The ultrasonic sensor acts as an energy-saving feature, activating the system only when a user is nearby.
This integration ensures an interactive and efficient learning experience.
4) Full System Integration (OLED, MP3, Toggle, and Ultrasonic Sensor) and enclosure
I knew from the start that I wanted to make an interactive educational board. However, it was only after a brain storming session with my friend "Ahmed Tallat" that we came up with the idea that it'd be in a hexagonal shape. A shape that's inspired from a beehive who are an example of dedication and hard work.
The design was inspired by this concept and hence the name as well "TactiBee"
I asked for feedback from my peers "Aya Shawky, Aya Seoudy, and Mayar" when I was choosing the sounds that will be displayed on the MP3 module.
I asked feedback from Ahmed Tallat in every step of the project and specially in the electrical components enclosure.
The letter A evolution design challenge. At first I worked on a design with hooks coming out of the button. the hooks were too small which made it impossible for me to 3D print them in a correct way without support. And with support, they ended up looking poor. So, That's when Ahmed Sami suggested that I'd just make a circle "extrude cut" for the push button head instead of the complicated design. And it actually worked way better.
The toggle switch was not responding to my code. It was as if it wasn't connected. So, I researched several resources until I found a video that said it had to be connected with resistors, and that's when it started working well.
It was very challenging to enable the OLED to display a picture instead of just text. Until I researched and found that there is an image to BitMAP converter where you can add the images and then reference them throughout the code. However, it makes the code too big.
My project is a very minimal prototype. what I'd do next is add more hexagons of the same size, however, I would add to them some tactile functions that the students would benefit from. Like having gears or solving a maze. To mix the tactile functions with the smart component.
I would also work more on the capacity of the Arduino and think more of the "nice to have" feature which was to record the data that's recorded by the child and send it to the parent.
I would like to also work on powering the circuit using a battery to facilitate movement.
And increasing the Arduino memory to support the very large bitmaps.