Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Off Topic
    4. Microcontroller
    5. Keypad und Led an ESP8266 umziehen auf ESP32

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Keypad und Led an ESP8266 umziehen auf ESP32

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      Shadowhunter23 last edited by

      Hallo,

      aktuell arbeite ich mit zwei Wemos D1 mini. Auf dem einen läuft das Script siehe Spoiler. Auf dem zweiten Wemos D1 mini lauft espeasy um damit per https://www.letscontrolit.com/wiki/index.php/GPIO 6 Leds an und auszuschalten. Die Eingabe der Zahlen wird in einem Blockly von hier https://www.youtube.com/watch?v=wA2XRDtUhYs verarbeitet.

      Wird eine Zahl / Raute / Stern am Keypad eingegeben wird per request die jeweiligen Leds eingeschalten oder ausgeschalten (4 weiße, 1 grüne und 1 rote Led ) :
      http://espeasy_ip/control?cmd=PWM,12,50 an
      http://espeasy_ip/control?cmd=gpio,12,0 aus

      Jetzt würde ich gerne von den zwei Wemos D1 mini auf einen ESP32 wechseln. Dann fehlt mir aber die PWM Funktion um die Leds zu steuern. Gibt es jemand der mir helfen würde den Code für den PWM request einzubauen?

      #include <ESP8266WiFi.h>
      #include <Keypad.h>
      #include <PubSubClient.h>
      
      // SSID eintragen
      const char* ssid = "ssid";
      // WLAN Passwort
      const char* password = "password";
      
      // MQTT Server IP
      const char* mqttServer = "broker_ip";
      // MQTT PORT
      const int mqttPort = 1883;
      // MQTT User
      const char* mqttUser = "User";
      // MQTT Passwort
      const char* mqttPassword = "password";
      
      //Hostname für WIFI und MQTT (so wird der ESP dann angezeigt)
      #define hostid "Keypad" 
      
      // MQTT Hauptpfad Konfigurieren
      #define geraet "Keypad/" 
      
      // ab hier muss nichts geändert werden
      
      WiFiClient espClient;
      PubSubClient client(espClient);
      
      const byte ROWS = 4; //four rows
      const byte COLS = 3; //four columns
      
      char keys[ROWS][COLS] = {
        {'1','2','3'},
        {'4','5','6'},
        {'7','8','9'},
        {'*','0','#'}
      };
      
      // For Arduino Microcontroller
      //byte rowPins[ROWS] = {9, 8, 7, 6}; 
      //byte colPins[COLS] = {5, 4, 3, 2}; 
      
      // For ESP8266 Microcontroller
      byte rowPins[ROWS] = {D1, D2, D3, D4}; 
      byte colPins[COLS] = {D5, D6, D7}; 
      
      // For ESP32 Microcontroller
      //byte rowPins[ROWS] = {23, 22, 3, 21}; 
      //byte colPins[COLS] = {19, 18, 5, 17};
      
      Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
      
      void setup(){
      Serial.begin(115200);
      
        WiFi.hostname(hostid);
        WiFi.begin(ssid, password);
       
        while (WiFi.status() != WL_CONNECTED) {
          delay(500);
          Serial.println("Connecting to WiFi..");
        }
        Serial.println("Connected to the WiFi network");
       
        client.setServer(mqttServer, mqttPort);
        client.setCallback(callback);
       
        while (!client.connected()) {
          Serial.println("Connecting to MQTT...");
       
          if (client.connect(hostid, mqttUser, mqttPassword )) {
       
            Serial.println("connected");  
            Serial.println("IP address: ");
            Serial.println(WiFi.localIP());
       
          } else {
       
            Serial.print("failed with state ");
            Serial.print(client.state());
            delay(2000);
       
          }
        }
       
        client.publish(geraet "Key", "Hello from ESP8266");
        client.subscribe(geraet "Key");
      }
      
      void callback(char* topic, byte* payload, unsigned int length) {
       
        Serial.print("Message arrived in topic: ");
        Serial.println(topic);
       
        Serial.print("Message:");
        for (int i = 0; i < length; i++) {
          Serial.print((char)payload[i]);
        }
       
        Serial.println();
        Serial.println("-----------------------");
       
      }
      
      void loop() {
      
      client.loop();
      while (!client.connected()) {
      Serial.print("Attempting connected to the WiFi network...");
      Serial.println();
      if (client.connect(hostid, mqttUser, mqttPassword )) {
      Serial.println("connected");
      }
        else{
         delay(5000);
        }
      }
      
        char key = keypad.getKey();
      
        if (key == '0'){
          Serial.println(key);
          client.publish(geraet "Key", "0");
        }
        if (key == '1'){
          Serial.println(key);
          client.publish(geraet "Key", "1");
        }
        if (key == '2'){
          Serial.println(key);
          client.publish(geraet "Key", "2");
        }
        if (key == '3'){
          Serial.println(key);
          client.publish(geraet "Key", "3");
        }
        if (key == '4'){
          Serial.println(key);
          client.publish(geraet "Key", "4");
        }
        if (key == '5'){
          Serial.println(key);
          client.publish(geraet "Key", "5");
        }
        if (key == '6'){
          Serial.println(key);
          client.publish(geraet "Key", "6");
        }
        if (key == '7'){
          Serial.println(key);
          client.publish(geraet "Key", "7");
        }
        if (key == '8'){
          Serial.println(key);
          client.publish(geraet "Key", "8");
        }
        if (key == '9'){
          Serial.println(key);
          client.publish(geraet "Key", "9");
        }
        if (key == '*'){
          Serial.println(key);
          client.publish(geraet "Key", "*");
        }
        if (key == '#'){
          Serial.println(key);
          client.publish(geraet "Key", "#");
        }
      
      }
      

      D 1 Reply Last reply Reply Quote 0
      • D
        Dieter_P @Shadowhunter23 last edited by Dieter_P

        @shadowhunter23

        Mehrere Collection Releases von ESPeasy gibt es ja für den ESP32 hast du schon mal geschaut ob dieses PlugIn für das Keypad dort bereits integriert ist wie hier für eine IO Erweiterung per I2C beschrieben?

        PWM kann am ESP ja fast jeder GPIO und der Befehl kann dann direkt per Regel ausgelöst werden.

        Erscheint mir aber nicht so, dass das Plugin P061 von ESPEASY für den ESP32 schon fertig/nutzbar ist. Frage aber besser Mal dort im Forum. Dort kennt man sicher den genauen Status und kann ja nicht schaden, wenn die Entwickler von den Bedarf wissen.

        S 2 Replies Last reply Reply Quote 0
        • S
          Shadowhunter23 @Dieter_P last edited by Shadowhunter23

          @dieter_p

          Ich will mein Script schon weiter verwenden und dort das ein- ausschalten der LEDs integrieren. Von espeasy möchte ich ja eigentlich weg.

          Ich hab jetzt mal PCF8574 Port Expander bestellt. Vielleicht ist es doch einfacher alles mit espeasy zu machen.

          1 Reply Last reply Reply Quote 0
          • S
            Shadowhunter23 @Dieter_P last edited by Shadowhunter23

            @dieter_p
            Danke für den Hinweis. Ich hab jetzt das Keypad per Expander am espeasy am laufen. 🙂
            Jetzt kann ich die Leds direkt an den ESP32 anklemmen und komme weg von den zwei ESP8266.

            D 1 Reply Last reply Reply Quote 0
            • D
              Dieter_P @Shadowhunter23 last edited by

              @shadowhunter23
              Klingt top und prima wenn es klappt.
              Welches Build von ESPEASY hast Du auf dem ESP32 benutzt wo das Plugin 61 drin ist?

              S 2 Replies Last reply Reply Quote 0
              • S
                Shadowhunter23 @Dieter_P last edited by Shadowhunter23

                @dieter_p
                Gleich beim ersten collection_A
                Die Eingabe ist etwas verzögert gegen über meinen Sketch aber es funktioniert. Man muss schon gefühlt 2 Sekunden auf der Taste bleiben bis der Scancode ankommt.

                1 Reply Last reply Reply Quote 1
                • S
                  Shadowhunter23 @Dieter_P last edited by

                  @dieter_p

                  Mein Gehäuse. Jetzt noch den Sichtschutz konstruieren.

                  4ebc6b17-ecdf-4f25-8f5a-55feeadfc273-image.png

                  1 Reply Last reply Reply Quote 0
                  • S
                    Shadowhunter23 last edited by

                    Und fertig:
                    IMG_20231124_121500.jpg

                    1 Reply Last reply Reply Quote 0
                    • First post
                      Last post

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    503
                    Online

                    31.7k
                    Users

                    79.7k
                    Topics

                    1.3m
                    Posts

                    2
                    8
                    436
                    Loading More Posts
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes
                    Reply
                    • Reply as topic
                    Log in to reply
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                    The ioBroker Community 2014-2023
                    logo