I found this guide to converting an old Kindle 4 to display anything from the web super useful. https://matthealy.com/kindle I bought another 3 used kindles for $20 each after getting it to work.
I followed this guide mostly on my PW4 and found the instructions to be a bit lacking / out-of-date.
Dropping this as a warning for people trying this out - your Kindle firmware should be < 5.13.X. You need to be very careful about auto-updates that'll undo a jailbreak so put it on aiplane mode until you jailbreak it.
After you do, I'd recommend you then install KUAL and then MobileRead Package Installer so that you can install the mod that prevents auto-updates and then you can install and control USBNetwork in a more user-friendly way.
I’ve been thinking of doing this for an automatic WFH / in office screen at work, somehow tied into a cell phone / corporate login status… Thanks for the link!
Thanks for sharing! This is indeed very cool.
He doesn't describe the page though, is he hosting a custom page he made or he is using a service that build all the info into a page?
Look up “field monitor” on Amazon, there are some for under $100 (usually 7” 720p native res panels). A lot of them have 1/4” or 3/8” stud mounts for mounting as well, some can accept common batteries like LP-E6 for portable usage, some are touchscreens with USB etc etc. Pretty hacker-friendly hardware. I keep a couple around for pis and terminal access to servers.
Me too. I just looked at the Wave-share 12.78” Red/Black/White display, and they’re listed for $178. If I weren’t juggling 4 other projects, I’d pick one up. It’s cheap enough to support all kinds of projects.
Be aware that those 3 color screens are very slow to update, 15-20 seconds. So not super useful for most kind of projects
Unfortunately the fast color displays (we can buy) are not there yet. Only black & white (and grayscale) ones are fast enough to be used as somewhat generic screen you can interact with
> Be aware that those 3 color screens are very slow to update, 15-20 seconds.
I just did a project with one. You are right, the three (or more) colour screens do indeed have very slow update cycles, and they usually don't support partial refresh either (just updating part of the screen)
BUT there are some tricks you can do. You can start most of them in two-colour mode, which does support partial updates, and you can define and upload a custom set of waveforms that govern how the screen performs its refresh and update cycles. I wrote an email to the company I purchased from (good-display) and they were very responsive and sent me some waveforms to try. These allow a much faster update (~1s) at the cost of some slight greyness, which gets worse over time, needing a full refresh after a while.
The resulting code I wrote now does something like -
- start device (colour)
- draw background in colour (15 seconds)
- every minute, restart device (B/W) and draw 'active' areas (1 second)
- every 15 minutes redraw background (full screen update, 15s)
- every 24 hours run a screen refresh routine(1 minute plus)
It's not ideal, but it does allow you to do something like a static background image in color, then a clock and a few gauges that update more frequently.
(my screen refresh routine cycles each pixel through each of the colour transitions, black->white, black->red, white->red, and the reverse)
I wasn't aware that you could only update BW like that in a faster way, I don't remember such API on waveshare ones. Maybe they don't have that, or maybe it is not something officially supported and part of public API
So yeah, the good-display screen and the waveshare ones I think are the exact same hardware, not really sure 100% on that. I wasn't really using an API, I just used the SPI interface directly and implemented my own API on top (in fact I made a simple TLV protocol over USB to drive the RP2040 zero, which then performs the right SPI magic to drive the chip in the display which then.... the number of processors in this setup seems excessive)
Effectively I had to piece together some clues. There was the manual for the screen which gave the definition of the SPI protocol in use, and the commands you could send, what they did, screen startup sequence etc. They mentioned waveforms and modes a bit but it was frustratingly incomplete and it looked like there were gaps in the commands described. Then there was a youtube video of a guy showing how he'd implemented fast refresh on some other model of screen by uploading custom waveforms, who mentioned looking for waveforms in sample code and for chip specifications. This lead me to the original docs for the driver chip on my display (an ultrachip UC8179) which had the missing commands specified. Using these along with the waveform (LUT) definitions supplied by the vendor when I asked them for some, allowed me to make the fast mode.
I presume some commands were missed out of the vendor document as a lot of them were non-essential, and possibly could cause harm(?). Certainly the wrong waveforms could lead to poor performance or no performance. Also the chip spec document didn't give some of the higher level "Here is the startup sequence for your screen" flow chart niceties of the vendor doc.
(The waveforms are literally describing how the screen should apply voltages to transition a pixel from one colour to another. The default ones that the screen ships with are good for a 'full' refresh of the pixel, but you can get away with a lot fewer, faster voltage switches for B/W, at the cost of quality declining over time, which you reset with a periodic 'full' refresh)
Yeah. They take a while, but as long as your project is only dealing with static images/data, you can update it at inconspicuous times. I recall seeing a calendar project that used a display like this. The red was used to highlight important things, and it only has to updated when something changes.
The full-color (7 or 8 colors to mix) take forever to update, but if you’re just displaying a photograph, update it at 2am and no one knows the difference.
I have an eink internal thermometer/hydrometer I bought off the shelf. Hooks up to wifi if you wanna log, works fine without it. Runs off 3 double as. The brand is govee, I don't know the rules on linking to Amazon so I'll refrain. Search Govee Eink.
They seem to be trying to limit full refreshes but they're very distracting when they happen, suggest keeping it out of eye line.
I must spend at least a couple days a year for the last 15 fantasizing about having a wireless information radiator like this.
The idea first came to me in the era before BYOD was an okay thing. It was a huge struggle to put anything on the network, like a board saying how broken the builds are. And punching holes in walls or having dangling cables is always a problem, even at home, hence wireless.
eInk is pretty much the only candidate for a device that sleeps most of the time and wakes up momentarily to poll for data.
I have an "off the shelf" weather screen (albeit color) and it was great for my house - but had an external sensor that went outside - and it took a battery (the sensor did), but it had a small slit to let telemetry air in... and it got wet in a rainstorm and stopped working, so I had to take the screen down.
I use an old ipad combined with DAK Board. No real setup required other than setting up DAK Board how you like and creating a full-screen shortcut to the page on the ipad so it shows borderless.
> Many existing projects used lower level libraries such as Python Imaging Library, but I opted for HTML and CSS. The development is fast when you can edit the HTML and immediately see the result without rendering a raster image after each iteration.
I'd like link to Slint [https://github.com/slint-ui/slint]
It has a live preview mode so you can iterate fast on the UI, and it is much more lightweight than HTML, so you could even run it bare metal on a Raspberry Pi Pico (RP2040)
I haven't seen anything like it in Europe either. Helsinki's library is incredible. It's also architecturally one of the most prominent buildings and right next to the parliament. It doesn't have a lot of books, though (100k)
Darling Square has "The Exchange"[1] which has Solder stations, 3D printers and a laser cutter but I'm unsure how to book time with them. Might be worth giving the library a call.
> Amazing! I've never seen anything comparable in a U.S. library. What a wonderful resource. How do they maintain it?
Taxes. I think one big benefit of the Finnish multi-party system is you have less political bickering and more actual doing. Perhaps it leads to more efficient use of tax revenue.
Either case, we have this library (and many more not as fancy).
In live just outside of Portland, OR and we have a makerspace in our local library. It’s not hugely decked out, but it just opened so it’s a work in progress.
what town in MA are you? I'm in Shutesbury, and we're building a new library in the coming years. would be great to do this, and have an example to base from.
Mentions battery life but does not say in the end how long between recharges with the 12000mah battery.
Would really like to know power usage and how long between charges and more details about getting the pi to wake up once a day then sleep the rest of the time. Because if my maths right a Rpi zero running normally would drain the battery in less than full day.
I would imagine it runs for a long time if you are only powering it on to connect to WiFi, grab weather data, render the screen, and then shut off. The PiJuice page mentions "intelligent on/off switch", but I didn't easily find any details. Hopefully intelligent means "turn on at a certain time via an onboard RTC, turn off when systemd says it's OK" and the userspace code implements that dance correctly.
In the absence of any power control, the PiJuice page says the 13000mAh model powers a Pi Zero W for 60 hours at idle (18 hours at full load). Based on the lack of discussion on the post, this is probably what's going on, though recharging every 2.5 days is exceedingly annoying, so maybe not.
If you're doing a similar project, I really like the TPL5110 series of chips for power control. You basically connect it to your Li-ion battery, your project's voltage regulator's enable pin, and a GPIO pin. You set a time interval with resistors, and it draws 35nA while the power is "off". When the set time interval is reached, it enables the regulator, and your microcontroller boots. Do what you need to do, then set the GPIO pin. The TPL5110 then turns off the regulator and goes back to a very low state. With a 1200mAh battery, I can collect samples half-hourly and write them to a database over WiFi (with a RP2040 and ESP32) for several months without recharging. It all works very well, and would also work for the e-ink use case.
I will say that I've had random luck doing this with e-ink displays. Some freak out and generate artifacts or fade out when you disconnect power. Some don't. Often marked with the same part number. So I have no idea what's going on there. Also, be careful about what your microcontroller does when you have the battery connected to an analog input to measure the battery voltage; you can easily draw a ton of current while otherwise idle that way. Large resistors are your friend, though be aware that some say things like "you'll blow up the chip if any IO pin has a voltage on it larger than Vdd". I didn't see that in the RP2040 datasheet and it didn't blow up, but your mileage may vary.
One last note, when I've done projects like this in the past, I ended up just doing all the image manipulation on a server somewhere, and making the microcontroller just stream the bytes that the screen should display from the server. Then you never have to touch the microcontroller code, and you don't have to have a full Linux system on the client side (as this project did) with the associated power demands. $1 microcontroller > $35 Linux box. Though if you are a CircuitPython fan, this is ridiculously hard to implement because images get large fast and Python wants to read all the image data from the WiFi interface into RAM. Easier if you just write it in C.
That's an idea that hadn't occurred to me. I can actually reproduce it by only removing the power for the e-ink display and not to the MCU. I think it's just a quirk of the carrier boards or something like that, but I don't know enough about the design to really debug it.
In my project I powered off my arduino (and the screen attached to it) completely by using latch and control the latch using a PIC mc. Even in sleep mode, arduino consumes quite a bit of power while PIC consumes relatively nothing while sleeping (datasheet says "20 nA @ 1.8V, typical" but probably more since you will at least WDT)
Do check the quiescent current on your 1.8V regulator, though. That accounts for a lot of loss that goes away when you use something like a TPL5110 to disable it completely.
Thanks for pointing me towards the Pi Juice "intelligent on/off" that makes things more clear, looks like it has a Cortex M0 microcontroller with RTC that can be programmed to wake at a specific time [1]. The Pi Juice is a really cool piece of hardware. Still interested to know the total time between charges for this thing, and some details of programming the Pi Juice would be cool.
Supporting EINK on mine could potentially help make it more visually compelling like yours, but I've done other EINK display projects in the past (see https://github.com/Mrjohns42/DoggieClock) and screen burn-in was definitely an issue.
Burn-in is very possible. It is ink particles inside a solvent. Drive it the wrong way and you'll damage the ink or the solvent. Just like LCD where if you drive it the wrong way, the liquid crystal gets damaged. The difference is LCD voltage waveforms are built into hardware and are much simpler since there's no moving components.
I think I might have seen that link here, either here or Reddit.
I tweaked a few things but it's basically the same code still. I slapped a 3500 mAh 18650 in it and it's been running now for a month and a half while still showing 89% battery remaining. If that pace holds up it'll be in the ballpark of a year of operation before it actually needs to be recharged.
Once an hour it wakes up, connects to WiFi, retrieves the information, updates the display, and then goes back to deep sleep. It's awesome, other than it being too small to comfortably read where I want to put it. Eventually I'll upgrade to a larger display, but I haven't seen any offered as reasonably priced standalone modules with a WiFi capable MCU attached out of the box like this one.
I have no idea how this is not get a commercial product. Our Google Nest Home Max Hub Whatever screen that I got free from CES is garbage at displaying useful information. The weather info can’t sync at least once per week, requiring a restart. It’s literally just our bathroom clock / Bluetooth speaker because that’s all it’s good for. It cannot sync to Google Apps (business account) calendars. The proposed solution is to use IFTTT to duplicate GApps accounts to your personal account, then sync it to that. That is, frankly, embarrassing for Google IMO.
I built a MagicMirror-based Pi setup with a little 7” Lilliput screen and it works so much better, but it’s sad that over the past few decades we still haven’t solved this problem of a customizable smart home dashboard that actually works and yet does not require a CS degree to operate.
Especially since very low performance eink is all that would be required. One refresh a minute would still be useful for plenty of home dashboard applications.
I agree. There are a few e-ink displays that include battery circuitry and a microcontroller, e.g. the Inkplate series. But nobody wants to mount a bare PCB or even a one with a 3D printed case on their wall. I wish they'd sell one with a nice picture frame case.
I mean I could definitely make one, but I don't really have time and I imagine most people don't either.
I'd be happy with a generic e-ink tablet for similar projects, like work/personal calendars, pollution/humidity/temperature monitor and weather station.
I might tinker with a kindle, but I have never owned one and searching online seems to hint at kindles being locked down.
Looks great! I built a similar system a few years ago as a dashboard for a home weather station, and ended up using Joan Home devices instead of assembling the hardware from components. Highly recommend e-ink as a format for these sorts of low-key displays around the home.
As much as I like e-ink and DIY projects, those "weather displays" or "smart mirrors" always feel like a wasteful solution to a non-problem.
Fun hacks in 2022 should be bottom drawer first? Sustainably powered?
It could just be my brain compensating for my own e-waste guilt.
I’m not sure how useful that is honestly. I have a temperature reading on my HVAC thermostat. And without looking I pretty much always know what it’s set to. It tells me nothing about what to expect for the day out of the home.
I built a little e-ink display that sits inside my gaming PC recently. It shows the CPU and GPU temperature, the time, and a pretty fractal picture (because the tech part of the project was fun and then I couldn't be bothered with the design part!)
It was a really fun build, I used a 5.3 inch black/white/red panel from aliexpress and a waveshare rp2040 to drive it, hooked up to a spare internal usb header. Circuitpython made life pretty easy for the firmware, though I am thinking of rewriting it in C. This is mostly because circuitpython seems to get 'stuck' in a weird state, the host PC won't recognise it, and I have to open the case and hit the reset button. Every boot.
eink displays are such a great media for calm tech. It is a shame that it doesn't go down to a reasonable price, otherwise there would be a ton of cool devices with use cases like this.
Maybe not that big (It's 5" instead of 10") but I just bough an M5Paper for a similar use at home, probably in "collaboration" with my Home Assistant. Still haven't tested it but I've heard good things about it.
You can start developing easily using their easy development tool called UIFlow, that's block based like Scratch ( https://flow.m5stack.com/ ), or go "advanced" and use MicroPython or Arduino, as it's core is an ESP32
I actually just got one of those devkits, it was only slightly more expensive to get this than just the eink display. and there is ready to go weather display software already available.
Care to tell more about what you did with yours and where to start if you‘d want to install a Linux environment? Sounds like a great idea since these precious e-ink screens shouldn’t end up on a landfill yet!
Awesome! I love to reading about this projects. I built my own a while back and every post somehow explores the design space slightly different.
My version[0] uses the 7.5 b/w ePaper that the author replaced, renders using LaTeX and addresses the bw font uglyness by rendering without anti aliasing in an okayish looking font. Looks good to me from a couple of meters away.
I made one recently with 7 color version of waveshare and it is a pretty cool project. It changes the picture daily or manually with a button. I will gift it to my mother after seeing how long it lasts with baterries, so far two months
I wish there was a weather station I could purchase that would do 2 things:
Give an hourly (or 2 hour) 24.. or even 12 hour weather forecast, in 6-12-24 chunks. Allow natural scrolling to see hourly forecast for further than 12/24 hours.
Give a 7 day weather forecast. No need to connect with a wind direction sensor or anything fancy, just pull from the weather.com api or anything similar
It would also not show me ads or try to track me or crash. I would even be ok dedicating a full time iPad/other device to display this.
I made a 'skyfield' widget for home assistant that shows the current position of the sun, moon and some planets as well as the summer and winter solstice paths. I really think it would be awesome for an e-ink display in the home. I've been planning to kick off that project at some point. This is inspiring.
Is it possible right now to program a bare e-ink screen for an application with lots of text and scrolling? I see plenty of e-readers out there that appear to have good refresh rate, but I always wonder if they are using special drivers to achieve this or if it's as simple as using an off-the-shelf screen with included driver that has a `scroll_down()` function.
I'm looking for a good e-ink display with touch input. I want to setup an eink calendar that can show the view for the current week, month and year and allow clicking on an event to see notes if there are any.
Really cool. I wanted to make an 3-4 inch NFC eink screen for my phone so I can read books on the go without an e reader. Anyone got expreince that could help out?
Digital photo frames are very common (LCD, not e-Ink). We bought one for my parents which even uses mobile data because they didn't have internet at home. I don't know about the Gmail requirement however.