"Time Touch" Braille Clock With Alarm(12hr), for the Sight Impaired (+Voice Recorder Tune, STL, 3d Print, DIY)
by Mech3D in Living > Life Hacks
1453 Views, 19 Favorites, 0 Comments
"Time Touch" Braille Clock With Alarm(12hr), for the Sight Impaired (+Voice Recorder Tune, STL, 3d Print, DIY)
Blind individuals cannot use traditional clocks or set alarms on mobile devices, which can lead to dependency on others in a world where independence is precious. To address this, I wanted to create a special clock with an alarm. Instead of a visual display, it will feature a Braille wheel that shows the hours and minutes. The time wheel would be controlled by precise stepper motors. Setting the alarm is also done through the Braille wheel. Additionally, I used a voice recorder module to record the voices of family members, loved ones, or even funny voices as the alarm tone, adding a possible emotional delight to the product. This innovation aims to empower blind individuals and enhance their daily lives. So I ventured into this new, novel project, built from scratch. Wish to solve a problem of sight impaired people in need.I declare this project as opensource.This can be made as a gift/product or improved upon freely because of a noble cause. Hope you love reading the making of this project below also.
Supplies
The items selected by me are as below. There are many alternatives that can be used instead of these items. But circuit matching, layout geometry and coding will need to be modified accordingly.
- Arduino Uno Board
- Adafruit L293D motor shield V1
- Nema 17 motor x 2
- isd 1820 recording module
- LM386 amplifier module
- Speaker 4ohm, 5watt
- Soldering accessories:
- Soldering iron
- Tin
- Holder stand
- Misc.
- Wires
- Screw M3x6mm x3nos.for fixing cover
- Screw M3x6 x4nos. for fixing arduino board
- Screw+Nut: M2x15 mm x4nos. for fixing recording module.
- Screw M2x6 x2nos for fixing wheels
- Misc item:
- Potentiometer 10k
- Push Switch for record button
- Flip switch for alarm on/off.
- Resistors 260 ohm (or 220-300 ohm) x4
- Electrolyte Capacitors (1uF, 470 uF)
- PC and tinker cad Online to design 3d models
- 3d printer for printing. (If you don't have one, look for a printing service and print the .STL files provided in this tutorial below)
Idea
Before starting the project, I needed to ensure the viability of this product, focusing on its touch-oriented design. Initially, someone may assist a visually challenged person in learning how to use the clock, but afterward, it should function independently. Here are the tools I used for this project, though other tools could also be used:
- Braille: I learned the default Braille alphabet and letters, which have a fixed size.
- Wheels: To determine the size, I multiplied the height of the braille letters by 12 for the 12 positions of the clock, giving me the perimeter of the wheel.
- Boxes and materials: These were 3D printed.
- Motors: For precise movement, I used a Nema 17 stepper motor.
- Alarm input: I used a potentiometer to measure rotation by resistance and feed it to the microcontroller.
- Microcontroller: I chose an Arduino Uno.
- Stepper driver: I used an Adafruit motor Driver L293D V1.
- Voice recorder: I used an ISD1820.
After confirming the feasibility of the project, I started working on the build.
Braille
I had to do some research on Braille. In braille, all the letters and alphabets are made by small dots. there are six position of dots in each letter. By arranging the dots, different letters are made. If you add a number sign (Which looks like a mirrored "L", then "a" becomes 1 and so on. In our project we have not added the number sign because it is not necessary when you know it will be numbers in a clock dial anyway.
I have included the reference link in the images.
[Fun fact: Braille was based on a code of night writing, considered as a means for soldiers to communicate silently at night and without a light source, it later became an inspiration for the language of the visually impaired- https://en.wikipedia.org/wiki/Braille]
Calculate the Size of the Wheels
I used tinkercad for designing the product. https://www.tinkercad.com/
- I first made the braille touch portion geometry as per international braille script.
- For a 5 mm high letter. If we have 12 letters and 12 gaps between, then the wheel perimeter will be 5*12*2mm=120mm. so Diameter= 60/pi=38mm. Choose 40 mm wheel.
- The wheel should be made of 12 faces for 12 hours.
- Cut out a hole inside the wheel so material is not wasted.
Wheel Fixing
- The wheel must not slip around the stepper motor. so a notch and screw hole needs to be made.
- I found that in my 3d printer, when i create a shaft and hole, i need 0.4mm more dia in the hole for a smooth fit. So i made the sizes accordingly
Hour Wheel
- Position the braille letter on the grid.
- Then position the wheel face on its side
- Copy letters and move to the clock face
- When one face is done, rotate the wheel 30 degree and write the next letter.
- Make sure that you write the numbers in the right direction of flow. if you do any mistake, the rotation will be in the wrong direction.
Minute Wheel
- For the minutes wheel, proceed similarly but write numbers in the reverse direction along perimeter. because the hour and minute wheels will be side by side. That is why it will rotate in a mirrored direction.
Alarm
To make the alarm input, I needed a mechanism which can read displacement.A potentiometer has a variable resistance. when it is rotated, it reads the new resistance and it can find the rotation angle this way. but a potentiometer cannot rotate 360 degree. so I had to make a gear mechanism to convert the 12 hour rotation to a less than 360 rotation of the potentiometer.
- Make a gear from the library of the tinkercad as shown.
- Use the hour wheel with the gear.
- Make a structure to support the potentiometer.
Potentiometer
- Tighten the potentiometer in the 3d printed file of the support
- then cut the excess length of the potentiometer as shown with a heated knife.
- add the gear and wheel and check its smoothness
The Box
- Measure and make 3d models of each item.
- place the stepper motor, Arduino in the model and make a box to hold the items.
- You may need many iterations to position each item so that there is no clash inside.
- Also the box should be limited to the 3d printer bed size as well.
The Cover
- Put the texts from tinkercad library on the top of the box.
- Provide Braille translation for each of the items.
- Provide all fittings, openings for switches etc.
- All dimensions should be accurate.
- I wanted a speaker hidden inside the box. So i made a cover accordingly. but the volume was very low for an alarm system. So, in the final version, i had to add a bigger speaker which is fitted outside of the box.
Adjustments
- Modify fittings, holders as per needs
Models
The downloadable , 3d printable files are attached.
Connections
- The detail layout is shown in the image.
- The motor shield will use most of the digital pins of the arduino. Hence i will use the analogue pins as the alarm and recording switches.
- Solder the items carefully.
- The Arduino pins are also described below:
- A0: alarm potentiometer center pin
- A2: To a 260 ohm resistor which is connected to Switch-alarm on/off(The resistor is to limit current while providing voltage value).
- A3: To a 260 ohm resistor which is connected to recording switch.
- A4: To a 260 ohm resistor which is connected to "PE" pin of ISD 1820.
- A5: To a 260 ohm resistor which is connected to "Rec" pin of ISD 1820
Issues and Fixes
I faced couple of issues shown in above images because this project is new in nature. And you can use my fixes below:
- Arduino Digital pin connections did not work. It is because most of them are already used by the stepper driver. So I decided later to use analogue A0-A5 connection only.
- ISD 1820 output too low: The output through the .25 watt speaker was very low. i tried couple of speaker types. at last i used the big 5 watt speaker and used an LM386 audio amplifier before the speaker
- The output of ISD 1820 speaker did not make clear voice through the LM386. I found that the output speaker connection of ISD1820 does not have a common ground. It is a differential connection. So connect only the "SP1" output to the LM386 input. The other will be the common ground of arduino, LM386 and speaker.
- LM386 IC getting too hot on touch and instability issue: The LM386 IC was getting very hot. Seems that there is a feedback oscillation/amplification issue due to AC adapter. So added two capacitors: In the last image, Big Blue 470 uF parallelly with the Black output capacitor. And a 1 uF capacitor between VCC input and ground. Take care not to mix up the positive negative leads.
Assemble:
- Assemble the box carefully so the wires do not come in contact with any moving parts inside.
- Use tape to fix wires and the LM386 amp to the wall.
- Use screws to fix the top part to the bottom part.
Coding
The coding idea is as below:
- Load Adafruit motor shield codes . (The library image is attached)
- use a timefactor to check the function. (If it is 1, then the product works normally. if it is 240, then it runs at 240 times speed. that means an hour will pass by :60*60/240=15 seconds for testing of the product. Revert to 1 after test)
- when the alarm is not reached, the wheel steppers run and release after each step ends. Otherwise the driver IC wil get too hot and burn due to high current usage. Also, the rotation of hour wheel is one step(eg. 1 hour, 2hour), the minute wheel rotates by 15 minutes. (The reason is that Nema17 has steps of 200. 15minute=90 degree=90/360*200=50 steps. this is round number. but if we go for 5 minutes, it will become 50/3= 16.66666... So this is a broken step which can result in incorrect rotational position. That is why the minute turns 90 degree and the hour turns 17 degree. For 12 hours these values are okay.)
- when alarm switch is on, the program checks if the time has reached alarm time or not. When reached, it activates the play button.
- Another segment deals with the recording part.
- The code is attached.
- Upload the code through "Arduino IDE" in PC.
- Calibrate the potentiometer value: Turn the alarm setting wheel so that the potentiometer turns. Check the alarm value showing in arduino "serial monitor'. This can be different because your potentiometer may be a little different than mine. You have to change the "map(alarmValue, 10, 1000, 100, 1200)*0.01; // Map the value from 1 to 12" . Modify this till the value shown in serial monitor matches with the alarm setting wheel number. Ask in the comments if any clarification is necessary.
- This works at the accuracy in milliseconds. The complete code is attached for your reference. However I am open to ideas for improvement. You may let me know if you come up with ideas.
Downloads
Thoughts
Shortcomings/ scope for improvements:
- I could not optimise the current consumption to a very low level to use it with a battery. But it can be done theoretically if custom made stepper motor and idle enabled micro-controllers are used. Then one can make a chargeable version also.
- The minute wheel can rotate every 15 minutes not 1 because the stepper motor movement needs to be a round number. (See 3rd point at step 16). A more expensive stepper motor can be used for micro movements.
- The time period can be made more than 12 hours but we will need more reliable, accurate parts and testing scenarios. Right now I recommend to use only for 12 hours emergency situations/sleeping alarm. I have tested the clock by setting an alarm of 8 hours and the result had less than 5 minutes of error which is very good i think. The clock ran continuously without fail . The circuit parts were also cool and did not overheat. One can design a clock running for days using similar basic idea as well.
- The shape has sharp edges but it can be given a more smooth and attractive casing in the future also.
I hope this project empowers to help people in need. You can also give a "favourite/heart" to this project at the top right of this page to support more innovative projects like this. Thank you for your time.