Stap 1: Achtergrondinformatie
Voel je vrij om deze achtergrond overslaan, maar het verklaart waarom sommige dingen worden gedaan zoals ze zijn. Voor veiligheid, EEG headsets moeten worden geïsoleerd van alles aangesloten op netspanning. De Mindflex, Mindwave Mobile en een aantal andere EEG-headsets gebruiken een ASIC ThinkGear chip. Deze chip communiceert via TTL seriële met een radio, en de radio op zijn beurt communiceert met andere apparaten, zoals de Mindflex speelgoed-basisstation. Dit isoleert de hoofdtelefoon elektrisch.
Helaas, terwijl de Mindwave Mobile radio Bluetooth is, het Mindflex speelgoed maakt gebruik van een andere vorm van radio. Als u wilt gebruiken de Mindflex EEG met andere apparaten, zullen we sluit de ThinkGear chip ontvangen en doorgeven van lijnen naar een HC-06 Bluetooth-radio (ongeveer $10 met kabels).
Nou, misschien niet zo eenvoudig. Terwijl dat is alles wat nodig is in termen van hardware, is er een software-uitdaging. De ThingGear ASIC heeft verschillende modi waarin gewerkt. Als ingesloten in het Mindflex speelgoed, een SMD weerstand ingesteld op modus 0x01 standaard. In de modus 0x01, verzendt de chip met 9600 baud, en stuurt verwerkt gegevens elke seconde: meditatie, concentratie en waarden voor verschillende delen van de macht spectrum, vermoedelijk afgeleid door een FFT. Maar wij willen toegang hebben tot de ruwe gegevens van de EEG. Dit vereist de headset Mindflex over te schakelen naar de modus 0x02. Een chip zendt op 57600 baud in modus 0x02, en naast de eens-per-seconde update die het doet in de modus 0x01, stuurt het ruwe differentieel versterkte EEG sensor data 512 keer per seconde. Dit is de modus waarin de Mindwave mobiele headset standaard, werkt dus als de headset u naar deze modus overschakelen kunt, niet alleen krijg je ruwe gegevens, maar u moet zitten kundig voor gebruik in combinatie met alle mobiele Mindwave compatibel apps.
Een de Mindflex kunt overschakelen naar de modus 0x02 met wat SMD solderen werk, maar ik ben vreselijk bij solderen (zoals u in later foto's zien zult), dus dat is niet een optie voor mij. Ook die oplossing maakt de headset gebruiken om met de rest van het speelgoed niet langer werken, en ik houd niet van dingen breken.
Gelukkig, de communicatie-protocol voor de ThinkGear chip kunt u overschakelen naar de modus 0x02 heel eenvoudig door het sturen van 0x02 aan zijn lijn van de seriële ontvangen. Terwijl dit niet powercycling overleven, toch het moet eenvoudiger dingen: Zorg ervoor dat de lijn van het ontvangen van de chip is verbonden met de Bluetooth-radio zendt lijn, en stuur 0x02. Maar er een kink in de kabel is. De 0x02 moet worden verzonden met 9600 baud, terwijl de volgende gegevens op 57600 baud zullen. En helaas is er geen manier om te bepalen van de HC-06 Bluetooth-radio baud-rate dynamisch in gebruik.
Maar er een oplossing die verrassend werkt is. 9600 = 57600 / 6. Als je kon stuur een beetje zesmaal op 57600 baud, dat zou hetzelfde zijn als het eenmaal te sturen met 9600 baud. De enige hapering is dat bij het verzenden van dingen via RS232 seriële of de variant van de TTL, je krijgt niet te controleren van elke bit. In plaats daarvan, uitgaande van de gebruikelijke 8N1 communicatie-instelling, de bits worden verpakt in bytes, met elke byte die beginnen met een extra 0 "mark" maar en eindigend met een extra 1 "stop" bit. De mark en stop-bits zijn buiten onze controle. Maar we kunnen dit probleem omzeilen. Het blijkt dat als we de hexadecimale tekenreeks 0x00, 0xF8 sturen, 0x00, 0x00, 0x00, 0xE0 op 57600 baud en vervolgens wacht u ten minste de lengte van een 9600 baud beetje (een milliseconde zullen meer dan genoeg; stationair draaien is hetzelfde als het verzenden van 1's in het RS232-protocol), dat is net als verzenden 0x02, met vier glitches (en sommige extra nullen vooraan) , elke glitch wordt 1/6 van een beetje in lengte. Als we geluk, zal de ontvanger 9600 baud korte glitches negeren. En enigszins verrassend het werkt! De schakelaars van de chip naar de modus 0x02, begint uitzendt op 57600 baud, en alles is goed. In feite, met de HC-06 als de zender het werkt 100% van de tijd (met behulp van een Brainlink, het soms vereist een nieuwe poging tot).
Er zijn dus drie componenten aan het project:
I. Stel het HC-06 Bluetooth-radio op 57600 baud. Deze instelling overleeft powercycling. Dit is lastig, maar moet worden gedaan slechts eenmaal.
II. de soldeer verbindingen met de headset het verbinden met de HC-06-radio.
III. Zorg ervoor dat de headset naar modus 0x02 gaat door het sturen van de magische hexadecimale tekenreeks (of een variant daarop) op 57600 baud. Dit kan gebeuren door de bouw van de magische tekenreeks in EEG software, of door het schrijven van een eenvoudig programma dat de magische hexadecimale tekenreeks naar het apparaat stuurt en vervolgens het apparaat kan worden gebruikt met elke software compatibel met de mobiele Mindwave. Ik heb beide: Ik schreef sommige EEG software in Java , die kunnen worden uitgevoerd op een PC (waarschijnlijk ook Mac en Linux, maar ik heb het niet getest daar) en die stuurt de magische string voor weergave de rauwe en verwerkte gegevens, en ik maakte een eenvoudige Android app die gewoon de magische tekenreeks (of een variant daarop) op 57600 baud stuurt en activeert de Mindwave mobiele compatibel mode. Beide programma's zijn open bron.