64×8 Dot Matrix W-LAN Display

Dieser Beitrag wurde am 09.11.2022 aktualisiert.

Projektbeschreibung:

Kurz und knapp geht es bei dem Projekt darum eine Laufschrift zu bauen, die sich ihre anzuzeigenden Daten via W-LAN aus dem Internet holt. Gedacht ist das Ganze für die Anzeige zu Hause oder als kleines Geschenk für Freunde des WakLab (Geschäfte zb. die einen Freifunkrouter aufstellen -> bietet uns Werbeplatz). Der Wemos holt derzeit jede Minute eine html mit dem Datenstring vom Server. Auf dem Server wird die Datei minütlich neu erzeugt.

Probleme / Things to do:

– momentan übernimmt er die neuen Daten sofort, ohne den aktuellen Durchlauf vorher zu beenden -> führt zu zerhackten Worten

– es ist angedacht Parameter wie Helligkeit, Geschwindigkeit etc über die abzurufenden Datei steuerbar zu machen -> Umstieg auf json?

– Fehlermeldung, wenn Datei nicht abgerufen werden kann

– ReConnect, wenn W-LAN Verbindung verloren

– Sonderzeichen und Umlaute anzeigbar machen

– Frontend auf Server (damit Betreiber eigene Infozeilen hinzufügen können (Angebote, Urlaube, ect))

Ressourcen:

Schaltplan folgt

Druckdateien für stehendes/hängendes Gehäuse

Derzeitiger Code:

#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <WiFiManager.h>
#include <ESP8266WebServer.h>
#include <ESP8266HTTPClient.h>


// Define the number of devices we have in the chain and the hardware interface
// NOTE: These pin numbers will probably not work with your hardware and may
// need to be adapted
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 8
#define CLK_PIN 14
#define DATA_PIN 13
#define CS_PIN 2

// Hardware SPI connection
MD_Parola P = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
// Arbitrary output pins
// MD_Parola P = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);

uint8_t degC[] = {5, 6 , 15 , 9 , 15 , 6 };
uint8_t line[] = {4, 0, 8, 8, 8 };
uint8_t plus[] = {5, 8, 8, 62, 8, 8};
uint8_t block[] = {3, 255, 255, 255};
uint8_t heart[] = {5, 28, 62, 124, 62, 28};

WiFiManager wm;

char anzeige[300];
const int PAUSE = 60000;
long lastActionTime = -1;



void setup(void)
{

P.begin();
P.setSpeed (40);
P.setPause (40);
P.setIntensity(1);
P.addChar('$', degC);
P.addChar('-', line);
P.addChar('_', block);
P.addChar('?', heart);

wm.autoConnect("ESP8266_AP", "esp8266_pwd");

HTTPClient http; //Declare an object of class HTTPClient

http.begin("http://wemosdisplay.ddns.net:81/waklab.html"); //Specify request destination
int httpCode = http.GET(); //Send the request 
String request = http.getString(); 
request.toCharArray(anzeige,request.length());
http.end(); //Close connection
}


void loop(void)
{

long currentMillis = millis();

if(lastActionTime<(currentMillis-PAUSE)){
lastActionTime = currentMillis;
HTTPClient http; //Declare an object of class HTTPClient

http.begin("http://wemosdisplay.ddns.net:81/waklab.html"); //Specify request destination
int httpCode = http.GET(); //Send the request
String request = http.getString(); 
request.toCharArray(anzeige,request.length());
http.end(); //Close connection

}

if (P.displayAnimate())
P.displayText(anzeige, PA_LEFT, P.getSpeed(), P.getPause(), PA_SCROLL_LEFT);

}

2 Kommentare

Kommentar hinterlassen

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




Enter Captcha Here :