## Inspiration

Stephen Hawking is one of the greatest minds all time, yet when he got motor neurone disease his physical ability was heavily restricted. The only way he could communicate was by typing via a cursor he operated with the little movement he had left in his cheek. So in order to aid the thousands of people who suffer from similar conditions, I wanted to make something that would allow someone to communicate with just their brainwaves and little to no external aid. I wanted to make something even simpler so that the next great minds of our generation won’t be held back by such physical conditions.

## What it does

This project was built to help amputees and paralytics type and send text messages with little to no motion. How it’s used is that once the script is started, it runs through a list of numbers from 0 to 9, and once the user wants to select a character they simply focus intensely on the screen which is picked up by the headset. This is repeated until the used is finished and all the numbers they’ve selected are compiled into a list, which is converted to letters via the numbers’ ASCII values. The letters are then sent via sms to a phone number of their choosing.

## How I built it

The mind reading headset is a modified star wars force trainer, a toy that allowed a user to levitate a ball with “the force”. What I did is run wires to the T and GND pins in order to intercept data from the device’s onboard neurosky chip and send that over a serial port to my laptop with the use of the arduino brain library. Data from the chip is separated into multiple values but the important ones are my alpha waves at positions 6 and 7 which are indirectly corresponded to how focused I am on any given thing. Once those are parsed and extracted, I plotted them on a graph with matplotlib(for visualization) then looped the process and added a number counter. When my alpha waves exceed a certain value(around 10000) the current number is added to an array and once the script is terminated, that array is split every 2 values(since every alphabetical letter can be represented with a 2 digit ASCII code) which are then translated into their respective letters. Once we have a string of letters, it’s just a simple call to the twilio API to generate an SMS message and send it to the target phone number with their free trial account.

## Challenges I ran into

The force trainer model I’m using is the model 1 which the manufacturer stopped producing years ago, which means the hardware for this project is nearly irreplaceable. The big problem was that the data was only being shown when the device was first being turned on, meaning that in order to get a steady stream of brain data I had to keep turning the headset on and off every few seconds.

## Accomplishments that I'm proud of

In order to get around the aforementioned problem, I had to get a second NodeMCU (thank god for amazon prime) and connect it with a series of resistors and LEDs. I then connected that to the headset’s positive lead, effectively bypassing the power switch and writing a script to the NodeMCU that automatically turned the headset on and off every 4 seconds. This allowed me to get a steady stream of data without having to turn it on and off manually which would be essential for my target audience.

## What's next for Brain text

My big next step is the automation of the recipient’s contact info. Right now, the recipient’s phone number has to be entered manually, but given more time and resources I would integrate the google api and have the program loop through email addresses until the user picks one by focusing on it, just like it does for numerical characters. This would allow the process to be entirely hands-free and make it much easier for someone who has limited range of motion to type.