RCoid

Remote Control for Android

RCoid Remotes Hilfe AGB/Disclaimer Spenden

ESP8266

Mit einem ESP8266 WiFi Modul ist es möglich, jedes RCoid-Infrarotsignal per WLAN auszugeben und so alle infrarotfähigen Endgeräte zu bedienen, auch dann wenn Sie keine IR-Diode im Handy eingebaut haben.
Darüber hinaus ist es auch möglich, jeden GPIO des ESP8266 mit RCoid zu steuern und somit z.B. ein Relais zu schalten.

https://youtu.be/9ZqYVVj7b88

Software

Damit der ESP8266 die Befehle von RCoid empfangen und verarbeiten kann, muss er mit einer spezielen Firmware geflasht werden.

Als Entwicklungsumgebung dient die Arduino IDE, welche kostenlos von der Arduino Webseite runtergeladen werden kann.
In den Voreinstellungen muss in dem Eingebefeld "Zusätzliche Boardverwalter-URLs:" der Pfad "http://arduino.esp8266.com/stable/package_esp8266com_index.json" angegeben werden.


Nun lässt sich im Menü "Werkzeuge -> Board:... -> Boardverwalter" das Board auswählen und installieren.



Nachdem Sie das ESP8266 Board im Menü "Werkzeuge -> Board:..." ausgewählt haben, können Sie anfangen das Modul zu programieren.
Einen einfacher Sketch, welcher die nötigen Codezeilen enthällt um das Modul kompatibel zu RCoid zu machen, habe ich auf Github veröffentlicht.
Der Quellcode ist Open-Source und darf sehr gerne weiterentwickelt werden. Kopieren Sie sich den gewünschten Code aus der .ino- Datei in Ihr eigenes Arduino-Project um das Modul zu flashen oder Änderungen am Programm vorzunehmen.

Hardware

Um nun die RCoid-Firmware in den ESP8266 übertragen zu können, ist noch etwas Hardware nötig.
Es gibt für wenige Euro kleine ESP01-Programmer, von denen ich allerdings abraten würde.


Dieser Programmer führt dem WiFi-Modul auf der RX-Leitung 5V zu. Der ESP8266 verträgt aber nur 3,3V. Früher oder Später (oder vieleicht auch Sofort) wird der ESP so einen Überspannungstod sterben.
Außerdem fehlt eine Möglichkeit, um den ESP in den Flash-Modus zu versetzen.

Ich habe meine Module mit einem Arduino Uno programmiert. Der entsprechende Schaltplan ist recht einfach.

Zunächst einmal müssen wir verhindern, dass der AT-Mega329P des Arduino die Kommunikation stört.
Das erreichen wir, indem wir eine Drahtbrücke von "Reset" zu "GND" ziehen.

Der ESP8266 hat an seine Spannungsversorgung recht hohe Ansprüche. Die 3,3V vom Arduino sind da etwas zu schwach um das Modul zu versorgen. Auch wenn es für erste Gehversuche oder nur zum Flashen ausreichend zu sein scheint, ein stabiler Betrieb wird damit kaum möglich sein.
Deshalb ist eine externe 3.3V Spannungsversorgung nötig. Entsprechende Module gibt es schon für wenige Euro.

Die GND-Pins von allen Komponenten sind miteinander zu verbinden. In jedem Fall muss die Versorgungsspannung mit einem Kondensator gestützt werden. Ich habe einen 3300µF 6,3V Elko verwendet und damit gute Ergebnisse erziehlen können.

Auch der Arduino gibt auf dem RX-Pin 5V aus. Diese verringern wir mit einem Spannungsteiler auf ein für den ESP erträgliches Maß.
TX vom Arduino kann direkt mit TX vom Modul verbunden werden.
Zum Schluss brauchen wir noch einen Taster für "Reset" und einen Taster am "GPIO0" um das Modul in den Flash-Modus zu versetzen.


