Museums today are expanding public access to their art collections, not just inside the walls of the museum but also outside. Digital initiatives are bringing artwork, once relegated within the confines of the museum, to a 21st century global audience. These modern museums have essentially become the new content providers. Much like the modern companies Netflix and Pandora that provide video and music content, museums are becoming their own content providers with their collection of paintings, photographs, jewelry and other media. Digitizing these collections and making it publicly available brings this material to a global audience.
One such museum that is at the forefront of this endeavor is the Cleveland Museum of Art.
The Cleveland Museum of Art (CMA) is located in Cleveland, Ohio and houses over 61,000 works of art from around the world. Founded in 1913, it is internationally renowned for its holdings of Asian and Egyptian art. More than 770,000 visited the museum in 2018.
On January 23, 2019, the CMA announced over 31,000 digital images of artwork from its collection will be available in the public domain. There are dozens of art types included in the collection, including paintings, drawings, photographs, coins and jewelry. All of these images are available under the Creative Commons Zero (CC0) license, which allows people to share, collaborate, remix, and reuse images from the collection for both commercial and non-commercial use. The CMA also created a free API that allows programs to easily retrieve information about each of these images.
This project accesses the CMA API using CircuitPython running on the PyPortal. It uses the API to pick a random item from the collection. It converts and resizes the JPEG image from the collection to a BMP image sized to the PyPortal using Adafruit IO image conversion service. Finally, the converted image is downloaded to the PyPortal for display. A new feature of the PyPortal allows the correct scaling of portrait images, which is a great feature for this project.
When powering up the device, the PyPortal displays a Cleveland Museum of Art banner while it connects to the internet and retrieves its first image. The PyPortal retrieves an image from one of the 31,000+ images available in the collection and displays it along with its title at the bottom of the screen.
By default the display updates automatically every 5 minutes (this can be changed in the code), which will take over 3 months 24x7 to display that many images. You can also manually update the display by touching anywhere on the screen using the PyPortal's touch screen. When the screen is touched, a red circle will appear in the bottom right corner of the display, signaling the screen is currently being updated. The touch screen will be inactive while a screen update is being done, either by an automatic or manual update. Note the Adafruit IO image converter service is rate limited so a one minute interval between images is the minimum time.
This project is compatible with all PyPortals. The PyPortal comes in three sizes:
- Pynt PyPortal: 2.4" display, 320x240 (76,800 pixels), micro USB
- PyPortal: 3.2" display, 320x240 (76,800 pixels), micro USB
- PyPortal Titano: 3.5" display, 480x320 (153,600 pixels), USB C
The PyPortal Titano has a larger screen and higher resolution, making it an ideal display for artwork. The Titano actually has twice as many pixels as the standard and Pynt PyPortals, and this project will automatically use those extra pixels for a higher resolution display.
Note that the Titano uses the newer, reversible USB C cable, whereas the Standard and Pynt PyPortals use a micro USB cable.
This is an easy project requires no soldering. It will work with any of the PyPortals, including the Titano, which provides more pixels for displaying the work of art. In addition to the PyPortal, this project also requires a MicroSD card, which is used for temporary storage to download the converted image prior to it being displayed.
This stand is only compatible with the standard PyPortal.
Pick from one of these USB cables for the standard PyPortal or Pynt PyPortal.
Use this USB type C cable for the Titano.