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.
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.
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
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!
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.
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
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.
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.
Der Adventskalender ist super!!!
+1
@Conrad: gibt es nächstes Jahr wieder so einen coolen Kalender?
was kann denn das sein
ESP SEND ERROR: AT+RST
woran kann es denn liegen
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
Vorführeffekt: Jetzt klappt es nicht….
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?
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.
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?
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 :-)
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
Die Programmierung des Nano geht immer über USB
Ok, danke für die schnelle Antwort.
War da mir nicht sicher.
Grüße
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 ;)
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.
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?
http://www.percederberg.net/tools/text_converter.html
Die Kommentare sind halt zu lang. Steht weiter unten in Tag 13, von fk.
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.
Und das alles für ca. Fr. 50.-
Haben wir nicht schon Spass genug?
Ja, schau mal im Forum. Dort habe ich ein Programm rein gestellt.
Danke Klaus!!!
Jetzt kann ich auch den HTML-Code an meine Wünsche anpassen :)
Dein Programm funktioniert einwandfrei für diese Anwendung!r
OK, wenn doch mal irgendwann was auftaucht, dass was nicht ganz funktioniert, einfach melden.
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”;
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.
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.
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 ;)
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
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!
Auf welchem Pin liegt die Kathode der RGB-LED, 4 oder 5? Das geht aus dem Aufbauschema leider nicht hervor.
Pin4. Siehe auch im Sketch, da wird D4 als GND definiert.
Vielen Dank, Karsten! In den Sketch hatte ich noch gar nicht geschaut. Wer lesen kann und das auch tut, ist halt immer im Vorteil :)
Ich weiß nicht, welchen Sketch Du hast, aber in meinem steht gar nix von GND.
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
Hi, bei mir leuchtet keine der LED und Rückmeldung auf der Webseite habe ich auch nicht. Habe wirklich viele Kombinationen probiert.
Bis bald
Das geht auch nur am 16.12. :-P *duck*
Ach so, du hattest recht heute geht’s. :-), liegt am Samsung Smartphone, habe es heute über Laptop probiert da ist alles gut.
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
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?!
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 ;-)