Page 1 of 1

I2C bus usage through arduino IDE

Posted: Tue Aug 06, 2019 8:19 am
by chrispal
Hello,
I am working on a project with ESP32 azure iot kit and i want to read its sensors. I am coding in arduino IDE. I am trying to scan the I2C bus for the devices and then proceed, using the WIRE library, although i am not able to detect any device.Can anyone advice me on this?In addition,is there a way to use he "esp-iot-solution" library of ESP-IDF in arduino IDE? That would solve many issues.
Thank you!

Re: I2C bus usage through arduino IDE

Posted: Wed Aug 07, 2019 5:16 pm
by scotthauck
First off, try the standard i2c scanner:

https://playground.arduino.cc/Main/I2cScanner/

That should find any devices attached to the unit, and get you started. Some thoughts from there.

If the scanner does NOT work:
* Make sure you have the SCL and SDA pins connected up correctly to the board, and there are pull-up resistors (either on the board you are attaching, or you wire some up yourself - see the i2c wikipedia article).
* Make sure your code is using the right SCL and SDA pins internally. I believe you can Serial.print(SDA) to see what pin is used.
* Play with the Wire.begin statement. It can take up to 3 arguments: the first two are the SCL and SDA pins, but I forget the order, and then the speed, which should be either (100*1000) or (400*1000) for 100KHz or 400 KHz respectively.
* Beware of other Wire.begin statements in your libraries - you might do a good Wire.begin, then the library does another that overwrites what you did.
* Check you libraries for explicit calls to specific CPUs in the definition, since it might not be ESP32-aware. For example, the Adafruit PN532 library has this line:
#if defined(__AVR__) || defined(__i386__) || defined(ARDUINO_ARCH_SAMD) || defined(ESP8266) || defined(ARDUINO_ARCH_STM32)

I needed to change it to this line, adding in ESP32 at the end:

#if defined(__AVR__) || defined(__i386__) || defined(ARDUINO_ARCH_SAMD) || defined(ESP8266) || defined(ARDUINO_ARCH_STM32) || defined(ESP32)

'luck.

Re: I2C bus usage through arduino IDE

Posted: Thu Aug 08, 2019 6:29 am
by chrispal
Thank you for your reply scotthauck!
I figured it out and it was the pin declaration .I used to Serial.println(SDA), but the printed pins were finally not the correct pins that should have been used.
A little bit more carefull with the datasheets and the problem solved.