Off To The Races With ESP32 And EInk

Off to the races? Formula One races, that is. This project by [mazur8888] uses an ESP32 to keep track of the sport, and display a “live” dashboard on a 2.9″ tri-color LCD.

“Live” is in scare quotes because updates are fetched only every 30 minutes; letting the ESP32 sleep the rest of the time gives the tiny desk gadget a smaller energy footprint. Usually that’s to increase battery life, but this version of the project does not appear to be battery-powered. Here the data being fetched is about overall team rankings, upcoming races, and during a race the current occupant of the pole-position.

There’s more than just the eInk display running on the ESP32; as with many projects these days, micro-controller is being pressed into service as a web server to host a full dashboard that gives extra information as well as settings and OTA updates. The screen and dev board sit inside a conventional 3D-printed case.

Normally when talking Formula One, we’re looking into the hacks race teams make. This hack might not do anything revolutionary to track the racers, but it does show a nice use for a small e-ink module that isn’t another weather display. The project is open source under a GPL3.0 license with code and STLs available on GitHub.

Thanks to [mazur8888]. If you’ve got something on the go with an e-ink display (or anything else) send your electrophoretic hacks in to our tips line; we’d love to hear from you.

16 thoughts on “Off To The Races With ESP32 And EInk

  1. I’ve got a couple of red/black rink displays I’d like to use, but I haven’t determined the support for them. It wasn’t headed in the right direction last time I looked.

    Anybody have a cheat sheet for how to figure out these displays without risk of frying anything?

    1. Pretty straightforward honestly, connect it to your MCU of choice and include the manufacturer provided library into your code. Although you probably don’t need the entire library, just the single function to send a new frame to the screen.
      I never liked using the bloated libraries that manufacturers provide, I just strip them down and use my own framebuffer+drawing functions

      1. ^this, borrow initialization instructions from manufacturer provided demo code and write your own drawing functions. On a few epd’s I even was able to figure out how to add partial/fast updates by reading the controller chip datasheet.

  2. Pole position is determined by qualification before the race. It is not an indicator of who is leading the race. Indeed it would not make sense to show the current leader during the race on a device that only refreshes ever 30 minutes in a race that typically lasts under two hours.

  3. I was really curious how the ESP slept while hosting a web page for configuration. A scan through and it looks like it isn’t really sleeping but idling.

    I was hoping there was gonna be some new magic I didn’t know about so I’m a bit disappointed but it’s still a cool project. And if anyone on a high level than me sees the magic I missed please reply.

    1. You could put the ESP in either deep sleep or hibernation mode and wake it up with rtc for web updates, then make the web configuration page available for eg. 30 minutes after a power on or via a dedicated button, this should minimize the power draw from the ESP, just be aware if your board uses a LDO voltage regulator, this will probably draw more power than the sleeping/hibernating ESP ;-)

  4. Has anybody got a good source for weatherproof e-ink displays in the 30- to 40-inch range, in single – unit quantity, preferably priced for an amateur developer? Black – red or better would be great, but I could probably live with monochrome. Resolution does not have to be great; this would be signage rather than user screen. Keeping weight down will also be great; the device needs to be fairly easily carryable.

    I have no idea whether my application would actually make sense, but the only way to really find out is to build a prototype and figure out what the minimum cost would be.

  5. To clarify, this project doesn’t go to deep sleep as it isn’t battery powered.
    millis counts 30mins and fetches new data from api, so dashboard stays available all the time.
    30 mins refresh is overkill here, races are average once every 2 weeks anyway, and there is no new data until quali. I could probably modify it to start deep sleep based on quali day before main race and let device sleep for week or two, but it works fine as it is now.

  6. Not arduino, but used PlatformIO, and no tutorial howTo.
    So for someone that is used to Arduino, this is hopless project.
    Would be better with arduino.

    GPT made the code in Arduino in 5 min.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.