Novecento99 / Nuvolino

https://novecento99.github.io/Nuvolino/
MIT License
0 stars 1 forks source link

How had you solved the Multimaster I2C Bus Problem? #1

Open FerrisB270 opened 5 months ago

FerrisB270 commented 5 months ago

Hello, I made the same. I build in an ESP32-C3, soldering the wires and install Tasmota. Now I see the values are bad. The temperature and the humidity are higher then expected.

Any ideas to solve the problem?

FerrisB

Novecento99 commented 5 months ago

Hi

Well, when I started this git I read all what I could find on the internet.

As far as I remember (in my git I don't use tasmota) the esp32 you put inside could be the problem by heating up the sensor. To offset it you could edit the tasmota code and subctract a constant to the temperature

FerrisB270 commented 5 months ago

I have no offset configured at the moment. Here are two picture of the values (more or less) at the same time.

image

image

Novecento99 commented 5 months ago

oh okay, you read different values than what the ikea shows. Is like that all the time or maybe for just the first reading?

just found out that mine shows similar behavior to yours. Since our microcontroller is directly connected to the sensor, I believe post processing is done by the ikea microcontroller before showing it to the display. A similar computation would be nice to be implemented in this git. A baseline could be subtracting around 2 degrees

If I'm not mistaken in another git this issue has been talked about, if I found it again I will let you know

Novecento99 commented 5 months ago

well, I didn't found the git but I found way better: official sensirion tuning guide official functions available

arduino even permits to retrieve the sensor parameters set ! we should dive in this to understand how ikea's engineers set up the sensor

it's even possible to read the raw data instead of the post processed data with readMeasuredRawValues()!

Novecento99 commented 3 months ago

I think just using the function to read the raw data could be sufficient uint16_t readMeasuredRawValues(int16_t& rawHumidity, int16_t& rawTemperature, uint16_t& rawVoc, uint16_t& rawNox);