Building an e-ink weather display for our home
kimmo.blogI 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.
A little correction on that link:
> Left to its own devices, the Kindle will go to sleep after a while, and show its screensaver.
This can be disabled by entering `~ds` in the search bar of the kindle [0]
[0]: https://blog.the-ebook-reader.com/2017/12/31/heres-how-to-di...
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.
You can also use the built-in web browser without jailbreaking Kindle: https://github.com/matopeto/kindle-weather-dashboard or my https://github.com/niutech/kindle-dashboard
That's a good option, but it does leave the browser UI on the screen.
Could be an opportunity to build a custom case hiding this bar
Can also be done with an used B&N Nook. After rooting it, you can use the Android OS underneath to install a weather app.
thanks for sharing, this seems way faster and cheaper to build and almost as nice. Can you have the kindle mounted horizontally instead?
Just ship the display a rotated image
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?
He mentions it is loading a custom webpage he built every minute.
Edit: It is actually loading a screenshot of a custom webpage he built.
If this kind of device would come in 'off the shelf' ready to go, I'd buy one. I think e-Ink screens are really attractive to be hung on the wall.
I hope we're going to see such device come to life; my bet is some successful kickstarter followed by an amazon clone with alexa built-in :vomit-face:
+1 for a simple device that does one thing, and does it well.
Someone on HN was manufacturing one that showed your Google Calendar:
That is not battery powered and judging by the lack of side photos I imagine it is unsatisfyingly thick.
There are more pictures here https://shop.invisible-computers.com/products/invisible-cale...
Ah ok it does look thin enough. Still a bit hard to tell tbh. Why no photos of the back?
If they made a battery powered one I would buy it.
It can be configured to show weather.
I'm super excited to see the price on panels beginning to drop. $200 for a 10" panel is, for an old guy, exciting.
Once they're cheap-enough, the manufacturers will come.
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.
Those things don't seem to be e-ink displays, which (imo) makes a huge difference in applications like this.
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 -
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.- 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)(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.
That's really cool. By the time I have a chance to hack my own, I suspect there'll be commercially-available Raspberry Pis in frames.... :).
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.
The Urban Workshop in Helsinki Central Library mentioned in the article is quite a cool place (as is the rest of the Library):
https://www.helmet.fi/en-US/Libraries_and_services/Helsinki_...
Wow, this is the kind of library I would love to go to!
> 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)
> so you could even run it bare metal on a Raspberry Pi Pico (RP2040)
Got any more details on that? Are we talking "takes half of the RP2040 flash just to initialize hello world" or something smaller ?
You can run pretty complex UI already https://www.youtube.com/watch?v=dkBwNocItGs
>The picture is from the library's electronics room which has cool gear such as laser cutter, 3D printer, and much more.
Amazing! I've never seen anything comparable in a U.S. library. What a wonderful resource. How do they maintain it?
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)
This is also a thing in Australian Libraries (especially those in capital cities).
You can book the machines/stations out for periods of time, using your library card/account.
You have to do a safety induction to be able to book the more dangerous tools.
They also sell materials, or you can BYO.
I've never seen these, do you know of any in Sydney? A quick Google turns up some 3d printing services in other towns/cities but nothing like this
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.
[1]: https://www.cityofsydney.nsw.gov.au/talks-courses-workshops/...
Somehow missed this reply, but thank you!
> 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.
Check out BLDG 61, part of the Boulder Public Library, if you ever find yourself in the area: https://boulderlibrary.org/bldg61/
I live in MA and we have this. Our library has a whole maker space including a 3d printer where you just pay for the filament
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.
When you turn off power, it might generate some unintended signals on the MCU pins that the screen has time to interpret before shutting down.
You could try setting the pins to Z state (floating) before turning off to see if it makes a difference.
If you have access to an oscilloscope you can also analyze what is going on in fine details.
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.
I don't use a regulator for PIC, it is directly connected to batteries
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.
1. https://github.com/PiSupply/PiJuice/blob/master/Hardware/REA...
The entire device would be mostly at sleep so that is probably the main part of power consumption you should worry about
Very cool. Shamelessly linking my own weather display: https://github.com/Mrjohns42/WeatherDash
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.
> and screen burn-in was definitely an issue.
I find this very surprising, I was aware that you can sometimes get ghosting-effects, but I did not think permanent burn-in was possible on EINK tech.
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.
Thanks for the insights
I recently built something similar with a 4.2" panel based on these instructions: https://georgik.rocks/weather-display-for-lilygo-ttgo-t5-4-7...
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.
Some notes on my approach: https://github.com/schwartzie/weather-joan
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.
cool, but these : https://www.homedepot.com/pep/La-Crosse-Technology-Atomic-Di... are super cheap, last forever and don't require an internet connection. Sure you don't get multi day weather but that's what the weather widget on my phohne is for.
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.
Temperature != Weather
the lacrosse ones have an outdoor pressure sensor which it uses to predict the weather, works pretty well for me.
That's quite limiting though. The OP could very well expand functionality to hook up calendars, email notifications, etc. This is just a dumb display.
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.
What's missing really is a 3d printed frame.
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.
The e-Ink monopoly needs to be smashed.
Well done!
I wish something hackable like this was commercially available (without surveillance/data harvesting.)
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.
https://shop.m5stack.com/products/m5paper-esp32-development-...
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
Check out LILYGO T5 4.7 Inch E-paper based on ESP32 for $33: https://www.aliexpress.com/item/1005002006058892.html
Or you can repurpose an old Kindle: https://github.com/matopeto/kindle-weather-dashboard
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.
Jailbroken (and maybe used) older generation eInk kindle?
Better yet, pick up a Kobo. You drop a zip file on the SD card and get a full Linux environment.
I picked up a few of them for $10 each (used)
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!
do you have any links on how to do it/what models should we look to get for doing this?
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.
[0] https://irq0.org/hacks/epaper-calendar.html https://github.com/irq0/comporellon
Looks great! You inspired me to want to do something similar, perhaps in a photo frame on my desk with a to-do list.
I was shocked at the price of the e-ink display though. $200?! I could buy a whole Kindle for that price.
Indeed! And with the help of PascalW's kindle-dash, I did just that with a leftover Kindle.
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
Here is the video that gave me the idea https://youtu.be/YawP9RjPcJA
This screen is 63$
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.
Sweet, very nice.
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'd love to see a display of absolute humidity for indoors and outdoors to see if opening the windows will reduce or increase indoor humidity.
I got a 7.5 inch wave share displaying my todos from todoist, today. Very easy. A few gotchas.
I ended up ordering a case from thingiverse because the case wave share sells doesn't fit the HAT model.
My goal is to not look at my phone in the morning, so having my todos on eink is nice. When I used paper I ended up with paper lists in 7 places.
To really scale I think the next step is something that could be run off an esp32, because power and cost are the current scaling limits.
For anyone who finds this later:
Home assistant integrates with esphome which supports waveshare if you get the esp32 interface rather than the raspberry pi HAT.
And todoist integrates with home assistant.
Basically all via yaml.
Very nice! Surprised how good that IKEA frame looks. I have a similar hobby project [0] using an Inkplate 6 [1]
[0]: https://hash.jordanscales.com/
[1]: https://inkplate.io/
To lower current draw, one could use i.e. an AVR and a UART radio bridge (Bluetooth or similar).
Then, the battery could be a lot smaller and the device would be sleeping most of the time.
That's possible since e-ink only draws power when updating.
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.
Maybe you can add a set of buttons ?
Probably what I'll do if I can't find any alternative, but being able to just touch the specific event is more intuitive.
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?
Televisions should have dual screens, and when turned off the e-ink display should show an image. Make black mirrors obselete.
Want to build a digital frame which shows the photos from Gmail Album in a loop.. Any pre-existing work on this?
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.
The most impressive thing about this is the futuristic library that has a dedicated hardware hacking room.
Great project. Looks awesome. I prefer to do most (if not all) of my UI design work in LIGMA, however.
I would probably buy this right now.
Another way to do this is just use a Boox eReader. they run apps or display web pages.
This was cool. I like reading well-written/laid-out build posts like this.
That's badass. I hope there's a larger push for e ink display.
Amazing