A project for HPC by Kyle during Fall 2014 - Ongoing.
With my constant struggles for energy and focus, it's important I get a great night's rest. Matt offered me a chance to borrow his spare Zeo Sleep Manager, a discontinued sleep monitoring product made by Zeo, Inc. in 2011. The now defunct company had released a special open firmware allowing users to grab raw data from its serial port, and a library to utilize this data.
My goal is to improve my quality of sleep by gathering and interpreting the data being output by this device and utilizing the tools Matt had previously made. I would also like to document the steps needed to do this, so that others may do so in the future.
Zeo, Inc. released two different open firmware versions as they went out of business, 2.6.3O and 2.6.3R.
2.6.3O outputs unencrypted data to the onboard SD card. In order for this to work, previously encrypted data must be removed from the SD card. 2.6.3O outputs data in the same manner as the Zeo used to operate, when data was then uploaded to the Zeo site. This data is output in large intervals, seemingly at least a minute to 5 minutes between readings.
2.6.3R is the more interesting firmware and the firmware I'll be using for this project. This firmware enables data output to the serial port located on the back of the device. This data is output every second, making the Zeo a live brain-monitoring device. To read data from this port to your computer you will need a serial to USB adapter.
To flash the device with the desired firmware, perform the following.
To read from the Zeo's serial port, I'm using this serial to USB adapter, however a modified FTDI cable or similar device should work fine.
Located on the back of the Zeo you will find a small door directly to the right of the power adapter port. Remove the door to expose the 5 pins inside.
Once removed, you should see these pins, labeled below.
Currently, only the Tx and Gnd pins need to be connected to the serial adapter, but in case the Rx is ever enabled I have it connected as well.
Here is the pinout of the serial adapter.
Using the jumper wire included with the adapter I've hooked up the Zeo to the adapter.
Give a general overview of your anticipated implementation of the project. Address any areas where you are making upfront assumptions or curtailing potential detail. State the focus you will be taking in implementation.
State and justify the attributes you'd like to receive upon successful approval and completion of this project.
The actual steps taken to accomplish the project. Include images, code snippets, command-line excerpts; whatever is useful for intuitively communicating important information for accomplishing the project.
Upon completion of the project, if there is an applicable collection of created code, place a copy of your finished code within <code> </code> blocks here.
/* * hello.c - A sample "Hello, World!" program * * written by NAME for COURSE on DATE * * compile with: * gcc -o hello hello.c * * execute with: * ./hello */ #include <stdio.h> int main() { printf("Hello, World!\n"); // Output message to STDOUT return(0); }
Again, if there is associated code with the project, and you haven't already indicated how to run it, provide a sample run of your code:
lab46:~/src/cprog$ ./hello Hello, World! lab46:~/src/cprog$
Comments/thoughts generated through performing the project, observations made, analysis rendered, conclusions wrought. What did you learn from doing this project?
In performing this project, the following resources were referenced:
Generally, state where you got informative and useful information to help you accomplish this project when you originally worked on it (from Google, other wiki documents on the Lab46 wiki, etc.)