My project about controlling the speed of a motor by your mind... This is an Arduino and Neurosky ThinkGear module project... The aim is to control the blow speed of a hairdryer to raise a ping-pong ball and float it by the help of your brain waves... Mind control... Things you will need: - Neurosky ThinkGearAM module ( I used a modified Mindflex spare headset) - Paired 2 bluetooth modules (slave & master) - Arduino - A hairdryer ( I modified an old one, using only DC motor and housing) - IRLZ44 logic mosfet Mosfet is attached to hairdryer motor to control the speed of it. Mosfet motor driver circuit is as follows: Master bluetooth module is connected to Arduino rx-tx pins to receive brain wave data from the ThinkGear module... Brain wave data is processed by the ThinkGear module inside headset (which works with 2 AA batteries), a dry electrode collects data from my forehead and sends it over slave bluetooth module to the master bluetooth module on Arduino... onlt tx connection is needed from the module to bluetooth rx pin... There are many detailed examples on internet about this connection... The Arduino script for controlling the motor with brain data is as follows: // Arduino Brain Library - Brain SoftSerial DC motor control over Bluetooth // Speeds up DC motor with attention values // Description: Grabs brain data from software serial on pin 10 and sends CSV out over the hardware serial // More info: https://github.com/kitschpatrol/Arduino-Brain-Library // Author: Eric Mika, 2014 // Modified by Dincer Hepguler 2015 for controlling speed of a DC motor // http://borsaci06.com/ #include #include int motorPin = 3; int speed = 0; // Set up the software serial port on pins 10 (RX) and 11 (TX). We'll only actually hook up pin 10. SoftwareSerial softSerial(10, 11); // Set up the brain reader, pass it the software serial object you want to listen on. Brain brain(softSerial); void setup() { pinMode(motorPin, OUTPUT); // Start the software serial. softSerial.begin(9600); // Start the hardware serial. Serial.begin(9600); } void loop() { // Expect packets about once per second. // The .readCSV() function returns a string (well, char*) listing the most recent brain data, in the following format: // "signal strength, attention, meditation, delta, theta, low alpha, high alpha, low beta, high beta, low gamma, high gamma" if (brain.update()) { Serial.println(brain.readErrors()); Serial.println(brain.readCSV()); speed = brain.readAttention(); speed = map(speed, 0, 100, 0, 255); analogWrite(motorPin, speed); Serial.println(speed); } }