Tag 16: GPIO Control

Das Projekt des heutigen Tages ermöglicht die einfache Ansteuerung der digitalen Pins D2-D7 per Webseite. Der Status des jeweiligen Pins wird ebenfalls auf der Webseite dargestellt, sodass man nie den Überblick verliert.

Damit sich der Zustand der Pins gut überprüfen lässt, empfiehlt sich ein Aufbau wie auf dem unteren Bild. Sowohl die RGB-LED als auch die normale LED kommen zum Einsatz. Die Kathoden der LEDs sind diesmal aber nicht an die lange Masseleitung auf der Außenseite des Boards angeschlossen, sondern liegen ebenfalls an einem digitalen Ausgang. Nur wenn diese Pins low geschaltet sind, können die LEDs also leuchten.

Das Kalenderbauteil des heutigen Tages ist ein weiteres Kabel. Dieses ermöglicht die LED abseits des Boards zu legen. Sie können das Board nun beispielweise in ein Gehäuse einbauen und die LED nach außen legen.

Anschluss der LEDs an D2-D7

Anschluss der LEDs an D2-D7

Achtung! LEDs dürfen nicht ohne Vorwiderstände angeschlossen werden. Dass es in diesem Fall zulässig ist, liegt an den On-Widerständen der internen Port-FETs von ca. 30 Ohm. Weil die LEDs zwischen zwei Ports liegen, arbeiten sie tatsächlich mit einem Vorwiderstand von 60 Ohm. Je nach LED-Typ und Farbe stellt sich dabei ein LED-Strom zwischen 15 mA und maximal 30 mA ein, was noch zulässig ist.

Das Programm: Day16_TCPServerGPIO

Die Webseite des heutigen Programms benutzt sogenannte Checkboxen als HTML-Element. Wenn Sie das Programm hochladen und die Seite des Boards aufrufen, sehen Sie eine Reihe von klickbaren Boxen. Ein Häkchen in der Box bedeutet, dass der Pin high ist. Kein Häkchen bedeutet low. Sie können nun ausprobieren, welche Pins high und welche low sein müssen, damit alle LEDs leuchten.

Die Webseite GPIO-Control

Die Webseite GPIO-Control

