============================== Giocherellare con un Mind Flex ============================== :CreationDate: 2015-10-23 13:11:34 :Id: HW/mindflex :tags: - hardware - software Qualche tempo fa comprai un `Mind Flex`_, con l'idea di interfacciarlo a qualche motore, e controllare qualcosa **con la mente**! Il "qualcosa" sarebbe stato un `Keepon`_. 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. Di recente ho finalmente cominciato a mettere assieme le tre cose. .. _`Mind Flex`: https://store.neurosky.com/products/mindflex .. _`Keepon`: https://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. 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 --target avr Questi symlink sono probabilmente ancora necessari:: ln -nsf /usr/x86_64-pc-linux-gnu/avr/lib/ldscripts \ /usr/avr/lib/ldscripts ln -nsf /usr/x86_64-pc-linux-gnu/avr/lib/ldscripts \ /usr/x86_64-pc-linux-gnu/avr/binutils-bin/2.20.1/ldscripts cd /usr/avr/lib ln -nsf avr5/crtm328p.o . ln -nsf avr6/crtm2561.o . ln -nsf avr6/crtm2560.o . .. _`un post molto chiaro su sito Apollo NG`: https://apollo.open-resource.org/mission:log:2015:01:20:gentoo-crossdev-compile-avr-gcc-for-arduino-and-cura Librerie Arduino ---------------- Mi sono servite due librerie: quella per `leggere i dati del EEG Neurosky`_ e quella per `controllare l'hardware del Microview`_. Le ho clonate della directory del mio "sketchbook":: mkdir -p ~/sketchbook/libraries cd ~/sketchbook/libraries git clone git@github.com:geekammo/MicroView-Arduino-Library.git \ MicroView git clone git@github.com:kitschpatrol/Brain 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. 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 ========== Ho seguito le istruzioni che ho trovato su `Frontier Nerds`_: ho saldato un file al piedino "T" della scheda Neurosky, un filo a massa, e (aggiunta mia) un filo al "+" della batteria. In questo modo posso alimentare il MicroView con le batterie del Mind Flex: quando avevo provato a alimentarli separatamente, la scheda Neurosky non riusciva a 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 a massa, alimentazione a VIN, segnale al piedino di ingresso seriale. .. _`Frontier Nerds`: https://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 ============ 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