[Erledigt] Remote an ESP01

Hallo zusammen,

neu im Forum un dhoffe, dass ich alles bechreibe, wie es nötig ist:
Ich bastel seit gut einem Jahr an meinem Smarthome und habe mein neues Projekt gestartet. Ich wollte meine Stereoanlage smart machen. Das heißt in die Anlage einen ESP einbauen, der dann per MQTT Signale von meinem Broker empfängt und dann per IR Sender an den IR Empfänger der Stereo schickt.

Soweit so gut. Ich habe gestartet mit einem D1 Mini. Mit diesem habe ich es geschafft, alle relevanten IR Code aufzunehmen und dann mit einem anderen Sketch auch zu senden. Auch die Integration in meinen Broker klappte wunderbar und ich konnte alles schalten. Allerdings eben mit einem D1 Mini und von extern noch. Vor dem Einbau in die Anlage wollte ich dann von meinem Steckbrett runter, löten und auch downsizen.

Daher habe ich überlegt, ob ich nicht auf einen ESP01 switche, weil ich ja auch nur einen GPIO brauche. Aber hier scheitere ich und ich weiß nicht warum.

Ich habe den gleichen Sketch 1:1 auf den ESP01 geflasht und angeschlossen wie folgt:
GND
VCC und CH-PD jeweil mit 3,3V
GPIO-2 -> Data zu meiner IR Diode

Beispiel meiner Schaltung. Am D1 Mini habe ich GPIO-4 also D2 verwendet. Beim ESP habe ich es auf GPIO 2 geändert.

Mein Sketch:

#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>

#ifndef UNIT_TEST
#endif
#include <Arduino.h>
#include <IRremoteESP8266.h>
#include <IRsend.h>


// const uint16_t kIrLed = 4;  // ESP8266 GPIO pin to use. Recommended: 4 (D2).
const uint16_t kIrLed = 2;

IRsend irsend(kIrLed);  // Set the GPIO to be used to sending the message.

// IR SIGNAL SAMSUNG POWER

uint16_t rawData[71] = {9092, 4400,  662, 466,  608, 494,  634, 1596,  634, 492,  634, 494,  608, 494,  634, 492,  634, 494,  634, 1596,  634, 1596,  660, 468,  608, 1622,  608, 1622,  634, 1596,  636, 1596,  634, 1596,  582, 1648,  634, 468,  634, 494,  634, 1596,  608, 520,  608, 494,  634, 494,  634, 494,  606, 498,  614, 1612,  634, 1596,  660, 468,  634, 1598,  608, 1622,  634, 1598,  660, 1570,  634, 40154,  9092, 2142,  608};  // NEC 20DF906F

//uint64_t data = 0x20DF906F


const char* ssid = "WLAN";  //HIER DEIN WLAN EINTRAGEN
const char* password = "password"; //HIER DEIN WLAN PASSWORT EINTRAGEN
const char* mqtt_server = "192.168.2.165"; //IP zum MQTT Broker


WiFiClient espClient;
PubSubClient client(espClient);
void setup_wifi() {
  delay(100);

  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  randomSeed(micros());
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}