Die Eingänge des ESP8266 sind teilweise extrem empfindlich. Deshalb sind mitunter Pullup-Wiederstände nötig, um den Pegel an den Pins konstant zu halten.
Bei meinen Modulen ist das allerdings nicht nötig.

Das Flashen

Um den Flashvorgang zu starten, drücken Sie gleichzeitig beide Taster, lassen dann "Reset" los und anschließend "GPIO0".
Das Modul befindet sich nun im Flash-Modus.
Drücken Sie dann in der Arduino IDE auf "Hochladen" (der kleine Pfeil links oben).
Das Programm wird nun kompiliert und anschließend an den ESP gesendet.


Sollte der Upload bis 100% durchlaufen, danach aber nichts mehr passieren, bzw. ein Checksum-Fehler auftreten, ändern sie die Einstellung für "Flash Mode" von "QIO" auf "DOUT".

Inbetriebnahme

Der ESP ist nun betriebsbereit.
Jetzt muss er sich nur noch in Ihr heimisches WLAN einwählen und dann können Sie ihn in RCoid mit seiner IP ansprechen.
Wenn sich der ESP8266 nach einem Neustart in kein WLAN einwählen kann, spannt er seinen eigenen Access Point auf.
Dieser nennt sich "ESP8266 for RCoid Access Point" und ist mit dem Passwort "passpass" gesichert.
(Das Passwort können Sie in Ihrem Sketch gerne ändern, die SSID sollte aber unverändert bleiben, weil es von RCoid gesucht wird)
Wenn Sie sich mit ihrem Handy in den AP einwählen und anschließend in RCoid einen neuen ESP8266 hinzufügen, bekommen Sie die Möglichkeit die Zugangsdaten von Ihrem heimischen WLAN einzugeben.
Diese werden im WiFi-Modul gespeichert und anschließend wählt sich der ESP in Ihrem WLAN ein.


Die IP, die der ESP vom Router zugewiesen bekommt und mit der Sie in RCoid das Modul ansprechen können, wird automatisch übernommen.
Nach einem Neustart ist der Access Point verschwunden und Ihr Handy wählt sich wieder in Ihr WLAN ein.

Betrieb

Damit Sie mit dem Modul Infrarot-Signale senden können, brauchen Sie noch eine Infrarot-Diode am ESP8266.
Dessen Ausgänge sind allerdings zu schwach um die IR-Diode direkt zu betreiben. Deshalb benötigen Sie noch einen Transistor und natürlich einen Vorwiderstand, um den Strom zu begrenzen.


Meine Dioden sind die TSUS5200 mit 100mA bei 1,3V
und der Transistor ist ein IRLU024N. Das ist ein Power-MOSFET, der gleich mehrere sehr gute Eigenschaften mitbringt.
Er reagiert schon bei geringer Spannung am Gate und kann somit direkt am ESP betrieben werden. Dabei ist die Belastung des Ausgangs derart gering, dass das Modul beim Reset nicht permanent in den Flash-Modus geht.
Außerdem ist er mit 74ns Risetime sehr schnell. Das ist nötig um die üblichen 38kHz des IR-Signals sauber zu schalten.
Und dann ist er ach noch sehr leisungsstark. Ich habe mit ihm problemlos ein 12V 60W LED-Strip betrieben.
Laut Datenblatt kann man damit bis zu 17A schalten.

Der Schlaltplan ist sehr simpel.

In der Praxis könnte man bei 2 Dioden den Vorwiederstand sogar weglassen.
Die Dioden-Spannung würde dann auf ca 1.55V steigen und der Strom damit auf ca. 130mA.
Das entspricht einer Gesmmtleistung von ca. 155%.
Weil die Diode aber ohnehin mit 38kHz gepulst wird und bei einem übertragenen Bit auch immer eine gehörige Pause dazugehört, würde sich trotztdem eine Durchschnittslast von weit unter 60% einstellen.
Das muss aber jeder für seine Dioden selbst ermitteln, deshalb habe ich den Vorwiderstand drin gelassen.

Ein feriges Infrarot-Modul könnte dann so aussehen: