Journal of the Weeks:
Week One (June 23rd - June 29th): The first week I was in Charlotte, NC was a little bit dull. I moved in on the 23rd, and my first day was actually on the 24th. I met my mentor, Dr. Payton, and jumped right into doing background research on what I'd be doing this summer. Dr. Payton provided me with several research papers that applied to the project I would be working on this summer. Most of these papers weren't the most thrilling of reads, but taking notes helped keep me awake and focused on the papers.
Week Two (June 30th - July 6th): This week I finished reading the research papers that Dr. Payton initially gave to me. After reading all of the papers I have begun to get a better understanding of the project, why I am working on it, its importance, and possible applications. I started doing research on TinyOS, the operating system that the sensors will be running on. I installed VMWare Server and got XubunTOS running on it. Through XubunTOS I should be able to work with TinyOS and learn more.
Week Three (July 7th - July 13th): Wasted a bunch of time adapting to the XubunTOS system and trying to figure out the differences between that and the cygwin installation. I eventually figured out what directories were where, etc. and verified that TinyOS functioned without problems. Dr. Payton gave me a little more direction with what I should be doing aside from researching TinyOS/nesC. I began working with a fellow intern on wrapping the sensors in monitors to be used by CONSUL (a part of QueryME). This can be roughly translated as going through CONSUL code and figuring out how it works. We also brainstormed possible uses of the sensors in a construction site for our application.
Week Four (July 14th - July 20th): I haven't been able to make much progress this week. I keep running into the brick wall that is the gaping difference between nesC and Java/C++. I have found an application or two within TinyOS that can be altered to get information from the sensors; however, it is still unclear what data type that information is stored in and therefore I am unable to create a proper monitor for it.
Week Five (July 21st - July 27th): Progress! I might have figured out how to get data from the sensors and into a java application, which means that I might be able to send the information from the sensors straight into the monitors in CONSUL.
Week Six (July 28th - August 3rd): I spent most of this week researching other middlewares that have been installed on sensor networks. It is my hope that I will be able to find a paper that will enlighten me as to how to get the middleware onto the motes. I have found some leads that look hopeful, but we will see.
Friday was a bit of a lost day regarding my own work, but I did get to learn about what the other interns have been doing this summer. Since Friday was pretty much the last day for the rest of the interns they presented the progress they made on the projects they had been working on. I actually enjoyed learning about the trials and breakthroughs the other interns made.
Week Seven (August 4th - August 10th): Started putting together an application that accessed the mote's sensors and displayed them in some meaningful manner this week. However, I ended up running into a few problems. The sensors we were looking to sample from are the light, temperature and humidity sensors. The default sensor on the sensing applications included in TinyOS is the internal voltage sensor. I spent part of the week tracking down how I could access the correct sensors. It turns out that it's simpler than I had originally expected, but it does require you to know the hardware being used to sense on the mote. This hardware is also likely to change for each type of mote.
The other issue I encountered this week deals with printing out the values from the sensors to the terminal. I originally thought I might have to use serial redirection, but it turns out that there is a printf command in nesC. The only problem is that unlike C and Java, the printf command sends the information to a buffer and you then have to "flush" the contents of the buffer in order for any of it to end up on the terminal. This means that there is a limited amount of space for each series of printf commands.
I did, however, manage to get meaningful sensor output onto the mote's LEDs, so some progress was made.
Week Eight (August 11th - August 17th): I continued to work on my application which will, ideally, read all of the sensors (two different light sensors and temperature and humidity sensor) on the tmote sky and spit the values onto the terminal. I've been doing this by integrating the printf test program TinyOS provides with a basic sensing application.
Week Nine (August 18th - August 24th): Spent most of this week trying to figure out compiling errors. Most of them had to deal with the printf aspect so I went searching for an easier way to us printf. I found a modified version of printf that should let me just call the printf command without having to flush out the buffer or connect all of the printf events to the application.
Once the program compiled I had a little issues with running it. Printf requires a java application to be running in order to see the output. (Yes, TinyOS is really complicated like that.) I began to see why people just use serial port communication. Point being, application didn't work. Once the java app was running it just hung there. I started to look into debugging my app (ironically some solutions use printf) and figuring out other ways to access the information on the sensors. Dr. Payton also recommended that I check out the websites of people who wrote paper on sensor networks, saying they might have documentation of what they did with the motes. So far this has been a dead end.
Week Ten (August 25th - August 29th): Printf ended up being a dead end, but I was able to direct output through the serial port. I discovered that they came out with a new version of TinyOS (TinyOS 2.1) which actually has a printf tutorial and other useful things included in it. That's kind of too bad for me. I started working on creating a monitor for the temperature, hoping that I would be able to copy/paste and make minor changes for the other sensors. Unfortunately, I ran into come compiler errors that held me up.