Weather Station + 3Ch Recorder (Arduino/Processing)

This is a Weather Station configured for indoor climate monitoring. I gave this project a "Retro" look and added a 3 Channels recorder including some features like: -Events detection and logging -Data logger in excel files -Rate monitoring and logging -Up to 3 Cams video monitoring. -Pause, Fast Forward and Rewind functions. -On screen unit conversion tables. -Alarms -Peaks detection. -Sensors Power Supply Monitoring. -Moving Magnifier Glass. -Possibility of taking screen and cams still pictures. -Cams video zooming and panning (by software) -Emailing events (this feature is the only one pending and emails are not sent for real yet).

This time I'm using real sensors for the Atmospheric Pressure and Temperature. For the Barometric Pressure I'm using the SB-100 sensor from Apogee Instruments, Inc ( This is a high quality professional sensor providing an amplified liner analog output. It is a very sturdy accurate and reliable sensor and very easy to use as it requires no amplification and can be connected directly to one of the Arduino analog inputs. For the Temperature I'm using the ST-100, another high quality professional sensor very reliable and accurate ( from the same company. It is also connected directly with no amplifier to another Arduino analog input. The linearization equation provided by the manufacturer in the data sheet was pretty straight forward to implement in the Processing code. For the Relative Humidity there is no sensor connected at this time; but a potentiometer is used to simulate variations to show in the video as this is a very slow varying variable. In the video, variations in temp were introduced by touching the sensor with the fingers and you can see how sensitive it is. The atmospheric pressure variations shown in the video were introduced by blowing the sensor with mouth air. Also very sensitive. This code in CPU and memory usage intensive and when run together with the screen video taping software I'm using, it slows down a little bit. Built with Processing 1.5.1 and Arduino UNO.

here is the video:

Christallmighty, that is so good.

I have never seen anything as flash as that before. I have just downloaded Processing 2.0.3 on the strength of this. Is there a particular preference that you have for the older version?


Thanks. Highly appreciate your comment. Regarding Processing version 1.5.1. It is the version I've been using forever and for some reason (laziness I guess) I prefer to write the code using it. Every time I try to run the codes I write with 1.5.1 using 2.03 some problems pop up. I'll try to update in the future. Maybe I'm just a little retrograde... XD Thanks again.

PD: I forgot to mention that I built the Recorder and Gauges in a way they can be used independently or combined with other types of instruments also. I used it as a Weather Station; but very easily can be reconfigured to measure any other variables provided they are low frequency.

OK, I have just come back from the beach, v2.0.3 is downloaded and I have had a look at their site. I have to say that I don't know where to start but I will make an attempt when works slacks off a bit. It is very encouraging to see a practical application when they have so much I can't get my head around, and don't need anyway.

I am working on heat recovery from grey water. This is just three thermometers and a flow meter. Those analogue dials should impress the natives no end, and the event recorder would be very useful.


I discovered Processing/Arduino exactly 2 years ago and concluded like you, that was powerful combination I could use to build many many things I always wanted to do. If you want to learn Processing, I recommend you to set up a project you want to work on and begin the build up. That's how I learnt it by building things. It will take a while; but you will be amazed how much you've learn in the process. There are tons of examples out there and the guys in the Processing forum are extremely savvy and helpful. Processing is a super powerful language; but as you mentioned, you don't need all its possibilities. Many of the instructions and features it offers are directed to artistic work and for some you will see its potential engineering applications. I always try to use low level and simple instructions as much as I can; but you will see they have instructions that will take your breath away when you realize how powerful they are. Learning it, is not easy though and takes a lot of time, so be patient...

Thanks for your comments and good luck.

Great stuff!!!!! do you have the arduino and processing codes available?

Sorry, I haven't made them available. Thanks.

no prob! are the gauges custom made or available at a processing library? if so, which one?

They are custom made. This is the basics to build them The recorder is way more difficult though, since the trace displacement is referenced to a time scale in the background. Thanks

cool, thanks! actually i do not need the recorder on my current setup, using nimbits for it plus some local CSV (processing side, saved on the HD) and SD (arduino side) backup

If you want to log data directly into excel using Processing this may help http:


I have a question here:

In order to calculate the temp I used the equation provided by the manufacturer for this sensor( in the Processing code like this:

  float Voltage=map(Sample[1], 0, 1023, 0, 3.9611);
          float Resistance=24900*((5.0/Voltage)-1);
          float TempInKelvin=1/(0.00129241+0.0002341077*log(Resistance)+0.00000008775468*(pow(log(Resistance), 3)));
          float TemperatureInCelsius=TempInKelvin-273.15;

(There maybe errors in the formulas; but that's not important for now) The question is this: Can this equation be implemented in the Arduino code somehow or the best choice will be getting some samples and use multiMap(); for example as discussed here: When I saw the complex math on this formula, I didn't even try; but I want to know as it maybe useful in the future. Thanks.

arduinoadrian: When I saw the complex math on this formula, I didn't even try; but I want to know as it maybe useful in the future.

I think the best answer is "why would you bother anyway?". Your planning for things useful in the future might be better devoted to research for simpler alternatives - like using DS18B20s, which don't need any of that stuff, and bring other benefits to the table as well. All for $5.

Your planning for things useful in the future might be better devoted to research for simpler alternatives - like using DS18B20s, which don't need any of that stuff

You are right, there are other alternatives and more time should be placed to research that. Problem is, there is so much out there that its hard to find it all. I have used LM35; but did not know about the existence of the DS18B20. Thanks for letting me know.

There are also other things to consider when selecting the sensor like accuracy for example and depending on the application some sensors maybe better suited than others. For example, from the DS18B20 datasheet( the accuracy is 0.5 Celsius in the range I need and for the ST-100 I'm using it is 0.1 Celsius which is way better.

Maybe I did not phrase the question correctly since this particular case was not what I was thinking of when asked the question. This is just an example. There maybe other situations when complex math maybe required (particularly for linearization) and I basically wanted to know if Arduino could handle that kind of math in a stand alone configuration without help from the computer. This is what I was referring as useful in the future.

arduinoadrian: ST-100 I'm using it is 0.1 Celsius

OK. That is a different game.............

I would have thought the DS18B20 was the ideal choice for a weather station

I would have thought the DS18B20 was the ideal choice for a weather station

It all depends on how accurate you want to go; but as mentioned before, the sensor used is just a matter of choice. The question I have is if there is a way to implement that kind of math with Arduino other than going multiMap();? There maybe applications requiring that. Maybe a link will help. Thanks.