 show it's me JP and it is time for JP's product pick of the week here we are yet again with some cool exciting interesting mysterious product from the Adafruit store and the first thing I'll do is let you know you can head right over to the product page in order to get a 50% off discount on that so just point your camera at that or go to this URL head on over there it's gonna look an awful lot like this right here when you head there and what you're gonna see there in red is the temporary 50% off price so if you head to this URL right now check it out we're gonna talk all about it I'm gonna show you a little lady Ada video from the past I'm gonna grab one out of my own cabinet of mystery wonders over there and then I'm gonna do a couple of demos for you show you some code we'll have fun and I think it's a it's a good chance for you to go and grab a very cool product at a very cool price so without further ado let's have lady Ada of the past introduce us to this week's product pick of the week take it away lady Ada it's because it's so it's a bit so you can hide it please so this is a 2.13 inch ink display that's high resolution we actually got this as a feathering last week now we have a break out it's really nice it's high resolution it's I mean it's not gonna be as high as is like a Kindle display but for a low-cost break out board you get quite a few pixels looks really good it also updates a lot faster than there's not live video I believe it chart color so this is the live demo so you see you can update the whole display the like yeah it's really nice it's faster than my kindle it's faster than like the first kindle probably it can do partial updates we haven't set that up yet this is just it displaying an image from a bitmap and this is running off of a metro and you might think hey you know Metro does not have enough RAM to display 8k of bitmap data you're right it has an S RAM chip on the back that does all the frame buffer management for you so you don't have to use any RAM because of these displays you can't draw one pixel if you draw the entire display at once so if you want to do any graphical stuff you'll need to have a frame buffer and our breakouts come with a frame buffer and a nice ink display hey that does sound awful cool in fact I'm gonna run over to my cabinet of mysteries and wonders and things and go grab one for myself I'll be right back yes that's right this week's product pick of the week let me try that again yeah that's right this week's product pick of the week it is the 2.13 inch monochrome eink display break out with the ssd 1680 driver on it so this is a ink display has basically one color white or or the the black eink balls in there or however it works these days I forget and this has a little row breakout pins that you can solder some headers on to or wire directly and then plug it into a breadboard plug plug it into a perma proto board build a circuit around it I'll show you a couple of options and then drive it from pretty much any microcontroller it's got the horsepower as well as a SD card and some SRAM on there to handle the buffer so that you don't have to worry about that on your card which is excellent so let's get to it first of all you can see here this is a really gorgeous display it's nice and high resolution what I'll do is actually switch over to down shooter here there we go that'll that'll work and you can see here I've got my logo on there I just built that version of the logo this morning and that is a essentially it's a BMP file I think you can do this is a 16-bit BMP file even though it shouldn't be it should only be a one bit but I the code I was using wanted this format otherwise was inverting it so but what I'm gonna do is actually show you yes so someone asked can you remove the power from it when it when the MCU powers it on it won't clear the screen so let's see in this case if I power it down so I'm just gonna remove USB power from this little metro here you'll see yeah it's the ink display which just wants to display what's on it last time that we had something on there my code doesn't do anything clever it just says hey when I boot up I'm gonna I'm gonna refresh the display and and re-image it with whatever text or or BMP was on there so you're gonna see it's gonna do it's a little refresh there it kind of inverts the screen does black does white and then it displays it but you can see it's a really quick refresh I'm sure in code you could come up with ways to not refresh it when you boot it unless you need to put a different image on there than the one that was on there last there's there's definitely ways you could do that so what I want to do is actually show you on this one just I'll do a couple little refreshes and show you some code for this so let me switch to a code view of the world and then jump over to my text editor so I have this running in circuit Python you can also use Arduino for this and you can run it as circuit Python on the microcontroller in this case this metro you can also do it from a computer using Blinka so let's take a look at the code how we running this we have a few imports for time board for pin definitions display IO and then this driver the SSD 1680 we release the release the displays set it up on its being used on SPI as well as some clock and data pins reset and busy then we set up the display bus to talk to this display at this bar rate set up the display object itself you can see here we have set up for the width and height there are some optional things you can do in here if this were a try color display you can have a highlight color setup as well as the rotation so this is naturally a vertical display but we're using it tilted 270 you can see here in fact if I change this to a 90 degree will essentially flip it upside down so I've just hit save and you can see there it goes through its little refresh and it's actually pretty pretty darn quick the flip it back the next thing we do is set up the display IO objects so we have a display group and then we are gonna in this case import a file so I just made a little convenient set of variables for myself to import whichever one I want so file one is the Adafruit logo so what I'm gonna do is in this open loop we open up that file switch that to be the Adafruit logo and then we set this up as pick is display IO on disk bitmap and it's using that open file the tile grid is set up and then we add that to the group show the group and refresh which is what causes it to actually do the little refresh and then I'm just holding it there with this while true pass so if I save this right now you see it's gonna go through its little setup and it's gonna pop on there the Adafruit logo by the way you'll notice some little crumbs on there that's because I dropped the board and kind of it banged into something and I now have some stuck pixels Colin was just telling me there might be a way to fix that by flashing it with black and white for for a few minutes so I might try that later so we'll do one more so these are black and white logos that you saw you can also do dithered logos and we have some guides about how to do all of this so what I'm gonna do is change the file to open this picture of the David and you'll see here this was a gray scale or color image that I converted to into a dithered image so you can see even though this is only a black and white display essentially you can make it look like this gray scale by using half toning techniques or other dithering techniques is actually diagonal half tone which gives you a pretty pretty nice look almost like a woodcut type of look so now something else we can do what I'm gonna do is actually pull this screen from here and plug that one I don't need that now let's go to a full down shooter view and how about like that okay so what I have here is a cool setup I thought it was cool I set up an itsy bitsy m4 on this perma proto board and soldered all the connections that we need and then I also soldered on to there a header row a socket header row that's tilted at a 45 roughly 45 degree angle which means when I plug this into here we get a nice little semi vertical display and what I wanted to do is actually set this up as sort of a page a day calendar really what I often want to know is today's day of the week and the month and the day I usually remember the year so it's not as important to me I don't need a lot of fancy stuff all I really need to do is what the heck day is today and also the date can be important for me so let me let me plug this in and you'll see it's gonna actually I'm gonna do a little setup so check this out first of all I'm gonna run a little Python script and I'll plug this in first it needs to find find that on USB hopefully it finds it hey it did whoops so now I'm gonna reset the board and you'll see back to this down shoot you'll see it's now updated it with today's day and date and that's grabbing it from my computer so it's grabbing the computer system time which is what that Python script does and then I think right now I have it set up to wait an hour and so every hour both my Python script and the circuit Python script running on this little microcontroller will go and check together essentially the computer will check and see hey what's today's date day and date and then it's gonna send that over serial on the USB over to the itsy bitsy M4 circuit Python software there is waiting for input and when it grabs that input it then displays it up there so now I have a nice neat display that just tells me really the most important thing for me is is what's the day what's the date you could do this with a clock but of course the update the refresh we're not really meant to update these more than once every three minutes or you can to diminish the display you can cheat for sure and I've done that before I don't remember what command we have but there's a way that we can get around that that delay that's that's normally being enforced so you can update more quickly of course you'd want that if you were doing something like a book reader you probably update it quite frequently while you're reading and then not updated at all so it balances out in the end so let's have a look at the code for this let's first of all jump over to this Adam view of the world and I should say who am I talking to well you the viewer but also the people on discord and the people in our YouTube chat so I want to say hi all of them hi Aiden hey Scotty and over we've got a lot of people over in the discord if you're wondering where that chat is happening it's go to discord it's adafru.it slash discord and that'll get you an invite and then you can join in the live broadcast chat channel Dexter starboard asked does it react to magnetic field not that I've ever seen it's possible but I but that would be actually a good question for Colin and that could be a fun demo video can he build a electromagnet magnet big enough to change the the image on there Todd says slick wiring well thank you let's see any other questions Ian can sit weeks without power and still show your image but a refresh now and then can keep it from discoloring over time it's good good to know so let's take a look at this code here and what's going on I'm going to switch over to two things so first of all this is the Python script and big thank you to Todd bot who has upon his tips and tricks page some stuff about talking over serial and he helped me out with this code so this is to talk from your computer using serial to your circuit Python device so in Python on my computer import serial import time I find the serial port which I don't have anything clever doing this I just checked what it was and hard coded it in there and then we create the serial port object and we do a little reality check by doing print of sir dot name and then in the main loop here we grab the the date and time from the computer using this date string equals time string f time and then I'm sorting out just the stuff I want so I'm getting the day the and then I'm putting a sort of escape character here with this slash so I can split it later the month in capital both of those are in capital and then the day of the month and then we have a return and a carriage return and line and carriage return we print this out again for a reality check that's what's happening over in the Python you can see it there when it when it was running let's see that yeah you can see there it says sending date string Tuesday slash July 06 so then I write that to the serial port that heads over the serial port over to the circuit Python device that's waiting and then I spend an hour sleeping there close the serial port so if we look at what's happening on the device itself on this it's a bit see I'm importing time importing the board for pin definitions display I owe the SSD 1680 display driver bitmap font and display text so I can use a fancy font and then we release the displays we set up the font I have two of them that I'm using Helvetica bold in 44 and 36 point set up my colors that I'm using same setup as before slightly different pin names and same setup here and then let's get to the the different part here so my text I set up a couple of text objects here just with sort of some dummy text then when the program actually runs it creates this date string object that's equal to a string oh sorry someone just told me we can't see the the code view thank you for that I appreciate so I'll back up a bit you can just see here I'm importing a bunch of libraries I'm setting up my display I'm setting up my fonts setting this up over SPI create a couple of text objects and then the bulk of it here is in this while true loop we do this the date underscore string variable is the result of creating a string from the input so that input in parentheses will actually hang out there the code when this runs will just hang out there waiting for a serial input to come in it could be from the REPL in this case it's coming over from my from my computer running Python when it gets that input we then split it into two variables day and date and that's done with this split and we choose the character that we split on which is that slash that could be a pipe that could be other other characters that are not gonna appear in your time then I change the text in my two display I owe objects the text area and the text to area to be day and date and those already have their setups up above for where they appear on screen and what font they use we refresh the display and then we sleep for an hour so if I rerun this so what I'll do is I'll just hit save here and you should see my oh actually that won't do it let me let me open the file on the micro controller itself that's not it there we go so when I hit save here my terminal program is already running so this is waiting right now the hour or so my ink display and it's a bit see they're kind of stuck in this waiting mode it happens already say Tuesday but it's kind of stuck in this waiting mode waiting for some some serial input so what I'll do is end and relaunch that Python program so now it's gonna send the string which means my itsy bitsy should should receive that now and it should refresh so let's see are you gonna refresh or you're just gonna make a liar out of me maybe maybe it'll make it stuck here something else we can do actually see do we have time no you know I'll end it there but this one you have to take on faith it actually refreshes it with each day so yesterday it said Monday and let's see what else so let me let me jump back to the product page to remind you there's where you want to go to check this out this product ID 4197 and you can always type in the product ID in any of the search fields on the Adafruit site to get to a product so if we know this one's 4197 type that into search and there it will show up and you can see this is the one with the nice the nice big discount on it so let me check in with the chat let's see Mike Weaver says is gonna hook it up to RFID to see card info that's really cool I like that idea and let's check in on the discord yes thank you Todd asked where was my code screen I was not showing it sorry and I will also mention whoops didn't mean to do that I was trying to I was trying to close the I clicked on the Google thing trying to close the little extra thing at the bottom I just lost my train of thought what was I talking about who knows but there's there's the product if you click on the learn guide page link which is down below in here you'll see we have info for using this in both Arduino and in circuit Python in circuit Python as well as Python using Blinka on your computer this will tell you everything you need to know about going and grabbing the driver for this and some sample code this guide is actually both the tricolor and the monochrome it's almost the same code with just some slight differences and we have a lot of guides on eink so if you check out this quick start from Anne Barela that'll show you some things about throwing bitmaps on there we have a name badge sample code we have info about how to create your graphics such as dithering let's see Scotty asked any inks with board same size or smaller than the display itself the feather wing is pretty small if you look at let's see is that one linked in here eink feather wing let me go to the product page actually eink feather okay so this one is this feather friend is a little breakout where it's just the bear it's not on a board it just uses a little extension which is kind of cool the eink feather wing here has a pretty minimal board the PCB only pokes up for those mounting holes and these are usually you can usually separate these off of the screen with a little bit heat like a hot air gun on a low temperature might get it out or some glue gone maybe it's just got an adhesive backing on there but you might want to look at that feather friend as a as a way to do that with just the bear display it's not a flexible display that you can use with that so good question let's see anything else I think that's it yet Todd mentions we have a custom fonts learn guide which is great you can take pretty much any font turn it into a bdf font or there's another format what's it called PCF I forget but the bitmap the bdf format is great it's just represents one typeface in one size which is what a font is and whichever set of glyphs you want so you can have a minimal set or lots of them if you have memory to spare all right I think that's gonna do it for today so there it is there's our our beautiful eink display with my new little very minimal computer here but that's gonna be my that's gonna be my hey what day is today thing so I shouldn't be screwing that up so much anymore I leave that on so let's wrap this up shall we okay we shall that's my product pick of the week this is the monochrome 2.13 inch eink display breakout and I forgot to to give that something to hook to my my little board with so we'll pretend we're gonna we're gonna hang we're gonna set this on there like a little shelf there we go it's sort of there all right that I'll do it for today thank you all so much this for ate a fruit industries has been me John Park in JP's product pick of the week bye bye