I2C bus usage through arduino IDE

chrispal
Posts: 9
Joined: Tue Aug 06, 2019 8:11 am

I2C bus usage through arduino IDE

Postby chrispal » Tue Aug 06, 2019 8:19 am

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!

scotthauck
Posts: 20
Joined: Fri Jul 26, 2019 5:50 pm

Re: I2C bus usage through arduino IDE

Postby scotthauck » Wed Aug 07, 2019 5:16 pm

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.

chrispal
Posts: 9
Joined: Tue Aug 06, 2019 8:11 am

Re: I2C bus usage through arduino IDE

Postby chrispal » Thu Aug 08, 2019 6:29 am

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.

Who is online

Users browsing this forum: Baidu [Spider], Spile2 and 14 guests