7.4" E-Ink Shelf Label used as a Weather Station

Modified Chroma74 shelf label to be my weather station display. It is 7.4" 3-Color E-Ink units that cost $12 on eBay.

Similar projects worth following
The November Hack-a-day podcast encouraged me to share my e-paper journey. It seems I’m not the only one who is fascinated by its potential. I was interested in the technology for over two decades when I saw it during CES (Consumer Electronics Show). I remember e-Ink paper sheets that could be used repeatedly with an e-paper printer/scanner combo. Many trees were going to be saved by the promise of sheets of paper that keep images without power and can be reused 1000 times. Today, the e-paper is married to the controller; that is an improvement, but the price and sizes are far from desirable. Nevertheless, technology progresses, and new RGB displays are being developed. Is the technology ready for hackerspace?
I converted a 7.5” three-color E-Ink Electronic Shelf Lable to a weather station and a message board. Those units are used by my local hardware store and can be bought for $12 on eBay. The details section contains my long journey to make it happen.

    The e-paper technology looks perfect for periodic update information boards, such as door message sign or a custom weather display. And I want one with an atmospheric pressure graph, but not a little 2-inch display. I want a roomy display to hang on any wall regardless if there is no outlet near it. But a price for a decent size display such as 7.5” seemed still more than I was willing to pay, especially since I would like to put them in a few rooms. I already bought a few small displays, but I couldn’t find a good use for them. Meanwhile, every time I went to my local hardware store, I saw a big two-color E-paper display on every appliance. They looked like a full-blown solution for my use if I could get my hand on it. The device could not be costly, including the wireless interface, batteries, and a case, if they can have hundreds in every store just as labels. Thus, I took a picture of the back of the display and did some research.

      The store is using Chroma 74, Black and Yellow, Electronic Shelf Label. The yellow would be perfect for the sun on my weather display. The “74” stands the screen size, 7.4” and the size is almost identical to the Waveshare 7.5inch E-Ink sold on Amazon. It also has the same display resolution of 640x384. I probably was not the first who had that idea, but I could not find much on the web. The display is sold to retailers only and has a proprietary wireless interface. I was able to find the FCC certification with the internal pictures. The display cable and electronics matched a typical Waveshare E-Ink connector and circuit sold as a module on Amazon, plus a microcontroller and battery. Those displays do have good documentation and Arduino libraries. Encouraged by this find, I turned to eBay to see if I can get some. There were a few sellers with a surplus of brand new units for ~$12 (plus a few bucks for shipping). So I got a few. With decades of professional embedded design experience, how hard it’s going to be?

    Chroma74 units came quickly and looked perfect. I was hoping I will be able to get the display part number and download the datasheet. Then I will connect to an ESP32 through the E-Ink HAT, and I’ll be done. Unfortunately, too often, things are more challenging than they initially seem. I found the display part number (WFD0750BF19) on the display cable.  It was Wuxi Vision Peak Technology Co. 7.5 color display, but I could not find a published datasheet. The datasheets for other smaller modules were available, so I had something to try. The big surprise was that the display connector was epoxied to the controller board, unlike the FCC pictures. It’s not surprising that they glue the connector. It’s not only cheaper, but it is less prone to vibration.  Additionally, the cable had reversed pinout (or up-side-down connection).  The unit contained a single PCB with four sections and a set of six 2450 batteries in parallel. Per the unit brochure, they will power the display for five years – talking about efficiency.

     To see if there is an easy path, I decided to connect the display to the E-Ink HAT with a generic e-paper Arduino sketch for a 7.5” display. The connector was unglued with a lot of heat and patient. One wrong move and the cable would be damaged. The extra epoxy was cleaned with alcohol. The display’s flat cable was too tin, and I glued some thin plastic to match the regular connector thickness to ensure a good connection. The Waveshare E-Ink display HAT extension socket allows top or bottom connections; two steps forward, one step back. The glue connector has extra width to provide a glue surface on both sides. The sides needed to be trim to fit into the socket, but there is very little room for error. The connector has a 0.5mm pitch. With all the surgery behind, I connected to a generic e-paper HAT and the controller. No surprise, the display did work....

Read more »

Arduino ESP32 sketch that displays a test page and a color pattern. This sketch is using my guess LUT update black-and-white and color profiles.

