LED Marquee Scroller Wemos D1 Mini ESP8266

26,528

125

144

Introduction: LED Marquee Scroller Wemos D1 Mini ESP8266

About: I enjoy flying RC and 3D Printing

Make your own Clock, Weather, News, and more! Easy to make LED Marquee Scroller using a Wemos D1 Mini and a LED Dot Matrix Panel. Full Arduino software and 3D printed case.

Features Displays the following every 60 seconds:

  • Accurate Clock refresh off Internet Time Servers
  • Local Weather and conditions (refreshed every 10 - 30 minutes)
  • News Headlines from all the major sources
  • Configured through Web Interface
  • Display 3D print progress from your OctoPrint Server
  • Option to display random goofy advice
  • Option to display Bitcoin current value
  • Basic Authorization around Configuration web interface
  • Support for OTA (loading firmware over WiFi)
  • Video: https://youtu.be/DsThufRpoiQ
  • Build Video by Chris Riley: https://youtu.be/KqBiqJT9_lE

Required Parts and Source Code:

Step 1: Wiring for the Wemos D1 Mini to the Dot Matrix Display

The Dot Matrix Display comes with the wires you can use. I simply cut off the plugs and solder them directly to the pin locations on both the LED Dot Matrix Display and to the Wemos D1 Mini.

  • CLK -> D5 (SCK)
  • CS -> D6
  • DIN -> D7 (MOSI)
  • VCC -> 5V+
  • GND -> GND-

The Dot Matrix will slip into the case and snap in. No glue required and will be a snug fit.

The Wemos D1 Mini will slide into the slot of the back panel and will be held in when assembled. Also, no glue required. The back panel can be snapped in then held shut with some small screws.

Step 2: Compiling and Loading to Wemos D1

Download source code from here: https://github.com/Qrome/marquee-scroller

It is recommended to use Arduino IDE. You will need to configure Arduino IDE to work with the Wemos board and USB port and installed the required USB drivers etc.

  1. USB CH340G drivers: https://wiki.wemos.cc/downloads
  2. Open the Arduino IDE and enter the following URL http://arduino.esp8266.com/stable/package_esp8266com_index.json into Additional Board Manager URLs field. You can add multiple URLs, separating them with commas. This will add support for the Wemos D1 Mini to Arduino IDE.
  3. In the Arduino IDE, open Boards Manager from Tools > Board menu and install esp8266 platform (and don't forget to select your ESP8266 board from Tools > Board menu after installation).
  4. Select Board: "WeMos D1 R2 & mini"

Packages -- the following packages and libraries are used (download and install):

Initial Configuration:

NOTE: The settings in the Settings.h are the default settings for the first loading. After loading you will manage changes to the settings via the Web Interface. If you want to change settings again in the settings.h, you will need to erase the file system on the Wemos or use the “Reset Settings” option in the Web Interface.

Step 3: Web Interface for Configuration

The Marquee Scroller uses the WiFiManager so when it can't find the last network it was connected to it will become a AP Hotspot -- connect to it with your phone and you can then enter your WiFi connection information.

After connected to your WiFi network it will display the IP addressed assigned to it and that can be used to open a browser to the Web Interface. Most everything can be configured there.

The Clock will display the time of the City selected for the weather.

Step 4: Enjoy

I hope you enjoy your LED Marquee Scroller. If you do, please share your makes, share the link, like and subscribe. Questions? Post them up.

Enjoy!

-Qrome

Microcontroller Contest

Participated in the
Microcontroller Contest

8 People Made This Project!

Recommendations

  • Rice & Grains Challenge

    Rice & Grains Challenge
  • CNC and 3D Printing Contest

    CNC and 3D Printing Contest
  • Lamps Challenge

    Lamps Challenge

144 Comments

0
casteller2005
casteller2005

6 hours ago

Hola y perdon por no poder expresarme en ingles.
Mi pregunta es bastante caprichosa. Funcionando todo perfecto, pero se me ha metido en la cabeza que tanto matriz como pagina web muestren temperatura en ºC y ºF. le he dado curentamil vueltas y no doy con la solucion.

Translation of google translator
Hello and sorry for not being able to express myself in English.
My question is quite whimsical. Everything working perfectly, but it has gotten into my head that both the matrix and the web page show temperature in ºC and ºF. I've given it forty thousand turns and I can't find the solution
Thank you for your attention

0
EduR2
EduR2

6 weeks ago

hello good, I made the project install all the libraries to the version that the creator of the project puts but it always gives me the same error, or matching function for call to 'HTTPClient::begin(WiFiClient&, String&)', I don't know how to solve it, can you help me Thank you , Arduino: 1.8.5 (Windows 10), Tarjeta: "WeMos D1 R2 & mini, 80 MHz, 4M (1M SPIFFS), memoria inferior v2, Deshabilitado, Ninguno, Solo Sketch, 921600"
sketch\BitcoinApiClient.cpp: En función de miembro 'void BitcoinApiClient::updateBitcoinData(String)':
BitcoinApiClient.cpp:49: error: no hay función coincidente para llamar a 'HTTPClient::begin(WiFiClient&, String&)'
http.begin(wifiClient,apiGetData);
^
sketch\BitcoinApiClient.cpp:49:35: nota: los candidatos son:
En el archivo incluido de sketch\BitcoinApiClient.h:26:0,
de sketch\BitcoinApiClient.cpp:24:
C:\Users\llabe\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.1\libraries\ESP8266HTTPClient\src/ESP8266HTTPClient.h:136:10: nota: bool HTTPClient::begin(String)
bool comenzar (cadena de URL);
^
C:\Users\llabe\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.1\libraries\ESP8266HTTPClient\src/ESP8266HTTPClient.h:136:10: nota: el candidato espera 1 argumento, 2 provistos
C :\Users\llabe\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.1\libraries\ESP8266HTTPClient\src/ESP8266HTTPClient.h:137:10: nota: bool HTTPClient::begin(String, String)
bool begin(String url, String httpsFingerprint);
^
C:\Users\llabe\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.1\libraries\ESP8266HTTPClient\src/ESP8266HTTPClient.h:137:10: nota: no se conoce ninguna conversión para el argumento 1 de 'WiFiClient ' a 'String'
C:\Users\llabe\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.1\libraries\ESP8266HTTPClient\src/ESP8266HTTPClient.h:138:10: nota: bool HTTPClient:: begin(String, uint16_t, String)
bool begin(String host, puerto uint16_t, String uri = "/");
^
C:\Users\llabe\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.1\libraries\ESP8266HTTPClient\src/ESP8266HTTPClient.h:138:10: nota: no se conoce ninguna conversión para el argumento 1 de ' WiFiClient' a 'Cadena'
C:\Users\llabe\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.1\libraries\ESP8266HTTPClient\src/ESP8266HTTPClient.h:139:10: nota: bool HTTPClient::begin(String, uint16_t , String, String)
bool begin(String host, puerto uint16_t, String uri, String httpsFingerprint);
^
C:\Users\llabe\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.1\libraries\ESP8266HTTPClient\src/ESP8266HTTPClient.h:139:10: nota: el candidato espera 4 argumentos, 2 provistos
C :\Users\llabe\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.1\libraries\ESP8266HTTPClient\src/ESP8266HTTPClient.h:141:10: nota: bool HTTPClient::begin(String, uint16_t, cadena, bool, cadena)
bool begin(String host, puerto uint16_t, String uri, bool https, String httpsFingerprint) __attribute__ ((obsoleto));
^
C:\Users\llabe\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.1\libraries\ESP8266HTTPClient\src/ESP8266HTTPClient.h:141:10: nota: el candidato espera 5 argumentos, 2 provistos
BitcoinApiClient .cpp:99: error: 'DynamicJsonDocument' no se declaró en este ámbito
DynamicJsonDocument root(2048);
^
BitcoinApiClient.cpp:99: error: esperado ';' antes de 'raíz'
DynamicJsonDocument root (2048);
^
BitcoinApiClient.cpp:100: error: 'DeserializationError' no se declaró en este ámbito
DeserializationError error = deserializeJson(root,
^
BitcoinApiClient.cpp:100: error: esperado ';' antes del 'error'
DeserializationError error = deserializeJson(root, jsonArray);
^
BitcoinApiClient.cpp:101: error: 'error' no se declaró en este ámbito
if (error) {
^
BitcoinApiClient.cpp:106: error: 'root' no se declaró en este ámbito
bpiData.code = root["bpi" ][String(currencyCode)]["code"].as<String>();
^
BitcoinApiClient.cpp:106: error: expresión primaria esperada antes del token '>'
bpiData.code = root["bpi"][String(currencyCode)]["code"].as<String>();

BitcoinApiClient.cpp:106: error: expresión primaria esperada antes del token ')'
bpiData.code = root["bpi"][String(currencyCode)]["code"].as<String>();
^
BitcoinApiClient.cpp:107: error: expresión primaria esperada antes del token '>'
bpiData.rate = root["bpi"][String(currencyCode)]["rate"].as<String>();
^
BitcoinApiClient.cpp:107: error: expresión primaria esperada antes del token ')'
bpiData.rate = root["bpi"][String(currencyCode)]["rate"].as<String>();

BitcoinApiClient.cpp:108: error: expresión primaria esperada antes del token '>'
bpiData.description = root["bpi"][String(currencyCode)]["description"].as<String>();
^
BitcoinApiClient.cpp:108: error: expresión primaria esperada antes del token ')'
bpiData.description = root["bpi"][String(currencyCode)]["description"].as<String>();
^
estado de salida 1
sin función coincidente para la llamada a 'HTTPClient::begin(WiFiClient&, String&)'
Este informe podría tener más información con
"
opción habilitada en Archivo -> Preferencias.

0
xianyi1983
xianyi1983

Tip 8 months ago

http.begin(apiGetData);// get the result---how to solve this issue?

iShot2022-03-15 22.34.58.png
0
tannenba
tannenba

Reply 8 months ago

See above, you need to change the core in boards menu to version 2.7.4.

0
victor7376
victor7376

Reply 8 months ago

You don't need to use the old version any longer, just the change the line to:

http.begin(wifiClient, apiGetData);
If you look at the forks on github, I have forked a version that allows you to use the up to date packages.

0
tannenba
tannenba

Reply 8 months ago

Link to the fork? Tried your statement and no go.

0
tannenba
tannenba

Reply 8 months ago

Yep, this one compiles with the latest core. Thank you

0
victor7376
victor7376

Reply 8 months ago

No problem, glad to help.

0
victor7376
victor7376

Reply 8 months ago

I forgot to say add this line in too

#include <WiFiClient.h>
at the top

0
tannenba
tannenba

Reply 8 months ago

Not in setting.h?

0
xianyi1983
xianyi1983

Reply 8 months ago

Thank you for your reply. According to your reply operation, there are new errors. Can you teach me in detail.

0
tannenba
tannenba

10 months ago

This is cool, and from a fellow Arizonian! (I'm in Cordes Junction).Decided to build this but it won't compile:
'HTTPClient::begin' declared with attribute error: obsolete API, use ::begin(WiFiClient, url)
I haven't been able to fix this.
I believe the library(s) have change?
Found I had to back off the core to 2.7.4---Compiled.

0
xianyi1983
xianyi1983

Reply 8 months ago

Has your problem been solved? How to solve it?

1
Qrome
Qrome

Reply 8 months ago

Use the version of ESP8266 Core mentioned in the Readme.md file in the source. It requires an earlier version.

0
sgarbo
sgarbo

1 year ago

Works great! Great instructions. I am using a larger wemos and I was curious if anyone has had success with a nodemcu. ( I have lots of those but no D1 mini's)

0
chray68
chray68

Question 1 year ago

A really nice Project!!
I've build two of the Marquees and also one of the tiny Printer Monitor and everything is working fine and looking great!
Just got one question regarding the news feeds:
How can i change the settings to add/show another news service which isn't chooseable through the Web Interface?
I would like to show the Austrian Headlines and i guess the correct entry should look something like this:http://
newsapi.org/v2/top-headlines?country=at&apiKey=XXXXXXXXXXXXXXXX
The Line Nr. 45 in the NewsApiClient.cpp looks similar and i alraedy tried to change it to show my Local News but w/o any success.
Maybe somebody would be so kind and show me the exact entry step by step to make that change possible.
Thanks again for that great Project!

0
dsutherland
dsutherland

1 year ago

This is a brilliant project.
I would like to request MQTT functionality so the scroller can display text strings from a subscribed topic sent from openhab or home assistant.
Being able to publish to a topic when motion is detected or a button is pressed,for example,would also make this more versatile.
Would you consider implementing this ?

0
RubayetFrafi
RubayetFrafi

1 year ago

In file included from C:\Users\ASUS\Documents\Arduino\libraries\Adafruit_GFX_Library\Adafruit_GrayOLED.cpp:20:0:
C:\Users\ASUS\Documents\Arduino\libraries\Adafruit_GFX_Library\Adafruit_GrayOLED.h:30:32: fatal error: Adafruit_I2CDevice.h: No such file or directory
#include <Adafruit_I2CDevice.h>
^
compilation terminated.
exit status 1
Error compiling for board WeMos D1 R2 & mini.




What should I do now?? :(