2017-02-25 2 views
2

Ich versuche, meine ESP8266 verbinden und senden Nachrichten über einen i2c-Bus. Ich benutze ein NodeMcu Development Board. Die Pins D1, D2 und GND sind miteinander verbunden.ESP8266 bis ESP8266 i2C Kommunikation

Der Code auf meinem Herrn ist:

#include <Wire.h> 

void setup() { 
    Wire.begin(D1,D2); // join i2c bus (address optional for master) 
    Serial.begin(115200); 
} 

byte x = 0; 

void loop() { 

Wire.beginTransmission(8); 
    Wire.write(x);    // sends one byte 
    Wire.endTransmission(); // stop transmitting 
    Serial.println("Transmitted"); 
    x++; 
    delay(500); 
} 

Und der Code auf meinem Sklaven ESP ist:

#include <Wire.h> 

void setup() { 
    Wire.begin(8);    // join i2c bus with address #8 
    Wire.onReceive(receiveEvent); // register event 
    Serial.begin(115200);   // start serial for output 
} 

void loop() { 
    delay(100); 
} 

// function that executes whenever data is received from master 
// this function is registered as an event, see setup() 
void receiveEvent(int howMany) { 
    Serial.println("Received.."); 
    /* 
    while (1 < Wire.available()) { // loop through all but the last 
    char c = Wire.read(); // receive byte as a character 
    Serial.print(c);   // print the character 
    } 
    */ 
    int x = Wire.read(); // receive byte as an integer 
    Serial.println(x);   // print the integer 
} 

Ausführen dieses keine Ausgabe auf dem Empfängerchip gibt.

+0

Der I2C-Slave-Modus ist derzeit auf der Arduino-ESP8266- oder NodeMCU-Firmware nicht möglich. Siehe https://github.com/nodemcu/nodemcu-firmware/issues/1687 und https://github.com/esp8266/Arduino/issues/1330. Siehe auch http://bbs.espressif.com/viewtopic.php?t=2092. –

+0

können Sie versuchen, einfach alte serielle Kommunikation. – dandavis

+0

Siehe [link] (https://github.com/esp8266/Arduino/compare/master...bjoham:i2c_slave). Aber ich kann es immer noch nicht herausfinden. auch nach den Änderungen – user3599285

Antwort

0

Wie in den Kommentaren erwähnt es nicht wie I2C sieht wird unterstützt, aber Sie PJON

nutzen könnten Sie müssen nur ein einziges Kabel verbinden, die Kommunikation zwischen den beiden Geräten ermöglichen

Esp8266 to Esp8266 diagram

0

Ich bin mir nicht sicher, aber ich würde erwarten, dass die Wire-Bibliothek von Arduino die Hardware-I2C-Controller für ATMega verwenden. Der I2C-Treiber in der Firmware von Espressif scheint I2C über GPIO zu machen, das würde andeuten, dass es keinen hw-Controller auf ESP gibt (was die Chancen sind, dass sie sowieso gleich wären). Sie müssen also etwas anderes als Wire.h verwenden, also würde ich vorschlagen - versuchen Sie etwas herunterzuladen, das I2C über GPIO für Ihre Arduino IDE fälscht. Wie this .. vielleicht habe ich das nicht ausprobiert. Ich kenne keine komplette Lösung, aber vielleicht hilft das zumindest ... viel Glück!