Controlling 1.54 inch E-Paper via Pico
The original Kindle made popular Electronic Paper Displays (EPD). Today you may be surprised to find out that some grocery stores use small network enabled EPD price tags, that appear just like a paper tag. But these can be programmed to show different price remotely. Perhaps the biggest advantage to EPD is that once a display is setup they do not need any electrical power to keep showing it. Yes, you can switch off or disconnect them.
EPD have disadvantages also. These include that they are slow to refresh the display, cannot be used out doors for a long time, and have limited color options in the market.
I wanted to make a small micro controller based device that would need a display and also consume less electrical power. I ordered a 1.54 inch EPD from Waveshare. My original plan was to use Arduino Nano (ATMega32P) based solution, but I found out that I could not connect the e-paper display and a couple of other peripherals to Arduino, all at the same time. I did not need Wifi or Network connectivity for the application in my mind. So I opted for Raspberry Pi Pico (Based on RP2040). Pico is low cost, you should be able to get it for CAD$5.25 but the cost of shipping and tax added I ended up ordering it from AliExpress as it was more economical.
Waveshare website have very good documentation and code examples for most of their products. Unfortunately for me, the 1.54 inch EPD did not have any ready made examples to go with Pico. Luckily I found Waveshare Pico code for their other EPD, with this along with 1.54 inch EPD code for RaspberryPi_JetsonNano, I was able to get Pico to control it. I have uploaded the result on Github for others using Pico with 1.54inch EPD. It is using C/C++ and can be cross compiled for Pico on Windows, Linux, or a Raspberry Pi computer.
What is the fun part? You can do embedded C/C++ programming in Windows 10 or 11. On my Github page and in the reference links below you will find interesting information on how to use Windows Sub System for Linux (WSL2) for programming the Micro controller in C/C++.
Video
Further Reading
- My edited source code for controlling 1.54 inch EPD via Pico, hammadrauf/pico_epd_1in54: Raspberry Pi Pico example interface code with E-Paper Display 1.54 inch from Waveshare.com. (github.com), Date Accessed: June 26, 2022.
- Raspberry Pi Pico, Raspberry Pi Pico Page – Raspberry Pi, Date Accessed: June 26, 2022.
- Comparision of Pico with other boards (Youtube Video), (101) RaspberryPi PICO vs Arduino NANO vs STM32 Blue Pill vs ESP32 vs STM32 Black Pill | Comparison – YouTube, Date Accessed: June 26, 2022.
- Waveshare 1.54 inch EPD, 200×200, 1.54inch E-Ink display module, SPI interface | HINK-E0154A05 WFC0000CZ07 (waveshare.com), Date Accessed: June 26, 2022.
- Paul Bupe’s article on setting up Windows WSL2 Environment for C/C++ Development for Pico, Easy Raspberry Pi Pico Microcontroller C / C++ Programming on Windows (paulbupejr.com), Date Accessed: June 26, 2022
- Digi-Key – Shawn Hymel’s page and video about Pico SPI interfacing, Raspberry Pi Pico SPI Tutorial (digikey.ca), Date Accessed: June 26, 2022
- Introduction to what is WSL, What is Windows Subsystem for Linux | Microsoft Docs, Date Accessed: June 26, 2022