Hey James, there is a type in python called list. You don't have to write out A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, ... you can just iterate over the list (for line in A:)
@@fusseldieb I'm pretty sure you should be able to use a formula to generate a Hash code of a range of cells, all this could be done on the sheet then you would just need to compare the value
E-ink screens really don't fade. Ever. My Kindle DX hasn't had power in years, and is still displaying the "please charge me" screen, I've also got more recent screens that have been in my parts bin for the last year and haven't changed from the demo text that they shipped with. Nice trick with the google sheet, it seems at first like overkill but it really does have a lot of nice properties once you get through the authentication mechanism.
My Kobo e-reader is still perfectly displaying it's image (it's set to display the cover of what I was last reading, along with a message saying it's powered off or on standby as the case may be) It's certainly not years, but it has been a few weeks. It's probably going on a decade old at this point, so the screen is quite old as well. Yeah. While I don't doubt that there are environmental conditions that could degrade the image, for the most part, e-ink displays seem to be persistent indefinitely.
Better yet since he's using a google sheet; he could make a google form for super easy editing on the go. Just have one field with the content output the results to the sheet.
I believe the flashing is part of the clear routine that makes sure all the areas of the display reset properly. The movement of particles in the screen is physical so updating the same area with the same color too many times in a row could potentially bake in the state and make it difficult to change in future. It's also recommended you have a full screen refresh every few days or so to prevent ghosts of previous displays from remaining permanently. I haven't had the issue on mine yet but I believe that is the reasoning.
4:10 - It won't fade. E-paper is essentially non-volatile storage, like hard-drives or flash-memory. The molecules have been oriented/aligned in a way that causes them to create black or white (or color) patterns, and they'll stay that way until they are re-adjusted. That's why it has to do the flashing thing to reset the display, it's readjusting all of the molecules together since it can't know which ones are in which orientation at the start.
I have noticed that with a three-color waveshare e-ink display that I have that if I do not run the display for *several years*, the image does very slightly fade, particularly around the edges.
It never fades. I have a 2.7 inch waveshare display and the same image has been on it for around 18 months. They work great with ESP32s. And they have partial refresh. But don't do more than 10 partials before a full refresh or you'll get a permanent yellowish burn-in.
Instead of polling the REST API every 5 minutes to see if there have been any changes, you can also attach an app script to your google sheet. You can setup this script to call a little rest API on your raspberry pi each time someone updates a field. This way the screen is updated instantly when you add something and you don't need to check every 5 minutes.
Trigger is definitivelly the way to go. Use a change trigger to generate a raster for the dimension of the screen and store this in the drive in a dedicated folder. When waking up the device will look for date/time of creation of the file, and if it is still the same get back to sleep. If this is a different date/time get the file and update the screen with it. As a result, replace the raspberry with any cheap MCU wifi enabled and run this on battery for months....
It's really nice to see you build something that even I could tinker with. Usually I watch because it's awesome stuff you're building, but now I also watched thinking I could make that. I'd love to see more of these sort of projects. Great video! Thanks
Ha James .. What a change of pace. I've played a lot with E-ink papers. Finally these things are affordable. I paid nearly $300 for my 6" a few years back. The price was mostly into converting the ereader screen to a serial input. Cool stuff.
Couple of months ago, I re-arranged some furniture and found an e-reader I thought lost in 2011. No longer displayed an actual page, but it still had the "low battery" warning perfectly readable.
Hmm 15 variables, 15 lines of similar output code ....that is ugly. And I would honestly use hashlib ...to save hash, instead of prev values you need to compare with, but I guess whatever works.
Why bother saving the file every 5 minutes? Put it inside the if statement which checks for differences. So many details if we go for coding perfection.
deslomeslager I suspect the intention was deep sleep. Use an ESP 32, store the hash in the NV RAM then each wake you get the content, hash it, compare the saved hash and potentially redraw before going back into deep sleep for 5 minutes.
An ESP8266 might even do it Extremely low power consumption. You can make it deep-sleep and disable wifi until the next update, so you only use a few uA!!!
That could be done, but I've seen that Waveshare does also offer real e-reader displays (albeit without the additional stuff like touch, pen, and/or lighting) too.
You definitely could. The main difference is down to hobbyists versus hackers. A hobbyist can buy the kit, as James has done, have access to all the resources and community help, and learn as they go. A hacker must already understand the underlying principles, and has no access to resources since they don't exist. It's basically either end (or two points) of a learning curve. _[Edit]_ Actually there may be _some_ online resources written by fellow hackers, since they have their own communities. If you're not sure how to proceed it's probably worth googling to see how much help is available before buying a second-hand Kindle.
Cool idea. A quick look into the API docs I found a potential way to skip writing to the sdcard and really only update on either reboot or changes: 1. startup of the script 2. Get ntp time on you RPi 3. get the "modifiedDate" field for the file and its contents 4. Display it and save the value of modifiedDate in a variable 5. Every X minutes only get the modifiedDate property and compare it to its last value. 6. Fetch file and update display if the value of modifiedDate changed. That way you could run all of it without writing if you like. Just make sure you catch exceptions e.g. if you internet connection is lost...
I've thought about doing exactly this, except I was going to use it to display my calendar. That way it doesn't waste paper every year. It could also have buttons to allow the user to zoom in on today
I would highly recommend this website to you china-epaper.com, DKE is an E-PAPER professional manufacture, price here is much cheaper than Wave Share the one this RUclipsr found, for instance, 7.5" he used is $53.99, DKE only sale for $39.
This. Me and my wife have had this idea for years but never done anything about it. It just needs to be able to display output and move left and right through the months. Data entry could be via Google calendar on smartphones. Digital calendars are great until the screen turns off and it's no longer glanceable!
Every 10 minutes checking for an update is old school. There probably is a way to use a notification that will call your webhook whenever there is a change to the document. Then you can write the change more real time and use no bandwidth when nothing is happening. I would implement it in such a way that notification causes a refresh of the data elements and set a changed flag. On another thread, check every few seconds if change flag is true. If it is, check to make sure time since last screen update > threshold (say 15 seconds), and if it is update the e-paper and set changed to false and go back to sleep. That way your e-paper will update in seconds when the Google doc changes, but also won't update too frequently if there are constant updates. You will save on bandwidth and have a far more responsive display.
Also, bad a the way it goes off a google doc and any invitees can make changes to the text. Really great way to make a public message board. Now, to interface more than one of them together and have the text seamlessly span across the borderless display. Maybe 4 of them as a start in 4 quadrants.
Yes, great idea, great concept & execution, however I could power a standard 21" screen for a few years for the same cost as this e-paper screen (21" monitor @ 20W, powered on 24 hours/day 365 days a year @ 16p/kWh = under £30 a year! You could dim the display or turn it off during sleeping hours, so you could potentially half the running costs). You would still need the Pi to create an image anyway! Personally I'd rather build it into a mirror frame, plenty of projects & ideas for that. I'd make one if the display was bigger & cheaper as the cost savings for this use case over traditional LCD displays just aren't there!
Thank you, I’m about to make the same project as a gift, I’ll adapt your code to display an image from gdrive instead of the document you showed. You made my life a thousand times simpler. Thank you for your dedication 😁
Cool idea. For the sake of the SD card lifetime, it would probably be better to just read the csv and compare in memory and only writing a new one to SD when there is an update.
I'm pretty sure it doesn't actually change the sd card as he said , it just changes the on board memory , because if it did, you would be able to access it via plugging the sd into a PC , trust me , I've tried it , only thing we have access to is the system files of the pi
@@maskedredstonerproz the reason why you can't access the files on a pc is because windows doesn't support the file system the pi uses by default (ext4)
@@maskedredstonerproz It does. A quick look at the code - github.com/XRobots/IoT-Message-Board/blob/master/Code/v1/sheet02.txt - shows data getting written every single time the program is run.
@@laurinneff4304 so is there a PC OS that does actually support that , I want to know because I'd really like to access said files from a PC , imagine the things I could do , I'd have to do waaay less reflashes
@@maskedredstonerproz Linux supports it (usually ext4 is used on those), and other Unixes probably support it too (so all the BSDs, and maybe even macOS). You might also be able to find a windows driver online
Just don't put any commas in your notes or it will break the read of the csv. The csv lib also supports writing so consider using that instead of manually adding commas. If you do, at least escape your text by putting it in double quotes: ".
Think this could be made using batteries so it can hang on a refrigerator like a post-it would? Not sure how long some 18650 cells or AA might last in it but I can see that on mine if that was possible.
You can, but then you have to always be listening for that notification, rather than only waking up every so often (every five minutes, hour, day, etc). That’s a great solution if your project is time-sensitive, like a to-do list that you want to update live, but isn’t as great for something that only needs to update once a day, like a weather forecast. If you only need to wake up the raspberry pi once a day, you can use a lot less power than keeping it on all the time; perfect for battery powered projects.
Hey James, theres a cool service called python anywhere which allows you to run you python code in the cloud for free. A idea I had when watching this is that you could have a web server running remotely with all your reminders on it, this would allow you to have the everything working without the requirement of everyone needing a Google account to add reminders
A couple of years old now, a few people rightly saying use an ESP32. I've done something similar with the InkyFrame 5.7 from Pimoroni which uses a Pico W and real time clock so the Pico can go to sleep and not draw any power until it's woken by the RTC.
Love the idea, but you should move your code to write to the CSV file into the IF block and only write if a value has been changed. Not sure if the library you are using is optimized for not writing a file that hasn't changed. This will prevent unnecessary writes to the SD Card.
My original kindle left in the cupboard kept its picture for years without fading. Great project but it's way too small and the fact you can't use a pen like a whiteboard isn't nearly as useful. Could you put multiple screens in series?
I wonder if you could build a cover for it that you could draw on? Set it up like a tablet with a docking station. Create a list of tasks or items to buy. Send it to the display. Undock the display and take it with you. As you complete a task, check it off the list. When all tasks are complete wipe off all the checkmarks and put the display back in the dock to update.
I seem to enjoy all of your videos, the new IoT stuff is kind of nice. However I'm really here for the robotics! But then again having IOT robots doing cool stuff when sensors are triggered inside of a room, might be fun too.
I heard somewhere that the display need to (or rather should) be updated entirely every time you change the contents or otherwise the magnetic ink will lose/change? it's polarity. this is pretty much a "burn in" protection
Wow I figured you already were familiar with Python. It's so great for bodging things together it seems like it would be perfect for a lot of the cool things you do. Interested to see if you end up using it a lot going forward
I had an idea/question that might work for a power supply and came back to your video to leave a comment just in case. You had mentioned in the introduction that a common place to leave notes like this is the refrigerator door with magnets. Could a Peltier module connected to the radiator on the back of the fridge generate enough power to update the display?
You could possibly send a message over MQTT, with the device listening for messages on a private channel and updating the screen only if a message arrives, may make it a little more efficient and would allow for you to set it to idle then wake up only when a message arrives
doesn't really make sense to me to use such a low power device with something power hungry like a raspberry pi. You should really do it with an esp32 and deep sleep! Otherwise, awesome job, thanks for the video
New to raspberry but a Python guy. Does the Pi not usually use Debian? Shouldn’t the Python interpreter know Context mgrs and lists? I didn’t see a close on the sessions nor the text files. So you leave it undefined when the Script ended and repeat it every 5 mins. I am surprised that the google API is not rejecting further sessions or the files get corrupted after a while. Also please don’t repeat so much code and use a List instead. But that aside your ideas are great. Subbed :)
I want to make an E-Reader with a 6" screen, could this be adapted with an RP Pico W? As I don't want Amazon spying on me and what I am reading. Thanks, Bob in the UK
Interesting demo and a nice little change from robots (cause why not? =D). Weird how they have to flash on and off so much to update. I've seen kindles and they seem to only need to do it once.
I'm working on a project for my business that uses the Google sheets API. It's going to be helpful to take a look at your code and see what I can learn.
You can simplify getting the column values and writing them to just wks = gc.open('worksheet name').get_worksheet(0) #0 is the index of the sheets in the worksheet csv = open(filename, 'w') for task in wks.col_values(1)[1:]: #i skip the first line of the column bc i use it as a title csv.write(task) csv.write(",") csv.close()
nagualdesign Yes, this is what I had in mind as well! To be fair: the full size pi is a better prototyping platform and he could swap it out with something smaller later
@@EngineeringSpareTime He also has the option to cannibalize it for other projects, but it would be nice to keep all his old stuff in working condition (assuming he has room) as a sort of museum.
nagualdesign This would be nice. Talking from experience: It ends up with a lot of stuff in a small space and its all „dead“ money :) With the amount of stuff he is building, it would be enough to have a room full with the working/ finished prototypes
Struggling not to count how many "Google doc" are here. Anyways very nice project. Instead of using bash script use "cron" or alternatives. Or make it run in a background like normal "daemon" with some watchdog service to monitor it. Its is fairly easy and more robust.
Hi! I was thinking of the same project for a while already, but update times are really long. I could not verify if a partial update works on these screens.
Depends on the screen but especially for the smaller ones it is working really well. @James Bruton: The blinking (full refresh) is necessary to get a clear white background and a black text without shadows of previous runs. The kindle/... is doing a full refresh only every x-th time and they are using a better refresh code as well as a smaller display so it happens to work much faster nowadays
Morituri I was thinhing about an analog clock and 7inch screen like this would be best for the use, but unknowns about possibility of partial update on such size displays made me pause on this project.
Mass production. I imagine that outside of mass applications where a client is buying hundreds of thousands from a manufacturer, these are a rather niche product, so they're very expensive in small quantities. Also, they're a rather new technology, so they haven't hit the commodity prices we're used to with other components.
Hope you are not writing to csv if there wasn't any change..otherwise that's another unnecessary write cycle for the SD card. You should have the write code inside your if block.
Hey James, there is a type in python called list. You don't have to write out A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, ... you can just iterate over the list (for line in A:)
Yep, was also kinda annoyed by this hahaha
Same here, was pretty annoyed reading that code :D
also you can write a function that iterates over the list , and call it in multiple locations , instead of rewriting the iteration code
Same
@@fusseldieb I'm pretty sure you should be able to use a formula to generate a Hash code of a range of cells, all this could be done on the sheet then you would just need to compare the value
E-ink screens really don't fade. Ever. My Kindle DX hasn't had power in years, and is still displaying the "please charge me" screen, I've also got more recent screens that have been in my parts bin for the last year and haven't changed from the demo text that they shipped with.
Nice trick with the google sheet, it seems at first like overkill but it really does have a lot of nice properties once you get through the authentication mechanism.
It probably depends on the conditions it's stored in, one of which seems to be if it's not used for a long time in a humid climate.
I read that _"please charge me"_ like that one Portal 2 turret saying _"I'm different..."_ and it broke my heart.
PLEASE charge your Kindle :'(
My Kobo e-reader is still perfectly displaying it's image (it's set to display the cover of what I was last reading, along with a message saying it's powered off or on standby as the case may be)
It's certainly not years, but it has been a few weeks.
It's probably going on a decade old at this point, so the screen is quite old as well.
Yeah. While I don't doubt that there are environmental conditions that could degrade the image, for the most part, e-ink displays seem to be persistent indefinitely.
Better yet since he's using a google sheet; he could make a google form for super easy editing on the go. Just have one field with the content output the results to the sheet.
I believe the flashing is part of the clear routine that makes sure all the areas of the display reset properly. The movement of particles in the screen is physical so updating the same area with the same color too many times in a row could potentially bake in the state and make it difficult to change in future. It's also recommended you have a full screen refresh every few days or so to prevent ghosts of previous displays from remaining permanently. I haven't had the issue on mine yet but I believe that is the reasoning.
A Raspberry Pi Zero WH would be perfect for this.
Was more thinking about a ESP8266
@@Scorpion008 Yep, RPis are wayyyyy to overkill for this. Not even near perfect.
4:10 - It won't fade. E-paper is essentially non-volatile storage, like hard-drives or flash-memory. The molecules have been oriented/aligned in a way that causes them to create black or white (or color) patterns, and they'll stay that way until they are re-adjusted. That's why it has to do the flashing thing to reset the display, it's readjusting all of the molecules together since it can't know which ones are in which orientation at the start.
I have noticed that with a three-color waveshare e-ink display that I have that if I do not run the display for *several years*, the image does very slightly fade, particularly around the edges.
This screams ESP32 and batteries :) Should last quite a while of you only update it during the day.
*screams
Esp32s better
Thanks :)
It'd be nice to see this run off an esp32, though - with periodic deep sleep, even a small battery should suffice for quite some time :)
That sounds better, I don't think I would want an RP to run 24-7 just to update some text on a screen, but I also would not pay £50 for a screen.
It never fades. I have a 2.7 inch waveshare display and the same image has been on it for around 18 months. They work great with ESP32s. And they have partial refresh. But don't do more than 10 partials before a full refresh or you'll get a permanent yellowish burn-in.
That is the funniest IF statement I have seen. You know python can directly compare lists, right?
Instead of polling the REST API every 5 minutes to see if there have been any changes, you can also attach an app script to your google sheet. You can setup this script to call a little rest API on your raspberry pi each time someone updates a field. This way the screen is updated instantly when you add something and you don't need to check every 5 minutes.
Trigger is definitivelly the way to go. Use a change trigger to generate a raster for the dimension of the screen and store this in the drive in a dedicated folder. When waking up the device will look for date/time of creation of the file, and if it is still the same get back to sleep. If this is a different date/time get the file and update the screen with it. As a result, replace the raspberry with any cheap MCU wifi enabled and run this on battery for months....
7:12 I think you forgot to black out your security key
Ahahaha! True, let's see what people will write him :D
I was just looking at that
It's really nice to see you build something that even I could tinker with. Usually I watch because it's awesome stuff you're building, but now I also watched thinking I could make that. I'd love to see more of these sort of projects. Great video! Thanks
Ha James .. What a change of pace. I've played a lot with E-ink papers. Finally these things are affordable. I paid nearly $300 for my 6" a few years back. The price was mostly into converting the ereader screen to a serial input. Cool stuff.
For what it's worth, it won't fade away. I've got an old e-reader, stuck on a page for a few years...
Couple of months ago, I re-arranged some furniture and found an e-reader I thought lost in 2011. No longer displayed an actual page, but it still had the "low battery" warning perfectly readable.
Hmm 15 variables, 15 lines of similar output code ....that is ugly. And I would honestly use hashlib ...to save hash, instead of prev values you need to compare with, but I guess whatever works.
Why bother saving the file every 5 minutes? Put it inside the if statement which checks for differences. So many details if we go for coding perfection.
deslomeslager I suspect the intention was deep sleep. Use an ESP 32, store the hash in the NV RAM then each wake you get the content, hash it, compare the saved hash and potentially redraw before going back into deep sleep for 5 minutes.
"So I used a Raspberry Pi..."
_Me, who replaces every RPi project with ESP32s:_
*I have been summoned*
Next step, partial e-paper update only for changed lines
An ESP8266 might even do it
Extremely low power consumption. You can make it deep-sleep and disable wifi until the next update, so you only use a few uA!!!
Make sure you post a Vid!
@@UrbanInsight ruclips.net/video/xnUqWcdtqyU/видео.html
@@trandi8 Sweet! Excellent Job! Youve gained a sub!
I wonder if someone could just hack an old Kindle to this purpose? They can be picked for very cheaply, and already have everything you need built in.
That could be done, but I've seen that Waveshare does also offer real e-reader displays (albeit without the additional stuff like touch, pen, and/or lighting) too.
Oh I'll check that out. I've seen 4th gen kindles on eBay for around £5 shipped so I might just pick one up to have a go at
You definitely could. The main difference is down to hobbyists versus hackers. A hobbyist can buy the kit, as James has done, have access to all the resources and community help, and learn as they go. A hacker must already understand the underlying principles, and has no access to resources since they don't exist. It's basically either end (or two points) of a learning curve.
_[Edit]_ Actually there may be _some_ online resources written by fellow hackers, since they have their own communities. If you're not sure how to proceed it's probably worth googling to see how much help is available before buying a second-hand Kindle.
@@nagualdesign I've found a few articles covering similar projects on hackaday so I think it's achievable
Cool idea. A quick look into the API docs I found a potential way to skip writing to the sdcard and really only update on either reboot or changes:
1. startup of the script
2. Get ntp time on you RPi
3. get the "modifiedDate" field for the file and its contents
4. Display it and save the value of modifiedDate in a variable
5. Every X minutes only get the modifiedDate property and compare it to its last value.
6. Fetch file and update display if the value of modifiedDate changed.
That way you could run all of it without writing if you like. Just make sure you catch exceptions e.g. if you internet connection is lost...
You missed blacking out a few of the addresses and api keys when you're showing the Google Doc API setup.
I've thought about doing exactly this, except I was going to use it to display my calendar.
That way it doesn't waste paper every year.
It could also have buttons to allow the user to zoom in on today
I would highly recommend this website to you china-epaper.com, DKE is an E-PAPER professional manufacture, price here is much cheaper than Wave Share the one this RUclipsr found, for instance, 7.5" he used is $53.99, DKE only sale for $39.
This. Me and my wife have had this idea for years but never done anything about it. It just needs to be able to display output and move left and right through the months. Data entry could be via Google calendar on smartphones. Digital calendars are great until the screen turns off and it's no longer glanceable!
Every 10 minutes checking for an update is old school. There probably is a way to use a notification that will call your webhook whenever there is a change to the document. Then you can write the change more real time and use no bandwidth when nothing is happening. I would implement it in such a way that notification causes a refresh of the data elements and set a changed flag. On another thread, check every few seconds if change flag is true. If it is, check to make sure time since last screen update > threshold (say 15 seconds), and if it is update the e-paper and set changed to false and go back to sleep. That way your e-paper will update in seconds when the Google doc changes, but also won't update too frequently if there are constant updates. You will save on bandwidth and have a far more responsive display.
What's great is that you can actually take it with you when you go to the shops: no power needed
Also, bad a the way it goes off a google doc and any invitees can make changes to the text. Really great way to make a public message board. Now, to interface more than one of them together and have the text seamlessly span across the borderless display. Maybe 4 of them as a start in 4 quadrants.
Yes, great idea, great concept & execution, however I could power a standard 21" screen for a few years for the same cost as this e-paper screen (21" monitor @ 20W, powered on 24 hours/day 365 days a year @ 16p/kWh = under £30 a year! You could dim the display or turn it off during sleeping hours, so you could potentially half the running costs). You would still need the Pi to create an image anyway! Personally I'd rather build it into a mirror frame, plenty of projects & ideas for that. I'd make one if the display was bigger & cheaper as the cost savings for this use case over traditional LCD displays just aren't there!
Thank you, I’m about to make the same project as a gift, I’ll adapt your code to display an image from gdrive instead of the document you showed. You made my life a thousand times simpler. Thank you for your dedication 😁
Cool idea. For the sake of the SD card lifetime, it would probably be better to just read the csv and compare in memory and only writing a new one to SD when there is an update.
I'm pretty sure it doesn't actually change the sd card as he said , it just changes the on board memory , because if it did, you would be able to access it via plugging the sd into a PC , trust me , I've tried it , only thing we have access to is the system files of the pi
@@maskedredstonerproz the reason why you can't access the files on a pc is because windows doesn't support the file system the pi uses by default (ext4)
@@maskedredstonerproz It does. A quick look at the code - github.com/XRobots/IoT-Message-Board/blob/master/Code/v1/sheet02.txt - shows data getting written every single time the program is run.
@@laurinneff4304 so is there a PC OS that does actually support that , I want to know because I'd really like to access said files from a PC , imagine the things I could do , I'd have to do waaay less reflashes
@@maskedredstonerproz Linux supports it (usually ext4 is used on those), and other Unixes probably support it too (so all the BSDs, and maybe even macOS). You might also be able to find a windows driver online
Just don't put any commas in your notes or it will break the read of the csv. The csv lib also supports writing so consider using that instead of manually adding commas. If you do, at least escape your text by putting it in double quotes: ".
Think this could be made using batteries so it can hang on a refrigerator like a post-it would? Not sure how long some 18650 cells or AA might last in it but I can see that on mine if that was possible.
Gdocs uses a version control system and you can be notified if someone changes the doc and run you code to update the display
You can, but then you have to always be listening for that notification, rather than only waking up every so often (every five minutes, hour, day, etc). That’s a great solution if your project is time-sensitive, like a to-do list that you want to update live, but isn’t as great for something that only needs to update once a day, like a weather forecast. If you only need to wake up the raspberry pi once a day, you can use a lot less power than keeping it on all the time; perfect for battery powered projects.
Hey James, theres a cool service called python anywhere which allows you to run you python code in the cloud for free. A idea I had when watching this is that you could have a web server running remotely with all your reminders on it, this would allow you to have the everything working without the requirement of everyone needing a Google account to add reminders
A couple of years old now, a few people rightly saying use an ESP32. I've done something similar with the InkyFrame 5.7 from Pimoroni which uses a Pico W and real time clock so the Pico can go to sleep and not draw any power until it's woken by the RTC.
Love the idea, but you should move your code to write to the CSV file into the IF block and only write if a value has been changed. Not sure if the library you are using is optimized for not writing a file that hasn't changed. This will prevent unnecessary writes to the SD Card.
My original kindle left in the cupboard kept its picture for years without fading.
Great project but it's way too small and the fact you can't use a pen like a whiteboard isn't nearly as useful.
Could you put multiple screens in series?
Oh, that is a lovely wee project. Nice one, James...
I wonder if you could build a cover for it that you could draw on? Set it up like a tablet with a docking station. Create a list of tasks or items to buy. Send it to the display. Undock the display and take it with you. As you complete a task, check it off the list. When all tasks are complete wipe off all the checkmarks and put the display back in the dock to update.
I seem to enjoy all of your videos, the new IoT stuff is kind of nice. However I'm really here for the robotics! But then again having IOT robots doing cool stuff when sensors are triggered inside of a room, might be fun too.
i hope you buy a puppy and race in a speedboat before you pay your telephone bill.
I'm looking to use a regular monitor and one of those cheap microwave radar motion detectors to power up the screen only if someone is in the room
That's a great method.
Thankyou for sharing this knowledge, quite useful for small and medium businesses
Nowadays I'm expecting a MQTT interface whenever I read IoT.
Did you not use for loops for any paticular reason? would have vastly shortened your code, made it easier to modify and reduced the chance of errors.
Very cool, I love how simple you make this seem!
I heard somewhere that the display need to (or rather should) be updated entirely every time you change the contents or otherwise the magnetic ink will lose/change? it's polarity. this is pretty much a "burn in" protection
Wow I figured you already were familiar with Python. It's so great for bodging things together it seems like it would be perfect for a lot of the cool things you do. Interested to see if you end up using it a lot going forward
I need to learn more ;-)
Good idea using e-ink for a message board!
The waveshare link is broken, missing a )
You could have used a hash of the contents of the document to compare if it has changed, would save some memory when the file gets bigger. Nice video!
Making the content scroll like terminal will also be cool
Sorry I meant airport terminal
Always wanted to see a larger epaper screen. What about stacking several?
I had an idea/question that might work for a power supply and came back to your video to leave a comment just in case. You had mentioned in the introduction that a common place to leave notes like this is the refrigerator door with magnets. Could a Peltier module connected to the radiator on the back of the fridge generate enough power to update the display?
Nice project. To check for updates, rather than comparing row by row why not just look for a change in md5 hashes between old and new csv files?
You could possibly send a message over MQTT, with the device listening for messages on a private channel and updating the screen only if a message arrives, may make it a little more efficient and would allow for you to set it to idle then wake up only when a message arrives
Would be interested to see a future video on making PCB's and sending them to PCBway as I'm still in stripboard land myself so that would be cool.
My brother is addicted to pcb's. Not even once kids. Not even once
Have you heard about habitica? I'd love the E-ink to use its open API to display your daily taskas.
A nice idea but I would look to not use a cloud effort, serious privacy issue for me. This would be better to implement around short mqtt messages.
Did you blank out the web address and display the security key?
The blinking is used to reduce "burn-in" on the screen
It's OK to use a for loop in your python code.
Love your work, inspires me to be a more crafty Engineer
Great project James, this is SUPER useful! It makes me want to invest in some larger e-paper displays. =]
Probably worth having a look at applied science video. Ben's hack does 3hz update rate and doesn't need to refresh or blank the whole screen.
I accept any of these robots of yours as a gift, since here I cannot afford one.
Wa hey don’t you use arrays, instead of 15 individual variables?
It appears that the waveshare link is slightly malformed, as the closing parenthesis isn't part of the link.
doesn't really make sense to me to use such a low power device with something power hungry like a raspberry pi. You should really do it with an esp32 and deep sleep! Otherwise, awesome job, thanks for the video
New to raspberry but a Python guy. Does the Pi not usually use Debian? Shouldn’t the Python interpreter know Context mgrs and lists? I didn’t see a close on the sessions nor the text files. So you leave it undefined when the Script ended and repeat it every 5 mins. I am surprised that the google API is not rejecting further sessions or the files get corrupted after a while. Also please don’t repeat so much code and use a List instead.
But that aside your ideas are great. Subbed :)
Loved this video 2 years ago. Is there a way to do this with a ESP 32?
Instead of storing the old values, wouldn't it be better to make a hash and use that for comparison?
How did you get into this kind of thing? I really want to get into robotics myself but don’t know where to start.
I want to make an E-Reader with a 6" screen, could this be adapted with an RP Pico W? As I don't want Amazon spying on me and what I am reading. Thanks, Bob in the UK
isn't it possible that the rasberryPi only checks the date for the last change of the document? I think that would be easier than checking the text.
Interesting demo and a nice little change from robots (cause why not? =D). Weird how they have to flash on and off so much to update. I've seen kindles and they seem to only need to do it once.
I'm working on a project for my business that uses the Google sheets API. It's going to be helpful to take a look at your code and see what I can learn.
Glad it's useful - it makes a pretty ok platform for any IoT device since Google docs is so accessible
His code is not a good place to start. There are some pretty bad habbits in there. Id suggest taking a look at the google api docs.
I got esp working without 3rd party to WRITE data. But no reads yet. Sheets can also email you based on triggers (if checks of your sheets' data).
You can simplify getting the column values and writing them to just
wks = gc.open('worksheet name').get_worksheet(0) #0 is the index of the sheets in the worksheet
csv = open(filename, 'w')
for task in wks.col_values(1)[1:]: #i skip the first line of the column bc i use it as a title
csv.write(task)
csv.write(",")
csv.close()
You could tile 4 of those 7.5 inch screens to make a bigger screen than the 10 inch one for much cheaper
Idea for 3D printer since you use it so much you should change it to a Boden tube setup idk if you can with a morestruder though
helli James! hello from Qazaqstan!
A1 to A15 would be a nice case to use an array and then loop over it for your rendering. Avoids some copy paste
Any chance we can do this using the e ink display we get with psoc 6 ?
This runs on arduino but the arduino hasnt enough program space for images. An esp32 would be perfect or a raspberry pi zero without a gui.
Key at 7:15 is not blurred/censored...
I'm pretty sure it doesn't matter since the account only has read-only access to the file. Not sure if that's enough info to access it either.
@@jamesbruton It may be, not sure. Even then someone could burn through your access quotas
for loop?
Why not just hash the data from the sheet and save the hash can compare to the new hash?
Why are you not using a pi zero for this? Would make it look way sleeker :)
If it was flat, battery powered and attached to the fridge by magnets it would be very nice indeed.
nagualdesign Yes, this is what I had in mind as well! To be fair: the full size pi is a better prototyping platform and he could swap it out with something smaller later
@@EngineeringSpareTime He also has the option to cannibalize it for other projects, but it would be nice to keep all his old stuff in working condition (assuming he has room) as a sort of museum.
nagualdesign This would be nice. Talking from experience: It ends up with a lot of stuff in a small space and its all „dead“ money :) With the amount of stuff he is building, it would be enough to have a room full with the working/ finished prototypes
@@EngineeringSpareTime There may also be legal restrictions to prevent people from assembling a sizable robot army. 😉
1:09 Invented in the 70s is "recent"??? Use in e-readers ain't recent either, it's been used for over 15 years for that.
The waveshare wiki link is broken. Try uriencoding the ) so RUclips includes it in the url
Struggling not to count how many "Google doc" are here.
Anyways very nice project.
Instead of using bash script use "cron" or alternatives.
Or make it run in a background like normal "daemon" with some watchdog service to monitor it.
Its is fairly easy and more robust.
LoRa would work wonders here for low power updates.
amazing project !
Hi! I was thinking of the same project for a while already, but update times are really long. I could not verify if a partial update works on these screens.
Practical Engineering has an excellent deep dive or two into E ink displays and talks all about the update cycle.
Depends on the screen but especially for the smaller ones it is working really well.
@James Bruton: The blinking (full refresh) is necessary to get a clear white background and a black text without shadows of previous runs. The kindle/... is doing a full refresh only every x-th time and they are using a better refresh code as well as a smaller display so it happens to work much faster nowadays
Morituri I was thinhing about an analog clock and 7inch screen like this would be best for the use, but unknowns about possibility of partial update on such size displays made me pause on this project.
@@ChannelJanis www.waveshare.com/product/displays/e-paper/7.8inch-e-paper-hat.htm can do this but is much more expansive than the slower variant.
There is also a table at the bottom which shows which of the waveshare displays can do what.
what a great idea...would love to see a version that works with a stylus pen
What happens if the note is too long to display in one line of text?
How do kindles have such big screens for there prices?
Mass production. I imagine that outside of mass applications where a client is buying hundreds of thousands from a manufacturer, these are a rather niche product, so they're very expensive in small quantities. Also, they're a rather new technology, so they haven't hit the commodity prices we're used to with other components.
You could use python's and script's absolute paths in crontab and avoid the bash script.
i wonder how large a solar panel would need to be to maintain this
You're saying it wrong. It's PCBWaaaaaaaaaaay.
PCBWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaay
You should use nested for loops to avoid the A0..A14 massacre
Can anyone make an e ink desplay at home from scratch?
Not gonna lie , he almost had me pressing the invest button the first 30 seconds
Hope you are not writing to csv if there wasn't any change..otherwise that's another unnecessary write cycle for the SD card. You should have the write code inside your if block.