diff options
author | dakkar <dakkar@thenautilus.net> | 2016-04-30 19:44:03 +0100 |
---|---|---|
committer | dakkar <dakkar@thenautilus.net> | 2016-04-30 19:47:14 +0100 |
commit | 7ce33e20a449d7883a6d3404fecbc7633ca9d371 (patch) | |
tree | a3ced0bb9f9768c92ffc5c8c5358e5f3e1be9c98 /src/HW/mindflex/document.it.rest.txt | |
parent | new anime day (diff) | |
download | thenautilus-7ce33e20a449d7883a6d3404fecbc7633ca9d371.tar.gz thenautilus-7ce33e20a449d7883a6d3404fecbc7633ca9d371.tar.bz2 thenautilus-7ce33e20a449d7883a6d3404fecbc7633ca9d371.zip |
new keepon-eeg stuff
Diffstat (limited to 'src/HW/mindflex/document.it.rest.txt')
-rw-r--r-- | src/HW/mindflex/document.it.rest.txt | 122 |
1 files changed, 47 insertions, 75 deletions
diff --git a/src/HW/mindflex/document.it.rest.txt b/src/HW/mindflex/document.it.rest.txt index abef570..ad73aee 100644 --- a/src/HW/mindflex/document.it.rest.txt +++ b/src/HW/mindflex/document.it.rest.txt @@ -7,36 +7,35 @@ Giocherellare con un Mind Flex - software Qualche tempo fa comprai un `Mind Flex`_, con l'idea di interfacciarlo -a qualche motore, e controllare qualcosa **con la mente**! +a qualche motore, e controllare qualcosa **con la mente**! Il +"qualcosa" sarebbe stato un `Keepon`_. -Ovviamente è rimasto su uno scaffale per anni. +Ovviamente sono rimasti su uno scaffale per anni. Successivamente mi sono procurato un `MicroView`_, perché è bellino. Ovviamente, pure quello è rimasto su uno scaffale per anni. -Oggi ho finalmente messo assieme le due cose. +Di recente ho finalmente cominciato a mettere assieme le tre cose. .. _`Mind Flex`: http://store.neurosky.com/products/mindflex -.. _`MicroView`: http://learn.microview.io/Intro/general-overview-of-microview.html +.. _`Keepon`: http://www.mykeepon.com/ +.. _`MicroView`: + http://learn.microview.io/Intro/general-overview-of-microview.html Il software =========== Prima di tutto, ho dovuto mettere su l'IDE Arduino e il -compilatore. Farlo su una Gentoo è meno ovvio di quanto dovrebbe, ma -grazie a `un post molto chiaro su sito Apollo NG`_ sono riuscito a -installare il tutto:: +compilatore. Quando ho cominciato, farlo su una Gentoo era meno ovvio +di quanto avrebbe dovuto (anche se c'è `un post molto chiaro su sito +Apollo NG`_ che aiuta molto), ma ora è facile:: emerge arduino crossdev dev-java/rxtx - USE="multilib -cxx" crossdev -s1 --without-headers \ - --target avr \ - --gcc 4.5.4 --binutils 2.21.1-r1 --libc 1.7.0 + USE="multilib cxx" crossdev --target avr - USE="multilib cxx" crossdev -s4 \ - --target avr \ - --gcc 4.5.4 --binutils 2.21.1-r1 --libc 1.7.0 +Questi symlink sono probabilmente ancora necessari:: ln -nsf /usr/x86_64-pc-linux-gnu/avr/lib/ldscripts \ /usr/avr/lib/ldscripts @@ -72,8 +71,14 @@ Notare che la libreria del MicroView deve stare in una cartella chiamata ``MicroView``, e non ``MicroView-Arduino-Library``: l'IDE Arduino ha delle restrizioni sui nomi delle librerie. -.. _`leggere i dati del EEG Neurosky`: https://github.com/kitschpatrol/Brain -.. _`controllare l'hardware del Microview`: https://github.com/geekammo/MicroView-Arduino-Library/ +Ho copiato un po' di codice dal `repository Github di BeatBots`_. + +.. _`leggere i dati del EEG Neurosky`: + https://github.com/kitschpatrol/Brain +.. _`controllare l'hardware del Microview`: + https://github.com/geekammo/MicroView-Arduino-Library/ +.. _`repository Github di BeatBots`: + https://github.com/beatbots/mykeepon L'hardware ========== @@ -87,70 +92,37 @@ prendere il segnale, probabilmente a causa del rumore sulla linea di alimentazione. Ho poi connesso (tramite una piccola breadboard, per il momento) il -MicroView ai fili: massa al piedino 8, alimentazione al piedino 16, -segnale al piedino 9 (ingresso seriale). +MicroView ai fili: massa a massa, alimentazione a VIN, segnale al +piedino di ingresso seriale. .. _`Frontier Nerds`: http://www.frontiernerds.com/brain-hack +Per il Keepon, ho connesso i quattro fili come spiega BeatBots: massa +a massa, alimentazione a A0 (così possiamo notare quando il Keepon +viene accesso), clock a A5, dati a A4. + Il programma ============ -Questo è il programmino, molto semplice, che ho scritto:: - - #include <MicroView.h> - #include <Brain.h> - - // il MindFlex è connesso alla seriale - Brain brain(Serial); - - void setup() { - // il MindFlex parla a 9600 bps - Serial.begin(9600); - // prepara il display del MicroView - uView.begin(); - uView.clear(ALL); - // usa il font più piccolo, 5x7 - uView.setFontType(0); - } - - const int hist_width=3; - const int hist_pad=1; - - void loop() { - if (brain.update()) { // abbiamo dati da mostrare? - uView.clear(PAGE); - - // mostra la qualità del segnale, 0=buono, 200=nessun segnale - uView.setCursor(0,0); uView.print(brain.readSignalQuality()); - - // mostra i due segnali di "alto livello" - uView.setCursor(0,9); uView.print(brain.readAttention()); - uView.setCursor(18,9); uView.print(brain.readMeditation()); - - // ci sono poi 8 bande di frequenza - const uint32_t* power = brain.readPowerArray(); - // trova il massimo, per scalarle - uint32_t max_value=0; - for (int x=0;x<8;++x) { - if (power[x] > max_value) { - max_value = power[x]; - } - } - - // disegna un semplice istogramma - for (int x=0;x<8;++x) { - int x0 = (hist_width + hist_pad) * x; - // abbiamo 30 pixel in verticale - int height = power[x] * 30 / max_value; - for (int o=0;o<hist_width;++o) { - uView.lineV(x0+o,47-height,height); - } - } - - // copia il buffer sul display - uView.display(); - } - } - -E questo è tutto. +Potete `guardare il repository con il programma`_; uso EMACS e +l'`Arduino Makefile`_, invece della IDE, perché preferisco la riga di +comando, e anche perché il mio C++ è talmente arrugginito che senza +l'aiuto di Flymake non scriverei nulla di buono. + +Cose che funzionano: + +* leggere dati dal Neurosky +* ottenere il controllo del Keepon ogni volta che viene acceso +* accodare comandi per il Keepon +* mostrare lo stato completo sul MicroView + +In futuro: + +* leggere lo stato del Keepon (pulsanti, sensori, magari anche il + microfono?) +* scrivere un po' di logica non banale per mappare le letture del + Neurosky ai movimenti del Keepon +.. _`guardare il repository con il programma`: + https://www.thenautilus.net/cgit/keepon-eeg/tree/ +.. _`Arduino Makefile`: https://github.com/sudar/Arduino-Makefile |