Entwicklung: Sensor mit dem ESP8266 WLAN-Funkmodul

Begonnen von locutus, 09 November 2014, 19:30:06

Vorheriges Thema - Nächstes Thema

gloob

Da ich schon 2 Stück habe würde ich auch noch das letzte nehmen.
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

locutus

#241
Hallo,
basierend auf der IRremote ESP8266 Library ist diese Infrarot-Fernbedienung entstanden.
Das IR-WLAN-Gateway ist als einfache Infrarot-Fernbedienung nutzbar und unterstützt zahlreiche IR-Protokolle sowie Produkte vieler Hersteller:

- NEC
- Sony
- Panasonic
- JVC
- Samsung
- Sharp
- Dish
- Wynter
- RC5/RC6

Hardware (weiße Platine):
ESP8266 ESP-12E WLAN-Modul
2 IR-Dioden
IR-Empfänger
4 Taster
- S1 am GPIO5
- S2 am GPIO12
- S3 am GPIO13
- S4 am GPIO14
Programmierschnittstelle für USB zu TTL-Wandler mit 3,3V-Logik
FLASH Jumper
USB mini Typ B Buchse zur Spannungsversorgung

Software:
Arduino core for ESP8266 WLAN chip
IRremote ESP8266 Library

Features:
HTTP-Webserver auf Port 80
Senden von IR-Befehlen vom Browser aus über PC, Tablet oder Smartphone
OTA Update über Webbrowser unter: http://<ip-adresse>/update
Fernsteuerung mit NetIO App
Integration in FHEM möglich. Bsp.:
define irCommand dummy
attr irCommand room ESP8266
attr irCommand webCmd PhilipsStandby
define myNotify notify irCommand:PhilipsStandby { GetHttpFile("192.168.1.100:80", "/ir?code=1356&bits=12&protocol=RC5") }


Funktionsweise:
Zum Senden der IR-Codes wird der hier angehängte ESP8266_IRremote Arduino Sketch benötigt.
Vor dem Upload ist es zwingend erforderlich, diese Daten zu bearbeiten:
// WLAN data
const char* ssid = "mySSID";
const char* password = "myPASS";
// static IP
IPAddress ip(192,168,1,100);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);


Für das IR-WLAN-Gateway wählen wir aus Werkzeuge -> Board: "Generic ESP8266 Module" und legen die folgenden Optionen fest:

Flash Mode: QIO
Flash Frequency: 40MHz
CPU Frequency: 80MHz
Flash Size: 4M (1M SPIFFS)
Debug Port: Disabled
Debug Level: None
Reset Method: nodemcu
Upload Speed: 115200
Port: COM*

Die Hardware flashen:
1. Jumper auf beide Stiftkontakte J1 (FLASH) setzen.
2. IR-Gateway über die 6-pol. Programmierschnittstelle an seriellen Adapter anschließen und mit Spannung versorgen.
3. Programm aus der Arduino-IDE hochladen.
4. Spanungsversorgung trennen und Jumper von J1 entfernen.

Beim ersten Start des ESP8266 wird ein Access Point mit der SSID IR-Gateway-AP erstellt. Die Zugangsdaten des eigenen WLAN-Netzes werden im Webbrowser unter der Adresse http://192.168.4.1/ eingeben. Nach dem Speichern der Daten, startet der ESP8266 neu und versucht sich mit dem WLAN-Netz zu verbinden. Sobald das IR-Gateway sich an dem WLAN anmelden konnte, stellt es auf einer IP-Adresse den Port 80 zur Verfügung, über den IR-Befehle abgesetzt werden können.
So werden über HTTP-Requests IR-Befehle an URL abgesetzt:
http://<IP-Adresse>/ir?code=***&bits=**&protocol=*

Bsp. Standby Befehl für mein Philips Hi-Fi System:
http://192.168.1.100/ir?code=1356&bits=12&protocol=RC5
Dabei ist zu beachten, dass der IR-Code als Dezimalzahl gesendet wird.
Hier z. B. der Dezimalwert "1356", der sich aus dem HEX-Wert "54C" ergibt. Den Wert "54C" gibt der Dekoder beim Betätigen der Standby Taste meiner Philips Fernbedienung aus.

IR-Codes dekodieren:
Dazu wird die Platine über die 6-pol. Programmierschnittstelle mit einem USB zu TTL-Wandler verbunden. Erlaubt ist nur ein serieller Wandler mit 3,3 V Logik.
Nun lassen sich in der Arduino IDE unter Werkzeuge -> Serieller Monitor IR-Codes dekodieren. Die Baudrate beträgt 9600.
Ausgabe im seriellen Monitor, Bsp. Standby Befehl für mein Philips Hi-Fi System:
Decoded RC5: 54C (12 bits)
Raw (18): 950 -850 1850 -1800 1850 -1750 1850 -1750 1850 -850 950 -1750 1000 -850 1900 -850 950




