HowTo: ESPEasy – connect the rotary encoder to the ESP8266 and evaluate it

Gerade wenn die eigene Schaltung ein Display zur Anzeige von Werten besitzt ist der nächste Schritt of auch eine Bedienmöglichkeit anzuschließen.

Dabei kann man Taster oder auch Schalter anschließen. Eine realtiv coole Möglichkeit die Eigene Schaltung mit einer Eingabemöglichkeit auszustatten ist dagegen der Drehencoder.

Ein Drehencoder sieht auf den ersten Blick aus wie ein Potentiometer. Anders als bei dem Potentiometer lässt sich der Drehencoder dagegen in beide Richtungen unendlich weit drehen. zusätzlich sind viele Modelle mit einem Taster ausgestattet. Mit einem Mikrocontroller verbunden kann dieser letztlich erkennen wie weit in welche Richtung gedreht wurde und auch wenn die Taste gedrückt wurde.

Dank des passenden Plugins können Drehencoder mithilfe von ESPEasy sehr leicht ausgelesen und auf die Eingaben reagiert werden.

Wie Ihr einen (oder auch zwei) Drehencoder an einen Wemos D1 Mini bzw. ESP8266 anschließt und ESPEasy korrekt konfiguriert, ist im folgenden Artikel beschrieben.


Safety instructions

I know the following notes are always kind of annoying and seem unnecessary. Unfortunately, many people who knew "better" have lost eyes, fingers or other things due to carelessness or injured themselves. Data loss is almost negligible in comparison, but even these can be really annoying. Therefore, please take five minutes to read the safety instructions. Because even the coolest project is not worth injury or other trouble.
https://www.nerdiy.de/sicherheitshinweise/

Affiliate links/advertising links

The links to online shops listed here are so-called affiliate links. If you click on such an affiliate link and make a purchase via this link, Nerdiy.de will receive a commission from the relevant online shop or provider. The price does not change for you. If you make your purchases via these links, you support Nerdiy.de in being able to offer other useful projects in the future. 🙂 


Requirements

Helpful articles:
Additional tips on ESPEasy can be found in the following articles.

Required tool:

Required material:


Drehencoder anschließen

Im folgenden seht Ihr zwei Schaltpläne wie Ihr einen Drehencoder an den Wemos D1 Mini anschließen könnt.

Schaltplan zum Anschluss eines einzelnen Drehencoders.

Schaltplan zum Anschluss von zwei Drehencodern. Außerdem ist hier auch ein WS2812 LED Streifen angeschlossen. Damit diese Konfiguration funktioniert müsst Ihr in ESPEasy die Reservierung der D1 und D2 Pins für den I2C Bus deaktivieren.


Konfiguration des Drehencoders in ESPEasy

Öffnet zunächst die Webkonfigurations-Ansicht Eurer ESPeasy Installation.

Infos dazu wie Ihr diese Ansicht öffnen könnt findet Ihr auch in dem Artikel Display/find out the IP address of the devices in the network

Klickt von dort aus auf den Tab “Devices”.

In the "Devices" tab, click on the "Add" button in one of the empty rows.

Ihr werdet dann automatisch zu der dargestellten Ansicht weitergeleitet…

…und könnt hier nun auswählen, welches Device Ihr erstellen wollt.

Da Ihr einen Drehencoder erstellen wollt wählt Ihr hier den Eintrag “Switch Input – Rotary Encoder” aus.

Dadurch werdet Ihr wieder auf eine Übersichtsseite weitergeleitet. Hier könnt Ihr Alle Einstellungen bezüglich des Drehencoders vornehmen.

Wichtig ist hier, dass Ihr einen Namen vergebt, einen Haken bei “Enabled” setzt und die GPIOs wie abgebildet konfiguriert.

Dabei entsprechen die “GPIO <- A” und “GPIO <- B” Einstellungen den Anschlüssen des Drehencoders welche im Schaltplan oben durch die grüne und blaue Leitung dargestellt werden.

Für die meisten Drehencoder könnt Ihr die Einstellung für “Mode” wie abgebildet einstellen.

Durch die Drehung am Drehencoder wird später ein Zähler herauf- bzw. herunter gezählt. Dessen unteren und oberen Grenzwert könnt Ihr mit den Einstellungen unter “Limit min” und “Limit max” konfigurieren.

Sobald Ihr alles korrekt konfiguriert habt, könnt Ihr die Einstellungen durch einen Klick auf “Submit” speichern.

Um nun auch den Tastendruck auf den Taster des Drehencoders auszuwerten, müsst Ihr noch ein separates Device anlegen.

Klickt dazu wieder auf den nächsten “freien” “Add”-Button in der Devices-Übersicht.

In der Dropdown-Liste wählt Ihr nun das Device “Switch input – Switch” aus.

Dieses Device müsst Ihr nun wie links abgebildet einstellen.

Wichtig ist dabei noch, dass der GPIO auf den Pin “D5” eingestellt werden muss. Dies ist der Anschlusspin über den der Taster des Drehencoders ausgelesen wird.

Wenn Ihr alle Einstellungen vorgenommen habt könnt Ihr auch diese durch einen Klick auf “Submit” speichern.


Drehencoder testen

Nachdem Ihr den Drehencoder angeschlossen und konfiguriert habt, könnt Ihr die Funktion mithilfe des Logs von ESPEasy testen. Dort werden nämlich auch Events angezeigt die mit den angeschossenen Sensoren und Aktoren zu tun haben.

Wechselt dazu in den Tab “Tools” und klickt dann auf den Button “Log”.

Daraufhin wird Euch die Log Ausgabe von ESPEasy angezeigt.

