Thursday 22 August 2013

MegunoLink serial monitoring software Part 1- Graphing Temperature data

Some time ago I received a newsletter with some information on a piece of software called "MegunoLink" this software is basically a Swiss army knife for dealing with serial Comm's from the outside world.

I've been using it for a couple of weeks now and it's capabilities are wide ranging so I'm going to break up the review into bite-size chunks.

There is a 7 day fully functional version of the software you can download to see if it meets your requirements.

The software is modular and has a separate screen for each of its features, here's a few: -
 - Manage the serial ports, you can have multiple ports setup.
 - Monitor the raw data received by the comm port.
 - Create buttons etc. to trigger the sending of data out of the port.
 - Create a Google map of the location received over the serial port.

The most useful features for me were the ability draw plots based on X,Y data or time based data, using the PC clock for the X coordinate.

The premise of the software is that the source data includes the structuring information as well as the actual data.

The example I'll use is my application for monitoring two temperatures and a battery level from a remote transmitter via a receiver connected to the PCs USB port.

Although the website gives plenty of examples they didn't quite match up to my requirements so there was a bit of trial and error until I got it working, I also sent a couple of questions to the support which were promptly answered.

The task was to plot two temperatures over time and also the remote battery level.

Both of these required a timeplot setting up, first the Arduino code: -

 //Send data to megunolink graphing software on the PC
  Serial.print("{TIMEPLOT:"); *This tells Megunolink that the following data is for the timeplot graph
  Serial.print("Temperatures"); *This is the name of the channel, this will appear on the selection dropdown at the top of the graph
  Serial.print("|data|"); *This tells the timeplot that the data is a single datapoint
  Serial.print("Inside Temp"); *This is the name given to the series line on the graph
  Serial.print("|T|"); *This tells the software to add a timestamp to the datapoint, from the PC time.
  Serial.print(inTempC,1); *This is the actual data to plot on the graph, to one decimal place.
  Serial.print("}"); *This is to close the data packet.

The actual message sent over the serial port looks like this

{TIMEPLOT:Temperatures|data|Inside Temp|T|inTempC,1}

I also create a similar message for the second temperature

  Serial.print("{TIMEPLOT:");
  Serial.print("Temperatures");
  Serial.print("|data|");
  Serial.print("Outside Temp");
  Serial.print("|T|");
  Serial.print(outTempC,1);
  Serial.print("}");

This sends the outside temp. to the Timeplot using the same channel name but a new series name, this way both series will appear on the same graph when you select Temperatures from the dropdown box in the Timeplot window.
Below you can see an image of the graph, which was exported from MegunoLink.


You can also open multiple windows that appear on separate tabs, which you can name, so you can have one Timeplot tab for temperatures and another one for battery level, this helps because changing the channel selection from the dropdown box from Temperatures to Battery level has some confusing results, the trace drawn so far for the previously selected channel stays on the chart but no longer plots any points and the newly selected channel starts to draw it's data points.
Along the top of the chart there are a row of option buttons to edit the properties of the chart and any series lines, just make sure you've selected the series before editing it.
left to right - select the serial port, select the channel, edit chart, view summary of data, display/hide legend, run chart like chart recorder, edit series properties, remove single series, remove all series, zoom, pan, zoom all and zoom last

I'll list some more features in the next post, there are quite a few left yet.


Three button WiFi Remote

Using the power control circuit from the Wirelesse door/Window sensor I have designed a simple 3 button WiFi remote with the intention of co...

Popular Posts