Étape 1: Quelques informations
N’hésitez pas à sauter cette toile de fond, mais il explique pourquoi certaines choses sont faites comme elles sont. Pour la sécurité, casque EEG doivent être isolés de quoi que ce soit branché sur secteur. Le Mindflex, Mindwave Mobile et un certain nombre d’autres casques EEG utilisent une puce ASIC ThinkGear. Cette puce communique via TTL série avec une radio, et la radio communique à son tour avec d’autres appareils, comme la station de base Mindflex jouet. Cela isole électriquement le casque.
Malheureusement, alors que la radio de la Mindwave Mobile est Bluetooth, le jouet Mindflex utilise un autre type de radio. Pour utiliser l’EEG Mindflex avec d’autres appareils, nous connecter simplement la puce ThinkGear reçoivent et transmettent des lignes à une radio Bluetooth HC-06 (environ 10 $ avec des câbles).
Eh bien, peut-être pas tout à fait aussi simple. Alors que c’est tout ce qu’il faut en termes de matériel, il y a une faute de logiciel. L’ASIC ThingGear a plusieurs modes de fonctionnement. Comme incorporé dans le jouet Mindflex, une résistance SMD lui affecte au mode par défaut de 0 x 01. En mode 0 x 01, la puce transmet à 9600 bauds, et envoie les données traitées chaque seconde : méditation, Concentration et valeurs pour différentes parties du spectre de la puissance, probablement dérivé par une FFT. Mais nous voulons avoir accès aux données brutes EEG. Pour cela, le casque Mindflex de commutation mode 0 x 02. En mode 0 x 02, la puce transmet à 57600 bauds, et en plus de la même mise à jour une fois par seconde qu’elle accomplit en mode 0 x 01, il envoie les données différemment amplifiées brutes de capteur d’EEG 512 fois par seconde. C’est le mode dans lequel le casque Mindwave Mobile fonctionne par défaut, donc si vous pouvez passer le casque à ce mode, non seulement que vous obtenez les données brutes, mais vous devriez être capable de l’utiliser avec toutes les applications compatibles Mindwave Mobile.
On peut basculer le Mindflex de mode 0 x 02 avec quelques travaux de soudage SMD, mais je suis terrible à souder (que vous verrez dans les photos plus tard), donc ce n’est pas une option pour moi. En outre, cette solution rend le casque ne fonctionnent plus avec le reste du jouet, et je n’aime pas casser des choses.
Heureusement, le protocole de communication pour la puce ThinkGear vous permet de passer au mode 0 x 02 très simplement en envoyant 0 x 02 à sa ligne de réception de série. Alors que ce n’est pas survivre powercycling, néanmoins il devrait rendre les choses plus simple : Assurez-vous que la ligne de réception de la puce est reliée à de la radio Bluetooth transmettre la ligne et envoyer 0 x 02. Mais il y a un accroc. Le 0 x 02 doit être envoyé à 9600 bauds, tandis que les données suivantes seront à 57600 bauds. Et malheureusement il n’existe aucun moyen pour contrôler la vitesse de transmission de la radio Bluetooth HC-06 dynamiquement en cours d’utilisation.
Mais il existe une solution qui fonctionne étonnamment. 9600 = 57600 / 6. Si vous pouviez juste envoyer un peu six fois à 57600 bauds, ce serait la même que l’envoi d’une fois à 9600 bauds. Le seul hic, c’est qui lors de l’envoi des choses via RS232 serial ou sa variante TTL, vous n’obtenez pas de contrôler chaque bit. Au lieu de cela, en supposant que le paramètre de communication 8N1 habituels, les bits sont empaquetées dans octets, avec chaque byte commençant par un « repère » extra 0 mais et se terminant avec un extra 1 peu « stop ». Les bits de la marque et l’arrêt sont hors de notre contrôle. Mais nous pouvons contourner ce problème. Il s’avère que si nous envoyons la chaîne hexadécimale de 0 x 00, 0xF8, 0 x 00, 0 x 00, 0 x 00, 0xE0 à 57600 bauds et ensuite une pause d’au moins la longueur d’une 9600 bauds peu (une milliseconde sera plus que suffisant, la marche au ralenti est le même que l’envoi de 1 dans le protocole RS232), c’est comme envoyer 0 x 02, avec quatre pépins (et certains zéros supplémentaires à l’avant) , chaque Pépin étant 1/6 d’un peu de longueur. Si nous sommes chanceux, le récepteur de 9600 bauds ignorera les pépins de courts. Et étonnamment, ça marche ! Les commutateurs de puce mode 0 x 02, démarre la transmission à 57600 bauds, et tout va bien. En effet, avec le HC-06 comme l’émetteur il fonctionne à 100 % du temps (à l’aide d’un Brainlink, il parfois nécessite une nouvelle tentative).
Donc, il y a trois éléments au projet :
I. définir la radio Bluetooth HC-06 à 57600 bauds. Ce paramètre survit powercycling. C’est lourd, mais il faut faire qu’une seule fois.
II. souder les connexions vers le casque pour le connecter à la radio de HC-06.
III. s’assurer que le casque passe en mode 0 x 02 en envoyant la chaîne hexadécimale de magie (ou une variante à ce sujet) à 57600 bauds. Cela pourrait se faire en construisant la chaîne magique dans le logiciel de l’EEG, ou en écrivant un programme simple qui envoie la chaîne hexadécimale magique à l’appareil, et ensuite l’appareil peut être utilisé avec n’importe quel logiciel compatible avec le Mindwave Mobile. J’ai fait les deux : J’ai écrit un logiciel EEG en Java qui peut être exécuté sur un PC (probablement aussi Mac et Linux, mais je n’avons pas testé là) et qui envoie la chaîne magique avant l’affichage des données brutes et traitées, et j’ai fait une simple application Android qui simplement envoie la chaîne magique (ou une variante à ce sujet) à 57600 bauds et active le mode compatible Mindwave Mobile. Les deux programmes sont open source.