Wenn Ihr nun an dem Drehencoder dreht sollte eine Ausgabe mit “QEI…” sichtbar werden. Die Ziffer dahinter zeigt den Wert des Zählers an den Ihr durch drehen des Drehencoders rauf bzw runter zählt.

Sobald Ihr auf die Taste des Drehencoders drückt sollte ein Eintrag beginnen mit “SW:…” angezeigt werden.

Die Tastendrücke bzw. betätigungen des Drehencoders könnt Ihr dann mithilfe der Rules weiterverarbeiten und so auch Aktionen auslösen.

Alternativ könnt Ihr sie aber auch per MQTT an Euer SmartHome System weiterleiten und so zum Beispiel ein Licht ein- oder ausschalten.


Additional sensors for connection to the ESP8266 / ESP32

An overview of other articles for connecting sensors and actuators to ESPEasy can be found in the following category.


Have fun with the project

I hope everything worked as described for you. If not or you have questions or suggestions please let me know in the comments. I will then add this to the article if necessary.
Ideas for new projects are always welcome. 🙂

PS Many of these projects - especially the hardware projects - cost a lot of time and money. Of course I do this because I enjoy it, but if you think it's cool that I share the information with you, I would be happy about a small donation to the coffee fund. 🙂

Buy Me a Coffee at ko-fi.com       

4 comments

  1. Hello Fabian
    ..ich sag mal DANKE – daß es jemanden wie dich gibt – von dem ein “Bastler” wie ich was lernen darf !!
    ..hab’ hier sehr viel interessantes gelernt und nachgebaut – PWM mit Drehcoder..
    I use e.g. Currently an ESP8266 as a thermostat with 2 buttons (1 GPIO each) and ESPEASY with a (copied) rule. If necessary, I will also send the/my Rules
    ..I would like to convert this to the rotary encoder instead of the + and – button.
    ..if possible encoder step
    Unfortunately I'm not that fit in Rules and I can't do it.
    ..you probably know an example / link – Rules for ESPEASY ?
    Greetings from Vienna – fossi1

    1. Hi fossi1,
      thanks for your nice words. I'm glad my tips are useful. 🙂
      Write me your current rules. Then I'll take a look and see if you can rebuild/expand them so that you can control them with a rotary encoder. 🙂
      Best regards
      Fabian

      1. Hello Fabian
        Danke für deine Antwort – ich wünsch’ mal PROSIT NEUJAHR !!

        For your general information:
        ..ich hab einige esp für div. Anwendungen kann Hardware, bin in Software (leider z. Zt noch) der “Kopierer” – deshalb bitte nachsehen mit meinen Rules..

        ..eines meiner Projekte – ich möchte/werde für meinen Freund eine “Smoker-Steuerung” bauen.
        Temperature measurement with 4 K sensors, D1mini with EspEasy, OLED + LCD, relay for fan control and 4x MAX31850 (K sensors are read in 1Wire and in EspEasy under D18B20)

        ..the temp measurement of the K-sensor via MAX31850 works
        ..die “Grobe” Anzeige der Temperatur des Fühlers X (wird dann erst bestimmt welcher) wird mit Oled Blau, Grün, Rot für zu Kalt i.O, zu warm angezeigt – z. Zt zum Testen der DS18B20
        ..the real temp display is via OLED and LCD
        ..the setting of the temp (for the fan operation) currently via +/- keys

        ..da die Regelung des Lüfterlaufs in Abhängigkeit über einen K-Fühler im TempBereich 100-200 Grad erfolgen soll, ist das mit Tasten sehr “zäh” – dein Drehencoder wäre die komfortablere Lösung.

        .. my esp therefore has 3 rules for neopixel display, key query, display
        ..here the rules 2 :
        —————————————————————————–
        /key query - changed 06.02.22Fo

        //esp8266
        //GPIO 0 = button temperature +
        //GPIO 2 = temperature button –
        //GPIO 4 = SDA for Oled
        //GPIO 5 = SCL for Oled
        //GPIO 12 = DATA input from DS18B20
        //GPIO 14 = output S for relay
        //GPIO 15 = output for Neopixel

        on System#Boot do
        TaskValueSet 6,1,25.0 //SetTemp = TARGET Temp
        TaskValueSet 6,2,24.5 //TempLow = lowest temp
        TaskValueSet 6,3,25.5 //TempHigh = highest temp
        gpio,14,1
        endon

        //Key query for temp setting
        //UP = Task7 on D3(GPIO-0) and DOWN = Task7 on D4(GPOI-2)

        on Up#State do
        if [Up#State]=1
        if [Local#SetTemp]5 //Temp. Setting limitation from 5°
        TaskValueSet 6,1,[Local#SetTemp]-1.0
        TaskValueSet 6.2,[Local#SetTemp]-1.0
        TaskValueSet 6.3,[Local#SetTemp]
        endif
        endif
        endon

        //Define switching state

        on T5#temperature do
        if [T5#temperature]+1[Local#TempLow]
        event,TurnOff
        endif
        endon
        ———————————————————
        ..unfortunately I don't have an email address from you, otherwise I can send the txt file
        ..if you need any more information, write me event. by mail

        Greetings from Vienna – fossi1

        1. Hi fossi1,
          sorry that I'm just getting in touch now. I got your message via the contact form. But I was still in the aftermath of my move and then the holidays intervened. :/
          But I'll try to take care of it as soon as possible. wrote it down for me 🙂
          Best regards
          Fabian

Kommentar hinterlassen

Your email address will not be published. Erforderliche Felder sind mit * markiert

This site uses Akismet to reduce spam. Learn how your comment data is processed.