Hallo zusammen, ich bin gerade an einem Projekt am arbeiten und habe da so meine kleineren und grösseren Probleme.
Ich bringe keine funktionierende I2C Verbindung zustande zwischen meinem ESP8266 und dem Arduino Uno. Ich habe die Verbindungen von SDA ESP zu SDA Arduino und SCL ESP zu SCL Arduino gesteckt.
Die empfangenen Daten auf dem Arduino Uno möchte ich in einen Array schreiben und diesen dann später weiterverwenden. Doch leider komme ich auch hier mit meinem Wissen nicht mehr weiter.
Ich würde immer eine serielle Verbindung nehmen und nicht I2C.
Wenn bei I2C ein einziger Flankenwechsel falsch ist dann hängt das Programm komplett, weil dann die wire-library ewig auf diesen ausgebliebenen Pegelwechsel wartet.
Dagegen ist eine serielle Verbindung ein Kinderspiel und man kann einen TimeOut setzen so wie man das gerne hätte.
Anzahl IO-Pins gleich.
Der Arduino Uno kann als Software-Serial nur vergleichsweise niedrige Baudraten.
Wenn es also nicht auf Hochgeschwindigkeit ankommt dann würde ich eine serielle Verbindung empfehlen.
Wenn man schon einen ESP8266 in Verwendung hat stellt sich immer gleich die Frage kann man den Arduino-Uno komplett einsparen? Das hängt sehr vom Projekt ab.
Wenn du dein Gesamtprojekt beschreibst kann man beurteilen ob man den Arduino-Uno weglassen kann. Auch der Umstieg auf einen ESP32 ist eine Überlegung wert.
vgs
Gem. "Never say Never", würde auch nicht immer immer sagen.
I2C kennt mittlerweile setClock() - damit hast auch deinen Timeout.
I2C ist by design ein Bus - auf der Seriellen musst du das erst in Software machen und elektrisch auf beispielsweise RS485 gehen.
I2C habe ich parallel zu HW-Seriell - für eine zweite Serielle am Uno brauch ich Softserial, auch für eine zweite empfangende Schnittstelle am ESP8266.
Also es spricht schon einiges dafür I2C zu nutzen