 What is this? Hey everybody and welcome to show and tell. It's me Lady Aida with Mr. Lady Aida. We're broadcasting live from downtown Manhattan in our secret lair, but it's not about us for the next half an hour. We're going to check in with people from around the community and see what they're up to, what code they're writing, what 3D printing they're doing, what augmented reality they're inhabiting. We've got a lineup of all sorts of Adafruit peeps as well as many people from the community. Come on by. We have space for everybody. We'll be here till 7.50 or so and then we're going to jump out and do our Ask Engineer show right afterwards. So let's get right into it. First up is Sean. Hey Sean. Hello. Oh, it's Sporty Bowtie. What are you up to this week? So I made probably the worst audio volume indicator in the world. It's the Rube Goldberg of audio indicators. So as you can see right and anybody who's done hardware would just be like, well, yeah, that's like what eight components to do what is like a rectifier and then an envelope detector and then like, yeah, you light up an LED. So I'm running several threads in the ESP32 in order to make this happen. It's okay. You can do 555 or you could use RTOS. Okay, so what's what you're using threads? Yes. So I'm going to share my screen for a moment here and explain what's going on because this is part of my free RTOS or RTOS series that I covered general concepts for a set of videos for DigiKey. And I'm going to share this and hopefully we can see my little slide here that I've made. Hooray! And what I've got going on here is I've got an interrupt service routine. So that's something in hardware on the ESP32 that's sampling the microphone. And that's the little Electret, you know, amplified microphone that we've got here that Adafruit sells. And that's sampling it at 16 kilohertz. Now the ESP32 apparently is bandwidth limited to about six kilohertz. So forgive that. I just wanted to try something at 16 kilohertz. So you can sample that fast. You just lose some of the high frequency stuff. That's feeding into a double buffer. And I have two tasks. One of them is reading from that double buffer every time one of the buffers fills up with like 1600 samples and computes RMS. Like this could be your fast Fourier transform, your machine learning thing, whatever. It's a task that runs at a lower priority than what I have here is task B, which is managing something else. And in this case, it's a serial terminal. And it's just, you know, echoing whatever it sees. And the idea here is you could use an RTOS to manage several tasks. And you should really only consider doing multi-threaded stuff when you need to do several tasks at the same time. That's the big concept I'm trying to get across here, because sometimes people are like, oh, you should use multi-threading. You're like, do you really need it? Like this is a case that demonstrates when you might need it, like you're sampling, doing something at a lower priority, and you still need to have good user interaction or good user interface that's like a serial terminal or, you know, neopixel giant display, and you can't miss timing for those. So that's when a real RTOS, or excuse me, a real-time operating system comes into play. Also, funny fact, the ISR, the interrupt service routines, takes like 20% of my CPU. I know. You're like, why does it take so long? But the whole chip has to be like, okay, stop everything. Like, destroy the house and build a new house. Okay. Exactly. And if I were to do it again, I'd do it with DMA. I'd do it with direct memory access controller that just dumps all the audio stuff into a buffer. Sometimes you don't have DMA, you know, you have to learn how to do it out. This is awesome. All right, so people can learn all about this. You have a video or a tutorial? Yes. If they head to the DigiKeys YouTube channel, they can see it. I'm doing the RTOS series. I think episode seven was just released. I'm going to 12. And if you give me just one second, I want to share screen. I want to show this real fast. I will be quick. It's good old putty. And you can see me typing in putty really fast. And I can type RMS and it gives me that. So nothing is slowing down, even though this is all doing the LED stuff while I'm typing. So everything's happening all together at the same time. Yay! Interleaving instructions. Good work, Sean. All right, so we come by next week for more real-time news, the real-time update from Sean. Thank you, Sean. All right, next up, it's JP, JP's workshop. What's going on, JP? Hey, well, I just published a guide this morning on doing the MAGTAG Sports Viewer, Schedule Viewer. If you can show my shared screen, I've got it displayed here. And the cool thing is that now the date is correct. Yay! The date was off if the game time was past midnight Zulu time, because that's the Greenwich Mean Time is what ESPN's API uses. And so my little hack-together date-time thing wasn't aware of that. I forgot. So we now have actually a really nicely written library, the date-time library that was updated by Melissa to use ISO time, which is the time standard that this happens to use. And now we can see we've got a few games. We've got eight games in women's NCAA basketball happening today. This has dumped all the JSON data that we need to the device when it does the download. And now it's really quick to update. It's just essentially the refresh time. It takes a few seconds, so we don't burn out our e-ink display. And we can go through and see, oh, here's the next game that was listed. Actually, this one is final already, so it shows the score on it. You can go pick a bunch of different sports. So the guide will take you all through that. So that's what I've published the new guide on. And now I've got my new thing, which is what I'm going to be working on tomorrow on John Park's workshop. And I went into part of this last week, which was taking a Raspberry Pi Pico microcontroller and turning it into a macro keyboard or up to a 27-key keyboard, actually. I built a circuit board for this that just uses a bunch of GPIO with these little key switches, this is a mechanical key switch here. I built the PCB inside of fritzing. And so a lot of people are used to the much scarier world of Eagle or KaKad, and they might find that to be a barrier. Well, I found actually that the fritzing PCB design works pretty darn well now. I was able to do this PCB inside of fritzing and send it off to, I got these at JLCPCB. I also have some coming from Osh Park. They're going to be in the very cool After Dark Black. And I have gone ahead and gone through a few stages of assembly. Here's me laying out just with some paper. I like to mock things up in paper that gives me the key spacing and make sure that all my keys are locked down before I solder them in. And the big reveal, and we'll go into kind of the assembly of this, is this little macro keyboard I've built, which I'm going to use for some different video editing tasks, but you could assign anything you want to the keys. It's in circuit Python, just shows up as a drive when you plug it in. It's really easy to go and edit this text file, so there's no need for Arduino or QMK or KMK or any fancy stuff. I'm sure those are cool, but this works really well right out of the box. Very, very simple. There's no scan matrix. It's great looking. I mean, look at that. That looks all of Eddie 101 style, right? Right. I love these keycaps. Yeah. So I've got a couple different keycap styles that I'm going to do stuff with. These are the other ones that I've got, DSA profile, but they call these ones teletype, and they go in and out of production. They're from a Delvin plastics, and they're super cool. They have a great, great look to them. Yeah, we want to do the easiest beginner keyboard project for like, you just got a Pico. You don't know anything about electronics, but you can make your keyboard, and that's what you're going to publish. Good work. Yeah. Yeah. People will be able to follow that, and they can hack it apart. It's actually pretty easy and fritzing to turn this into a four key keyboard or a three key keyboard or whatever you want. Yeah. Awesome. Okay, wait. I think we're going to tune into that tomorrow. It'll probably be a popular ship. JP's workshop, soon to be controlled with a keyboard. Next up, Trevor. Hey, Trev, what's going on this week? Yeah, I'll show you guys some AR stuff today. All right. So this is what I've been working on. Let me share my video. Can you see that? Yeah. Yeah. Awesome. Awesome. AR app. Yes. This is Info to AR, and I'm going to show you what I've been up to. So I've been, let's see. This is our BLM board, and it'll, as soon as it scans, there we go. It shows you all the components that's on the BLM board. And yeah, it's working pretty well. Tracking is working really well. And if you turn it around, bam. Nice. That's so cool. Awesome. So yeah. Wow, look at the angular. It totally tracks with the angle too. I know. Yeah. It's doing its job. I love it. It's cool. It's like people could be wearing it. You'd use that, and it would show up on their shirt. Yeah, it would still show up on that. Yeah. So yeah, I'm working on that. This is our workshop board that folks can check out. It's on Adafruit, and you can also go to adafruit.com. You can also go to the app store and download our AR app. When we push this update out, you'll get this. We're adding new boards all the time. Oh yeah. Thanks guys. Hi, sweet. Hey folks. So this week, we have the fairy wings as a guide and a video, so you guys can check that out. Yeah. So this is running off of some feathers in the feather wing. It's programmed in Circuit Python. This is a collab project with Aaron St. Blaine. I got the kind of crow style wings. I also got the, we also made kind of some fairy wings as well. These are made out of some Bristol board and cut up on a CreeCut vinyl machine. But you could also 3D print them, of course, and the point is to kind of make it like a platform for any type of wing. So if you've got dragon wings or angel wings or bird wings, they can fit. You can kind of swap them out. So we wanted to make them modular. 3D printed kit prints without any support material, which I'm always jazzed about. And yeah, they're kind of the simple take on animatronic wings. Yeah, and they're really easy to reprogram. You can use pension or change the speeds. You can change how many times they flap. So I think it's like a building block for folks who want to add wings or any kind of back-mounted appendages to their cosplay. We did a long time ago, an animatronic tail that just lags back and forth. Now you can be like a winged wolf. Yes, yes. You can add some more appendages, have some ears and your tail. So yeah, we'll have all the appendages. So our second wings got a million years ago. We did a EL wire one. So we have a how it started, how it's going. We wanted to have an animatronic one, but we didn't want to have one that would be too difficult for people to edit and change very easily. Circuit Python came along. Now your wings show up as a USB drive and you can just edit the code right there. You kind of look like a crow sort of. I keep reading all these stories. I don't know if they're real that people are like, I adopted a crow and I trained it and now it protects the entire neighborhood or I trained it to like get a job and it like goes to vending machines. No, it looks like, you know, he's like, he's like a dark angel, but he's like, you're happy dark angel. I don't know. I don't know what's going on. So it could be a crow. All right, you know, you shouldn't wear this all the time. Yeah. Yeah, maybe. Coming next week. Okay, Scott, you know, it'd be really funny is if two people had the same project and in one show and tell, we've had like four people to say what we're talking about. If you had like a volume meter based on RMS. So it's okay. Yeah. So this is the reason I'm showing it is that I just got PDM in working in CircuitPython on the RP2040. So what I have here is a PDM mic. It takes a bunch of one bit samples and we process it to produce a waveform and now we're detecting the volume based on that. So no OS here except CircuitPython. So we're just gathering a bunch of samples, competing the value, changing the LED and then gathering more samples. So there is a bit of a gap between what we record, but not much. It's going really well. It's using the PIO and DMA. So that's pretty neat. Yeah, really powerful. Cool. And what's interesting is, you know, we like PDM mics, but another thing that's interesting about this is, you know, the TensorFlow code for speech detection uses PDM microphones for input. So this could be a stepping stone for us to do more machine learning on microcontrollers with CircuitPython as the front end models, because a lot of times it's like, you load the model, then you just call the back and TensorFlow, that could be, you know, the C code could be running in C, but then use CircuitPython to interface with it and get sensor data. Interesting. Yeah. Well, it did cross our minds when we were deciding how much to leave in the flash for CircuitPython is like, oh, I wonder if we'd pick a Meg, maybe we'd be able to fit the TensorFlow stuff in it. Yeah. Maybe. Good stuff coming. A lot of audio stuff in CircuitPython for the RP2040. Good stuff. Yeah, lots of fixes too, generally. So always keep on the latest stuff. It's improving a lot. And what's going to be your deep dive this week, front end? Good question. I think I got a request to talk about the build system stuff I want to do, but the thing that I need to do before that is all the flash stuff. So I'll probably talk about how I want, like I have a pretty big grand vision for like how we could have like one central location of all the data we need to know about different flash chips that we could then use Python to convert that data to all the different forms that we need it. So I think I'll, I'll at least talk about that this week or maybe even start it. All right. Yeah, my favorite thing about the JITIC flash standard is not really a standard. Yeah. Yeah. Like usually, like what we have now is like, you can for a board you say this is the device I have, but that's all implemented in C. And there's a couple cases, RP2040 and IMX, where it's actually needed in a different form based on the boot ROM. Like the boot ROM needs to know it. So having some other way that we can easily get into Python and then generate whatever form we need would be really nice. So I'm going to start with that. Okay, sweet. Thank you, Scott. Soon in this Friday for the exciting continuation. And next week, next week will be Thursday. So okay, that's up on Thursday. Next up, Si, why? Hi. Can you hear me? Yeah. Cool. So a while ago, you actually shared a contact thermometer sensor on your NPI segment. That actually gave me an idea for my project. So my workplace actually requires me to conduct daily temperature measurements. Oh, okay. And fill out a daily survey and whatnot. So I actually built a Bluetooth, so I used the thermometer sensor and I interfaced it to a STM32 Bluetooth module to actually do my temperature measurements. I did it just for fun. You know, my workplace is not so rigorous about collecting the temperature data, but I wanted to do this for myself. I got it working with the, I think the module is from ST microelectronics. I think it's called the blue energy module. And interfacing the temperature sensor was quite straightforward. I got the first prototype working and now I need to build one without the headers so that I could wear it as a pendant and actually start using it. That's so cool. I'm glad that you were able to take something you had to do and turn it into something you wanted to do. Yeah. And the INMPI series is why we share those things because that's why you watch them. It's like, oh, that's a good, that's a neat idea, this neat chip, like what can I build with it? Yeah. Yeah. It was fun. Yeah. Okay, right on. We'll keep tuning in and we'll keep trying to find good stuff so you can later build something. All right. Next up, we're going to go to Joey and then we'll wrap up with Liz. Take it away, Joey. Hi, y'all. So I've been hacking on this little baby circuit board, which is a kind of a brain replacement for this Casio wristwatch. I've actually got one of them inside of this wristwatch right now so if I can share my, I can share my quick time video here. Can I see what I've got here? Yeah. Yeah. One second. There we go. So yeah, this is just running some very basic code that I wrote. It's counting up to 65,000. I can press the mode button to cycle through a couple of different modes, red LED, green LED, and really showing it off very well. Green. And then the counter here. But yes, I've never really worked with these segmented LCD displays before. So I use this part called the SAM L22, which has a built-in segment LCD controller. And what I'm really excited about is it also has native USB. So the board has a little cutout that you can plug directly into like a USB cable. And I'm currently trying to port this to, sorry, trying to port tiny USB to this so that you could actually reprogram it from your computer. It's got a little 3.3 volt regulator so you can, normally it runs off of a coin cell inside the watch. So when you plug it in, you can kind of program it once and then put it back in the watch and have it run whatever code you want it to run while it runs in your wrist for hopefully months. It's a really low-power microcontroller. It's on the order of like 10 microamps while it's up on the screen and sleeping. So yeah, it's still really early days, but I think once I get tiny USB ported to it, it's going to be really exciting. We definitely need circuit Python castier watches. That would be so sweet. I love that idea, especially with the addition of the pin alarms and the alarms in general. It doesn't just work. I mean, it's a SAM L21? Yeah, it's a SAM L22. It's a little bit different. The registers are laid out differently from the SAM D. We'll get there. All right, cool. If you need any help, post up in the tiny USB GitHub and TAC. It's been super helpful getting all sorts of chips added and we'd love to get this chip added and then hopefully the rest of the support wouldn't be too tough, but yeah, it's always good to see. I do remember seeing the SAM L21 chips and being like, oh, that's kind of cool, but ultra low-power Cortex-M0s. It looks exciting stuff. Yeah, I love the segment drivers. Cool. All right, congratulations. People love hacking casios. Great inclusions. All right, let's take it away. Hey, how's it going? Tonight we're joined by a cat Harriet. But I've been experimenting with some 3D-printed art to make blank Eurorack panels. Basically, you bring the SVG-filed art as a sketch on Fusion and then you can extrude it. I did this planet one that's raised and then this one kind of ended up being kind of David Bowie style with the stars as a cut-through and then the lightning bolts and then I did a layer change for the filament swap rather to get different colors and then this one, Sailor Moon, so let's say Yusagi's blanket that she has on her bed. So we got the stars and the moon and the bunnies all with some filament swaps. So it's just a whole side art project. Oh, the texture. You know, it's got the depth of texture, really cool. Yeah, I really liked how with this one you got the different color effects, but it still doesn't come out like bulky, which is nice. The bunnies are raised, but that's it. All right, awesome. Cool art. Thank you. All right, make some synthesizers. Thank you so much, Liz. Yep, we got through everybody tonight. Thank you so much. Thank you very much. Everyone will be here every single week, some 30 p.m. Eastern Time. We'll either be Lady Aida and I, or sometimes we have other Aidaford team members. Stop by every single week. You can show your projects, retro stuff, pretty much anything that you've made or collected. You can share it with us. It's the longest running show until Ask an Engineer starts in about five minutes. Thanks, everybody.