monitoring/sniffing einer SDI-12-Kommunikation
Ich möchte die Kommunkiation einer SDI-12-Datenverbindung zwischen Sensor und Anzeigeeinheit beobachten. Die Anzeigeeinheit wird mit 6V betrieben, am Sensor liegen 5V an, die kommen über das SDI-Kabel von der Anzeigeeinheit. Für das Monitoring habe ich einen Nano mit entsprechender Software bestückt, als Datapin die 8 definiert und diesen parallel an die Datenleitung zwichen Sensor und Anzeige angeschlossen. GND ist auch verbunden.
Im Moment des Anschließens erscheint in der Anzeige ein "FAIL" und das Oszillogramm am Nano-Pin 8 wird mikroskopisch niedrig, quasi 0V.
Nun sollen doch Arduino-Eingänge eigentlich Eingangs-Widerstände im Mega-Bereich haben ... was ist da passiert?
Ich habe sichergestellt, dass die Software definitiv nicht schreibt, nur lauscht.
Code:
#include <SDI12.h>
int8_t dataPin = 8;
SDI12 mySDI12(dataPin);
void setup()
{
Serial.begin(9600); delay(500);
mySDI12.begin(); delay(500);
mySDI12.forceListen();
Serial.println("--- start listening ---");
}
void loop()
{
String sdiMsgStr;
bool sdiMsgReady = false;
int avail = mySDI12.available();
if (avail > 0)
{
for (int a = 0; a < avail; a++)
{
char inByte = mySDI12.read();
Serial.println(inByte);
if (inByte == '\n') {sdiMsgReady = true;}
if (inByte == '!') {sdiMsgStr += "!"; sdiMsgReady = true;} else {sdiMsgStr += String(inByte);}
delay(10);
}
}
if (sdiMsgReady)
{
Serial.println(sdiMsgStr);
sdiMsgReady = false;
sdiMsgStr = "";
mySDI12.clearBuffer();
}
delay(10);
} //end loop