//Reference //https://github.com/esp8266/Arduino/issues/3046 #define PIN_SCL 22 #define PIN_SDA 21 // IO22 = SCL = (Above TX/RX) = Green // IO21 = SDA = (Below TX/RX) = Yellow String c; //Receiver #include void setup() { Wire.setClock(4000); Wire.begin(PIN_SDA, PIN_SCL); // join i2c bus (address optional for master) Serial.begin(9600); // start serial for output Serial.print("ESP32 Start communication") ; } void loop() { Wire.requestFrom(8, 6); // request 6 bytes from slave device #8 while (Wire.available()) { // slave may send less than requested //Serial.print("WireAvailable: "+ String(Wire.available())); //Serial.print("ESP32 : Message received"); //int c = Wire.read(); // receive a byte as character Serial.print(Wire.available()); c = (String) Wire.read(); // receive a byte as character Serial.print(c); // print the character if(Wire.available() == 0 ){ Serial.println("Message transmitted"); break; } } } //Sender #include //ESP8266 #define PIN_SCL 14 //5 #define PIN_SDA 2 //4 // D1 = GPIO5 = SCL = GREEN --> not correct // D2 = GPIO4 = SDA = YELLOW --> not correct //IO14 I2C_SCL = D5 = Green //IO2 I2C_SDA = D4 = Yellow // function that executes whenever data is requested by master // this function is registered as an event, see setup() void requestEvent() { Wire.write("123456"); // respond with message of 6 bytes // as expected by master Serial.println("ESP86 answers"); } void setup() { Serial.begin(9600); Wire.begin(PIN_SDA,PIN_SCL,8); // join i2c bus with address #8 Wire.onRequest(requestEvent); // register event Serial.println("ESP86 setup"); } void loop() { delay(1); }