WeatherShield Pressure, Temperature, Humidity

At EtherMania we developed a shield that allow reading Pressure, Temperature and Humidity.
The shield is equipped with three sensors and a PIC12F683 microcontroller programmed with a specific firmware that interfaces with Arduino through a two line bidirectional synchronous serial connection. The microcontroller is responsible for sampling and averaging the last 8 humidity, pressure and temperature values, providing it to the Arduino in an ASCII readable format expressed in Celsius, hPa and relative % units. Individual raw unprocessed samples are also available for reading.
We provide a library to easy interface the shield with Arduino, and a set of sketches explaining how to use it.
More details at this link: WeatherShield Pressure, Temperature, Humidity : EtherMania, The store for network enthusiasts

Enjoy!

Well documented!! looks as an interesting shield. Did you post it to shieldlist.org allready?

Idea:
A weathershield with connectors so I can place the sensors at some distance of the shield.

Thanks robtillaart for your feedback!

When we started to develop the shield we had in mind the possibility to separate the full shield (with sensors) from Arduino. I mean... the shield is connected to the Arduino board through 4 wires (a pair for +5V and GND, one wire for the clock and one wire for the bi-directional data communications). You can connect the shield with a standard CAT5 cable and put it at some distance from the Arduino...
The shield mounts a microcontroller that takes care of reading the sensors and communicates with Arduino in a digital way, so you don't have any problem related to noise on the sensors lines because they are very short. The shield has a voltage regulator on board... so even the voltage stability is the best.
The code in the communication library let you able to slow down the communication timing if you have problems with long cables.
You can also assign to each shield a specific address through a specific command... so you can have more than one shield sharing the same serial communication wires. The address is stored on a EEPROM memory in the shield so you don't have to assign it at each power up cycle.

Thanks!

How long can the cables be in practice ?
what is your experience with that?

The averaged formats, as there are 8 measurements, how many digits precission is there?
does it return an int or a float (sorry did not dive into the documents).

Is it possible to get a " lowpass " value of the measurements?

float getLowPasstempC()
{
temperature = Talpha * temperature + (1-Talpha) * readSensorT();
return temperature;
}

float getLowPassHumidity()
{
Humidity= Halpha * Humidity+ (1-Halpha) * readSensorH();
return Humidity;
}

and of course the possibility to set the alpha factors..

The advantage is that it is faster and it also takes in account previous readings.

Hi,

How long can the cables be in practice ?
what is your experience with that?

A customer used a couple of meters of CAT5E cable and did not reported any problem. I think the overall length is something dependent to a lot of factors like noisy environment and so on. Just imagine that the communication does not use differential signals but TTL level signals... so I expect to have no more than "some meters".
Reducing the bus speed will help to reduce the communication errors could be inferred by cable length and/or noise.

The averaged formats, as there are 8 measurements, how many digits precission is there?

Internally are counted as float. But the result is exported with 1 precision digit. Having more than one digit seems not significant because sensors could not assure so high precision.

does it return an int or a float

We use three bytes to store the result in a packet transfer. It's a proprietary format used to optimize the communication between the shield and Arduino.
The provided library is able to decode to int (for raw datas), float (for averaged datas) and plain ASCII text.

Is it possible to get a " lowpass " value of the measurements?

Yes, This could be done at the Arduino side reading the full raw measures (provided as number between 0 to 1024) instead of the averaged ones. The shield buffer contains at maximum 8 samples for each channel (temperature, pressure, humidity) a user could read bypassing any averaging performed by the shield.
Reading the raw values allows users to calculate whatever he need. The sample buffer is a "circular" buffer. User could read any of the samples or could ask for "the latest one".

Just a quick note: the averaged values are "temperature compensated" by the shield following the sensor datasheet specifications. Temperature compensation is not applied to raw samples. For this reason you can have some differences between straight average calculation from raw values and the results provided by the shield if you don't compensate your values.

Thanks!

Sounds good, thanks!

Hi guys,

I wondering if you know if this shield works with Intel's galileo board?

Many thanks

C

The proof is as always in the pudding test ...