

The I2C address can be usually found on the component’s datasheet. With I2C communication, each slave on the bus has its own address, a hexadecimal number that allows the ESP32 to communicate with each device. Recommended reading: ESP32 GPIO Reference Guide Scan I2C Address with ESP32 When using the ESP32 with Arduino IDE, the default I2C pins are GPIO 22 (SCL) and GPIO 21 (SDA) but you can configure your code to use any other pins. So, usually, when you’re dealing with this type of electronics components you don’t need to worry about this.Ĭonnecting an I2C device to an ESP32 is normally as simple as connecting GND to GND, SDA to SDA, SCL to SCL and a positive power supply to a peripheral, usually 3.3V (but it depends on the module you’re using). Most sensors we use in our projects are breakout boards that already have the resistors built-in. Typical values are 4.7k Ohm for 5V devices and 2.4k Ohm for 3.3V devices. The SDA and SCL lines are active low, so they should be pulled up with resistors. Note: in many breakout boards, the SDA line may also be labeled as SDI and the SCL line as SCK. One is used for the clock signal ( SCL) and the other is used to send and receive data ( SDA).

I2C communication protocol uses two wires to share information. Users can program command registers to control I☬ interfaces, so that they have more flexibility Up to 5 MHz, yet constrained by SDA pull-up strength.Accordingly to the ESP32 datasheet, the I2C interfaces of the ESP32 supports: The ESP32 supports I2C communication through its two I2C bus interfaces that can serve as I2C master or slave, depending on the user’s configuration. We have several tutorials with the ESP32 interfacing with I2C devices: In these cases, the ESP32 is the master chip and the external devices are the slaves. We use this protocol many times with the ESP32 to communicate with external devices like sensors and displays.

multiple masters controlling the same slave: for example, two ESP32 boards writing data to the same I2C OLED display.

