This framework provides an interface to access data from the Emotiv EPOC brain sensor using Node.js.
To use this framework, you're gonna need an EPOC / EPOC+ or Insight that you can buy here.
Originally based on the epocutils library by @StephaneAG
Refactored to use latest SDK (v3.5.0).
Cognitive actions should now be working.
Download the Emotiv Community SDK v3.4.0 here and copy the edk.framework
file (community-sdk > lib > Mac > edk.framework) to /Library/Frameworks
(on Mac).
Either clone this repo and run
npm install
or just run:
npm install epocjs
When writing a program, use either the connectToEmoComposer
or connectToLiveData
function to use the emulator or the data coming from the device.
Example of simple program:
var Epoc = require('epocjs')();
Epoc.connectToLiveData("<path to your profile file>", function(event){
if(event.smile > 0){
console.log('smiling')
}
})
or:
var Epoc = require('epocjs')();
Epoc.connectToEmoComposer(function(event){
if(event.smile > 0){
console.log('smiling')
}
})
The path to your user file should be something like this /Users/< username >/Library/Application Support/Emotiv/Profiles/< filename >.emu
Getting the battery level - only working when connecting to the device, not the EmoComposer. This event should happen everytime the battery level changes.
if(event.batteryLevel > 0){
//do something
}
If the value is superior to 0, the headset is detecting that the user is smiling.
if(event.smile > 0){
// do something
}
The headset can detect the direction in which the user is looking:
if(event.lookingUp > 0){
// do something
}
if(event.lookingDown > 0){
// do something
}
if(event.lookingLeft > 0){
// do something
}
if(event.lookingRight > 0){
// do something
}
Detect if the user blinked:
if(event.blink > 0){
// do something
}
The headset can detect if the user is winking:
if(event.winkingLeft > 0){
// do something
}
if(event.winkingRight > 0){
// do something
}
Detect if the user is laughing:
if(event.laugh > 0){
// do something
}
Detect changes in gyroscope data:
if(event.gyroX){
// do something
}
if(event.gyroX){
// do something
}
Actions available:
switch(cognitivAction){
case 2:
console.log('push')
break;
case 4:
console.log('pull')
break;
case 8:
console.log('lift')
break;
case 16:
console.log('drop')
break;
case 32:
console.log('left')
break;
case 64:
console.log('right')
break;
case 128:
console.log('rotate left')
break;
case 256:
console.log('rotate right')
break;
case 512:
console.log('rotate clockwise')
break;
case 1024:
console.log('rotate counter clockwise')
break;
case 2048:
console.log('rotate forwards')
break;
case 4096:
console.log('rotate reverse')
break;
case 8192:
console.log('disappear')
break;
}
Thanks to Cam Swords for his help :)
Licensed under the MIT license.