UPDATE 25.05.2017
IR-WLAN-Gateway Ver. 1.1 (grüne Platine)

Wichtigste Änderungen und Neuerung im Überblick:
- Debugg LED D3 am TXD Port des ESP8266
- Netzteilkondensator C2 durch kompakte SMD Bauart ersetzt
- weitere IR-Protokolle (AIWA, Coolix, Denon, Mitsubishi, RCMM, Sherwood) hinzugefügt
- IRrecvDump implementiert
- WiFiManager hinzugefügt

Das Bearbeiten der Zugangsdaten und das anschließende Hochladen des Sketches ist in der Ver. 1.1 nicht mehr erforderlich. Das IR-WLAN-Gateway ist dank des WiFiMangers sofort einsatzbereit.



UPDATE 01.07.2017
IR-WLAN-Gateway Firmware Ver. 3.0 ist hier verfügbar.
- Simple URL zum Senden von IR-Daten
- IR-Codes im Webbrowser dekodieren
- IR-Codes passwortgeschützt senden
- JSON-Funktionalität
- IR-Senden mit IFTTT und Amazon Echo (Alexa)
- Host Name, Port und Passwort im WiFiManager konfigurierbar
- Taster S4 versetzt das Gateway in den Access Point Modus.
- OTA Update über Webbrowser



Verfügbarkeit und Preise:
Ich biete die Geräte im Marktplatz zum Kauf an.

gloob

Würdest du vielleicht den Schaltplan und die Daten zum selber bestellen der Platine zur Verfügung stellen?
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

ext23

Der Schaltplan würde mich auch interessieren, bzw. die Board Layouts, dann würde ich mir mal ein Platinchen ätzen.

/Daniel
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

locutus

#244
Gerberdaten für ITEAD Studio.
Ein paar unbestückte Platinen habe ich noch rumliegen. Stückpreis 2,- € zzgl. Versandkosten.

Die Verwendung der Daten für kommerzielle Zwecke, Herstellung oder gewerblichen Vertrieb ist untersagt.

gloob

Also ich hätte Interesse an 2 Platinen.


Gesendet von iPhone mit Tapatalk
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

toensi

Hallo Locotus,

wenn noch Möglich hätte ich gerne :

1x fertig bestückten WLAN-RGB Controller.
1x Sensor mit dem ESP8266 (Wi07c) WLAN-Funkmodul.
1x IR WiFi Gateway

Danke und Gruß aus Münster.
toensi

gloob

Zitat von: locutus am 18 Juli 2016, 16:24:23
Gerber für ITEAD Studio.
Ein paar unbestückte Platinen habe ich noch rumliegen. Stückpreis 2,- € zzgl. Versandkosten.

Hast du vielleicht eine BOM von den Teilen? Ich könnte es auch aus dem Schaltplan raussuchen, aber vielleicht hast du ja etwas.
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

locutus

Nö, aber bevor du die falschen Teile bestellst ...

1x 39 Ohm 0204
1x 1k5 0204
2x 100 Ohm 0204
2x 2k2 0204
3x 10k 0204
1x 10µF 35V
1x 470µ 16V
3x 100nF RM 2.5
4x 100nF 0603
1x BC337
1x AMS1117 3.3
1x TSOP4838
2x TSAL6200
1x ESP12
1x Mini-USB Einbaubuchse
4x 2 Pin Momentary Push Button Tactile Tact Switches 6 x 6 x 5mm
1x Stiftleiste 2-pol. RM 2.00
1x Jumper RM 2.00

accessburn

Huhu,

was mache ich denn falsch?

...\ESP8266_IRremote\ESP8266_IRremote.ino:6:29: fatal error: IRremoteESP8266.h: No such file or directory
#include <IRremoteESP8266.h>
                                               ^
compilation terminated.
exit status 1
Fehler beim Kompilieren für das Board Generic ESP8266 Module.


Das File "IRremoteESP8266.h" befindet sich aber im Ordner :'(
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

JoWiemann

Welche Entwicklungsumgebung nutzt Du und wo befindet sich, Dateipfad, die Header-Datei.



Grüße Jörg

Gesendet von iPad mit Tapatalk
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

accessburn

Zitat von: JoWiemann am 08 September 2016, 14:39:49
Welche Entwicklungsumgebung nutzt Du und wo befindet sich, Dateipfad, die Header-Datei.

Arduino 1.6.8 hab ich zum bespielen
Verzeichnis?

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <ESP8266HTTPUpdateServer.h>
#include <IRremoteESP8266.h>