44 Kommentare

  1. Fabian

    Hi Leute ich habe da mal eine Frage:
    Kann ich die Webseite im Heutigen Türchen änder und die Helligkit bearbeiten und andere Pins zu benutzen

  2. ayman

    Halli hallo,ich hänge immernoch beim ersten Türchen und habe Ewigkeiten wegen meinem Problem rumgeforscht und dann habe ich herausgefunden dass es hier ein Forum gibt.Also mein Problem ist bei mir nicht AT OK steht sondern:
    Baudrate OK

    Und wenn ich AT eingebe kommt nichts

    Neu:
    Jetzt wird das board komplett nicht mehr gelesen und ich kann auch nicht den treiber installieren :(
    Und wenn ich auf den Geräte Manager gehe dann wird das board nicht angezeigt.
    Bitte helft mir!

  3. MC

    Programm funktioniert wie immer prima.
    Einen Fehler (meiner Meinung nach) habe ich aber festgestellt. Und zwar lässt sich die LED nicht einfach so ausschalten. Will sagen, wenn ich einen Haken bei D2 setze, geht die weiße LED an. Wenn ich den Haken wieder raus nehme, dann auf „Send“ gehe, verschwindet der Haken auch kurz, kommt dann aber wieder und die LED bleibt an.
    Das gilt auch bei der RGB LED. Wenn ich hier nur einen Haken für eine Farbe (z.B. D5 für grün) setze, kann ich diese nicht wieder ausschalten, indem ich den Haken wieder raus nehme. Wenn ich D5 ausschalten will, muss ich diesen Haken raus nehmen, aber gleichzeitig immer noch mindestens einen anderen Haken setzen.
    Vielleicht liegt es ja am Firefox.
    Ist auch nicht kritisch, wollte es nur mal anmerken.

  4. Steffen

    Hallo,

    ich traue mich nicht die LED wie oben im Bild anzuschliessen. Dort wird PIN 2-7 auf high esetzt. Auch der GND Pin der LEDs. Ich hätte erwartet das die 2 GND PIns der LEDS auch an GND liegen und nicht auf HIGH gesetzt werden. Gibts hierzu eine Erklärung?
    mfg

    1. Roman_2

      Hallo Steffen,
      das ist unbedenklich, da du nur 5V Spannung an der LED anliegen hast, wenn du an einem Pin von der LED +5V und am anderen Pin 0V (GND) hast (=Differenz bzw. Spannung von 5V).
      Wenn du aber beide Pins der selben LED auf +5V legst hast du keinen Potentialunterschied und somit keine Spannung an der LED anliegen.

  5. Michael

    Mit dem Browser von Android 2.2 werden die html-Seiten der Webserverbeispiele nicht angezeigt (Fehlermeldung: Die Serverkommunikation ist fehlgeschlagen)

    Grund:
    Die gelieferte html-Seite des Webservers enthält keinen http-Statuscode, sondern fängt direkt mit dem html-Code an. Dies ist nicht standard-konform.

    Zumindest ein
    „HTTP/1.1 200 OK\r\n\r\n“
    sollte laut Standard vor dem eigentlichen html-Code geliefert werden.

    Also z.B. so:
    const char site[] PROGMEM = {
    „HTTP/1.1 200 OK\r\nConnection: close\r\n\r\n<HTML …

    Dann klappt die Anzeige auch mit dem Browser von Android 2.2.

  6. Markus

    Der Adventskalender ist super!!!

    1. Kacki

      +1

      @Conrad: gibt es nächstes Jahr wieder so einen coolen Kalender?

  7. Skyflori14

    was kann denn das sein
    ESP SEND ERROR: AT+RST
    woran kann es denn liegen

    1. Martin

      Das hatte ich bei fast jedem Programm. Nachdem ein Delay in der aufgerufenen Funktion nix gebracht hat, feuer ich die Zeile
      succes &= sendCom(„AT+RST“, „ready“);
      einfach 5mal hintereinander ab und es klappt.
      Also einfach diese Zeile mehrfach duplizieren…

      MfG
      Martin

      1. Martin

        Vorführeffekt: Jetzt klappt es nicht….

  8. NM

    Nach dem Einloggen mit dem Browser und Auswahl einer LED und SEND zeigt der Nano die LED sofort an, aber dann bricht die Verbindung immer ab.
    Der Serial Monitor sagt:

    Server Aktiv
    Incomming Request
    Website send OK
    Incomming Request
    ESP SEND ERROR: AT+CIPCLOSE=0
    Website send Error

    Was könnte das Problem sein?

    1. Martin

      Ich habe das Problem auch schon bei den vorherigen Kalender-Tagen gehabt. Bei mir hat es immer geholfen, wenn ich bei allen Zeilen mit:
      esp8266.setTimeout …..
      den Wert auf 6000 erhöht habe, falls der ursprüngliche Wert kleiner war.
      Probier es einmal aus.

      1. NM

        Leider funktioniert das mit höherem setTimeout Wert bei mir auch nicht. Das Problem existiert für die Experimente der Tage 13 bis 16 und lässt sich mit dem bisherigen Hinweisen im Forum nicht beheben.
        Ich gehe mal davon aus, dass die Programmierung nicht sauber durchgeführt ist.
        Ich habe auch massenweise rote warnings: deprecated conversion from string constant to ‚char*‘ was mit irgendwelchen Variablen zu tun haben soll.

        Und dann kommt auch immer beim Hochladen ein Popupfenster „Für manche Bibliotheken sind Updates verfügbar“.

        Vielleicht kann der Autor mal eine aktualisierte Version zur Verfügung stellen?

  9. Sebastian

    Toller Kalender.
    Ich hatte etwas Probleme am Tag 1, da ich noch nie was mit Arduino zu tun hatte, aber Dank diesem Forum hier hat dann alles geklappt.
    Super Kalender und Danke an das Forum hier. Freue mich schon auf die nächsten Tage :-)

  10. Markus

    Eine ganz ganz ganz dumme Frage.

    Hab das Board via USB am Laptop verbunden und dann das Programm aufgespielt + Serial Monitor geöffnet. Dannach (das Board) abgesteckt und an mein Ladegerät angeschlossen.
    Der Rest hat toll funktioniert.

    Habt ihr das Programm 12, 13, 14… drahtlos draufgespielt?
    Möcht nur wissen ob ich da was übersehen habe.

    lg Markus

    1. Karsten

      Die Programmierung des Nano geht immer über USB

      1. Markus

        Ok, danke für die schnelle Antwort.
        War da mir nicht sicher.

        Grüße

  11. Roman_2

    Hallo zusammen!
    Danke nochmal an den Autor, auch dieses Projekt funktioniert toll und versüßt mir einen weiteren Tag in der Vorweihnachtszeit.

    Aber jetzt mal eine Frage:
    Ich würde gerne die Website (für eventuelle spätere Anwendungen) abändern. Habe die HTML-Datei minimal geändert, jedoch kommt immer noch die „mitgelieferte“ Website, wenn ich die IP im Browser öffne. (nachdem ich das Programm nochmal neu auf den µC geladen habe) Die geänderte Website lässt sich von der HTML-Datei her problemlos öffnen und wird auch richtig angezeigt, somit sollte diese funktionieren.

    Somit meine Frage: wie/wo im Programm wird die Website aufgerufen. Bzw. wie kann ich diesen Aufruf ändern. Und hat die im Sketch-Ordner mitgelieferte HTML-Datei direkten Einfluss auf das Programm?

    Ich hoffe ich konnte mich verständlich ausdrücken und freue mich auf Eure Antworten ;)

    1. Karsten

      Schau mal unter Tag 13, da ist das beschrieben. Du mußt die geänderte html Datei mit dem Tool konvertieren und die Bytes dann in die PROGMEM Variable in die geschweiften Klammern eintragen. Zeile 17 im Sketch glaube ich.

      1. Roman_2

        Danke für die schnelle Antwort!
        Hab ich wohl am Tag 13 überlesen.

        Bei mir funktioniert die Website “ http://tools.thebuzzmedia.com/bytechar “ nicht.
        Gibt es dafür alternativen?

        1. jz

          http://www.percederberg.net/tools/text_converter.html

          Die Kommentare sind halt zu lang. Steht weiter unten in Tag 13, von fk.

        2. RGH

          Bei mir geht sie auch nicht. Je nach Browser kommt „Zugriff verweigert“ oder „Verbindung fehlgeschlagen“. Besser wäre es gewesen, ein simples Tool mitzuliefern, dass die Umwandlung offline vornimmt.

          1. jz

            Und das alles für ca. Fr. 50.-
            Haben wir nicht schon Spass genug?

        3. Klaus

          Ja, schau mal im Forum. Dort habe ich ein Programm rein gestellt.

          1. Roman_2

            Danke Klaus!!!
            Jetzt kann ich auch den HTML-Code an meine Wünsche anpassen :)
            Dein Programm funktioniert einwandfrei für diese Anwendung!r

          2. Klaus

            OK, wenn doch mal irgendwann was auftaucht, dass was nicht ganz funktioniert, einfach melden.

      2. spielratz

        später Kommentar! Bin erst nach Weihnachten auf diese Seite gestossen. Ein Kompliment an den Autor – echt super!
        Vielleicht steht es ja schon irgendwo:
        Die Konvertierung kann man sich auch sparen und trotzdem eine übersichtliche Darstellung des HTML Texts erreichen:
        const char site[] PROGMEM = „\n\
        \n\
        \n\
        GPIO\n\
        \n\
        \n\
        GPIO-Control\n\
        \n\
        \n\
        \n\
        \n\
        D2\n\
        D3\n\
        D4\n\
        \n\
        D5\n\
        D6\n\
        D7\n\
        \n\
        \n\
        \n“;

        1. spielratz

          Sorry – so war es nciht gemeint! Scheint beim Übernehmen aus der Eingabebox „etwas verkürzt zu werden“.
          Die Idee ist die Origonal Zeilen des HTML Textes zu erhalten und die Zeilen mit mit \n\ abzuschliessen.

    2. jz

      Zum Glück kann der NanoESP nicht auf das html File in deinem Ordner zugreifen. Dann wäre es ein Spion.
      Die gesendete Webpage ist im Bytearray „site“ des Sketches abgelegt. Wie diese geändert werden kann, wurde schon beschrieben.

  12. UW

    Heute habe ich mir – wenn auch spät – etwas Erleichterung bei der Anpassung der Sketches verschafft. Vielleicht ist das auch für andere, die wie ich weniger C-erfahrene Faulpelze sind, interessant. ;)

    In den letzten Tagen musste in den ersten Zeilen jeweils der eigene WiFi-Zugang eingetragen werden.

    #define SSID „[Your SSID]“
    #define PASSWORD „[Your Password]“

    Da ich mir meinen Zugang nicht merken kann, heißt das jedes Mal: Alte Datei öffnen, Zeilen kopieren, Fenster wechseln, Zeilen einfügen. OK, schlimm ist das nicht, aber es geht einfacher.

    Ich habe im Arduino-Verzeichnis unter ‚Arduino/libraries‘ ein Verzeichnis ‚Connect‘ angelegt und darin eine Datei ‚Connect.h‘, die einfach nur die o.g. Zeilen mit meinen Zugangsdaten enthält. Jetzt reicht es, die o.g. Zeilen einfach mit

    #include

    zu ersetzen. Im Gegensatz zu meinem WiFi-Passwort kann ich mir das gerade noch merken ;)

    1. UW

      Uuhps, da hat das Kommentarsystem einfach einen Teil rausgelöscht. Die Ersetzungszeile muss heißen

      #include SPITZEKLAMMERAUF Connect.h SPITZEKLAMMERZU

      also, um Connect.h einfach spitze Klammern setzen wie auch beim include-Befehl für SoftwareSerial.h

      1. Werner

        Diese Idee hatte ich auch schon, war aber zu faul, eine Include-Datei zu machen, weil ich nicht genau wusste, wo ich die hinlegen muss. Außerdem weiß ich meine SSID und mein Passwort AUSWENDIG ;-)
        Spätestens nach Abschluss des Adventskalenders!

  13. UW

    Auf welchem Pin liegt die Kathode der RGB-LED, 4 oder 5? Das geht aus dem Aufbauschema leider nicht hervor.

    1. Karsten

      Pin4. Siehe auch im Sketch, da wird D4 als GND definiert.

      1. UW

        Vielen Dank, Karsten! In den Sketch hatte ich noch gar nicht geschaut. Wer lesen kann und das auch tut, ist halt immer im Vorteil :)

      2. Klaus

        Ich weiß nicht, welchen Sketch Du hast, aber in meinem steht gar nix von GND.

  14. ayman

    Halli hallo,ich hänge immernoch beim ersten Türchen und habe Ewigkeiten wegen meinem Problem rumgeforscht und dann habe ich herausgefunden dass es hier ein Forum gibt.Also mein Problem ist bei mir nicht AT OK steht sondern:
    Baudrate OK

    Und wenn ich AT eingebe kommt nichts

  15. Dirk

    Hi, bei mir leuchtet keine der LED und Rückmeldung auf der Webseite habe ich auch nicht. Habe wirklich viele Kombinationen probiert.

    Bis bald

    1. Karsten

      Das geht auch nur am 16.12. :-P *duck*

      1. Dirk

        Ach so, du hattest recht heute geht’s. :-), liegt am Samsung Smartphone, habe es heute über Laptop probiert da ist alles gut.

    2. ayman

      Halli hallo,ich hänge immernoch beim ersten Türchen und habe Ewigkeiten wegen meinem Problem rumgeforscht und dann habe ich herausgefunden dass es hier ein Forum gibt.Also mein Problem ist bei mir nicht AT OK steht sondern:
      Baudrate OK

      Und wenn ich AT eingebe kommt nichts

      1. Kacki

        Hallo ayman,

        Es würde evtl. helfen, wenn Du hier ein Screenshot postest, damit wir sehen können, wo genau die Meldung erscheint und ob Du überhaupt das richtige Programm benutzt.

        Was mir dazu in den Sinn kommt: Bist Du sicher, dass Du ein Programm / das Programm vom ersten Tag auf den Arduino geladen hast? Wenn es beim Compilieren Fehler gab, lädt er das Programm nicht drauf. Die Meldung kommt VIELLEICHT (ich kann es ja nicht mehr ausprobieren), wenn der Arduino „leer“ ist?!

  16. Kacki

    Ich glaube, die heutige (korrigiere: noch morgige) Aufgabe kann ich ganz gut „theoretisch“ machen. Ich will meine RGB-LED bzw meinen Nano nicht überstrapazieren.
    Sollte ich was unerwartetes verpassen, lasst es mich wissen ;-)

Schreiben Sie einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.