x-zip-compressed - 23.63 kB - 11/28/2020 at 06:02


  • New LUT and GxEPD library

    YodaLogic11/28/2020 at 17:10 1 comment

    Huge thanks to Aaron for joining the project. He was able to extract the stock LUT from the flash and get vibrant back and yellow colors. You can find a link to his Modded GxEPD library in the discussion section.  I already converted all of my displays to the ESP32, but Arron has many more to play with. He was able to program onboard CC1110 processor with a custom firmware and exercise RF module.  The RF module is bi-directional, so we can dedicate one unit to be a bridge with others. The battery-operated units then can register periodically and download the rendered image. I wish we all could get more of those displays.

View project log

Enjoy this project?



Aaron Christophel wrote 04/08/2021 at 06:01 point


now the custom Esp32 Access point is in a very useable state and supports all available models of these Pricetags.

Thanks to Larry also his GFX library is supported so text can directly be send to the displays code is here:

Still needed is a database to hold the activated displays with their type

  Are you sure? yes | no

prince000ash wrote 03/24/2021 at 11:35 point

hello everyone

  Are you sure? yes | no

Aaron Christophel wrote 03/21/2021 at 01:28 point

big update on the custom AP firmware for the esp32 :)

Released a first version, the arithmetic compression is fully implemented in it now, before it was needed to compress the wanted data externaly. Code is linked on twitter

The esp32 has the spiffs memory as a webserver and it is possible to upload .bmp files to it, in the index.htm can the wanted display get activated and an image or two be send to the display

If someone is interested in getting some of the chroma74 or chroma29 please PM me

  Are you sure? yes | no

Bryant wrote 03/21/2021 at 18:38 point

Awesome. As soon I get a cc1101 module I will give it a go!

  Are you sure? yes | no

donaldej wrote 03/23/2021 at 19:04 point

To make something like the weather station, would you have to generate a bmp for the entire screen and upload it, or is it possible to update portions of the screen?

  Are you sure? yes | no

Aaron Christophel wrote 03/23/2021 at 21:22 point

It is needed to generate a full bmp, the protocol does not support parts.
but the ESP32 can generate them on its own and only change one area, so the idea is still possible

  Are you sure? yes | no

Chris Jones wrote 03/24/2021 at 02:10 point

Awesome Aaron, definitely going to give it a go.. 

Thanks for all the hard work..

  Are you sure? yes | no

Chris Jones wrote 03/30/2021 at 01:55 point

tested it out over the weekend and after watching the video got it up and running with Aaron's code.

Thanks for all of the help!

To summarize what I had to do to get it to compile in Arduino as described in the video.

- Download the asynctcp and espasyncweb libraries and install.

- Update the wlan_gitgor.. with wifi credentials to match my network and rename to wlan.h.

(I was not able to get the project to compile in platformio.)

- To enable the UI go to the device '<ip>/edit' in browser and upload the index.htm file.

- Now go back to the administration url: '<ip>' in the browser and it should load

Once running I ran into a couple issues:

I was only able to get an image uploaded on the Chroma 74 following the exact process otherwise the esp32 would start crashing. ( I was not able to do the epop 900)

- Activate device using device Id (id under barcode on back). *This can take a few tries

- Once activated run the default command which clears the display.

