Day 16: GPIO Control

Today’s project permits simple control of the digital pins D2-D7 per website. The status of the respective pin is also presented on the website, so that you will never lose the overview.

To review the condition of the pin well, a setup as in the following figure is recommended. Both the RGB-LED and the regular LED are used. The cathodes of the LEDs are now not connected to the long ground line on the outside of the board, but are also at a digital output. Only when these pins are switched low can the LEDs light up.

Today’s calendar component is another cable. This permits keeping the LED off the board. You can now install the board in a housing, for example, and put the LED outside.

Settings for LEDs on D2-D7

Settings for LEDs on D2-D7

Attention! LEDs must not be connected without dropping resistors. In this case it is permitted due to the On resistors of the internal port FETs of approx. 30 Ohm. Because the LEDs are placed between two ports, they actually work with a dropping resistor of 60 Ohm. Depending on LED type and colour, an LED current between 15 mA and 30 mA at most occurs. This is still permitted.

The program: Day16_TCPServerGPIO

The website of today’s program uses check boxes as an HTML element. When you upload the program and call the page of the board, you can see a number of boxes that can be clicked. A check mark in a box means that the pin is high. No check mark means low. You can now try out which pins need to be high and which ones need to be low for all LEDs to be lit.

Die Webseite GPIO-Control

The website of todays project

44 Comments

  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

    Reply
  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!

    Reply
  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.

    Reply
  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

    Reply
    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.

      Reply
  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.

    Reply
  6. Markus

    Der Adventskalender ist super!!!

    Reply
    1. Kacki

      +1

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

      Reply
  7. Skyflori14

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

    Reply
    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

      Reply
      1. Martin

        Vorführeffekt: Jetzt klappt es nicht….

        Reply
  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?

    Reply
    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.

      Reply
      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?

        Reply
  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 :-)

    Reply
  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

    Reply
    1. Karsten

      Die Programmierung des Nano geht immer über USB

      Reply
      1. Markus

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

        Grüße

        Reply
  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 ;)

    Reply
    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.

      Reply
      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?

        Reply
        1. jz

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

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

          Reply
        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.

          Reply
          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.

          Reply
          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”;

        Reply
        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.

          Reply
    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.

      Reply
  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 ;)

    Reply
    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

      Reply
      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!

        Reply
  13. UW

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

    Reply
    1. Karsten

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

      Reply
      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 :)

        Reply
      2. Klaus

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

        Reply
  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

    Reply
  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

    Reply
    1. Karsten

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

      Reply
      1. Dirk

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

        Reply
    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

      Reply
      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?!

        Reply
  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 ;-)

    Reply

Leave a Comment

Your email address will not be published. Required fields are marked *

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