I got the kickstarter Ruuvi tag with only temperature sensor from a friend.
Flashed the latest firmware 1.2.12 with nRF Connect.
I’m using Ruuvi Station to read values in raw mode.
Example measurements below.
Real temperature vs. what Ruuvi shows
80 vs. 40 (sauna while heating, Ruuvi tag case open -> no delay in measurement)
-21 vs -32 (freezer, case closed)
20 vs 14 (room, case closed, over night)
Any tips what could be wrong / why I get so weird temperatures
If I understood correctly, you have RuuviTag basic which relies on nRF52 internal temperature sensor. The internal temperature sensor has accuracy specification of ±5 degrees, but your results do sound to be a lot off.
Sauna could be explained by positioning: It’s possible to measure 40 and 100 degrees in the same sauna at the same time.
Freezer and especially room temperature sound a bit strange. How fresh battery do you have on tag? I’m wondering if the battery is dying and that would cause poor performance. Otherwise I’ll check the long-term stability of internal temperature sensor
Ok, just to double-check that I haven’t made a logic error, here’s the code for converting raw value as reported by the nRF52 into units of 0.01 C as given by BME280.
// If only temperature sensor is present.
else
{
int32_t temp; // variable to hold temp reading
(void)sd_temp_get(&temp); // get new temperature
temp *= 25; // SD returns temp * 4. Ruuvi format expects temp * 100. 4*25 = 100.
raw_t = (int32_t) temp;
}
In other words, BME280 returns raw value at the units of 0.01 C, ie. 100 => 1.00 C and -100 => -1.00 C.
nRF52 returns temperature in units of 0.25 C, ie. 4 => 1.00 C and -4 => -1.00 C. We multiply the nRF52 value by 25 to give it the same scale as BME280 results: (4*25) = 100 => 1.00 C, (-4*25) = -100 => -1.00 C.
I measured one Kickstarter-era tag with 1.2.12 against 3 “various” RuuviTags with BME280 running 1.2.12 in freezer, fridge and office:
Environment BME280 nRF52 Difference
Freezer -19.14 C -22.75 C -3.61 C
Fridge 6,81 C 4.25 C -2.56 C
Office 22.32 C 20.25 C -2.07 C
It seems to me that there is some gain error in my sensor too, but nowhere near as dramatic as in yours and my piece is within the specified ± 4 C.
I’d think that this issue is in your sensor internal calibration, and not a larger problem in all RuuviTags.
Kickstarter-era tags are past of our one year warranty, but I can compile a firmware with a constant correction factor just for you if you calculate the desired correction
returns chip i.e. Die temperature which (as Otso mentioned) is documented to be only ±5°C accurate !
Testing/verification should be against some other device, for example a thermometer.
Battery state is either “good enough” to run the devices or “dead” (and should not have any effect of temperature measurement.
Please see FAQ: battery · ruuvi/ruuvitag_fw Wiki · GitHub