Introduction: Wearable Keyboard on Fingers That Leads to Word Pronunciation on Phone

About: I'm a experienced software engineer loved to electronics and robotics.

Hello everyone,
Nowadays wearable smart devices getting popular around the word. Imagine that, if you wear a device between your fingers acting as a keyboard. When you move your finger then its typing letters to your smart device.

In this Instructable I'm going to show you model implementation of above device. When you touch your fingers wear rings by thumb finger ring it will write the letters to mobile phone app using Bluetooth and when you touch enter key related rings then it will read the word or sentence you wrote. When you touch Thumb finger ring with other fingers wear rings that is a key press. One finger can have more than one rings. For same purpose you can use push buttons also.

You will need following items to make this,


  • Arduino board (I'm using Arduino Nano)
  • Bread board
  • Jumper wires
  • H06 Bluetooth module
  • Electric conduct rings or hand gloves with push buttons
  • 390 Ω Resistors (minimum 14 my implementation)
  • 10 kΩ Resistor (2)
  • Smart phone with text to speaking application (I will share my application .apk file)

Step 1: Prepare the Wearable Keys

For wearing purpose you can use push buttons with gloves or any other way to buttons fit in the fingers. But in this Instructable I'm using copper rings as buttons due to curfew can't buy items.
In this step you can design your keyboard key pattern. That mean is it like a computer keyboard or old phone style 3 by 3 keyboard or any other layout. I'm going to use 6 by 6 keyboard. That mean left hand contains 6 keys and right hand contains 6 keys. With this implementation you will have 6*6 = 36 combinations with two hands clicks and 6+6 = 12 one hand click. Arduino code going to hold those key relate characters as below,

char chars[6][6] = {{'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','0','1','2','3'}, {'4','5','6','7','8','9'}};

Without touching left hand rings if touch right hand rings that is chars[0] scenario. That mean according to right hand rings a,b,c...f character print to the app. If left key is 6 and right key is 2 then its a enter. That is handle in Arduino code.

if(outputValue2 == 6 && outputValue1 == 2){ 
Serial.println(""); }

This implementation is totally up to you and you can change the keyboard and according to that Arduino code need to change. You can find attach image related to 9*9 keyboard layout also.

Step 2: Design the Circuit

According to step 1 keyboard design your circuit required number of resistors count can be change. When you connect Potentiometer with Arduino board as a analog input you can get 0 to 1023 values. And that can be map to any number range. We can use that concept with series of resistors.
That mean if you connect the resistors as a series and one side connect to ground and other site +5v in Arduino board. Then if you touch analog input A0 pin between resistors then that input value can be map to number range. According to that value we can conditionally check which resistor combination connected. For that resistors value should be equal. Then it can be consider as keyboard key press.

Sample analog read code as below,

const int analogInputPin1 = A0;
inputValue1 = analogRead(analogInputPin1);
outputValue1 = map(inputValue1, 0, 1023, 0, 8);

To send data to mobile app you need to add Bluetooth H06 module to Arduino board also. Arduino board TX to Bluetooth module RX and Arduino RX to Bluetooth module TX pins.

This project related Tinkercad design you can find with following url. Attached the Image also,

Step 3: Build the Mobile Application

To implement this Instructable you will need mobile application with text to speak feature. I also attached my working .apk application also. Other than that you can also create a mobile app easily. is a platform to create mobile apps without coding. Just drag and drop component to program application. Its very easy and check the video related to this Instructable related application development. Login to the site with your Google account and start the building apps.

In my application no more functionalities implemented. When user type a key it will come to the app using Bluetooth and display it in text box. If new line character receive then application will read the sentence available in text box.

Step 4: Program the Arduino Board

Now you may have idea on how this device is working. According to your keyboard layout you can change the code other than my code.
In this coding I have used multidimensional char array to store the keyboard characters,

char chars[6][6] = {{'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','0','1','2','3'}, {'4','5','6','7','8','9'}};

Then you can access those characters as below,


This program related Arduino full code is as below,

const int analogInputPin1 = A0;
const int analogInputPin2 = A1; int inputValue1 = 0; int outputValue1 = 0; int inputValue2 = 0; int outputValue2 = 0; char chars[6][6] = {{'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','0','1','2','3'}, {'4','5','6','7','8','9'}}; void setup() { Serial.begin(9600); } void loop() { inputValue1 = analogRead(analogInputPin1); //Right hand pressed value outputValue1 = map(inputValue1, 0, 1023, 0, 8); //0, 8 worked inputValue2 = analogRead(analogInputPin2); //Left hand pressed value outputValue2 = map(inputValue2, 0, 1023, 0, 7); //0, 7 worked if(outputValue2 == 6 && outputValue1 == 2){ //If left hand 6 button and right hand 2 button click then write a new line to speak the sentence Serial.println(""); }else if(outputValue2 == 6 && outputValue1 == 4){ Serial.print(" "); }else if(outputValue1 != 0){ Serial.print(chars[outputValue2][outputValue1-1]); } delay(200); }

Step 5: Improvements and Other Possible Applications

This is a sample development and mainly working calculation related to resistance. Due to long wire usage, heat and other resistance related factors changing can be change and accuracy of this product.
For this project I have used basic components. Other than those we can use flex sensor with more accuracy. Keyboard design can be change as computer keyboard layout and it will speedup the typing.

Also we can create another mobile phone app and computer applications to use this Bluetooth data as system keyboard and you can use this finger keyboard as system keyboard.

Also this keyboard structure can be use to play the music also. Then you can simply play a organ or any other instrument with your fingers.

Have a fun. Thank you for watching.

Arduino Contest 2020

Participated in the
Arduino Contest 2020