// WLAN data
const char* ssid = "mySSID";
const char* password = "myPASS";

// static IP
IPAddress ip(192,168,1,100);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);

MDNSResponder mdns;
ESP8266WebServer httpServer(80);
ESP8266HTTPUpdateServer httpUpdater;

IRsend irsend(4); // an IR emitter led is connected to GPIO pin 4

void handleRoot() {
httpServer.send(200, "text/html", "<html><head><title>ESP8266 IRremote</title></head><body>Hello from ESP8266, you can send IR signals from here. </br>Please specify command! </br>Form: <p>/ir?code=***&bits=**&protocol=*</p></body></html>");
}

void handleIr(){
  String codestring=httpServer.arg("code");
  String protocol=httpServer.arg("protocol");
  String bitsstring=httpServer.arg("bits");

  String webOutput = "Code: "+codestring+"; Bits: "+bitsstring+"; Protocol: "+protocol+"";

  if ((codestring != "")&&(bitsstring != "")){
    unsigned long code = codestring.toInt();
    int bits = bitsstring.toInt();

    if (protocol == "NEC"){
      httpServer.send(200, "text/html", webOutput);
      irsend.sendNEC(code, bits);
    }
    else if (protocol == "LG"){
      httpServer.send(200, "text/html", webOutput);
      irsend.sendLG(code, bits);
    }
    else if (protocol == "Whynter"){
      httpServer.send(200, "text/html", webOutput);
      irsend.sendWhynter(code, bits);
    }
    else if (protocol == "Sony"){
      httpServer.send(200, "text/html", webOutput);
      irsend.sendSony(code, bits);
    }
    else if (protocol == "RC5"){
      httpServer.send(200, "text/html", webOutput);
      irsend.sendRC5(code, bits);
    }
    else if (protocol == "RC6"){
      httpServer.send(200, "text/html", webOutput);
      irsend.sendRC6(code, bits);
    }
    else if (protocol == "Panasonic"){
      httpServer.send(200, "text/html", webOutput);
      irsend.sendPanasonic(code, bits);
    }
    else if (protocol == "Samsung"){
      httpServer.send(200, "text/html", webOutput);
      irsend.sendSAMSUNG(code, bits);
    }
    else if (protocol == "SharpRaw"){
      httpServer.send(200, "text/html", webOutput);
      irsend.sendSharpRaw(code, bits);
    }
    else if (protocol == "Sharp"){
      httpServer.send(200, "text/html", webOutput);
      irsend.sendSharp(code, bits);
    }
    else if (protocol == "DISH"){
      httpServer.send(200, "text/html", webOutput);
      irsend.sendDISH(code, bits);
    }
    else if (protocol == "JVC"){
      httpServer.send(200, "text/html", webOutput);
      irsend.sendJVC(code, bits,0); // JVC protocol repeats by skipping the header not by sending a separate code value. Change the repeat argument from 0 to 1.
    }
    else {
      httpServer.send(200, "text/html", "Protocol not implemented!");
    }
  }
  else {
    httpServer.send(200, "text/html", "Missing code or bits!");
  }
}

void handleNotFound(){
  httpServer.send(404, "text/plain", "404");
}

void setup(void){
  irsend.begin();
  Serial.begin(9600);
  WiFi.begin(ssid, password);
  WiFi.config(ip, gateway, subnet);
  Serial.println("");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
 
  if (mdns.begin("esp8266", WiFi.localIP())) {
    Serial.println("MDNS responder started");
  }

  httpServer.on("/", handleRoot);
  httpServer.on("/ir", handleIr);
  httpServer.onNotFound(handleNotFound);

  httpUpdater.setup(&httpServer);
  httpServer.begin();
  Serial.println("HTTP server started");
}

void loop(void){
  httpServer.handleClient();
}

Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

JoWiemann

Die Frage war, wo ist die ESP8266_IRemote.h physisch abgelegt. Existiert sie überhaupt.

Kann sie die Arduino IDE überhaupt finden:

- im Verzeichnis der Programm ino?
- im Library Verzeichnis der Arduino IDE?

Ohne die Infos, leider keine Hilfe.



Grüße Jörg

Gesendet von iPad mit Tapatalk
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

accessburn

Glaub ich gerne... Problem ist nur das ich gerade mal angefangen habe einen UNO zu bespielen, und mehr Grundwissen nicht verfügbar ist.

Ich habe beide Pakete heruntergeladen und in das selbe verzeichnis eingespielt.
Schau mal im Anhang, so sieht das aktuell aus
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

JoWiemann

Siehst Du die ESP8266_IRemote.h oben in den Reitern?



Grüße Jörg

Gesendet von iPad mit Tapatalk
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM