Wemos D1 mini Laufschrift Matrix Display

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

Arthy
Beiträge: 103
Registriert: 17.12.2014, 00:03
System: CCU
Danksagung erhalten: 1 Mal

Re: Wemos D1 mini Laufschrift Matrix Display

Beitrag von Arthy » 22.06.2022, 23:27

rr745 hat geschrieben:
22.06.2022, 16:56
Arthy hat geschrieben:
22.06.2022, 16:07
Hallo zusammen,

ich würde diese DOT Matrix LEDs ebenfalls gerne zum Anzeigen der Pooltemperatur draußen nutzen, bekomme aber auch Fehler beim Kompilieren. Es betrifft anscheinend die WM.h Datei. Habe schon einiges an den Bibliotheken rumprobiert aber leider kein Erfolg. Kann mir hier jemand einen Tipp geben? Vielleicht hat hier jemand vor Kurzem das Projekt auch umgesetzt. Das wäre super.

Code: Alles auswählen

In file included from C:\Users\Arthy\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266/pgmspace.h:8,
                 from C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266/WString.h:26,
                 from C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266/IPAddress.h:24,
                 from C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\ESP8266WiFi\src/ESP8266WiFi.h:31,
                 from sketch\WM.h:16,
                 from sketch\WM.cpp:13:
WM.h:26:24: error: 'const char HTTP_HEAD []' redeclared as different kind of entity
   26 | const char HTTP_HEAD[] PROGMEM            = "<!DOCTYPE html><html lang=\"en\"><head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1, user-scalable=no\"/><title>{v}</title>";
      |                        ^~~~~~~
In file included from sketch\WM.h:17,
                 from sketch\WM.cpp:13:
C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\ESP8266WebServer\src/ESP8266WebServer.h:47:39: note: previous declaration 'HTTPMethod HTTP_HEAD'
   47 | enum HTTPMethod { HTTP_ANY, HTTP_GET, HTTP_HEAD, HTTP_POST, HTTP_PUT, HTTP_PATCH, HTTP_DELETE, HTTP_OPTIONS };
      |                                       ^~~~~~~~~
In file included from c:\users\user\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\assert.h:10,
                 from c:\users\user\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\sys\reent.h:503,
                 from c:\users\user\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\stdlib.h:18,
                 from c:\users\user\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\10.3.0\cstdlib:75,
                 from c:\users\user\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\10.3.0\stdlib.h:36,
                 from C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266/Arduino.h:27,
                 from sketch\MatrixDisplayESP8266.ino.cpp:1:
WM.h:26:24: error: 'const char HTTP_HEAD []' redeclared as different kind of entity
   26 | const char HTTP_HEAD[] PROGMEM            = "<!DOCTYPE html><html lang=\"en\"><head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1, user-scalable=no\"/><title>{v}</title>";
      |                        ^~~~~~~
In file included from sketch\WM.h:17,
                 from C:\Users\user\Desktop\Projekte\Arduino\LED Dot Matrix\MatrixDisplayESP8266-master\MatrixDisplayESP8266\MatrixDisplayESP8266.ino:9:
C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\ESP8266WebServer\src/ESP8266WebServer.h:47:39: note: previous declaration 'HTTPMethod HTTP_HEAD'
   47 | enum HTTPMethod { HTTP_ANY, HTTP_GET, HTTP_HEAD, HTTP_POST, HTTP_PUT, HTTP_PATCH, HTTP_DELETE, HTTP_OPTIONS };
      |                                       ^~~~~~~~~
Mehrere Bibliotheken wurden für "WiFiUdp.h" gefunden
 Benutzt: C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\ESP8266WiFi
 Nicht benutzt: C:\Program Files (x86)\Arduino\libraries\WiFi
exit status 1
'const char HTTP_HEAD []' redeclared as different kind of entity
Besten Dank

Gruß
Arthy

https://github.com/jp112sdl/MatrixDispl ... aster/WM.h
Danke für den Link.
Ich habe den Inhalt der WM.h Datei nochmal mit dem Inhalt aus dem Link ersetzt. Es kommen leider immer noch die gleichen Fehlermeldungen.

LG Arthy

woggle
Beiträge: 78
Registriert: 01.02.2015, 15:31
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 55 Mal
Danksagung erhalten: 10 Mal

Re: Wemos D1 mini Laufschrift Matrix Display

Beitrag von woggle » 22.06.2022, 23:34

Allein mit der WM.h ist es nicht getan!

Geändert habe ich: WM.h, WM.cpp (gehört zusammen!) und MatrixDisplayESP8266.ino

Arthy
Beiträge: 103
Registriert: 17.12.2014, 00:03
System: CCU
Danksagung erhalten: 1 Mal

Re: Wemos D1 mini Laufschrift Matrix Display

Beitrag von Arthy » 23.06.2022, 03:01

woggle hat geschrieben:
22.06.2022, 21:46
Arthy hat geschrieben:
22.06.2022, 16:07
Kann mir hier jemand einen Tipp geben? Vielleicht hat hier jemand vor Kurzem das Projekt auch umgesetzt. Das wäre super.
Ich habe das Projekt noch nicht umgesetzt aber aus Interesse mal schnell die Bugs ausgebaut:
https://github.com/woggle65/MatrixDisplayESP8266

Zumindest compiliert es so bei mir. Ob es auch läuft kann ich leider nicht sagen.
Hallo Woggle,

das von dir angepasste Paket habe ich komplett übernommen. Beim Kompilieren schon mal keine Fehler, das ist super. Vielen Dank schon mal dafür. Also konnte ich es auf einen NodeMCU oder Lolin ohne Probleme uploaden. Momentan bekomme ich aber keine Verbindung zum Router von den Arduinos. Habe schon mit manuellen Adressen als auch DHCP auf der Accespoint Seite probiert aber es kommt immer wieder die Fehlermeldung, dass kein Connect stattgefunden hat. Die LED Tafel leuchtet die ganze Zeit: Starten.. Morgen werde ich weiter probieren.
Vielen Dank

LG

woggle
Beiträge: 78
Registriert: 01.02.2015, 15:31
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 55 Mal
Danksagung erhalten: 10 Mal

Re: Wemos D1 mini Laufschrift Matrix Display

Beitrag von woggle » 24.06.2022, 15:32

Ok, kann ich bestätigen.
Beim Start wird er AP-Mode gestartet, aber egal was ich einstelle der 8266 verbindet sich nicht mit meinem WiFI-Netzwerk.

Mal gucken was da noch schief geht...

Arthy
Beiträge: 103
Registriert: 17.12.2014, 00:03
System: CCU
Danksagung erhalten: 1 Mal

Re: Wemos D1 mini Laufschrift Matrix Display

Beitrag von Arthy » 24.06.2022, 15:50

Hallo woogle,

Danke fürs Feedback, dachte schon ich mache ständig etwas falsch. Habe auch unterschiedliche Hardware ausprobiert, hat aber nicht funktioniert. Wäre echt cool, wenn man es irgendwie lösen könnte.

LG
Arthy

rr745
Beiträge: 303
Registriert: 19.01.2021, 14:53
System: CCU
Hat sich bedankt: 26 Mal
Danksagung erhalten: 34 Mal

Re: Wemos D1 mini Laufschrift Matrix Display

Beitrag von rr745 » 24.06.2022, 17:49

[/quote]

Hallo Woggle,

das von dir angepasste Paket habe ich komplett übernommen. Beim Kompilieren schon mal keine Fehler, das ist super. Vielen Dank schon mal dafür. Also konnte ich es auf einen NodeMCU oder Lolin ohne Probleme uploaden. Momentan bekomme ich aber keine Verbindung zum Router von den Arduinos. Habe schon mit manuellen Adressen als auch DHCP auf der Accespoint Seite probiert aber es kommt immer wieder die Fehlermeldung, dass kein Connect stattgefunden hat. Die LED Tafel leuchtet die ganze Zeit: Starten.. Morgen werde ich weiter probieren.
Vielen Dank

LG
[/quote]

guckst du......

/*
Project: Wifi controlled LED matrix display
NodeMCU pins -> EasyMatrix pins
MOSI-D7-GPIO13 -> DIN
CLK-D5-GPIO14 -> Clk
GPIO0-D3 -> LOAD

*/

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Max72xxPanel.h>

#define SSID "XXXXXX" // insert your SSID
#define PASS "XXXXXX" // insert your password
// ******************* String form to sent to the client-browser ************************************
String form =
"<p>"
"<center>"
"<h1>ESP8266 Web Server</h1>"
"<form action='msg'><p>Type your message <input type='text' name='msg' size=100 autofocus> <input type='submit' value='Submit'></form>"
"</center>";

ESP8266WebServer server(80); // HTTP server will listen at port 80
long period;
int offset=1,refresh=0;
int pinCS = 15; // Attach CS to this pin, DIN to MOSI and CLK to SCK (cf http://arduino.cc/en/Reference/SPI )
int numberOfHorizontalDisplays = 8;
int numberOfVerticalDisplays = 1;
String decodedMsg;
Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays,numberOfVerticalDisplays);

String tape = "Arduino";
int wait = 50; // In milliseconds


int spacer = 2;
int width = 5 + spacer; // The font width is 5 pixels

/*
handles the messages coming from the webbrowser, restores a few special characters and
constructs the strings that can be sent to the oled display
*/
void handle_msg() {

matrix.fillScreen(LOW);
server.send(200, "text/html", form); // Send same page so they can send another msg
refresh=1;
// Display msg on Oled
String msg = server.arg("msg");
Serial.println(msg);
decodedMsg = msg;
// Restore special characters that are misformed to %char by the client browser
decodedMsg.replace("+", " ");
decodedMsg.replace("%21", "!");
decodedMsg.replace("%22", "");
decodedMsg.replace("%23", "#");
decodedMsg.replace("%24", "$");
decodedMsg.replace("%25", "%");
decodedMsg.replace("%26", "&");
decodedMsg.replace("%27", "'");
decodedMsg.replace("%28", "(");
decodedMsg.replace("%29", ")");
decodedMsg.replace("%2A", "*");
decodedMsg.replace("%2B", "+");
decodedMsg.replace("%2C", ",");
decodedMsg.replace("%2F", "/");
decodedMsg.replace("%3A", ":");
decodedMsg.replace("%3B", ";");
decodedMsg.replace("%3C", "<");
decodedMsg.replace("%3D", "=");
decodedMsg.replace("%3E", ">");
decodedMsg.replace("%3F", "?");
decodedMsg.replace("%40", "@");
//Serial.println(decodedMsg); // print original string to monitor



//Serial.println(' '); // new line in monitor
}

void setup(void) {
matrix.setIntensity(10); // Use a value between 0 and 15 for brightness

// Adjust to your own needs
// matrix.setPosition(0, 1, 0); // The first display is at <0, 0>
// matrix.setPosition(1, 0, 0); // The second display is at <1, 0>

matrix.setRotation(0, 1); //Erste DOT Matrix Drehen
matrix.setRotation(1, 1); //Zweite DOT Matrix Drehen
matrix.setRotation(2, 1); //Dritte DOT Matrix Drehen
matrix.setRotation(3, 1); //Vierte DOT Matrix Drehen
matrix.setRotation(4, 1); //Erste DOT Matrix Drehen
matrix.setRotation(5, 1); //Zweite DOT Matrix Drehen
matrix.setRotation(6, 1); //Dritte DOT Matrix Drehen
matrix.setRotation(7, 1); //Vierte DOT Matrix Drehen
// Adjust to your own needs
matrix.setPosition(0, 0, 0); // The first display is at <0, 7>
matrix.setPosition(1, 0, 0); // The second display is at <1, 0>
matrix.setPosition(0, 0, 0); // The third display is at <2, 0>
matrix.setPosition(0, 0, 0); // And the last display is at <3, 0>
matrix.setPosition(0, 0, 0); // The first display is at <0, 0>
matrix.setPosition(0, 0, 0); // The second display is at <1, 0>
matrix.setPosition(0, 0, 0); // The third display is at <2, 0>
matrix.setPosition(0, 0, 0); // And the last display is at <3, 0>

//ESP.wdtDisable(); // used to debug, disable wachdog timer,
Serial.begin(115200); // full speed to monitor

WiFi.begin(SSID, PASS); // Connect to WiFi network
while (WiFi.status() != WL_CONNECTED) { // Wait for connection
delay(500);
Serial.print(".");
}
// Set up the endpoints for HTTP server, Endpoints can be written as inline functions:
server.on("/", []() {
server.send(200, "text/html", form);
});
server.on("/msg", handle_msg); // And as regular external functions:
server.begin(); // Start the server


Serial.print("SSID : "); // prints SSID in monitor
Serial.println(SSID); // to monitor

char result[16];
sprintf(result, "%3d.%3d.%1d.%3d", WiFi.localIP()[0], WiFi.localIP()[1], WiFi.localIP()[2], WiFi.localIP()[3]);
Serial.println();
Serial.println(result);
decodedMsg = result;
Serial.println("WebServer ready! ");

Serial.println(WiFi.localIP()); // Serial monitor prints localIP
Serial.print(analogRead(A0));

}


void loop(void) {

for ( int i = 0 ; i < width * decodedMsg.length() + matrix.width() - 1 - spacer; i++ ) {
server.handleClient(); // checks for incoming messages
if (refresh==1) i=0;
refresh=0;
matrix.fillScreen(LOW);

int letter = i / width;
int x = (matrix.width() - 1) - i % width;
int y = (matrix.height() - 8) / 2; // center the text vertically

while ( x + width - spacer >= 0 && letter >= 0 ) {
if ( letter < decodedMsg.length() ) {
matrix.drawChar(x, y, decodedMsg[letter], HIGH, LOW, 1);
}

letter--;
x -= width;
}
matrix.write(); // Send bitmap to display

delay(wait);

}
}
Wenn etwas schiefgehen kann, dann geht es schief (Murphy)

woggle
Beiträge: 78
Registriert: 01.02.2015, 15:31
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 55 Mal
Danksagung erhalten: 10 Mal

Re: Wemos D1 mini Laufschrift Matrix Display

Beitrag von woggle » 25.06.2022, 02:54

Arthy hat geschrieben:
24.06.2022, 15:50
Wäre echt cool, wenn man es irgendwie lösen könnte.
So, bin weiter gekommen!
Ich habe den lokalen WiFiManger rausgeworfen. Der hat sich wohl nicht so recht mit der aktuellen Arduino-Umgebung für den ESP8266 vertragen.
Dafür muss man nun in der Arduino-IDE die WiFiManager Bibliothek installieren. Und zwar für
Arduino IDE 2.0: WiFiManager by tzapu
Arduino IDE 1.8.x: WiFiManager by tablatronix
(getestet habe ich aber nur mit der Arduino IDE 2.0)

Da ich aber (noch) keine LED-Matrix habe, kann ich das leider nicht vollständig testen.
Aber der WiFIManger funktioniert, der ESP verbindet sich mit meinem WLAN und die Zeit wird per NTP geholt.
Schaut alles also erst mal gut aus.

https://github.com/woggle65/MatrixDisplayESP8266

Arthy
Beiträge: 103
Registriert: 17.12.2014, 00:03
System: CCU
Danksagung erhalten: 1 Mal

Re: Wemos D1 mini Laufschrift Matrix Display

Beitrag von Arthy » 27.06.2022, 00:12

Hi woogle,

super vielen Dank für deinen Einsatz und Mühe. Habe es jetzt mit Arduino IDE 1.8 kompilieren und übertragen können. Ein paar Fragen bzw. Beobachtungen:
- Die WM.h Datei ist nun nicht mehr benötigt?
- Immer wieder bekomme ich bei dem HTTP request einen fail und dann wird nur HTTP ERROR am Display gezeigt. Abfrage der Variable über den Browser ergibt keine Probleme. Keine Ahnung, woran das bei mir liegt. Wenn ich einmal reset drücke ist alles wieder OK für die nächsten 2 oder 3 Abfragen und dann kommet wieder HTTP ERROR.

Code: Alles auswählen

NTP time was set (UTC): 22:28:53 26.6.2022
Fetching data from URL...
getState url: http://XXX.XXX.XXX.XXX:8181/a.exe?ret=dom.GetObject(%22LED%22).State()
getState payload = Fenster zu
Fetching data from URL...
getState url: http://XXX.XXX.XXX.XXX:8181/a.exe?ret=dom.GetObject(%22LED%22).State()
HTTP http://XXX.XXX.XXX.XXX:8181/a.exe?ret=dom.GetObject(%22LED%22).State() fail
getState payload = HTTP ERROR
Gruß
Arthy

woggle
Beiträge: 78
Registriert: 01.02.2015, 15:31
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 55 Mal
Danksagung erhalten: 10 Mal

Re: Wemos D1 mini Laufschrift Matrix Display

Beitrag von woggle » 27.06.2022, 09:52

Arthy hat geschrieben:
27.06.2022, 00:12
- Die WM.h Datei ist nun nicht mehr benötigt?
WM.cpp, WM.h und css_wm.h braucht es nicht mehr!
Arthy hat geschrieben:
27.06.2022, 00:12
- Immer wieder bekomme ich bei dem HTTP request einen fail und dann wird nur HTTP ERROR am Display gezeigt. Abfrage der Variable über den Browser ergibt keine Probleme. Keine Ahnung, woran das bei mir liegt. Wenn ich einmal reset drücke ist alles wieder OK für die nächsten 2 oder 3 Abfragen und dann kommet wieder HTTP ERROR.
Schaue ich mir an.
Ich hoffe das heute meine Matrix-Module kommen. Dann kann ich das komplett aufbauen und testen.

woggle
Beiträge: 78
Registriert: 01.02.2015, 15:31
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 55 Mal
Danksagung erhalten: 10 Mal

Re: Wemos D1 mini Laufschrift Matrix Display

Beitrag von woggle » 05.07.2022, 23:20

Hi Arthy,
übers WE bin ich endlich dazu gekommen zwei Geräte zusammen zu löten.
Arthy hat geschrieben:
27.06.2022, 00:12
- Immer wieder bekomme ich bei dem HTTP request einen fail und dann wird nur HTTP ERROR am Display gezeigt. Abfrage der Variable über den Browser ergibt keine Probleme. Keine Ahnung, woran das bei mir liegt. Wenn ich einmal reset drücke ist alles wieder OK für die nächsten 2 oder 3 Abfragen und dann kommet wieder HTTP ERROR.
Beide Displays laufen nun seit Sonntag ohne Unterbrechung und ohne Fehler!
So kann ich leider zu deinem HTTP ERROR nicht viel beitragen.

Aber du könntest mal einen ”git pull” von meinen Projekt machen. Habe gerade den HTTP error code in die Debug-Ausgabe eingebaut. Vielleicht hilft das irgendwie den Fehler einzukreisen.

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“