- Go back to the '<ip>/edit' url and upload the bmp image (this needs to be a 1 bit monochrome bmp that's the specific size 640x384 for chroma 74) *there are examples in the project root.

- Once uploaded go back to the administration url '<ip>'  and update image name to match then click 'Send file'.

Watch the serial output to make sure it's uploading, you should see batches of data being sent.

(If the screen doesn't update check if it crashed.)

- To update the image. I had to reset the screen first using the default command or else it would crash.

** If it crashes, the only way I was able to communicate with the screen again was to do the recovery/reactivate again.

..Sorry for the long write up, thought it might help someone in the future. Thanks again for all the hardwork, awesome to see this in action.

  Are you sure? yes | no

Aaron Christophel wrote 03/30/2021 at 14:35 point

please try the new feature called offset in the ui. 

Set it to 15 or other values from -127 to 127 this will offset the base freq if the osci of the cc1101 is not correct, helped many people so far 

  Are you sure? yes | no

Chris Jones wrote 03/31/2021 at 07:43 point

The offset setting definitely helps thanks.
15 works perfect.

  Are you sure? yes | no

Bryant wrote 03/24/2021 at 02:14 point

Sadly I was unable to activate a chroma 74. Will dig in further tomorrow.

  Are you sure? yes | no

Aaron Christophel wrote 03/24/2021 at 08:31 point

Maybe this will help anyone going trough the procedure,

its long but goes into a lot of details

  Are you sure? yes | no

Bryant wrote 03/24/2021 at 12:01 point

@Aaron Christophel I discovered far too late in the process that the transceiver I had ordered was the 433mhz version. The 868mhz version is going to take a couple weeks to arrive. I'll try it again then!

  Are you sure? yes | no

aldolo wrote 02/28/2021 at 06:28 point

40€ is a little bit pricey. even on aliexpress there is nothing under 20$ for a bare display

  Are you sure? yes | no

JVS wrote 02/25/2021 at 20:13 point

Too bad the resolution is so low, it would make for a kickass FOSH ebook, or even B&W photoframe

  Are you sure? yes | no

Interzen wrote 02/26/2021 at 00:59 point

Check out @dmitrygr on twitter.  He has a custom photoframe firmware working with greyscale, rf upload, and 1.25 µA standby.  l think the 640x384 resolution is ok for greyscale photos.  A little grainy like an old time tinplate.  Could even add artificial yellowing in the corners to enhance the effect.

  Are you sure? yes | no

Aaron Christophel wrote 02/25/2021 at 10:17 point

new updates on the custom firmware

  Are you sure? yes | no

Interzen wrote 02/26/2021 at 01:14 point

Been following your progress with bated breath.  I have a rough serial=>SPI passthrough working and some rf code complete but my relevant experience is limited and I can always use more reference code.

  Are you sure? yes | no

Interzen wrote 02/26/2021 at 01:41 point

One more thing. Are you using custom firmware on the ESL too or just a custom base station for the stock cc1110 firmware?

  Are you sure? yes | no

Aaron Christophel wrote 02/26/2021 at 06:15 point

the displays are untouched, the custom ESP32 is emulating a stock Ap  to control the displays with stock firmware

  Are you sure? yes | no

Bryant wrote 03/12/2021 at 13:10 point

Is the ESP32 code in a github repo or similar? 

  Are you sure? yes | no

Aaron Christophel wrote 03/12/2021 at 13:49 point

hey. It is not released until now

  Are you sure? yes | no

Bryant wrote 03/14/2021 at 19:02 point

@Aaron Christophel let me know if there's any way I can contribute

  Are you sure? yes | no

Chris Jones wrote 03/20/2021 at 19:40 point

@Aaron Christophel  Do you know when the firmware will be released?

  Are you sure? yes | no

Chris Jones wrote 02/25/2021 at 04:34 point

Awesome project, can't wait for the new firmware to be available, I need to get to messing around with my Chroma74 display.

Hey I figured I would also send a tip that it looks like there a huge batch of the epop 900-rb ESL's now showing up on ebay, they have a 6.9" display which appears to be 3 color (red) and are going for quite a bit cheaper than the Chroma's..

I picked up a 5 pack for $20 shipped, not sure how long this will last though..

  Are you sure? yes | no

Aaron Christophel wrote 02/25/2021 at 10:29 point

the EPOP900 is known and already tested with the firmware.

BUT! They have a bistable LCD and only Black/Greyish like a normal lcd, the red bar is only a foil behind the first layer of the display.

The price is nice for what they are but no E-Ink/E-paper

  Are you sure? yes | no

Aaron Christophel wrote 02/05/2021 at 18:30 point


to make a new update on the Arduino control firmware i got this new video. Its very stable and the only big unknown reversing missing is still the Arithmetic compression

  Are you sure? yes | no

Aaron Christophel wrote 01/16/2021 at 09:58 point

Hey everyone, another small update.

Since i was able to get my hands on 370pcs CHROMA29 displays

i also extracted the LUT from then and noticed a big image quality difference when testing the extracted LUT on more than one display.

It looks like every displays has its own LUT to show the best image, @Interzen that maybe explains your quality problem you mentioned in the other comment.

So whe  using an arduino to control the display it would be the best to read out the external flash to get the best LUT for that specific display

The Custom Access point is being worked on and has some good progress to use the displays with the stock firmware

  Are you sure? yes | no

Colin Ng wrote 01/16/2021 at 00:02 point

I am really excited at what you are doing! 

I too was thinking of doing a weather station. Or maybe I would make an energy usage display (i.e. how many GJ of gas, how many kW•h of electricity) we are using in our home, as a way to make our conservation efforts tangible. And this project would allow the status display itself to use hardly any energy at all. i.e. its energy usage is 6 coin cells per 5 years, with rechargeable ones for < $2 each. 

Thanks to everyone for your efforts on this. Thanks for making us have something fun to look forward to. 

  Are you sure? yes | no

marazm wrote 01/03/2021 at 20:59 point

zastanawiałeś się nad mruby? w esp32 powinno się zmieścić

  Are you sure? yes | no

Aaron Christophel wrote 01/03/2021 at 20:04 point

Yet another update is ready :)

Activating an sending CMDs to the Pricetags is now possible and quite dynamic via the WebServer and Arduino

Here is again a short demo

  Are you sure? yes | no

Aaron Christophel wrote 01/03/2021 at 02:04 point

here is a new update to the reverse engeneering of the RF protocol

Most cmds are understoud now and a very first Arduino image WebUploader is ready 

Here is a short demo

The Sync, Wakeup and Activation works very relaiable. Now comes the part where a nice web interface and database backend needs to be created.

The status counts for the CHROMA74 as well as it uses the same protocol

  Are you sure? yes | no

Interzen wrote 01/03/2021 at 03:12 point

Thanks for the great work Aaron.  I sent a Chroma 74 today to Larry the Performance Whisperer.  Hopefully my cc1101 modules show up this week so I can keep up.

  Are you sure? yes | no

Aaron Christophel wrote 12/20/2020 at 20:58 point

Hey everyone,

A first Arduino custom firmware is now working.

Also a fully stock CHROMA74 was now possible to refresh with the custom firmware.

Here is a short video about it:

  Are you sure? yes | no

Mike Szczys wrote 12/25/2020 at 18:28 point

Superb work on this! Is there any secret sauce to the RF? I'm hoping any 433 MHz transmitter will work.

  Are you sure? yes | no

Aaron Christophel wrote 12/25/2020 at 18:32 point

The best one for the job is the CC1101 as i write the software for that one, 

be carefull to select the 868mhz version like it is here:

  Are you sure? yes | no

Aaron Christophel wrote 12/16/2020 at 09:26 point

just as a smaller update.

I am currently very ocupied with reversing and rewriting the RF protocol. snyc messages are fully working already and the next step is wakeup messages, then followed by sending data to an actual display.

The hardest part then will be to do an full activation but it will work it self out after the base is running. 

Getting good progress so far.

Also a very good news is that the CHROMA74 displays get fully detected by the Communicator and Software including the resolution and software version but will then get deleted as they are not in the list of valid displays. But that means they will work on the custom firmware :)

