E-paper display

Waveshare 7.5 v2

1 Like

Yes its my Landroid lawnmower I’m getting the data from the home assistant integration. More to come but I think I really got the picture right on the display for that. :blush:

1 Like

Hello,
I would like to know if it is possible to invert black and white?
(I want a black background and white text).
Thank you.

How long does the device run on battery?

doing an update every minute from 6-22h and every 5 min from 22-6 h:

started 25.3, battery out on: 20.4 :frowning:

…ordered another set of batteries :slight_smile:

…but there is a lot of potential to optimize power consumtion… e.g. only update on presence, no screen update in nights…

1 Like

How do you control the update of these displays? I haven’t found anything except the full_update_every setting, which doesn’t allow for controlling the update.

@Laurenthu , would mind to share your ESP Easy code? I just got the exact same 4.7 EPD as you, and I’m strugling a bit to make it work on my Home Assistant…
Thanks!

you can do manual updates, see my code in my repo: https://github.com/krikk/esp32_E-Paper_Display/

Frankly the code is a mess, but here are the most important pieces:

void showBitmapFrom_HTTP_fubar(IPAddress hass, const char* path, String filename, bool with_color)
{
  WiFiClient client;
  
  int port_fub = 8123;
  bool connection_ok = false;
  bool valid = false; // valid format to be handled
  bool flip = true; // bitmap is stored bottom-to-top
  uint32_t startTime = millis();
  //  if ((x >= display.width()) || (y >= display.height())) return;
  Serial.println(); Serial.print("downloading file \""); Serial.print(filename);  Serial.println("\"");
  Serial.print("connecting to "); Serial.println(hass);

  if (!client.connect(hass, port_fub))
  {
    Serial.println("connection failed");
    return;
  }
  Serial.print("requesting URL: ");


  String fubar = String("GET ") + "http://" + hass.toString() + path + filename  + " HTTP/1.1\r\n" +
                 "Connection: close\r\n\r\n";

  client.print(fubar);
  while (client.connected())
  {
    Serial.println("connected to client");

    String line = client.readStringUntil('\n');

    if (!connection_ok)
    {
      connection_ok = line.startsWith("HTTP/1.1 200 OK");
      if (connection_ok) Serial.println(line);

    }
    if (!connection_ok) Serial.println(line);

    if (line == "\r")
    {
      Serial.println("headers received");
      break;
    }
  }

  delay(30);
  uint32_t width  = read32(client);
  uint32_t height = read32(client);
  int idx = 0;
  Serial.print("Width : "); Serial.print(width) ; Serial.print("Height : ");Serial.print(height);
  if (width > 960) return;
  if (height > 540) return;
  for (uint16_t row = 0; row < height; row++) // for each line
  {
    for (uint16_t col = 0; col < width/2; col++) // for each pixel
    {
      if (client.available()) {
        framebuffer[idx] = client.read();
        idx++;
      }  
    }
  }
  Rect_t area = {.x = 0,.y = 0, .width = width,.height =  height};
  Serial.print("we received everything, doing a clear and draw now");
  if (DrawingSomethingNew)
    {
      epd_clear();
      epd_clear();
      epd_clear();
      epd_clear();
    }
  epd_clear();
  epd_draw_grayscale_image(area, (uint8_t *) framebuffer);


  PreviousScreenNumber = ScreenNumber;
  DrawingSomethingNew = false;
 
}

This is all in Arduino IDE 1.8.13…
And I previously transform BMP files into a 16 grayscale buffer file on the server side!

Hi all,
Is it possible to use a 7.5 waveshare with ESP8266 platform or is it mandatory to have a ESP32 platform ?
I tried same config :

  • 7.5 waveshare + ESP8266 → crash and bootloop (v1 640x480)
  • 4.2 waveshare + ESP8266 → working and stable

I don’t have any first hand experience (have the b&w 7.5inch waveshare on the way), but esphome docs indicate that the v2 runs out of RAM on ESP8266 devices. I think the main difference between v1 and v2 is increased resolution (640x480 vs. 800x480).

Thanks for your reply.
I have the 7.5 v1 with 640x480

This is my latest project using lilygo t5-4.7 epaper display. This pulls data from HA API and refresh every minute. I’ve used EPDiy framework for this project. Let me know what do you guys think.

11 Likes

Very nice.

This is awesome! Would you care to share your code please?

Thanks I certainly will. Need to add bit of documentation for configurability and after that I will upload it to github.

Project uploaded: Home Assistant Dashboard for Lilygo T5 4.7 Inch E-Paper Display

2 Likes

Having a problem that someone might be able to help me with.
Using some of everyones work I created a display using a 2.90 waveshare and a Lolin D32 Pro board.
Here is the code I am using for the display.

spi:
  clk_pin: $gpio_spi_clk_pin #GPIO25
  mosi_pin: $gpio_spi_mosi_pin #GPIO26
  id: epaper_display 
display:
  - platform: waveshare_epaper
    id: epaper
    cs_pin: $gpio_cs_pin #GPIO32
    busy_pin: $gpio_busy_pin #GPIO33
    reset_pin: $gpio_reset_pin #GPIO27
    dc_pin: $gpio_dc_pin #GPIO13
    model: 2.90inv2 #269x128
    update_interval: 60s
    rotation: 90

I had to make one change because of the board the dc_pin was changed from GPIO17 to GPIO13 because the proboard does not show a GPIO17. Where the pin should be just says NC.

The problem is my display. When it first boots up it is great (top pic), then it starts an update (middle pic), then settles down until the next update (bottom pic).

What do I need to look at in order to fix this.

Many thanks who have already figured much of this ou.

I had a similar problem with my 7.5 e-paper Waveshare display with a separate board.
The board was faulty. After switching the board with a new one the picture was perfect.

Thank you @tebra .
I have tried it on thre different models of an esp32 as well as 3 wave share displays.
They all give the same results.
I do not think that three displays would be faulty, but possible.