Open jcheger opened 7 years ago
Update: are you holding the board in your hand? I think because of the crazily thin pcb board material its very prone to picking up your body heat. Also the esp8266 can get quite warm as well. I have it idling at 22°C now which sounds reasonable.
Original Post: same for me. The formula appears to be correct, so maybe the chips are not correctly calibrated. Hopefully it can be corrected with an constant offset.
I also had a high reading when I tried it for the first time. Removed the shield from the wemos, and put it on a breadboard for measuring. It dropped about 5°C after this.
Wrong Readings here too see Screenshot below. Real Temp was 23,5 C° and 60% hum. All in the same spot on 4 different Wemos and 4 different Sensors. What should i do?
I think temperature and humidity are swapped in the library
sht30.get();
float h = sht30.cTemp; // gives humidity
float t = sht30.humidity; // gives temperature
but after reviewing the code of the library and the component sheet, it seems that the above comment is just a coincidence on my setup :/
I did check the documentation (https://www.sensirion.com/fileadmin/user_upload/customers/sensirion/Dokumente/2_Humidity_Sensors/Sensirion_Humidity_Sensors_SHT3x_Datasheet_digital.pdf).
It describes the readout frame this way: [0] temp MSB [1] temp LSB [2] temp CRC [3] hum MSB [4] hum LSB [5] hum CRC
I also did read the code again in the library, and the frame order and calculations are correct, regarding the documentation. It this chip reliable ? Or maybe nobody cares to have mesurements that can be 10° away of reality ?
I worked it out now. The high Temps are coming from the esp8266 shield. I need to sleep a minimum of 3 minutes before i can check for a new temp. This shield is not usable in normal circumstances... you have to put it far away when you don't want to do a deepsleep...
I had the same problem initially with the DHT22 shield plugged into a WEMOS D1 mini. The DHT22 was reading a few degrees higher than my calibrated thermometer next to it. I surmised that the D1 mini must be somehow heating up the DHT22. But how? Was it through the air or via the connection (pcb tracks and headers) between the D1 mini and the DHT22 shield? I used an extra pair of of the headers with the long pins to add a bit more space between them, which resulted in the reading from the DHT22 being within a degree C of the thermometer. At this point I just compensated for this degree of difference in software.
I then got a HTU21D module and connected it to a NodeMcu Lua ESP8266 ESP-12E WIFI Development Board on a breadboard. To my surprise, similar to the DHT22, the HTU21D was reading a few degrees higher. On the breadboard, the two modules were not close enough for the extra temperature to be transfered via the air, so could it be via the connection(s)? So I then used a 20cm Dupont cable between them to try and dissipate any heat coming from the ESP8266 before it reached the HTU21D. The result? The readings from the HTU21D now agreed with my calibrated thermometer.
I then ordered the SHT30 shield and Dual Base in the hope that the extra track length from using the Dual Base and a different sensor might be the answer. But it was not to be. Plugging a D1 mini and the SHT30 shield into the Dual Base, the temperature readings were again too high. So I replaced the Dual Base with a 20cm Dupont cable and low-and-behold the temperature readings came down almost agreeing with the thermometer. I then tried adding a further 20cm Duport cable (to make the total cable length 40cm) to see if it made any additional difference, but I didn't see any.
So now I can get more accurate temperature readings but have lost the benefit of being able to stack a temperature shield on the D1, and need 20cm of cable between the ESP8266 and a temperature sensor. One idea might be to design an alternative Dual Base which incorporates 20cm of pcb track between pins.
It is RF heating and ground heating that affects your readings. To solve this you need a big/long wire to dissipate the heat and to keep the sensor away from RF on ESP8266, longer the better.
@bcatalin This is correct, but it makes no sense for the overall Design of the Wemos, which should be Stackable small Pieces, not long/thick cables.... So this is definitely a design Error
They figure out on this problem and now the sensor is detachable https://www.aliexpress.com/store/product/SHT30-Shield-for-WeMos-D1-mini-SHT30-I2C-digital-temperature-and-humidity-sensor-module/1331105_32762136940.html?spm=2114.12010615.0.0.6c8ac3fbSVi60a
@bcatalin If someone @wemos would care, they would have answered here in this issue. I dont think this cuts will help to address this issue. The breakout is the same as described above == you loose the idea behind Wemos itself....
FYI, what I finally did is to use the D1mini deep sleep mode (wake, connect wifi, acquire sensor value, push to a MQTT bus and deep sleep).
This lets the board cool down enough for the values to be correct. I'm using a 10mn sleep (I don't need more) but 5mn was fine also.
Project files on https://github.com/ycardon/d1mini-sht30-mqtt
I've had 2x Lolin SHT30 Shield v2.1 for about a year running great with 2 Wemos d1 mini v4. Both with the i2c cable and the sensor isolated from the board. Two weeks ago I started suddenly seeing the temperature weirdly higher than I was expecting. Checking with three other sensors, both digital and analog thermometers which all show the same temperature witin en error of 0.5°C they show that the SHT30 are both out, the inside one about 3°C higher and the outside about 4°C higher. I don't have calibrated equipment, but I can clearly feel the difference between 27°C and 24°C and it's definitely not 27°C in this office right now, that was about a month ago. I recently got a new SHT30 Shield and if I swap it to the old, the first reading I get is about 2-3°C lower and then it jumps back higher. I'm using esphome on home assistant with a very simple code that worked for the past year or so. Anybody has an idea on what's wrong?
EDIT: The issue was the heater on as a default setting in esphome changed in a recent update: https://github.com/esphome/issues/issues/2887#issuecomment-1741934563
Got 2 SHT30 shields. The shown temperature is ~30°C, while the real temperature is ~23°C. I didn't investigate yet, but the temperature is wrong with both shields, very far away from the real one. There is no interference close to the sensor, or neither any air flow.
RH seams correct though.