This project uses a cheap ESP32 Screen to display information from the internet, such as the current time.
This project is a Work in Progress!
If you enjoy my work, please consider becoming a Github sponsor!
This project is designed to make use of basically ready to go hardware, so is very easy to get up and running
Currently this project runs on two types of hardware:
An ESP32 With Built in 320x240 LCD with Touch Screen (ESP32-2432S028R), buy from wherever works out cheapest for you:
It's built to work with the ESP32 Trinity, an open source board I created for controlling Hub75 Matrix panels, but it will does work with any ESP32 that breaks out enough pins.
The display it uses is a 64x64 HUB75 Matrix Panel.
All the parts can be purchased from Makerfabs.com:
- ESP32 Trinity
- 64 x 64 Matrix Panel
- Optional: 5V Power Supply - You can alternatively use a USB-C power supply
* = Affilate Link
I've tried to design this project to be modular and have abstracted the display code behind an interface, so it should be pretty easy to get it up and running with a different type of display.
These steps only need to be run once.
Flash the project directly from your browser here (Chrome & Edge only)
or
Jump to the "code" section below
The device is now flashed with the code, but it doesn't know what your Wifi details are.
In order to enter your wifi details, the project will host its own wifi network. Connect to it using your phone.
- SSID: ESP32InfoDisplay
- Password: display123
You should be automatically redirected to the config page.
- Click Config
- Enter your Wifi details (2.4Ghz only)
- Click save
Note: If you ever need to get back into this config section, click reset button (the button closest to the side) twice.
The final step is to connect the device to the internet and start displaying information such as the current time.
Your project should now be setup and will start displaying the current time!
If you want to program this project manually, there are two options
PlatformIO is the easiest way to code this project.
In the platformio.ini, there are several environments defined for the different boards
Environment | Description |
---|---|
env:cyd | For the Cheap Yellow Display |
env:cyd2usb | For the Cheap Yellow Display with two USB ports |
env:trinity | For the ESP32 Trinity (or generic ESP32 wired to the matrix panel the same) |
When you select the environment, it will automatically install the right libraries and set the configurations in the code.
If you want to use the Arduino IDE, you will need to do the following to get it working
The following libraries need to be installed for this project to work:
Library Name/Link | Purpose | Library manager |
---|---|---|
ArduinoJson | For parsing JSON data | Yes ("Arduino Json") |
JPEGDEC | For decoding images | Yes ("JPEGDEC") |
WifiManager - By Tzapu | Captive portal for configuring the WiFi | Yes ("WifiManager") |
ESP_DoubleResetDetector | Detecting double pressing the reset button | Yes ("ESP_DoubleResetDetector") |
Library Name/Link | Purpose | Library manager |
---|---|---|
TFT_eSPI | For controlling the LCD Display | Yes ("tft_espi") |
Library Name/Link | Purpose | Library manager |
---|---|---|
ESP32-HUB75-MatrixPanel-I2S-DMA | For controlling the LED Matrix | Yes ("ESP32 MATRIX DMA") |
Adafruit GFX library | Dependency of the Matrix library | Yes ("Adafruit GFX") |
The CYD version of the project makes use of TFT_eSPI library by Bodmer.
TFT_eSPI is configured using a "User_Setup.h" file in the library folder, you will need to replace this file with the one in the DisplayConfig
folder of this repo.
At the top of the ESP32InfoDisplay.ino
file, there is a section labeled "Display Type", follow the instructions there for how to enable the different displays.
Note: By default it will use the Cheap Yellow Display