Skip to content

rob040/LEDmatrixClock

 
 

Repository files navigation

LED Matrix Clock a.k.a. Marquee Scroller (Clock, Weather, and More)

NOTICE

This fork enhances the Qrome Marquee Scroller version 3.03 from february 2023, that was developed during 2018-2022 period.

For more information and development history visit Qrome Marquee Scroller and read his README.

Read the feature enhancements below

Features include:

  • Accurate Clock refresh from Internet Time Servers
  • Display Local Weather and conditions (refreshed every 10 - 30 minutes, configurable)
  • Configured through Web Interface
  • Basic Authorization to access Configuration web interface
  • Update firmware through web interface over WiFi (OTA)
  • Configurable scroll speed and LED brightness
  • Configurable data display and data update interval frequency
  • Configurable sleep / wake times
  • Configurable number of LED-matrix tiles (4 to >8) (compile option) and types of Clock Displays on larger panels, e.g. also display seconds or temperature
  • Video: https://youtu.be/DsThufRpoiQ
  • Build Video by Chris Riley: https://youtu.be/KqBiqJT9_lE

Feature Enhancements

Enhancements included in THIS repository :

  • Removed the TimeZoneDB.com registration requirement.
  • Actual time zone information is used from OpenWeather API.
  • Added Time NTP and more efficient time strings instead.
  • Update to new OpenWeatherMap.org API. Newly requested Free Service API-keys can no longer use the older call and structure.
  • Reduce RAM usage. The ESP8266 is an older WiFi processor with limited RAM (80kB), especially when compared to its newer ESP32 members.
  • Added MQTT support with basic Authentication, to send message to be displayed. Message is displayed immediately when display shows the time, and repeated every minute with default configuration.
  • Use VScode IDE with PlatformIO / PIOarduino, for better development and maintenance experience and much better build environment and library version control.
  • Improved start-up on time synchronisation and weather data update,
  • Improved weather data display on webpage (minor changes)
  • Automatic timezone (from Local weather), hence no need for TimeZoneDB.
  • Added a favicon for easy recognition in your browser.
  • Support for different display sizes without re-compilation, via configuration page (device will reboot upon change).
  • Using the 'LittleFS' filesystem in stead of the depecated 'SPIFFS' filesystem
  • Using ArduinoJson upgraded to version 7
  • Webpage now has switchable dark-mode view
  • Webpage now has switchable automatic page update
  • Instead of scrolling text, there is also a static display mode for short messages, date, temperature or humidity only next to the time display.
  • Weather Location lookup has been made simpler; there is no longer the need to lookup the City-ID code; just enter a (valid) city name with optional 2-letter country code. Also GPS coordinates are now allowed as location input.
  • Added a display QUIET time config option, where the display can be Off or Dimmed or Dimmed with no Motion (ie. no scrolling, no blinking)
  • Replaced Wifi_manager with ESP_WiFiManager_Lite library, which allows multiple WiFi Accesspoints (SSID's) to be (pre-)configured, which is handy for a portable device. It also provides a fallback if one WiFi station goes down.

known issues

  • Webpage update does halt the scrolling display for a moment. See issue #8 for more details.
  • Scrolling text appears to have some 'flex' in it. See issue #9 for meore details.
  • When using the LED display at lowest intensity, some pixel flicker might be visible. See issue #10 for more details.

Required Parts:

  • Wemos LOLIN D1 Mini ESP8266: https://www.wemos.cc/en/latest/d1/d1_mini.html Other EXP8266 boards based on ESP12(-E,-F) module, such as the NodeMCU, shall work equally well, only the 3D print models are more or less bound to the D1-mini physical dimensions.
  • MAX7219 LED Dot Matrix Module 4-in-1 Display (FC16) for Arduino. Commonly available from Chinese webshops, or Ebay or Amazon.com.

Wiring for the Wemos D1 Mini to the LED Dot Matrix Display

LED D1 mini
VCC 5V
GND G (GND)
CLK D5 (SCK)
CS D6
DIN D7 (MOSI)

The Connections in a picture:

Be aware that the display in above picture is actually upside-down; when viewed from front, the data input DIN is at the right hand side; the text on the PCB is usually upside-down.

3D Printed Case by David Payne:

Original Single Panel version: https://www.thingiverse.com/thing:2867294
Double Wide LED version: https://www.thingiverse.com/thing:2989552

Compiling and Loading to Wemos D1 Mini (ESP8266)

Using Arduino 2.x IDE

It is no longer recommended to use the Arduino IDE. It might be difficult to get the right library versions together, especially when using it also for other Arduino projects.
Still, the source directory structure is kept such that this project can be build with little to no effort. This might change in the future.

  • Support for ESP8266 Boards is included in Arduino v2.x
  • Select Board: "ESP8266" --> "LOLIN(WEMOS) D1 R2 & mini"
  • Set Flash Size: 4MB (FS:1MB OTA:~1019KB)
  • Select the Port from the tools menu.

Loading Supporting Library Files in Arduino

Use the Arduino guide for details on how to installing and manage libraries https://www.arduino.cc/en/Guide/Libraries

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

Building with PlatformIO.

Use VScode with PlatformIO or better, its desendant fork PIOarduino extension.

Please refer to the provided links on how to install VScode on your OS.

Then, open this project with Visual Studio Code, via File --> Open Folder: select folder containing platformio.ini file.

The platformio.ini file contains the references to the required external libraries and version numbers.

To build, open the pioarduino or platformio extension (icon on left hand side bar), then under PROJECT TASKS -> Default -> General : select Build and then Upload

Initial Configuration

Editing the Settings.h file is totally optional and not required. All settings and API Keys are managed from the Web Interface.

  • Open Weather Map free service API key: http://openweathermap.org/ -- this is used to get weather data and the current time zone from the selected City. This API key is required for correct time.

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.

Web Interface

The Marquee Scroller uses the WiFiManager so when it can't find the last network it was connected to, it will become an Access Point Hotspot -- connect to it with your phone at http://192.168.4.1/ and you can then enter your WiFi connection information.

After connected to your WiFi network it will display the IP address assigned to it and that can be used to open a browser to the Web Interface. You will be able to manage your API Keys through the web interface.

The default user / password for the configuration page is: admin / password

The Clock will display the local time of the City selected for the weather after a short synchronization period.

Contributors

David Payne
Nathan Glaus
Daniel Eichhorn -- Author of the TimeClient class (in older versions)
yanvigdev
nashiko-s
magnum129
rob040 -- author of this repo and these feature enhancements listed above

Contributing to this software is warmly welcomed. You can do this basically by forking from master, committing modifications and then making a pulling requests against the latest DEV branch to be reviewed (follow the links above for operating guide). Detailed comments are encouraged. Adding change log and your contact into file header is encouraged. Thanks for your contribution.

When considering making a code contribution, please keep in mind the following goals for the project:

  • User should not be required to edit the Settings.h file to compile and run. This means the feature should be simple enough to manage through the web interface.
  • Changes should always support the recommended hardware (links above).

About

Updated Marquee Scroller Clock News Weather and More

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 84.7%
  • C 15.2%
  • Shell 0.1%