Hacker News new | past | comments | ask | show | jobs | submit login

There's also Sile: https://sile-typesetter.org/

LaTeX (Well, LuaTeX) powers my E-ink newspaper (https://imgur.com/a/NoTr8XX), but I've been curious to use it as a vehicle to try out some of these alternatives and see if they can put together a non-trivial layout.




Also Scribble[1] / Pollen[2] (Racket, extensible in same) and Patoline[3] (O’Caml, extensible in same).

[1] https://docs.racket-lang.org/scribble/

[2] https://docs.racket-lang.org/pollen/

[3] https://patoline.github.io/


Wow this is cool! I made a sort of similar e-ink display piece that shows your current song on Spotify - https://github.com/CampbellOwen/NowPlaying. Your project is making me want to try another e-ink project! I'm especially impressed with the overall polish of the enclosure and hardware, that's always my weak point.

I saw you mentioned you wrote a custom driver for the display controller. I'm curious how you found that process? I got the feeling a lot of these devices aren't documented very well, but that sounds like a fun project to tackle.


"Driver" is in all honesty a bit overly braggy!

Technically it's a driver, but in practice I'm just talking over a chip via SPI. It's weird and quirky SPI - I think this chip originally just had an I80 interface (Intel 8080 protocol) and then they added a SPI frontend that internally translates to I80. That means you have to SPI with I80-ish chip select semantics etc. which is not what the SPI APIs in the ESP-IDF or Arduino frameworks do by default (leading to things not working unexpectedly), so I had to "bit-bang" CS. Aside from quirks like this it was pretty simple and just following the datasheet to stream the right commands and data.

One thing that made it functionally worth it (aside from the hacking fun and learning) is that E-ink panels perform best if run at a particular drive voltage ('VCOM') that is determined at manufacturing time and attached as a little sticker to the flex cabling sticking out of the unit. I stumbled upon this while reading various data sheets, and as a result my custom code will set the correct voltage, driven by config. If I had used a random lib I probably wouldn't have encountered this.

That said, I've found there's very cool projects out there that go a level deeper. Instead of using an EPD controller like the IT8951 as a convenience, this project runs E-ink panels directly off a MCU by implementing the waveforms directly: https://github.com/vroland/epdiy

After reading the panel datasheets I find that approach quite interesting, and am considering doing fresh Rust impl of that as well.

The Spotify project looks cool! I dig the dithering style. Would like to try a multi-color panel as well.


Thanks for the reply, that's great info! I'll keep an eye out for the VCOM stickers, I had no idea that was a concern.

The waveshare e-paper screens I'm using come with some decent sample code for driving them, and I just found this Rust implementation that looks interesting as well https://github.com/caemor/epd-waveshare.

I do agree with you though that the idea of driving them directly with the waveforms sounds quite fun. I've seen some interesting stuff online where people have been customizing the waveforms to get even more performance out of them (maybe partial refresh would be fun to look into as well).

As someone who's only exposed to embedded development in a hobbyist way, that epdiy repo looks quite useful, thanks for linking that.

Now to find the time to add on yet more personal projects :)


SILE also has an XML format. (That is, SILE can read arbitrary XML and format it according to document class rules, but also, separately, SILE itself has an XML format.) https://sile-typesetter.org/manual/sile-0.14.5.pdf#page=27 This theoretically makes it easier to use a GUI editor, or to output XML SILE documents from, say PHP (invoices from a webshop, for example).


I wonder if using Bluetooth LE would use less power as you wouldn’t have to connect to a hotspot?

The display could wake up and ping the raspberry pi which would send it the new image and everyone goes back to sleep until the next morning.

Probably doesn’t matter all that much but if you wanted maximum battery life, maybe?


Might be worth trying :-). BLE has the lower data rate so the transfer takes overall longer, though. Wonder how that adds up.

I already have tuned things to lower the RF power output of the esp32 Wifi habitually - there's a Fritz Wifi repeater just across the room in a corner with near line of sight, so the little thing doesn't exactly have to strain to reach the hotspot.

Also curious how the optimized -S3 and the upcoming -C6 do in the various transfer/power equations.


Name checks out. This is awesome.


coffee stain is incredible lol


:) Thanks!


This is awesome! Now I want to build one.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: