Showing posts with label MindWave. Show all posts
Showing posts with label MindWave. Show all posts

Sunday, June 17, 2018

Project Neurofeedback: Going a bit further with EEG hacking (Part 3 - smaller unit)

Remove the TGAM1 Board

(This step is optional – I just wanted to remove parts that are not actually used and free up space. If you do this then you also need too add a 3.3v regulator circuit to the power supply, same as I did)
Separate the TGAM1 Board from the main board in the Mindflex Headset. This reduces the size significantly – Bluetooth board will fit with room to spare.


  • Cut headers attaching boards
  • Desolder and remove cut header pins
  • Keep connections to (Header P1 connections on data-sheet)
    • Ground (electrode)
    • Reference (electrode)
    • EEG (electrode)
Adding a 3.3v regulator, with filter caps, to the power supply (3 x 1.5v AAA batteries in series).
3.3v regulator board (strip board)
  • linear voltage regulator
  • filter caps

Tuesday, July 12, 2016

2016 Hackaday Prize, moving into round 4

So far 3 of the 5 rounds for the Hackaday Prize 2016 (this years theme is - "Build Something That Matters") have finished:
  1. Design Your Concept (March 14 - April 25)
  2. Anything Goes (April 25 - May 30)
  3. Citizen Scientist (May 30 - July 11) just finished, no results yet
 The top entries for rounds 1 and 2 are listed below:

The top 20 projects of theHackaday Prize 2016 "Design Your Concept" challengeare:

The top 20 projects of the 2016 Hackaday Prize "Anything Goes"challenge are:

The Citizen Scientist Challenge (Round 3) just finished yesterday and that marks the start of the Home Automation Challenge (Round 4), to be followed by the Assistive Technologies Challenge (Round 5) which is the last round before finals.

In the next few days we should have news of the to 20 projects in Round 3, that will be added to the list of the top 100 projects going into the Finals.

