This is a battery-powered frame for a 7.5" epaper display. I am using this for my Very Slow Home Video Player project. It can be hung on a wall in either orientation, or use the included stand in landscape orientation.
An 18650 battery is required. The duration of a charge will depend on your use case. Room is provided for mounting a battery charging circuit, which will allow you to recharge the battery without removing it. You can also operate the device directly from USB power.
The mounting board is designed for a specific ESP32C3 microcontroller (link below). A holder bar is used to clamp the board into place, and makes sure the correct pins are exposed. Room is provided to connect USB to this board so you can interact with it (e.g. flashing, development). Just make sure battery power is disabled (the light on the buck converter will be off) or the battery is removed first.
Break-away supports are included. No generated supports should be required.
I didn't consider balance when I designed this. All the weight is on one side. If you're hanging this on the wall you can balance out the weight by placing several pennies in the section that accepts the bump-out for the stand.
Pin Layout
This project can be done for under $75 if you find the parts on Aliexpress or the like.
Parts Required
Getting Started
I am using the GxEPD2 library to interact with this panel. ChatGPT and the like are very helpful for learning how to use this library. In the Arduino IDE choose “AirM2M_CORE_ESP32C3” as the board. The following code will show “Hello World” on the display.
#include <GxEPD2.h>
#include <GxEPD2_BW.h>
#include <GxEPD2_EPD.h>
#include <GxEPD2_GFX.h>
#include <Fonts/FreeMonoBold9pt7b.h>
// Pin definitions
#define CS_PIN 7
#define DC_PIN 5
#define RST_PIN 4
#define BUSY_PIN 8
// Create an instance of the display
GxEPD2_BW < GxEPD2_750_GDEY075T7, GxEPD2_750_GDEY075T7::HEIGHT / 2 > display(GxEPD2_750_GDEY075T7(CS_PIN, DC_PIN, RST_PIN, BUSY_PIN));
void setup() {
display.init(115200);
Serial.println("Display initialized");
display.setRotation(2);
display.setFont(&FreeMonoBold9pt7b);
display.setTextColor(GxEPD_BLACK);
// Clear the display
display.setFullWindow();
display.fillScreen(GxEPD_WHITE);
display.firstPage();
do {} while (display.nextPage());
// Prepare to write to the display
display.setPartialWindow(0, 0, display.width(), display.height());
// Write "Hello World" to the display
display.firstPage();
do {
Serial.println("Loop");
display.fillScreen(GxEPD_WHITE);
display.setCursor(0, 15);
display.println("Hello World");
} while (display.nextPage());
Serial.println("Setup complete");
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println("Hello World from loop!");
delay(10000);
}
The author marked this model as their own original creation.