Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/charliegerard/epoc.js
Node.js addon for the Emotiv C++ SDK
https://github.com/charliegerard/epoc.js
emotiv-epoc epoc iot nodejs
Last synced: about 2 hours ago
JSON representation
Node.js addon for the Emotiv C++ SDK
- Host: GitHub
- URL: https://github.com/charliegerard/epoc.js
- Owner: charliegerard
- License: mit
- Created: 2015-08-25T10:49:36.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2020-12-12T03:15:30.000Z (almost 4 years ago)
- Last Synced: 2024-07-31T18:15:19.935Z (4 months ago)
- Topics: emotiv-epoc, epoc, iot, nodejs
- Language: C
- Homepage:
- Size: 15.6 MB
- Stars: 782
- Watchers: 52
- Forks: 48
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: MIT-LICENSE.txt
Awesome Lists containing this project
README
# JavaScript framework for the Emotiv EPOC [WIP]
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](https://emotiv.com/).
Originally based on the [epocutils library](http://stephaneag.github.io/epocutils/) by [@StephaneAG](https://github.com/stephaneAG)
## Demo:
![mind controlled interface](epoc.gif)
## Status:
* **Refactored to use latest SDK (v3.5.0).**
* Cognitive actions should now be working.
## How to Install
* Download the **Emotiv Community SDK v3.4.0** [here](https://github.com/Emotiv/community-sdk/releases) 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
```## How to Use
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:
```JavaScript
var Epoc = require('epocjs')();Epoc.connectToLiveData("", function(event){
if(event.smile > 0){
console.log('smiling')
}
})
```
or:```JavaScript
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*
## Device data
---
Getting the battery level - only working when connecting to the device, not the EmoComposer.
This event should happen everytime the battery level changes.```javascript
if(event.batteryLevel > 0){
//do something
}
```---
## Events
---
#### Smile
If the value is superior to 0, the headset is detecting that the user is smiling.
```JavaScript
if(event.smile > 0){
// do something
}
```---
#### Looking Up / Down / Left / Right
The headset can detect the direction in which the user is looking:
```JavaScript
if(event.lookingUp > 0){
// do something
}if(event.lookingDown > 0){
// do something
}if(event.lookingLeft > 0){
// do something
}if(event.lookingRight > 0){
// do something
}
```---
#### Blink
Detect if the user blinked:
```JavaScript
if(event.blink > 0){
// do something
}
```---
#### Winking Left / Right
The headset can detect if the user is winking:
```JavaScript
if(event.winkingLeft > 0){
// do something
}if(event.winkingRight > 0){
// do something
}
```---
#### Laugh
Detect if the user is laughing:
```JavaScript
if(event.laugh > 0){
// do something
}
```---
#### Gyroscope
Detect changes in gyroscope data:
```JavaScript
if(event.gyroX){
// do something
}if(event.gyroX){
// do something
}
```---
#### Cognitive Actions
Actions available:
- push
- pull
- lift
- drop
- left
- right
- rotate left
- rotate right
- rotate clockwise
- rotate counter clockwise
- rotate reverse
- disappear```JavaScript
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;
}
```---
## Special Thanks
Thanks to [Cam Swords](https://github.com/camswords) for his help :)
## License
Licensed under the MIT license.