My 2 entries to the Hackay Prize 2016 (Universal Glucometer and Train Your Brain) have not yet made it to the top 20 of any round so far ( ;( ), but I continue to work on them both.

Monday, June 13, 2016

Project Updates

Sorry I haven't updated this blog for quite a while - it's due to working on projects over at Hackaday.


I currently have 2 entries for this years Hackaday Prize.
  1. Open Source Neurofeedback (click for details)
  2. Universal Glucometer (click for details)
Challenges I've met along the way:

For my Open Source Neurofeedback project my main challenge continues to be learning to program in Java. 
  • While I do have experience in BASIC, PASCAL, batch files for MS DOS, some C and just a little Python and am reasonably comfortable with linux command line stuff.  While I can read Java programs and understand them, learning to write my own is taking a bit longer than expected.  But, I am starting to get the hang of it.
  • The hardware side of this project is fairly straight forward, even with a few modifications I've made as I've been prototyping.


My Universal Glucometer project has presented me with a number of challenges:
  • While Microchip provides some base code for a glucometer along with a test layout - some parts are no longer available or difficult to find - which goes counter to my idea of a glucometer that can be built from basic parts and adapted to different test strips. Due to these issues I've decided that I need to change code to use a different LCD (the LCD in the Application Note is hard to find - I actually ordered the wrong one -twice - same manufacturer but different pin-out and control protocol).  So, if it is a problem for me to find it now, it'll be worse for others later - need to use an easier to find/source display (maybe a standard 16x2 LCD or a Nokia LCD display - both are easy to get cheap on Ebay).
  • The biggest challenge I've had is figuring my way around Microchip's Microcontrollers: writing code for them and uploading code.  I only recently moved into programming AVR's instead of Arduino's and in hindsight it would have been easier to start with a development board and then worked up to a bare chip (like going from Arduino to AVR's).  It took me awhile, but I finally got MPLAB (Microchip's IDE - Integrated Development Enviornment) installed, along with XC8 (Microchips C compiler for their 8 bit microcontrollers).  I even got the demo program for Glucose Meter to compile. I am still trying to upload it to the actual microcontroller using MPLAB and PICkit3.

Wednesday, April 20, 2016

Project - Neurofeedback EEG Mindflex to MindWaveMobile Headset Part 2 (Details)

Configuring the TGAM1 board for raw EEG data (57600 baud)

Click here to go to part one


    • The default output baud rate for TGAM1 boards (at least the ones taken out of Mindflex and Force Trainer headsets) is 9600 baud (this only allows you to capture data for the default frequency bands once per second).
    • To use these cheap headsets with apps made to work with "Think Gear" headsets - we need to change the communication rate to 57600 baud.  There are 2 methods to achieve this:
      1. One way involves programming the TGAM1 board over Bluetooth - if you look through the links at the end of this post you'll find ways of doing this.  I did not do it this way, instead I chose the second method.
      2. The second way involves removing a single SMD (surface mount) resistor (pull-down resistor) and adding a different resistor going from the same area and then over to positive connection of the power supply on the TGAM1 board (pull-up resistor).
        • To do this you'll only need:
          1.  Basic soldering iron
          2. 10k 1/8th watt resistor
          3. Heat shrink tubing to insulate the resistor
    • Step 1: Remove SMD Resistor (surface mount resistor, it a little rectangle on the top of the board.
      • The SMD resistor can be removed by heating up the pad with a soldering iron and pulling it off with tweezers (or, if you are brave - snap it off with needle nose pliers).
    • Step 2 - Solder in the 10k through hole -(meaning is has wires) resistor.
      • the 10k resistor goes from the spot marked B1 on the board and goes over to the positive power connection (refer to the labeled picture at the top of this post)

    Setting up the HC-06(?) Bluetooth Host/ Slave Module (SPP – Serial Port Profile).

    Setting up the Bluetooth communication board/module:
    • Configuring the Bluetooth Slave Module for 57600 baud rate (most modules seem to be configured for 9600 baud rate as the default setting) **This step should be done with the Bluetooth Module alone (not connected to the TGAM1 board)**
      • This is where we need some type of USB to TTL serial converter
        • The easiest is to use an Arduino Board and load a 'Sketch' to connect to the Bluetooth Module over the serial console. 
        • Breadboard wiring (from Fritzing - just pretend the HC-05 is an HC-06 Slave)
        • So, you need:
          • An Arduino (I like the Nano since its made for bread boards - but you could use an Uno, etc.)
          • Logic Level Shifter
          • HC-06 Bluetooth Breakout Board
          • Arduino sketch to send commands to the HC-06 (HC-06 Setup ).
    •  Physical connections of Bluetooth Serial board to TGAM1board pics
      • I used 90 degree male pin headers so I could use cables
      • Bluetooth RX pin to TGAM1 TX pin
      • Bluetooth TX pin to TGAM1 RX pin
        • Vcc to 3.3v source (if you are using the Mindwave or Force Trainer headset use the on board regulated voltage)
        • Gnd - make sure the TGAM1 and HC-06 (or -05) grounds are connected together
        • LED on Bluetooth Module
          • When initially connected to power it should blink
            • There are different flashing rates that depend on default baud rates
            • Vast majority of modules are set at 9600 as the default baud rate
          • LED will stay lit constantly after the device is paired
            • actually a little more complicated – stays lit constantly when paired and ACTIVELY sending data to application (while setting up my module, I couldn't understand why it would say it was paired and the light on the board continued to blink. Even after I attached it to the headset and powered it on again – it continued to blink – computer said it was paired. FINALLY, after installing Neurosky's Mindwave Mobile and starting the Brain Wave Visualizer – it stayed lit. After I closed Mindwave Mobile it began blinking again. I mention all this because, I didn't see it stated anywhere else.)

      Some REALLY BASIC! Background on Bluetooth Communication

      Being very, very new to working with Bluetooth, myself, I decided to include some additional information so that others can hopefully avoid making the same mistakes that I've made:

      Slave vs Master
      • Master is the device at the center of a Bluetooth network (in this case – your phone, tablet or computer)
        • a Master can pair with multiple Slave devices
      • Slaves send and receive data only to or from the Master (in this case – the MindFlex headset, you could, conceivably,  pair multiple headsets to one Master device)
        • a Slave can only be paired to 1 Master at a time
      Pairing
      • Bonds Slave device to Master device
      • After pairing devices automatically connect when they are both powered on and close enough
        • uses authentication data saved on the 2 devices
      Profiles (devices need to support the same profile to communicate - "communication profiles") – this is not an exhaustive list
      • HSP -head set profile
      • HFP – hands free profile
      • HID – human interface device (generally a keyboard, mouse, etc.)
      • SPP – serial port profile (this is what we need for communication)
      • A2DP – advanced audio distribution profile (streaming audio data to speakers, etc)
      • AVRCP – A/V remote control profile (Bluetooth remote for TV, etc.)
      - A little note on profiles and their importance: I have an older android smartphone (Bluetooth and WiFi capable), an IPhone 5 and a Kindle Fire.  It turns out that none of them support the Bluetooth Serial Port Profile and as a result the only way I can use the Bluetooth connection is with my laptop and a Bluetooth USB dongle.  So, if you are planning to use this with a specific device make sure to check if it supports SPP (Serial Port Profile) Bluetooth Profile.
      • First modules I purchased were actually just back planes (essentially just the breakout board without the module – read descriptions very carefully – not a costly mistake but annoying)

      • The next module was a Master – (projects I looked at never seemed to mention if I needed a Master or Slave module... well it turns out I needed a Slave module, of course)

      • Finally got an HC-06 Slave Module

      AT Commands

      You can find these on the datasheets for the Bluetooth Serial Modules (you can find them online - none of the ones I ordered included the datasheet).  AT commands apply to both the HC-05 and HC-06 boards. These are the ones we need to setup the HC-06 breakout:
        • AT pings the device (response back “OK”over serial)
        • AT+PINxxx
        • AT+NAMExxx
        • AT+BAUD4 (sets baudrate to 9600 – default rate)
        • AT+BAUD7 (sets baudrate to 57600)

        Links to more information and resources:




        Monday, January 11, 2016

        Project - Biofeedback EEG Mindflex to MindWaveMobile Headset

        Converting a Mindflex to a MindWaveMobile Headset

        This basically involves adding a Bluetooth serial transmitter (and configuring it) to the Mindflex Headset and changing some components on the TGAM1 board (the board that acquires the EEG data).

        This ended up being a bit of an adventure – even after a good deal of research (reading datasheet's very carefully) and reviewing other peoples tutorials of similar hacks. In the end, it took about a week of part time research on components, Bluetooth (profiles, module boards, communication protocols), TGAM1 board (communication protocols, identifying board connection points, hardware settings etc.). Presently, I have a fully functional headset that is recognized by Neurosky's MindWaveMobile software as a MindWave Mobile Headset.

        Hardware:

        • Mindflex Headset ($10-20 on ebay)
        • HC-06 Bluetooth Slave Module (that communicates with Serial Port Profile (SPP))
          • these are between $5-10 on Amazon or Ebay (cheaper in quantity, or if you are willing to wait, from China)
          • should be able to use an HC-05 also (connections and configurations a little different – HC-05 can be configured either as a Master or a Slave module – unlike HC-06 which is only one or the other)
          • I'm a noob concerning Bluetooth: protocols, host modes, etc.
        • 10k resistor (pull up to set TGAM board to 57600 baud, ¼ or 1/8 watt)
        • Hookup wire

        Tools:

        • Soldering iron (and solder, of course)
        • Multi-Tester/VOMeter (non-essential - mainly to verify connections)
        • Magnifier (non-essential - to see TGAM1 board pins and labels clearly)
        • 5V to 3.3V Level Shifter (essential if using an Arduino board to set up the Bluetooth module, non-essential otherwise)
        • Some type of USB to TTL Serial Converter (for setting up Bluetooth module board)
          Some Options for Setting Up HC-06 Module
            • Only need 4 pins (Power, GND, TX, RX)
               
          • Adafruit's Console Cable - USB to TTL Serial Cable - Debug / Console Cable https://www.adafruit.com/product/954.There are four wires:
            • red (power)
            • black (GND)
            • white (RX) into USB port
            • green (TX) out of the USB port.
              • The power pin provides the 5V @ 500mA direct from the USB port and the RX/TX pins are 3.3V level for interfacing with the most common 3.3V logic level chipsets.
            • Initially, this is what I was using (at first it was working through a terminal program using serial communication – then it just stopped working. It turns out I need a newer chipset for it to work correctly on Windows 10)
               
          • BusPirate – this should work with no problem when combined with a terminal program (Teraterm, Putty, etc) in serial mode
             
          • Arduino Board with USB connection
            • Software Serial sketch
              • This is what I ended up using and it worked fine – though you do need to upload the sketch a few times:
                • Change baud rate of module
                • change software serial baud rate – reload
                • etc.

        Here are a couple of screen shots of the headset working with a couple of applications:


         I'll post a full write up of this build soon.