Coder Social home page Coder Social logo

hankso / embci Goto Github PK

View Code? Open in Web Editor NEW
7.0 1.0 5.0 82.2 MB

Embedded Brain Computer Interface is a bio-signal acquisition & processing platform

Home Page: https://hankso.github.io/EmBCI/

License: MIT License

Python 75.33% Shell 0.37% CSS 0.71% HTML 7.33% JavaScript 4.78% Uno 0.25% C++ 9.87% Makefile 0.29% C 1.07%

embci's Introduction

EmBCI LOGO
Travis CI GitHub top language GitHub code size in bytes GitHub License PyPI Version Python Version GitHub tag

English | δΈ­ζ–‡

EmBCI is fully open source on Github since release v.0.2.3!

This README file is only a quick start. Check out full documentation here.

EmBCI is still under developing. Any contributions are welcomed.

EmBCI is the abbreviation of Embedded Brain-Computer Interface, a bio-signal acquisition and processing platform.

It is composed of a high precision, wearable, 8-channel bio-signal measuring hardware and a signal processing python library optimized for embedded devices.

Users can quickly develop their own applications based on EmBCI. And EmBCI comes with some interesting apps, check out here!

  • Fast prototyping: EmBCI provide lots of data streaming and IO interfaces. Build your app within 100 lines of code!
  • Signal processing: baseline-correction, denoising, time-frequency algorithms, and many many more.
  • Multiple Biosignal: support EEG, EMG, ECG... We implemented gesture-recognition based on sEMG and SSVEP Speller based on EEG in the same platform.
  • It's embedded: 40mm x 40mm wearable device, small but powerful, get rid of PC!
  • WiFi connection: data visualization, files management, visual stimulus keyboard and more Web UI applications are accessable by simply connect to a hotspots.

EmBCI Shield is a PCB board designed to measure, denoise, buffer and transfer bio-signals. Currently, the stable version is EmBCI Shield Rev.A7.

It integrates:

  • ADS1299 from Texas Instruments:
    Low-noise 8-Channels 24-Bits ADC for Biopotential Measurements
  • ESP32 from Espressif:
    Tensilica Xtensa Dual-core 32-Bits Processor with WiFi and Bluetooth
  • Power management chips and others

EmBCI Shield can also be used as an extension shield for OrangePi/RaspberryPi and other 40-Pin compatiable develop boards.

  • on embedded linux: wifi, serial, sysgpio, spidev
  • on others platforms: wifi, serial/usb

pip install embci

git clone --depth=1 -b release https://github.com/hankso/EmBCI.git
cd EmBCI
sudo python -m pip install -r ./requirements.txt
python setup.py build && sudo python setup.py install

For those who want to build their applications based on EmBCI, you may want to install embci in developer mode with:

git clone -b master https://github.com/hankso/EmBCI.git && cd EmBCI
sudo python -m pip install --editable .

Then you can code and test your app.

EmBCI provides lots of useful input/output interfaces including an extendible WebUI so that one can easily implement applications. See embci.io, embci.webui and embci.apps for more information.

On arm and aarch64 embedded Linux platforms, setup.py will also install Linux service configuration files.

To autostart EmBCI applications at boot on PC and other systems, you have to config autorun manually.

TODO: only install the package is not enough

EmBCI has a Linux Service interface to work properly on embedded devices.

Both System-V style scripts and System D service manager scripts are provided.

See files/service for more details.

EmBCI use INI-Style configuration files with an extention .conf.

Here's an example:

# File: EmBCI/files/service/embci.conf
# Lines beginning with '#' or ';' are ignored and will be used as comments.

[Path]
DIR_BASE = /usr/share/embci

[Platform]
HARDWARE = Rev.A7
BOARD = Orange Pi Zero Plus 2

[GPIO]
PIN_ESP32_DRDY = PD11
PIN_ILI9341_DC = PA02

[Network]
WEBUI_HOST = 0.0.0.0
WEBUI_PORT = 8080

When you type import embci, it will automatically search for configuration files and load them into embci.configs with following priority(from low to high):

project config file: "${EmBCI}/files/service/embci.conf"
 system config file: "/etc/embci/embci.conf"
   user config file: "~/.embci/embci.conf"

On Windows system:

project config file: "${EmBCI}/files/service/embci.conf"
 system config file: "${APPDATA}/embci.conf"
   user config file: "${USERPROFILE}/.embci/embci.conf"

See docs/Configurations for more details.

Get full documentation here.

Folder Description
embci Data-processing algorithms, IO, WebUI and frameworks
embci.apps Basic applications and an example app project
embci.gyms Output classification result to gyms to control games
embci.io Stream Readers/Commanders, data save/load functions
embci.utils Miscellaneous tools: useful decorators and functions
embci.viz Visualization: SPIScreen, Matplotlib, and Qt
embci.webui Web-based User Interface
files/avr On shield Atmega328P firmware (Deprecated)
files/esp32 On shield ESP32 firmware and burning tools
files/cases 3D models files in SolidWorks and STL format
files/hardware EmBCI Shield files in Eagle format
files/service Linux service configurations

Currently two environments have been implemented to use mind-control results to control movement. See embci.gyms for more.

Written by @ buaawyz. See game installation guide.

Run python main.py first and then from gyms import PlaneClient as Client

See more at gym_torcs. And embci.io.TorcsCommander.

MIT license. See LICENSE.txt

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.