In the past decade, digital art has gained enormous attraction and popularity for people whose age group could not be more different.
There are several manufacturers of digital photo frames that all do the same thing: Play back images previously saved on a memory card. To make this product more interesting, as part of a project work for the Systemadministration course, a system is to be created that scales the stored images into a smaller resolution and displays them on a simple LED matrix instead of on a screen. Due to the RGB with approximately 16 million colors, there are interesting possibilities here. We want to use it to make art more digital in order to bring technology-loving people closer to art - and vice versa.
For the project you will need the specific hardware from the following links:
Adafruit Matrix HAT
64x64 RGB LED Matrix
Raspberry Pi 3
Power supply 5V 10A or at least 5V 4A as the matrix consumes a LOT of power.
Make sure you don`t go over 5V though.
To set up the project's basic configuration simply follow the Adafruit tutorial.
Some soldering is needed!
Install Node.js on your Raspberry Pi. All versions are listed on the official Node.js page
When the basic stuff is up and running, simply clone the repository to a folder on your Raspberry Pi.
The first thing to do is set the user rights. In the folder "SmartArt/WebApp/public/" run the console command:
sudo chmod -R 777 matrixPictures/
Otherwise the option in menu to delete pictures isn`t possible.
In the WebApp directory: "SmartArt/WebApp/" run the following command:
npm install
To install all dependencies, which are important before running the project.
Also you need to change the Deep Art Effects API Access Key under: "SmartArt/WebApp/src/js/config/apiConstants.js" change the Access-Key to yours under DeepArtEffects:
cd into "SmartArt/Logik" and run the following command:
sudo python3 SmartArt.py
The main menu should appear in the console and show options for what is yet possible with the program.
This module contains the functions for setting the matrix options.
These come from the Python binding of the rpi-rgb-led-matrix-library.
setOptions ():
Here you can define the size of the matrix, how many matrices
have been linked, and the hardware mapping.
newestPic ():
returns the newest picture and is used for the display modes.
setImage ():
Sets the image which should be displayed on the matrix. Used in the display modes.
startDiashow ():
starts the slide show on the matrix
startSingleImageView()
Starts the single image display on the matrix
The auxiliary functions for the program are located in this module.
startUI ():
outputs the selection options on the console when the program is started
intCheck () strCheck () and startCheck ():
are auxiliary functions for exception handling in the event of incorrect user entries.
deleteAllPics ():
Deletes all pictures from the user folder except for the sample images.
The SmartArt module serves as the starting point for the program.
It starts with a console output that leads through a small user menu to select the display modes.
Two different modes were planned that can be called up.
In this mode, only the last uploaded image should be displayed. This was implemented by the program monitoring the folder,
which acts as a common interface, and always setting the image to be displayed to the last changed one during runtime.
In this mode, all images in the matrixPictures folder are displayed in sequence.
The duration of how long each image is displayed can be specified via a parameter when the program is started.
The slide show can be expanded to include images at runtime.
All the Code for driving the matrix is found in the /Logik folder.
Feel free to use it. It is derived from hzeller's rpi-rgb-led-matrix library found on github, where you can check for further informations.
There are also bindings for C# and C available.
It is also possible to write your program directly in C++ which is recommended
as it provides a way faster execution.
To start the SmartArt Webapplication you need to run the following command in directory: "SmartArt/WebApp/"
npm start
Runs the SmartArt-Server plus the WebApp with one command.
Open http://localhost:3000
or
http://RaspberryIP:3000 to view it in the browser.