Closed martin-c0des closed 3 years ago
Hi, you are using all kinds of boards and libraries that I don't know. I noticed that the ECCX08 also uses i2c. So, I'm wondering if the ECCX08 library sort of resets the i2c library of the ccs811.
Just to check this, you could maybe move the Wire.begin() call to just before ccs811.begin().
@maarten-pennings Thank you for your comment! I realise it's kind of a mess. Surely enough I'm getting "reset failed" when I moved the Wire.begin()
call.
ccs811: reset failed setup: CCS811 begin FAILED setup: hardware version: 12 setup: bootloader version: 1000 setup: application version: 2000
Do you have any advice on how I can mitigate this issue? Or is it simply an incompatibility between the 2 libraries?
Also - feel free to close this issue as I now understand that it's nothing inherently wrong with your library.
Interesting to see that you get begin FAILED, but then get sensible results for the three versions, so i2c communication is working.
I think this is repairable but I can't do this without having your board per libraries.
What I suspect is that the ECCX08 library and wire.begin compete for i2c control. Make sure you have only one i2c begin, and make sure both use the same pins. You might need to like inside the ECCX08 library.
I took the first ECCX08 library I found and found this: https://github.com/arduino-libraries/ArduinoECCX08/blob/8fb63cea34f2ea58e4cdaa7128db20fea39b73a7/src/ECCX08.cpp#L43
Maybe you can use the Sparkfun library, they do it the right way.
On Arduino MKR WiFi 1010, I'm unable to properly initialise and/or use the CCS811 in conjunction with both of the ArduinoECCX08 and ArduinoMqttClient libraries. The basic example runs fine, so I can safely exclude any hardware issues. When I comment out everything that has to do with the ECCX08 and the MqttClient, my code runs fine, however when either of these libraries come into play, the CCS fails to initialize and start, resulting in weird readings like: 54263 and 65503... Could it be an issue with i2c communication? I have the WAKE pin wired to ground... would it make sense to let the Arduino manage it? Any recommendations as to how can I start unraveling this? Thank you, I appreciate your time and effort!
Here's the serial output of what I'm currently getting:
Here's my
setup()
code:And loop:
The only part in loop that has anything to do with the CCS811 is simply calling this function: