Hey Leute, ich bin neu und hoffe, ihr könnt mir irgendwie weiterhelfen, bin langsam am verzweifeln.
Mein Arduino Uno ist der Slave und der NodeMCU der Master. Verbindung wird über I2C hergestellt. Verwende ich den Sketch ohne die Einbindung von Blynk, funktioniert alles sehr gut. Sobald ich die Variante mit Blynk scharf schalte, bekomme ich einen Fehler. Ich bin schon so weit, dass es an der for-Schleife liegen muss und zwar die Zeile mit "data.bytes[i] = Wire.read()". Kommentier ich diese aus, bekomme ich keinen wdt-Fehler, dann kann ich aber natürlich nicht die Daten von Slave anfordern und ich bekomme Nullen. Also ohne den wire.read() funktioniert die Blynk-Verbindung (ich kann den am Master angeschlossenen DHT auslesen), mit der Zeile bekomme ich den wdt-Fehler. Kann es vielleicht an den delays liegen?
Zu den beiden Themen findet man was, zu diesen in Verbindung habe ich noch nichts finden können.
Vielleicht gibt es auch eine komplett andere Möglichkeit als diese mit einer union struct. Hauptsache ich kann die Daten zusammen an den Master senden und dann einzeln auslesen.
Vielen Dank schon mal im Voraus Leute!
#define BLYNK_TEMPLATE_ID "lalala"
#define BLYNK_DEVICE_NAME "lalala"
#include "DHT.h"
#define DHTPIN 13
#define DHTTYPE DHT22
#define BLYNK_FIRMWARE_VERSION "1.0.1"
#define BLYNK_PRINT Serial
#define APP_DEBUG
#include "BlynkEdgent.h"
//#define BLYNK_DEBUG
//#define USE_NODE_MCU_BOARD
#include "Wire.h"
float Luftfeuchtigkeit = 0;
float Temperatur = 0;
DHT dht(DHTPIN, DHTTYPE);
BLYNK_WRITE(V5)
{
if(param.asInt()==1){
digitalWrite(12, HIGH);
}
else{
digitalWrite(12, LOW);
}
}
union data_u
{
struct
{
int bfeuchte1;
int bfeuchte2;
int bfeuchte3;
int bfeuchte4;
int bfeuchte5;
};
int bytes[10];
};
data_u data;
BLYNK_CONNECTED()
{
Blynk.syncVirtual(V5); //Relais am NodeMCU
Blynk.virtualWrite(V8, Luftfeuchtigkeit); //DHT am NodeMCU
Blynk.virtualWrite(V9, Temperatur); //DHT am NodeMCU
Blynk.virtualWrite(V10, data.bfeuchte1); //Bodenfeuchtesensoren am Arduino
Blynk.virtualWrite(V11, data.bfeuchte3);
Blynk.virtualWrite(V12, data.bfeuchte5);
}
void setup()
{
Serial.begin(115200);
Wire.begin(D1, D2);
BlynkEdgent.begin();
pinMode(12, OUTPUT);
dht.begin();
}
void loop() {
BlynkEdgent.run();
Wire.beginTransmission(8);
getData();
Serial.println(data.bfeuchte1);
Serial.println(data.bfeuchte3);
Serial.println(data.bfeuchte5);
Wire.endTransmission();
Luftfeuchtigkeit = dht.readHumidity();
Temperatur = dht.readTemperature();
Blynk.virtualWrite(V8, Luftfeuchtigkeit);
Blynk.virtualWrite(V9, Temperatur);
Blynk.virtualWrite(V10, data.bfeuchte1);
Blynk.virtualWrite(V11, data.bfeuchte3);
Blynk.virtualWrite(V12, data.bfeuchte5);
}
void getData()
{
Wire.requestFrom(8, sizeof(data));
for (unsigned int i = 0; i < sizeof(data); i++)
data.bytes[i] = Wire.read();
delay(100);
}
Serieller Monitor:
___ __ __
/ _ )/ /_ _____ / /__
/ _ / / // / _ / '/
///_, /////_
/__/ v1.0.1 on ESP8266
....
....
[6187] CONNECTING_CLOUD => RUNNING
10
40
120
[6248] Hold the button for 10 seconds to reset configuration...
10
0
255
[6688] Hold the button for 10 seconds to reset configuration...
-1
-1
-1
ets Jan 8 2013,rst cause:4, boot mode:(3,7)
wdt reset
load 0x4010f000, len 3460, room 16
tail 4
chksum 0xcc
load 0x3fff20b8, len 40, room 4
tail 4
chksum 0xc9
csum 0xc9
v000737b0
~ld