void callback(char* topic, byte* payload, unsigned int length)
{
  Serial.print("Command from MQTT broker is : [");
  Serial.print(topic);

  Serial.println();
  Serial.print(" publish data is:");
 
  
 char* payload_str;
  payload_str = (char*) malloc(length + 1);
  memcpy(payload_str, payload, length);
  payload_str[length] = '\0';


  if(String(topic) == "Fernbedienung/Stereoanlage") {
      Serial.print((String)payload_str);
    
     //Fernseher AN/AUS
      if(String(payload_str) == "on") {
      
         //irsend.sendRaw(rawData, 71, 32);
         irsend.sendPanasonic64(0x40040538BC81,48,3);    
        }
     //Fernseher AN/AUS
      if(String(payload_str) == "mute") {
      
         irsend.sendPanasonic64(0x400405004C49);    
        }
     //Fernseher AN/AUS
      if(String(payload_str) == "volup") {
      
         irsend.sendPanasonic64(0x400405000401);    
        } 
     //Fernseher AN/AUS
      if(String(payload_str) == "voldown") {
      
         irsend.sendPanasonic64(0x400405008481);    
        }
     //Fernseher AN/AUS
      if(String(payload_str) == "playpause") {
      
         irsend.sendPanasonic64(0x40040538605D);    
        }
     //Fernseher AN/AUS
      if(String(payload_str) == "next") {
      
         irsend.sendPanasonic64(0x40040538526F);    
        }     
     //Fernseher AN/AUS
      if(String(payload_str) == "preview") {
      
         irsend.sendPanasonic64(0x4004053892AF);    
        }     
     //Fernseher AN/AUS
      if(String(payload_str) == "stop") {
      
         irsend.sendPanasonic64(0x40040538003D);    
        }      
     //Fernseher AN/AUS
      if(String(payload_str) == "selector") {
      
         irsend.sendPanasonic64(0x400405006164);    
        }       
    } 
}
      

void reconnect() {
  
  while (!client.connected())
  {
    Serial.print("Attempting MQTT connection...");
     
    
    String clientId = "YOU_CHOOSE_id";
    clientId += String(random(0xffff), HEX);

    if (client.connect(clientId.c_str()))
    {
      Serial.println("connected");
    
      client.subscribe("Fernbedienung/Stereoanlage");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      delay(6000);
    }
  }
} 


void setup() {
  irsend.begin();
  Serial.begin(9600);
  
  setup_wifi();
  client.setServer(mqtt_server, 1882);

}


void loop() {
  if (!client.connected()) {
    reconnect();
  }
  
  client.setCallback(callback);
  client.loop();

}

Orientiert habe ich mir an dieser Beschreibung: Input

So, nun zum Problem:
Der ESP bootet und im ioBroker sehe ich, dass er im MQTT die topics subscribted. HEißt für mich, dass er den Sketch richtig geladen hat.

Wenn ich nun an den GPIO-2 das Kabel meines IR LED anschließe, dann verliert er die Verbindung zum Broker, die blaue LED am ESP leuchtet dauerhaft und meine IR LED ist auf "dauer-high" -> Sie wurde warm... Ich habe sie dann durch eine normal LED ersetzt, die dann auch dauernd an ist.

Ich vermute, dass es daher irgendwie an der Definition der IR GPIO liegt in meinem Sketch. Aber beim D1 Mini geht es ja auch und ich habe nichts verändert...?

Vielleicht habt ihr eine Idee, wo mein Fehler liegt?

Danke!!digt]

Welcher Strom fließt durch deine IR-Led, bzw. welche Spannung siehst du dann am 3.3V Pin ?

Das gleiche Problem hat auch der Pin D2, wenn der nach Lösung des ersten Problems funktionieren würde.

Einen Fehler im Schaltbild kann ich erkennen.
D2 ist nicht GPIO2.
Deinen Sketch kann ich kaum lesen.
Setze den mal in Code-Tags und nicht in Quote-Tags.
Dann wird der auch auf mobilen Geräten lesbar.

HotSystems:
Einen Fehler im Schaltbild kann ich erkennen.
D2 ist nicht GPIO2.

Stimmt, beim D1 Mini hatte ich D2 verwendet wie beschrieben und hier hatte ich im Code :

const uint16_t kIrLed = 4

Da ich beim ESP01 den GPIO2 verwende, habe ich den Code angepasst auf:

const uint16_t kIrLed = 2

michael_x:
Welcher Strom fließt durch deine IR-Led, bzw. welche Spannung siehst du dann am 3.3V Pin ?

Das gleiche Problem hat auch der Pin D2, wenn der nach Lösung des ersten Problems funktionieren würde.

Entschuldigung, das versteh ich nicht ganz. Beim D1 Mini hat die Schaltung wie gesagt geklappt. Umgesteckt auf den ESP01 geht es eben nicht mehr.
Kann aber gerne messen, welche Spannung an der IR LED ankommt, selbstverständlich, verstehe es nur grade nicht genau :slight_smile:

master-rudi:
Entschuldigung, das versteh ich nicht ganz. Beim D1 Mini hat die Schaltung wie gesagt geklappt. Umgesteckt auf den ESP01 geht es eben nicht mehr.
Kann aber gerne messen, welche Spannung an der IR LED ankommt, selbstverständlich, verstehe es nur grade nicht genau :slight_smile:

Naja, du würdest es dir und uns einfacher machen, wenn du ein Schaltbid postest, wie du es am ESP8266-01 angeschossen hast. Und zur Sicherheit würde ich immer einen Vorwiderstand (ca. 33 Ohm) an die Led anschließen.

Teste dich einmal ein einfaches Blink Beispiel mit einer normalen Led anstatt IR

Hallo,

wenn Du die Schaltung mit dem Tranststor so verwendet hast , fehlt auf jeden Fall ein Widerstand in der Basis für dem Tranststor. Die IR Led sollte auch einen Vorwiderstand zur Srombegrenzung haben.

Heinz

HotSystems:
Naja, du würdest es dir und uns einfacher machen, wenn du ein Schaltbid postest, wie du es am ESP8266-01 angeschossen hast. Und zur Sicherheit würde ich immer einen Vorwiderstand (ca. 33 Ohm) an die Led anschließen.

BIld siehe Anhang
Ich denke ich hab einen Kurzschluss gebastelt oder? Mein Problem ist, die Stromversorgung des ESP01, beim D1 Mini kommt der Strom ja durch den USB Port und ich greife dann 3,3V und GND von den PINs ab für meine Schaltung...
Irgendwie steh ich am Schlauch...

Rentner:
Hallo,

wenn Du die Schaltung mit dem Tranststor so verwendet hast , fehlt auf jeden Fall ein Widerstand in der Basis für dem Tranststor. Die IR Led sollte auch einen Vorwiderstand zur Srombegrenzung haben.

Heinz

Danke, das werde ich noch optimieren, wenn es mit dem ESP01 funktioniert. Tendenziell geht es auch so, es funktioniert ja mit dem D1 Mini problemlos. Dennoch, richtig, ich werde es dann bevor ich es einbaue noch optimieren. .

Hänge Deinen Schaltplan bitte direkt ins Forum. Wie das geht, steht hier.

Ansonsten würde ich sagen Transistor ohne Basiswiderstand und LED ohne Vorwiderstand produzieren meist Elektronikschrott.

Gruß Tommy

master-rudi:
Schaltplan
Ich denke ich hab einen Kurzschluss gebastelt oder? Mein Problem ist, die Stromversorgung des ESP01, beim D1 Mini kommt der Strom ja durch den USB Port und ich greife dann 3,3V und GND von den PINs ab für meine Schaltung...
Irgendwie steh ich am Schlauch....

Das mit deinem Schlauch verstehe ich nicht.
Es gibt doch genügend Beispiele im Netz, wie man 3,3V richtig erzeugt.
Nimm ein vernünftiges Netzteil, z.B. mit 5 Volt und setze einen Stepdown-Regler für 3,3V dahinter und schon passt es.

HotSystems:
Das mit deinem Schlauch verstehe ich nicht.
Es gibt doch genügend Beispiele im Netz, wie man 3,3V richtig erzeugt.
Nimm ein vernünftiges Netzteil, z.B. mit 5 Volt und setze einen Stepdown-Regler für 3,3V dahinter und schon passt es.

Das habe ich, ich habe ein Netzteil und einen Stepdownwandler, der es auf 3,3 V runter regelt. Die Batterie in meinem Schaltplan war nur schematisch als Energiequelle gedacht. Hab es schnell gezeichnet.. Hab nicht gedacht, dass es ein Thema wird.
Aber irgendwas muss ja an der Schaltung nicht passen, sonst würde es ja funktionieren !?

Bei Bedarf kann ich gerne die funktionierende Schaltung des D1 Mini zeichnen, dann habt ihr den direkten Vergleich zwischen D1 Mini und ESP01 mit dem gleichen Sketch.

Tommy56:
Hänge Deinen Schaltplan bitte direkt ins Forum. Wie das geht, steht hier.

Ansonsten würde ich sagen Transistor ohne Basiswiderstand und LED ohne Vorwiderstand produzieren meist Elektronikschrott.

Gruß Tommy

Bild hab ich neu angehängt. Das mit den Vorwiderständen wurde schon erwähnt, werde ich machen, hilf tmir aber dennoch nicht bei meinem eigentlichem Problem. Dennoch danke für den Hinweis.

master-rudi:
Das mit den Vorwiderständen wurde schon erwähnt, werde ich machen, hilf tmir aber dennoch nicht bei meinem eigentlichem Problem.

Wieso? Hast Du schon mal in Erwägung gezogen, dass Dein GPIO-Anschluß der von 3,3V über die Basis-Emiter-Strecke (Spannungsabfall ca. 0,7V) "ungebremst" gegen GND gezogen wird, schon gegrillt ist?

Gruß Tommy

Tommy56:
Wieso? Hast Du schon mal in Erwägung gezogen, dass Dein GPIO-Anschluß der von 3,3V über die Basis-Emiter-Strecke (Spannungsabfall ca. 0,7V) "ungebremst" gegen GND gezogen wird, schon gegrillt ist?

Gruß Tommy

hmm das ist natürlich wahr, daran hatte ich nicht gedacht, da es beim D1 Mini seit Monaten problemlos läuft, habe ich es nur umgesteckt. Wie hoch sollte er sein? 47k?
Sorry bin zwar Ingenieur aber leider kein Elektrotechniker :slight_smile:
Anbei nochmal die funktionierende Schaltung mit dem D1 Mini und die nicht funktionierende mit dem ESP01
Nur nochmal zum Verständnis: Die Schaltung ist eurer Meinung nach i.O.?

Beide Schaltungen sind nach meiner Meinung nicht ok und wenn die eine schon länger läuft, ist das eher Zufall.

Mache Dich mal über ein paar elektronische Grundlagen schlau.

Gruß Tommy

Tommy56:
Beide Schaltungen sind nach meiner Meinung nicht ok und wenn die eine schon länger läuft, ist das eher Zufall.

Mache Dich mal über ein paar elektronische Grundlagen schlau.

Gruß Tommy

Ok, ja das mag Zufall sein und richtig, dass es aus eurer Sicht nicht gut gelöst ist. Aber genau daher hatte ich ja auch gefragt. Dafür ist ja auch ein Forum da, um Probleme anzusprechen und Lösungshinweise oder Lösungen zu bekommen.
Hätte ich die Zeit, mir für 2-3 kleine Projekte komplett in die E-Technik Welt einzulesen und die volle Funktionsweise von Transistoren, Schaltungen und Widerständen und deren Zusammenspiel zu verstehen und zu lernen, müsste ich nicht fragen :slight_smile: . Das mag vielleicht Sinn machen, dass man versteht was man tut, dennoch schwierig.
Aber danke, die Seite kannte ich bereits und hat mir bisher gute Ratschläge gegeben. Mein Problem hab ich bisher dennoch nicht gelöst. Daher werde ich mal schauen, welche Widerstände ich noch an dem Transistor brauche und den Vorwiderstand zur IR LED hab ich schon berechnet und eingebaut...
Vielleicht schaffe ich es ja dann alleine.
Danke...

master-rudi:
Ok, ja das mag Zufall sein und richtig, dass es aus eurer Sicht nicht gut gelöst ist. Aber genau daher hatte ich ja auch gefragt. Dafür ist ja auch ein Forum da, um Probleme anzusprechen und Lösungshinweise oder Lösungen zu bekommen.

Das geht nicht darum, wie wir das sehen, sondern wie der Hersteller das in den Datenblättern vorgibt.
Wenn man sich daran hält, funktioniert es. Wenn man die Datenblätter ignoriert, dann kann es dennoch funktionieren, aber keiner weiß wie lange.

Hätte ich die Zeit, mir für 2-3 kleine Projekte komplett in die E-Technik Welt einzulesen und die volle Funktionsweise von Transistoren, Schaltungen und Widerständen und deren Zusammenspiel zu verstehen und zu lernen, müsste ich nicht fragen :slight_smile: . Das mag vielleicht Sinn machen, dass man versteht was man tut, dennoch schwierig.

Ach so, nur weil du es nicht lernen willst, sollen wir dir das beibringen ?
Das ist mit Sicherheit nicht Sinn des Forums.

Hier heißt es immer noch "Hilfe zur Selbsthilfe"

Und nicht "Ich will nicht lernen, nun macht mal."
Da bist du hier völlig falsch.

Mein Problem hab ich bisher dennoch nicht gelöst. Daher werde ich mal schauen, welche Widerstände ich noch an dem Transistor brauche und den Vorwiderstand zur IR LED hab ich schon berechnet und eingebaut...
Vielleicht schaffe ich es ja dann alleine.

Wieso alleine, du hast doch von uns die notwendigen Tipps erhalten.

HotSystems:
Das geht nicht darum, wie wir das sehen, sondern wie der Hersteller das in den Datenblättern vorgibt.
Wenn man sich daran hält, funktioniert es. Wenn man die Datenblätter ignoriert, dann kann es dennoch funktionieren, aber keiner weiß wie lange.

Ach so, nur weil du es nicht lernen willst, sollen wir dir das beibringen ?
Das ist mit Sicherheit nicht Sinn des Forums.

Hier heißt es immer noch "Hilfe zur Selbsthilfe"

Und nicht "Ich will nicht lernen, nun macht mal."
Da bist du hier völlig falsch.

Wieso alleine, du hast doch von uns die notwendigen Tipps erhalten.

Naja aber das ist Quatsch, ich hab nie gesagt, dass ich nicht lernen will.. Ich hab mir selbst Python beigebracht und Platinen löten und Grundlagen von Schaltungen und Komponenten... Nur wie gesagt, fehlt mir einfach die Zeit, ich bin keine 18 mehr und hab noch viel Zeit für Hobbies und mich in alles einzulesen, wenn ich es in diesem Fall nur ein oder zwei mal brauche. Daher die Hoffnung der Hilfe aus dem Forum.
Ich verstehe gerne was ich da mache und versuche es auch selber zu lösen, aber irgendwann scheitere ich und dann brauche ich Hilfe...
Nur damit ich es nochmal wirklich verstehe:
Eurer Meinung nach würde es funktionieren, wenn ich den Widerstand beim Transistor und der LED ergänze? d.h. die Schaltung an sich ist korrekt, es fehlen nur die beiden Widerstände?
Danke trotzdem für die Hilfe...

master-rudi:
.....
Nur damit ich es nochmal wirklich verstehe:
Eurer Meinung nach würde es funktionieren, wenn ich den Widerstand beim Transistor und der LED ergänze? d.h. die Schaltung an sich ist korrekt, es fehlen nur die beiden Widerstände?
Danke trotzdem für die Hilfe...

Es ist nicht gesagt, dass es dann funktioniert.
Nur muss man alle möglichen Fehler beseitigen, um das Problem zu lösen. Und 2 der Fehler sind die nicht vorhandenen Widerstände.
Ist der Fehler noch da, muss man weiter suchen.

und evtl. ist der GPIO Pin auch schon abgeraucht. Das solltest du auch noch testen.

ElEspanol:
und evtl. ist der GPIO Pin auch schon abgeraucht. Das solltest du auch noch testen.

Das habe ich mit einem einfachen LED Blink Programm getestet. Der GPIO-2 funktioniert noch einwandfrei.
Das andere teste ich morgen, hatte nicht mehr die passenden Widerstände.