Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

WiFi-IR-Blaster selbst bauen: ESP8266 + Arduino Steuerung

Komponenten und Zubehör

Bauteil Menge Hinweise
Espressif ESP8266 ESP-01 (oder NodeMCU) 1 NodeMCU empfohlen: USB, Spannungsregler, mehr I/Os
Arduino Nano R3 1 Für IR-Sendung (IRremote-Bibliothek)
NPN-Transistor (z. B. 2N2222) 1 Für IR-LED-Treiber
IR-LEDs (Adafruit) 1–2 In Reihe an 5 V über Transistor

Benötigte Werkzeuge

Software und Online-Dienste

Projektbeschreibung

Moderne Smartphones haben keine IR-Blaster mehr. Ich wollte meine „dummen“ Geräte (TV, Klimaanlage, Receiver) in mein Smart-Home integrieren. Die Lösung: Ein per Web-App steuerbarer IR-Blaster in jedem Raum.

Entwicklungsweg

1. Rapid Prototyping (ESP-01 + Arduino Nano)

ESP-01 per AT-Befehle vom Arduino steuern → HTTP-Requests an ESP → Arduino sendet IR-Codes. Problem: 1–2 s Latenz, umständliche AT-Befehle.

2. Umstieg auf NodeMCU (ESP8266 Dev-Board)

Vorteile: Onboard USB, 3,3 V-Regler, viele GPIOs, Breadboard-tauglich. ESP8266WebServer-Bibliothek ermöglicht direkten HTTP-Server auf dem ESP. IRremoteESP8266 läuft out-of-the-box.

IR-LEDs direkt am GPIO waren zu schwach → NPN-Transistor schaltet 5 V für IR-LEDs (in Reihe, ohne Vorwiderstand für hohe Reichweite).

3. REST-ähnliche API & Web-App

Frontend (HTML/JS) auf separatem Server (z. B. C.H.I.P. $9 Computer mit Apache) → sendet cURL-Requests an ESP-IP/befehl. Buttons für TV (Power, Source, Vol±, Ch±, Mute) und Receiver (Power, Vol±, Mute, Source). Als Android-Web-App installierbar (manifest.json).

4. Universal Remonster (Fertiges System)

Läuft seit Monaten zuverlässig. Zweites Gerät für Wohnzimmer (Klimaanlage + TV). Montage per Klettband unter Regal, IR-LEDs justierbar.

Zukünftige Erweiterungen

Code

Arduino Sketch (ESP8266 + IRremoteESP8266)

/* WiFi IR Blaster by Buddy Crotty
 * ESP8266 empfängt HTTP GET, sendet IR-Codes per IR-LED.
 * Benötigt: ESP8266WiFi, IRremoteESP8266, ESP8266mDNS
 */
#include <ESP8266WiFi.h>
#include <IRremoteESP8266.h>
#include <ESP8266mDNS.h>

const char* ssid = "AP_SSID";
const char* password = "AP_Pass";
MDNSResponder mdns;
const int khz = 38; // 38 kHz Trägerfrequenz
IRsend irsend(4);   // GPIO4 (D2 auf NodeMCU)

// RAW IR-Codes für Samsung TV, NEC Receiver etc. (Arrays irTVpwr, irTVsrc, ...)
unsigned int irTVpwr[]  = {4650,4250, 700,1550, ... };
unsigned int irTVsrc[]  = {4600,4300, 700,1550, ... };
// ... weitere Codes für TV, Receiver, All-Power ...

WiFiServer server(80);

void setup() {
  Serial.begin(115200); delay(10);
  irsend.begin();
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); }
  Serial.println("\nWiFi verbunden");
  server.begin();
  Serial.println("HTTP Server gestartet");
  Serial.print("IP: "); Serial.println(WiFi.localIP());
  if (mdns.begin("IRBlasterLR", WiFi.localIP())) Serial.println("mDNS gestartet");
}

void loop() {
  WiFiClient client = server.available();
  if (!client) return;
  Serial.println("Neuer Client");
  while (!client.available()) delay(1);
  String req = client.readStringUntil('\r');
  Serial.println(req);
  client.flush();

  // Request parsen & IR senden
  if (req.indexOf("/irTVpwr") != -1)      { irsend.sendRaw(irTVpwr, sizeof(irTVpwr)/sizeof(irTVpwr[0]), khz); }
  else if (req.indexOf("/irTVsrc") != -1) { irsend.sendRaw(irTVsrc, sizeof(irTVsrc)/sizeof(irTVsrc[0]), khz); }
  // ... alle weiteren Befehle analog ...
  else if (req.indexOf("/irALLpwr") != -1) {
    irsend.sendRaw(irRECpwrON, sizeof(irRECpwrON)/sizeof(irRECpwrON[0]), khz);
    irsend.sendRaw(irTVpwr, sizeof(irTVpwr)/sizeof(irTVpwr[0]), khz);
    delay(2000);
    irsend.sendRaw(irRECsrc, sizeof(irRECsrc)/sizeof(irRECsrc[0]), khz);
  }
  else { client.stop(); return; }

  client.print("HTTP/1.1 200 OK\r\n");
  delay(1);
  Serial.println("Client getrennt");
}

Web-Frontend (index.html, script.js, curl.php, manifest.json)

Alle Dateien im Originalprojekt. script.js sendet per jQuery $.get("curl.php", {room: "IP", button: "befehl"}). curl.php leitet als cURL-Request an ESP weiter. manifest.json ermöglicht Installation als Android-Web-App (Vollbild, Icon).

Schaltplan

Einfach: ESP8266 GPIO → NPN-Transistor (Basis über Widerstand) → 2 IR-LEDs in Reihe an 5 V (Kollektor), Emitter auf GND. Für mehr LEDs: NPN schaltet mehrere PNP-Treiber (je LED ein PNP).

Herstellungsprozess

  1. Wesentliche Limitierungen von Wi‑Fi-Echtzeit-Ortungssystemen
  2. Aufkommende Wireless-Technologien 2015: Leitfaden für M2M & IoT
  3. TLS-fähigen Webserver auf 3$ ESP8266 in unter 30 Minuten deployen
  4. Nahtlose MQTT-Integration: NodeMCU DHT22 Sensoren mit Raspberry Pi 3 B+ als Broker
  5. WLAN-gesteuerter Roboter mit Raspberry Pi & Android Smartphone bauen
  6. WLAN-gesteuerter Raspberry Pi Roboter mit Python bauen – Schritt-für-Schritt
  7. WiFi Calling erklärt: Funktionsweise, Vorteile & Bedeutung
  8. Smart IoT-Glas bauen: Füllstand überwachen mit ESP8266, Arduino & Ultraschall
  9. WLAN-Türschloss mit Arduino & ESP8266 – Per Smartphone entsperren
  10. Perlstrahlen erklärt: Der ultimative Leitfaden für glatte, polierte Oberflächen