OT: is there a way to get notified for every comment in this project? Need to look everyday to see if there is a new one

Everyone who wants to play with it later should already get one of these cheap CC1101 moduled from ebay for 2$ as these will be most likely used and not a modified display with the CC1110 to have better timing precision

  Are you sure? yes | no

Pops wrote 12/15/2020 at 21:17 point

Aaron Christophel, do you plan to sell any of those smaller displays you show in your youtube video?  Good Grief you have a bunch!

  Are you sure? yes | no

Aaron Christophel wrote 12/16/2020 at 09:20 point

hey. Yes will most likely end doing so. 

Just bear in mind that the batterys are dead and everyone needs to be opened to replace it as it does not have a battery cover

  Are you sure? yes | no

Pops wrote 12/16/2020 at 14:20 point

Excellent !  

  Are you sure? yes | no

donaldej wrote 12/08/2020 at 06:38 point

I found a communicator device on ebay, but they said the software does not include a license with the purchase (but does have the software) :(

  Are you sure? yes | no

Aaron Christophel wrote 12/08/2020 at 08:43 point

i did bought a communicator and the license from different places so it may not be needed to buy another one, just waiting for both items to arrive

  Are you sure? yes | no

Aaron Christophel wrote 12/10/2020 at 02:37 point

the communicator did arrive today and i showed it on a live stream

Half of the software did also arrive the other parts are still being uploaded.

The AT91SAM7S256 in the communicator is the most important part as it does the protokol handling, luckily they included the firmware for it in the software so it can be reversed to look at how things work.

  Are you sure? yes | no

Interzen wrote 12/10/2020 at 19:09 point

Great news on the communicator progress.  I got a cc debugger in and have been playing with your example firmware.  You are right this is much more useful then the alternatives and was only $14USD via Amazon prime.

This is my first foray into e-paper and I was surprised by the amount and duration of flashing during the initialization and updating phases.  I replaced the 2 pixel data byte that you had iterating with the address with 0x44 and got a nice vivid yellow display but when I write 0x00 to all the pixel pairs in an attempt to turn the screen black I get some light vertical banding and the image seams to be a somewhat yellow tinted black.  0x33 gives a nice clean white but If I use 0x30 for the data byte I get the expected vertical black lines every other pixel and see a yellow tint to the other pixels that should be white.  If I alternate 0x03 and 0x33 I get black lines every fourth pixel and don't detect much if any yellow in the white pixels.  I was wondering if you observed similar behavior?

@YodaLogic mentioned that you extracted the LUTs from the original flash and I verified my cc1110 had the exact same flash contents before I replaced it.  I wonder if variations in display lots will require tuning the LUTs.  I am going to play with @YodaLogic's LUTs in your code next and compare.  My ultimate goal is to port the graphics and display libraries to the TI chip and graft on an ethernet port with POE support for a weather/irrigation display and thermostat controller.

  Are you sure? yes | no

Interzen wrote 12/05/2020 at 17:18 point

 OK, I have the extra chroma 74s in hand.  I figured out shipping and paypal fees and have the first shipment mailed out.  The total cost for single units is $16 + $4.57 shipping (USPS first class pkg to US address) + $0.94 paypal fee for a total of $21.51.  I can also ship 2 units via first class pkg if I remove the batteries from one to get the weight under 16oz with packaging. The cost for that is $32 + $5.79 1st class pkg + $1.44 paypal  = $39.23.  (prices updated 12/6/2020 after I shipped a few and found the exact figures)

If you want two or more with all the batteries they have to ship usps parcel select ground and I will need the destination address to calculate shipping from Denver.  If anyone knows of a cheaper way to ship these let me know.

Private message me with how many units you are interested in and your address and I can give you a quote and my email address.  I am doing payment through paypal which gives buyer protection and lets me do invoicing and shipping from their site.

Edit: If someone wants just the display and attached pcb I can send several of them via 1st class pkg without the weight of the enclosures and batteries.

  Are you sure? yes | no

Aaron Christophel wrote 12/05/2020 at 02:13 point

Just added an working SDCC example to the Pricetag repo,

This will use the Stock PCB to refresh the screen and set it to sleep mode, the SOC will continue to run and still draws around 7mA but its a POC, the repo includes everything needed so no tools needed to compile except the CC-Flasher and Debugger to flash the CC1110, will add more later especially the pinout.

Also i would as well sell some of the Displays i got, they are a bit more expensive than Interzen ones as i paid a bit more to import them from the US to Germany, but on the other hand for people from EU its maybe easier to get them.

Also i was able to buy an Access Point to sniff the RF data and hopefully get the Stock firmware running, this one comes from Spain and was another expense as it includes 500 additional small Bistable LCD Pricetags but still waiting on them. In addition i got a license for the software to use the Access point for another ~100€ to be able to update the screens with the stock hardware

I did found a good paper on how the RF protocol in general works, it is very unique but clever solved, will be a bit harder to get a custom Access Point working when only wanted to use 1 to 10 displays as it is made for 65000 devices

  Are you sure? yes | no

Tom Nardi wrote 12/05/2020 at 03:54 point

Very exciting stuff, eventually being able to build our own AP and use the stock firmware would be the Holy Grail for these sort of displays. Much respect for the time/money you're willing to put out for these projects, some legendary dedication.

  Are you sure? yes | no

Interzen wrote 12/05/2020 at 22:37 point

Thanks @Aaron Christophel  for the update and your continued efforts.

For those that don't want to spend $12 on the flasher debugger, and wait for shipping from China, these alternative methods should work with our boards: 

I have not tried either yet.  

EDIT: hold of on this for now.  It seems there may be a difference in flash control register address size and I have not confirmed that the OSS flashing utilities in that link are backwards compatible from the cc25xx chips to our cc1110. -END EDIT

The programming pinouts are:

VCC --- tp14 or tp4
GND --- tp18 or tp8
RST  --- tp12 or tp2
DC   --- tp15 or tp5 (debug clock)
DD   --- tp13 or tp3 (debug data)

Edit: Looks like the USART1 is controlling the spi flash using USART1 pin config alt 1.  This UART(USART) could also possibly be used to communicate with an external µc or with an esp8266 to add a wifi gateway.  The test pads tp17 and tp19 (or tp7 & tp9) connect to p1_6 and p1_7 which are tx/rx alt 2 pinout for UART1

  Are you sure? yes | no

Aaron Christophel wrote 12/06/2020 at 12:05 point

Hey, also the problem with the alternative flashing methods is the time it takes, from 3 minutes to 3 hours flashing time... 

With the CC-Debugger its just 10 seconds.

  Are you sure? yes | no

Interzen wrote 11/29/2020 at 20:20 point

I have a lot of 48 of these ordered.  I only need a couple and will pass the rest on.  I didn't get the best deal so I will probably be asking about ~Edit: $16 + actual shipping cost ~.  PM me if you want some before I list them elsewhere.

Thanks @YodaLogic and @Aaron Christophel for the great work.  I can't wait to get these in my hands and start playing.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates