ESP8266_PC817C_RaspberryPi

OP #7612472
Lesenswert?

Guten Tag allerseits, vorweg ich bin in diesem Bereich ein absoluter Neuling. In der Regel programmiere ich und erstelle keine Schaltungen, daher bitte ich schon vorweg um Nachsicht, sollte ich mich falsch ausdrücken.

Nun zu meinem Anliegen:

  • als erstes, das Ziel:

ESP pingt RPI an, bekommt Antwort, speichert Timestamp, bekommt länger als 5 Minuten keine Antwort, ESP resettet den RPi.

  • die zunächst geplante Schaltung:

Einfach ESP D1 Low/High schalten und mit dem RUN von RPi verbinden. Dies klappt so mal gar nicht.

  • die zweite Schaltung

D1 und GND auf Pin1 und Pin2 des 817C, GND RPi und RUN RPi auf Pin3 und Pin4 des 817C.

ESP, 817C und RPi sind natürlich alle mit der gleichen 5V und GND Schiene verbunden.

Funktioniert ebenfalls nicht.

Der Tipp mit dem Optokoppler kam aus dem Internet, kann also nicht genau sogen ob das so überhaupt funktioniert.

Daher meine Frage an euch ob ihr mir hier Bitte helfen könntet um das Problem zu lösen ?

Vielen Dank !

#7612477
Lesenswert?

Michael T. schrieb:

  • die zunächst geplante Schaltung:

Zeige die Schaltung(en) als Schaltplan. Dazu auch Deinen Aufbau, aber so dass man etwas erkennen kann.

D1 und GND auf Pin1 und Pin2 des 817C, GND RPi und RUN RPi auf Pin3 und Pin4 des 817C.

Der PC817C benötigt einen Vorwiderstand auf der Eingangsseite.

Der „Ausgang“ des PC817 liefert keine Spannung, das fehlt scheinbar ein Pullup von PIN4 nach Plus der Versorgungsspannung des RPi.

OP #7612491
Lesenswert?

Danke erstmal für deine Antwort. Schaltung kann ich aktuell keine Zeichnen, bin auf Arbeit und hab mir nur das Breadboard mitgenommen.

Schon alleine der Hinweis, das der 817C einen Vorwiderstand benötigt, ist mir schon neu, einen solchen habe ich nicht.

1
   ESP  ->   D1  ---1  PC  4--- RUN RPi  <-  RPi
2
             GND ---2 817C 3--- GND

5V und GND ist bei allen Komponenten der gleiche.

Sketch für den ESP (nur Test):

const int optokopplerPin = D1; const int ledPin = LED_BUILTIN;

void setup() { Serial.begin(115200); pinMode(optokopplerPin, OUTPUT); pinMode(ledPin, OUTPUT);

Serial.println("ESP8266 initialisiert. Warte auf Befehl..."); }

void loop() { digitalWrite(ledPin, HIGH); delay(100); digitalWrite(ledPin, LOW); delay(2900);

if (Serial.available() > 0) { String command = Serial.readStringUntil('\n'); if (command == "kill") { digitalWrite(optokopplerPin, HIGH); Serial.println("Befehl 'kill' erkannt. Optokoppler aktiviert."); delay(3000); digitalWrite(optokopplerPin, LOW); Serial.println("Optokoppler deaktiviert."); } } }

#7612495
Lesenswert?

Michael T. schrieb:

Danke erstmal für deine Antwort. Schaltung kann ich aktuell keine Zeichnen, bin auf Arbeit und hab mir nur das Breadboard mitgenommen.

Schon alleine der Hinweis, das der 817C einen Vorwiderstand benötigt, ist mir schon neu, einen solchen habe ich nicht.

Ich vermute auch dass, wie schon erwähnt, ein Pullup-Widerstand an PIN4 fehlt.

1
   ESP  ->   D1  ---1  PC  4--- RUN RPi  <-  RPi
2
             GND ---2 817C 3--- GND

5V und GND ist bei allen Komponenten der gleiche.

Sketch für den ESP (nur Test):

Da bin ich raus;-) Sicherlich gibt es aber User die Dir hier helfen können.

const int optokopplerPin = D1; const int ledPin = LED_BUILTIN; ..

#7612507
Lesenswert?

Michael T. schrieb:

Ich danke dir dennoch für deine Antworten und der Hinweis mit dem Vorwiderstand war schon mal der erste Schritt in die richtige Richtung :)

Nach meinem Verständnis und Deiner Beschreibung müsste der OK so beschaltet werden:

https://www.mikrocontroller.net/attachment/626172/PC817-A.jpg

Aber..brauchst Du unbedingt einen Optokoppler? Reicht nicht ein NPN-Transistor?

Ruhig Nacht wünsche ich.

Ebenso;-)

Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren