Settings

Theme

Building an e-ink weather display for our home

kimmo.blog

519 points by jorde 3 years ago · 117 comments

Reader

xnx 3 years ago

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.

  • spinningarrow 3 years ago

    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...

  • torranceyang 3 years ago

    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.

  • niutech 3 years ago

    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

  • webinvest 3 years ago

    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.

  • toisanji 3 years ago

    thanks for sharing, this seems way faster and cheaper to build and almost as nice. Can you have the kindle mounted horizontally instead?

  • kejaed 3 years ago

    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!

  • dakial1 3 years ago

    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?

    • exportsmedia 3 years ago

      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.

keyle 3 years ago

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.

  • COGlory 3 years ago

    Someone on HN was manufacturing one that showed your Google Calendar:

    https://www.invisible-computers.com/

  • ISL 3 years ago

    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.

    • seanp2k2 3 years ago

      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.

      • Denvercoder9 3 years ago

        Those things don't seem to be e-ink displays, which (imo) makes a huge difference in applications like this.

    • sircastor 3 years ago

      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.

      • shultays 3 years ago

        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

        • Nursie 3 years ago

          > 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)

          • shultays 3 years ago

            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

            • Nursie 3 years ago

              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)

        • sircastor 3 years ago

          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.

      • ISL 3 years ago

        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.... :).

  • MivLives 3 years ago

    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.

  • hinkley 3 years ago

    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.

  • samstave 3 years ago

    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.

  • Daneel_ 3 years ago

    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.

helsinkiandrew 3 years ago

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_...

ogoffart 3 years ago

> 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)

possiblydrunk 3 years ago

>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?

  • jn5 3 years ago

    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)

    https://www.oodihelsinki.fi/en/services/

  • shitloadofbooks 3 years ago

    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.

  • Maxion 3 years ago

    > 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).

  • sircastor 3 years ago

    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.

  • googlryas 3 years ago

    Check out BLDG 61, part of the Boulder Public Library, if you ever find yourself in the area: https://boulderlibrary.org/bldg61/

  • schwartzworld 3 years ago

    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

    • andyreagan 3 years ago

      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.

SigmundA 3 years ago

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.

  • jrockway 3 years ago

    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.

    • bombela 3 years ago

      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.

      • jrockway 3 years ago

        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.

        • shultays 3 years ago

          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)

          • jrockway 3 years ago

            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.

    • SigmundA 3 years ago

      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...

  • shultays 3 years ago

    The entire device would be mostly at sleep so that is probably the main part of power consumption you should worry about

matmann2001 3 years ago

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.

  • voxelghost 3 years ago

    > 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.

    • braunboffel 3 years ago

      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.

wolrah 3 years ago

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.

seanp2k2 3 years ago

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.

  • fbdab103 3 years ago

    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.

  • IshKebab 3 years ago

    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.

  • cocoa19 3 years ago

    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.

  • ptman 3 years ago
schwartzie 3 years ago

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

jeromenerf 3 years ago

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.

sabujp 3 years ago

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.

  • conductr 3 years ago

    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

    • sabujp 3 years ago

      the lacrosse ones have an outdoor pressure sensor which it uses to predict the weather, works pretty well for me.

  • ricardou 3 years ago

    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.

Nursie 3 years ago

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.

dakial1 3 years ago

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.

1MachineElf 3 years ago

Well done!

I wish something hackable like this was commercially available (without surveillance/data harvesting.)

irq0 3 years ago

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

AnonGooseTown 3 years ago

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.

diziet 3 years ago

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.

acidburnNSA 3 years ago

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.

https://github.com/partofthething/ha_skyfield

garfieldnate 3 years ago

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.

mfgs 3 years ago

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.

calmtech 3 years ago

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.

  • calmtech 3 years ago

    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.

    • calmtech 3 years ago

      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.

prezjordan 3 years ago

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/

mihaigalos 3 years ago

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.

nicolas_t 3 years ago

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.

  • pjerem 3 years ago

    Maybe you can add a set of buttons ?

    • nicolas_t 3 years ago

      Probably what I'll do if I can't find any alternative, but being able to just touch the specific event is more intuitive.

nicgrev103 3 years ago

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?

12345pnp 3 years ago

Televisions should have dual screens, and when turned off the e-ink display should show an image. Make black mirrors obselete.

zerop 3 years ago

Want to build a digital frame which shows the photos from Gmail Album in a loop.. Any pre-existing work on this?

  • rwmj 3 years ago

    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.

kybernetyk 3 years ago

The most impressive thing about this is the futuristic library that has a dedicated hardware hacking room.

prodjp 3 years ago

Great project. Looks awesome. I prefer to do most (if not all) of my UI design work in LIGMA, however.

aquanext 3 years ago

I would probably buy this right now.

formvoltron 3 years ago

Another way to do this is just use a Boox eReader. they run apps or display web pages.

MattDemers 3 years ago

This was cool. I like reading well-written/laid-out build posts like this.

autospeaker22 3 years ago

That's badass. I hope there's a larger push for e ink display.

adabaed 3 years ago

Amazing

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection