Introduction: K-Ability V2 - Open Source Accessible Keyboard for Touchscreens

About: I am a lazy maker. I like electronics, 3d printing, fixing things and recovering mechanical and electronic components from things that don't work.

This prototype is the second version of K-Ability.

K-Ability is a physical keyboard that allows the use of touchscreen devices to individuals with pathologies resulting in neuromuscular disorders.

There are many aids that facilitate the use of computer devices for people who have neuromuscular pathologies, but they are expensive and most them do not allow complex touchscreen gestures on mobile devices (swipe, double touch, drag and drop).

K-Ability V1 aims to create a self-produced and cheap device (less than 20 €) to give people with tremors, spasms and more general problems of control and neuromuscular coordination the possibility to access to mobile devices and computers at a reasonable price.

K-Ability consists of 7 buttons and a little oled screen.

K-Ability V2 introduces several new features to the project that add comfort and ease of use:

  • replacement of physical buttons with capacitive buttons
  • HID bluetooth connection to the master device (smartphone, tablet and computers)
  • possibility of power supply from powerbank or external battery
  • possibility to create customized designs

Step 1: Materials

Step 2: Turn HC-05 Into a HID Bluetooth Device

L'RN-42 is a bluetooth module that act like a wireless keyboard or mouse.

Due to the high cost and shipping times I opted to hack the common and cheap HC-05, thanks to this simple and effective guide written by Brian:

https://www.instructables.com/id/Upgrade-Your-3-Bl...

The procedure is quite simple and you will only need an FTDI Board and some softwares downloadable directly from the guide.

At the end of the procedure, your HC-05 module will be able to operate in a similar way to the RN-42 and any other HID bluetooth module.

(image taken from https://www.youtube.com/watch?v=y8PcNbAA6AQ)

Step 3: Circuit

I hope the circuit in the picture is understandable.

The circuit uses 9 gpio in this configuration:

D02 > HC-05 TX
D03 > HC-05 RX
D04 > HC-05 STATE
D08 > Display RES
D09 > Display DC
D11 > Display SDA
D13 > Display SCL
A4 > MPR121 SDA
A5 > MPR121 SCL

Note that the MPR121 module is powered by 3.3V and the 2 resistances for the voltage divider of the HC-05.

Step 4: Frame

The project described does not have a real fixed frame, because each pathology will require a dedicated shape, size and material.

For this guide I made a simple cardboard frame to show the possibility of using any shape and material for the body.

A fundamental part to ensure the simplest construction of the body is that it is free of tactile buttons.

The use of the capacitive keys ensures 7 inputs, thanks to the MPR121 module, simply by connecting a cable, or any other conductive material, to the pins of the module, making the layout of the keyboard and the creation of a frame and buttons of any size very simple.

Step 5: Firmware

First we need some libraries:

Text only Arduino Library for SSD1306 OLED displays
Adafruit MPR121 Library
SPI
Software Serial

The commands that move the mouse cursor are sent with the Software Serial library with the "write" function.

Each command is composed of a 7 byte buffer structured in this way:

buffer[0] = 0xFD;
buffer[1] = 0x05;
buffer[2] = 0x02;
buffer[3] = 0x00; //Buttons
buffer[4] = 0x00; //X movement
buffer[5] = 0x00; //Y movement
buffer[6] = 0x00; //Wheel

For this project I opted for the "Text only" because it uses only 2928 bytes (9%) of program storage space and global variables use 54 bytes (2%) of dynamic memory.

Step 6: Video

Support me and my projects at this link https://allmylinks.com/dariocose

Arduino Contest 2020

Participated in the
Arduino Contest 2020