Through a system of magnetic connectors, bioloop can be worn in many different ways. For simplictly, the prototype will have a basic magnetic clip. Bioloop detects when fingers are present on the electrodes, and records skin conductivity as well as the date and time to the onboard memory.
The GSR sensor reads conductivity from the fingers in order to obtain higher quality data that does not fluctuate with wrist movement. I'm not happy with the data that comes from wrist-mounted electrodes, which I have tried and abandoned. However, having to manually tap the electrodes on a regular basis is a huge inconvenience. I may try other electrode positions like the forehead, sweat glands, and behind the ear in future prototypes.
Two zinc coated electrodes are connected to a simple amplifier circuit that treats the fingers as a voltage divider. This is then fed into an opamp and into the microcontroller's ADC. The sensor also has it's own regulator to filter out AC noise during charging, and that allows the microcontroller to power the sensor section off and on by demand.
The microcontroller that I chose to use for the prototype is an Arduino pro mini, bulit on the atmega328. For laziness reasons, I'm using the arduino IDE. The final prototype will use the bare IC. Along with running bioloop, the microcontroller also stores all readings on the internal EEPROM (which can handle around ~150 datapoints) and acts as a real time clock with a 32.768KHz watch crystal.
At the moment, all user data goes through a bi-color LED that lights up when bioloop is logging or during charging. Future versions may have more LEDs to allow for immediate feedback, but for now, it would take up too much space
bioloop communicates over serial to a serial monitor on a computer through a series of conductive pins on the bottom, similar to Apple's MagSafe charging system. I couldn't find a microcontroller that I liked that supports USB-although Atmel's samD11 ARM MCU looks nice (if I can get ahold of any) because of it's low pin count and budget pricing. Likewise, I couldn't develop for bluetooth4.0, which is what most fitness trackers use, simply becuase I don't have any devices that support it.
In the end, bioloop will run off of a rechargeable battery with a capacity around 100mAh. I don't know how long it will be able to go between charges, but hopefully it will last long enough to go a few days without charging. Because I designed the sensor section to turn on in one second interravals and used a low-power library to reduce microcontroller current, it shouldn't consume too much power
Bioloop's software is fairly simple. It acts like a big datalogger, keeping track of time and ADC measurements. The microcontroller wakes up every 1sec to check for fingers on the electrodes, then goes back to sleep. If it does detect fingers, it wakes up and records a burst of box filtered data which in turn is fed into a function to find the mode. The mode is then rescaled to a value of 1-100 based on the maximum and minimum possible readings of the sensor, then saved to EEPROM along with the timestamp. Timekeeping is taken care of with timer2 and a RTC function written by sparkfun. When a computer is connected to bioloop, it resets it ans establishes connection through a crude serial interface that allows the user to access saved data, clear the memory, and check the battery levels. Everything is run on bioloop. In the future, I will probably end up writing a pretty GUI to make interfacing less of a pain. Another notable problem is the RTC: because it runs off the atmega, resetting the processor or any loss of power will require recharging as well as restoring the time.