What's new with Version 2.01: Not much, but I'm releasing this version since my original Firmware (Version 2.00) didn't work at all on the new hardware versions of the Pico-RGB-Matrix.
- Fix a timing problem with the new versions of the control board and matrix LED board. Many thanks to Waveshare support team and engineering team for their help with this one!!
- Improve bitmap of digits "6" and "9" of the 8x10 character set.
- Optimize NTP algorithm.
NOTES:
a) This is a work-in-progress. I encourage you to report bugs, but be aware that there is no "quality-control team" behind the code development. So, be indulgent...
b) Please take note that I'm not a Waveshare employee. This firmware is provided "as is" to help users develop their own code.
c) The flle "pico_sdk_import.cmake" is not in the repository but is required to build the project. I suggest that your make a symbolic link in your project directory: "ln -s /home/pi/pico/pico-sdk/external/pico_sdk_import.cmake" (assuming that you used the recommended directory names) This way, as soon as you update your SDK, rebuilding your project will automatically use the latest version.
- Add support for NTP (“Network Time Protocol”) to periodically resynchronize the RGB Matrix with an Internet time reference source if user installed a PicoW.
- Handling of the RGB Matrix framebuffer ported from 8-bits to 64-bits for easier, faster and optimized support.
- Add horizontal scrolling feature for text on the LED display.
- Provide customizable “auto-scroll” option to scroll information on RGB Matrix at adjustable time intervals. Information to be scrolled can be selected by user among predefined choices. Five (5) independent auto-scrolls are available.
- Rename many variables and function names so that they are more representative.
- Keep only the Raspberry Pi Pico (or PicoW) source code (discard EPS32 microcontroller support).
- Discard Chinese language support (sorry, I don't know Chinese language).
- Add a 5x7 character set bitmap with variable width.
- Add a 8x10 character set bitmap. Many thanks to Pasquale D’Antini (“oldmaker” on GitHub) for his collaboration on this one.
- Provide 9 different and independent alarms.
- Alarms can be configured for different (selectable) days-of-week, different number of “rings” at different intervals, different message scrolling on LED matrix when the alarm is ringing.
- RGB Matrix provides indicators to show what alarms are On and what alarms are Off.
- RGB Matrix provides indicators to show those days-of-week that currently have active alarms and those that don’t have any.
- Sounds for the active buzzer integrated in the Pico-RGB-Matrix are now handled by a callback for a much easier support, mostly independent from Firmware.
- Add a circular buffer to improve and optimize sound handling with the active buzzer integrated in the device.
- LED display brightness is now controlled by a PWM signal from the Pico to free up the microcontroller from this task. This allows for a very large range of brightness levels. NOTE: At the lowest level, the RGB Matrix is VERY dim.
- Allow adjustment of the range of brightness desired by user (Low level / Hi level)
- Add a hysteresis to the automatic brightness control to prevent quick changes in the LED brightness because of a quick interference with the ambient light.
- Add support for the remote control unit provided with the Pico-RGB-Matrix.
- Pico's core 1 is now used to relief core 0 of some tasks.
- Add an elementary windowing system with “exploding windows” animation.
- Add a debugging engine and algorithm to easily turn On debugging for specific sections of code through an external terminal emulator program or inside source code.
- Add many “RGB_matrix_xxx()” family of hi-level functions with an easy to use interface.
- Add “win_xxx()” family of hi-level windowing functions with an easy to use interface.
- Add a complete interface with an optional external terminal emulator. This allows to go deeper and in more details for some device options / features / configuration.
- Add auto-detection of CDC USB terminal to jump automatically into a terminal menu.
- Change the layout of the clock display.
- Currently support English and French languages.
- Add the infrastructure to easily add translation in other languages.
- Add support for 64 different “Calendar events” allowing the user to program birthdays and / or other specific dates. An alarm and a message will periodically ring / scroll during the target day when the date is reached.
- Add an option for an hourly chime.
- Add an option for a half-hour light chime.
- Provide a way to shut off the hourly chime (and half-hour light chime) during a configurable period of time so that there is no sound during the night.
- RGB Matrix can be configured to become a “night light” when the ambient light is dark.
- Provide ambient temperature display.
- Temperature unit adjustable in Celsius or Fahrenheit.
- Add a mechanism in source code to allow for device customization for different uses / users / rooms.
- Allow the device to be set in “bootsel” mode by firmware to compensate for a problem due to a physical difference between Pico and PicoW (see section about uploading a new Firmware version in User Guide).
- Add a delay during the power-up sequence so that developers can put the Pico in “bootsel mode” while the LED matrix is blank (to prevent LED over-bright).
- Add a delay during the power-up sequence so that users have time to start a terminal emulator software to interact with the Pico-RGB-Matrix.
- Add a “device integrity check” function to test every LED of the RGB Matrix.
- Add a “Test zone” with many chunks of test code (for developers).
- Invert the logic of ambient light reading so that a higher value means “more ambient light”, to make it more intuitive.
- Add a compile time option to completely shut Off sound from the device.
- Allow time display in 12-hour or 24-hour format (to be completed).
- Allow automatic support of daylight saving time for most – if not all – countries in the world, along with different time zones (to be completed).
- Implement a watchdog mechanism to recover from a Firmware crash for users who want to modify / work on the Firmware.
- Add an indicator on the RGB Matrix showing the watchdog timing status and "how far we are" from an eventual restart.
- LED display provides indicators to show that the main system "forever loop" is up and running (still active).
- Functions have been implemented to support “human time”, “tm time” and "Unix time”, to better support DS3231, Network Time Protocol and other inherent functions (for developers).
- Optionally scroll the cumulative device “Up time” since last power-up.
- Provide a specific indicator on the RGB Matrix to let the user know if there is a problem with the Wi-Fi connection and / or NTP support.
- Provide a “Golden Age” option to help senior people having problems in their day-to-day lives.
- Allows for automatic detection of microcontroller used (Pico or PicoW), along with microcontroller “Unique ID” (“serial number”).
- Add a count-down timer with an alarm (to be completed).
- Add a count-up timer (to be completed).
- Write a User Guide to help users getting the most out of this amazing device.
- Many other cleanup and optimizations from the original code by Waveshare.
This project provides Firmware for the "Pico-RGB-Matrix" product from Waveshare (The clock is available directly from Waveshare website, or from Amazon). It is based on a Raspberry Pi Pico microcontroller.
Waveshare provides a basic Firmware ("Version 1.00") for the Pico-RGB-Matrix. Current project provides many enhancements and functionalities to the device. You may refer to the User Guide of the most recent Firmware Version (included in this repository) to see the detailed list of changes / enhancements.