 and welcome to this lady. Hey everybody and welcome to my desk and happy new year. We're celebrating. We had a lot of people in from out of town this week which is what we call see someone about folks. Yeah, so we moved some shows around everything. We'll be back on schedule this week. Ain't nothing gonna stop the show. Lady, what is on your desk this week? Okay, so we didn't get as much hardware as usual but we still got a significant amount going on. So let's look at some prototypes on my desk. I'm gonna go to the overhead and we'll kick it with that. So first off, a few weeks ago, we did the TFT touch shield for Arduino, the resistive touch shield, the STMPE 610 and 811 chips did not make it through the chip shortage and so, and like TFT prices kind of fluctuated a long time. So we've slowly been doing all these revisions. We're up to like 400 plus revisions of many boards. Most boards just need like different crystals and different diodes and different power, whatever, lost fats or whatever, regulators. But this TFT feather wing is a really popular board that people love, works with any of our feathers like this RP2040 feather. Or in this case, it's gonna feather M4 on it. These are very popular. They add a 2.4-inch color touch display. What is this? I'm not gonna, it's a little washed out, of course in person, it looks a lot better. Screens of screens of screens always don't look so great. 2.4-inch diagonal, so it's nice and compact, has resistive touch screen, so it's inexpensive. You know, on the back, these nice socket headers to plug your feather into. It's like perfectly, even along the edges there. And then you get SPI TFT display with ILI 9341 chipset. Also on the SPI bus micro SD card, and then on-off switch and reset button. And then this was the resistive touch chip that like I said, was discontinued. So we redid the whole kit up a little bit. So the reset button is now right angle because it was tough to press it when you were, if you had it behind. Still have the feather headers in the same location, that didn't move. And instead of the STMPE, we have the TSC 2007, which is an I squared C touch chip. So not SPI, it's I squared C now, but it works really great. Also stuck a STEMI QT port here because why not make it really easy for people to plug in additional sensors? You can have this display, you can use whatever feather ESP32, 8266, NRF. Just use showing it here with a feather M4 and then have the touch screen demo working. So it's pretty much the same as the shield, very similar. So I just have to update the example, but this works great. You can change the I squared C address here. The only thing I have to kind of make a decision about is on the original, this was TFT DC, TFT chip select, I don't know why. There was a reason why I had DCB10 and chip select B9. I think that ESP8266, like they had a pull up or a pull down, whatever I had to choose these pins. And then because this wasn't using SPI mode, this had a chip select for the resistive touch as well. So that's RT is the resistive touch chip select. Whereas on this, there's no chip select. So instead I have that pin B, the backlight, but I'm actually thinking of swapping it with the IRQ pin. So the IRQ pin is the default available like the extra GPIO that we don't use, but you know, I squared T, it's great. So this is working nicely. So I'm just gonna do a couple more tests. I'm gonna test the SD card and then, let's see, press the reset button. And then this was waiting for the serial monitors. I have to close and open it for it to pop up. And then we looks great and works great. This was just a touch chip, the TSC 2007, which we covered in a previous show. We did the great search when we found it. Everything's available and in stock. It's amazing, wonderful. So that's one prototype that got done. I also got the final PCBs for the HUSB 238. And it works wonderfully. I'm swapping up that tester and we'll put these into the shop soon. This is the dummy USB type C sync. So people, those errors. This will allow people to really quickly connect to your favorite USB type C power supply that can supply between five and 20 volts. And then you can use a jumper or I squared C. So this came out very nicely and so far so good. So I think this will be really, really useful for people. We've already talked about maybe doing some projects where you take some Halloween props and make them USB type C compatible. So that's that prototype. And then hold on, what was it? What else? Oh, right. So you can check the USB host stuff. So let's go to the computer. Because I don't have the finished board yet. So this is all good. So the next thing we're gonna do is we recently, this is a project that I had tack. Who does TUSB work? I had him work on this for a bit and I finally got this merged in. I mean, it didn't take as long as April. He's actually just busy with like a bunch of other projects. But we have USB host support for those who remember for the RP2040 host feather. So this is an RP2040 and we took advantage of the PIOs, the state machine that can do like bit banging to add USB host thanks to Senok on GitHub who added the initial proof of concept. We then added that support into TUNI USB so you can have USB host in Arduino and circuit Python through TUNI USB. So it's kind of like a very well-supported, lots of peripheral functionality, so mass storage, HID, CDC, so you can connect to like things with FTDI cables. And I use it for a lot for testers. So that's actually kind of where it first started. It was like, oh, I really want this for testers because of my original, what I've been using to do USB host testing, the TINI, TINSI 3.6 got discontinued. So you see there's like, it's like a domino. It's like, free scale stopped making the chip in the TINSI 3.6. I saw that it was about to become end of line. I was like, quick, I need an alternative. You know, let's use this proof of concept and USB host. But then it kind of blooms into a lot of people using the USB host capability to build projects that are, you know, HID remapping or just like interfacing with hardware that has USB. Like we did the IntelliKeys project. For example, like reviving very old devices that don't have native USB drivers and then turning it into like a keyboard or mouse. So giving it a class interface. Problem is that you're using like every capability of the RP2040, like I think we use one core and either one or two of the PIO machines. And so if you wanna do USB host, you can't really use new pixels at the same time. And, you know, one of your cores is just like busy, just like bit banging USB host. So we wanted, you know, I had this idea of maybe adding support in TDSB for the Max 3421. And this is a chip was not a serious thing. I was actually surprised that this chip made it to the chip shortage because this was like, this is like prime chip shortage, non-survivor bias. You know, it's a chip that has, it's very old. It's like, it's easily a decade old. It's been used a lot, but it's been kind of replaced. Not a lot of machines need USB host over SPI. And that's what it is. SPI over USB host. Sorry, USB host over SPI. It only does like one endpoint at a time, but you can kind of round rob in them. So, asked TAC to add support and like just close this last week. So we can now use this chip in Arduino and hopefully soon in circuit Python with any family, not just RP2040, ESP32, NR52840, you know, or SAMD21. And you might be saying like, well, some of those chips have native USB. Well, like the ESP32 classic doesn't have native USB. So that would be a great opportunity to use this chip to interface with like disk drives or, you know, mouse and keyboard, but often chips that have USB host, you, it's shared with like, there's only one set of pins that can do it. It's shared with USB peripheral. And so if you wanted to use USB host, you would have to give up your main USB connection. And I find that kind of untenable. I feel like if you're going to do USB host, it has to be a secondary port so you don't use your debugging uploading. Cause he wants like unplug, re-plug. I, you know, I know that SAMD21 has USB host support, but it's like a total pain in the ass to use. So I designed a feather wing. Let's hide this side so we can see more. And this has the Max 3421 in QFN format. And then it has some crystal passives. And then over here is a power supply. So I'm using, this is the TPS 21023, which is we've used it in a couple, and we use it in the USB host feather and a couple of other things. It's great for like up to an amp of current. And so even if you're running the feather off of the battery that provides you like three or 3.2 volts, you can still provide a nice clean five volts output to the USB. And then the, yeah, this is the USB in and then, or battery input into the boost converter. The enable pin, I tied to one of the GPIO on the Max 34. So the Max 34 has all these GPIO, although you know now that I'm thinking of it, I should probably have that on a normal chip GPIO because when you're using this chip with TV USB, you may not have easy access to get it to like do the GPIO part. So I'll probably pull this off. It has, you know, this, yeah, I guess they had just a lot of pins left over. They're like, oh, you could do like pin control and stuff with the Max 34. But yeah, it's an interesting chip where you can control it over SPI. And then it can do USB host over, you know, USB 2.0, it's not gonna be very fast, especially since you're funneling everything over SPI. And this chip is used in USB host shields and there's like the zillions of those. Like this is a very common, like if you've been Google for like USB host shields, there's just 10, there's the official Arduino one. And you know, of course this will be supported there. And then there is, you know, this generic one, SparkFund has one with USB-C, another generic one. This was originally, the shield is supported by this repo, USB host shield, but as you can see, there's like 218 issues. They had to have support for like every single device that you could use it with. And I think this further will work with this, but I kind of, I'm focusing on like, let's make sure it works with the USB, teeny interface, sorry, the implementation that we've got. And you know, I don't kind of want to have it be a separate way of using it than this library, which is, you know, it's 10 years old. It's not super maintained. I think they did the best they could, but as you can see, there's like every single device like this Xbox, HID, CDC, Prolifics, DC, FDDI. A lot of this stuff, we have supported in TV USB and then maybe we can make it easier for people to add support for new chips. So we shall see. Also, this is GPL and, you know, TV USB I think is MIT or BSD license and we like to keep that licensing for CircuitPython. Okay, so that's that. That's kind of what I'm gonna hack them on. So not a ton of new hardware. I got that one display and the USB host. Okay, so let's go to the great search. Great search where did you buy? Thank you so much, did you key for making this segment possible? This is when Lady Adidas is your private engineer and help you, yes, you find the things that you need on digikey.com, Lady Adidas. What are you looking for this week? Okay, so a few weeks ago, we talked about these SWD connectors. So I think we were showing off like the Metro S3 and it has a two by five, a 10 pin, 0.05 pitch connector that's often used for SWD, but it can also be used for in this case, JTAG. SWD is Arm Cortex only. And it's how you can program the chip directly. So like if you don't even have a bootloader on it's just like a raw chip, you can program it. Also great for step debugging and tracing. So it's a little bit more advanced usage, but it has to be used at least once for programming in many cases. And if you look at like, you know, I think our NRF 52 Pro chip, you know, this is for use with Minute. And so, you know, people who are using the Minute real time operating system, they're going to definitely want to have a SWD port that's like very easy to plug into. But for a lot of chips, we don't necessarily have a port available. For example, SAMD 21 Feather. So let's look at like our Feather M0, you know, Cortex chip and you have to program it with SWD. But to do that, what we use is a pogo jig. So on the bottom here, you can see the, sort of zoom in, SWDIO and SW clock. And you know, I totally sympathize with people like, hey, I want to do step debugging with this Feather. And it's like, I have to solder to these pads. Yeah, because it wasn't really designed for use with debugging. It was designed for programming it in the factory. I load a bootloader on it. And then you never need a SWD programming again. Like I said, some people want access to it because they want to do low level development. But it's a trade-off because sometimes you, you know, you don't want the bulk of having, sorry, let's figure out which Feather. I can't remember the part number. Feather RP, here you go. Sometimes you don't want the bulk of having the connector on there. It also costs more money. It's just another, you know, failure point. Especially if, again, you don't use that. Like I don't even need SWD program, the RP2040. It has a ground bootloader built in. So I leave this spot blank. And I think on a previous great search I showed, you know, you can buy through hole or surface mount SWD connectors and plug them in. But a lot of people like, or just like, that's really annoying. Let's come up with a new standard or a new way of connecting that's press fit that you can like pop it in and then remove it when you're done programming because with this you do have to solder in the connector. This is not a, these holes are just orientation for the connector. They're not like a press fit. So a lot of people use this system called tag connect. And it's a license free footprint that you can put down on your board and you can see there's like these four large holes and then these three smaller holes. And you can often get away with just the three smaller holes if you need to reduce the amount of space, although then it won't lock in place. It's just for like press to program. So these three holes are orientation holes and these four large holes are like a snap in. And then these are the 10 contacts that you would use for JTAG or SWD or actually ICSP or whatever uploading system. And then you would get a cable and the cable has these Pogo pins. The three orientations pads and you don't post so you don't put it backwards. And then you can see these are little like clip lock pieces that kind of hold it in place. So personally, I don't use tag connect just because I don't know I have a tag connect adapter cable here and like my bag of debugging boards because I do see a lot of boards that have tag connect on them. I personally just go with, you know, a two by five connector or I just solder in pads. But if you are interested in using tag connect, it's very common and there's definitely ready to go footprints for like LTM and ORCAD, EGLE, CAD, whatever. And it's available in a couple different configurations. So most common is your standard 10 pin SWD and what's nice is even here they give you a cable that goes into the standard J-Link or, you know, MCU link or STM link, whatever. Everybody's got their own brand of programmer like Simpsastap compatible. This will work there and then, you know, it's $40. It's an investment, but you can use it multiple times. Also, this is very often used in manufacturing lines. You know, you want to program separately without using a bed of nails polko pin. There's also, it comes in different setups as well, not just 10 pin, but six pin, which could be used if you wanted less space. You can still get power, ground, reset, SWD clock, SWD IO and then like, you know, one more pin for whatever. Or if you're using this with AVRs or microchips, you know, power, ground, clock, data in, data out reset. So, you know, you can use five, do six pin, 10 pin. This is gives you to point one inch connectors. They also looks like they have little accessories that can be used with tag connectors as well. But, you know, basically the company tag connect, which is not, they're not an official arm standard. It's like a separate company, but a lot of people who do arm development use it. And then this is a, I think a mechanical holder, the whole stuff in place, maybe on the other side. Okay, so this is tag connect. Again, I haven't used it, but it's very, very popular. I think if you're doing any kind of development or versus engineering, I would pick up one of these anyways. Like, again, I have one just because I see so many boards that have tag connect that when I do need to program them or debug them, you know, you could just plug in. A lot of dev boards also use tag connect because again, it's, it's slim, it's small and doesn't cost anything to add the footprint. I also saw this cool tweet from Arturo and Abinav937. And look, it's not that you can't use tag connect. It's wonderful, but it is $40. And maybe you're like, look, I don't want to have, you know, if I have, if I'm giving away the programming cable or I need like 10 programming cables for my manufacturing line, maybe you don't want to spend 40 bucks a piece. There's an alternative, which is interesting. I've never seen this. This is an IDC connector and it looks like it's 0.1 inch pitch from Worth Electronic called SCED and it's press fit. So you see this, these contacts are pressed fit in. And if you use their footprint that's published, you can then have it for, you know, six or I'll show you, they have 10 pin. Another nice thing Arturo points out is these two holes are not the same size. So it also has the orientation protection. So people will plug it in backwards. It's kind of cool. So for tag connect, you know, I recommend again, just getting one of these that goes straight into your SWD port. So this is the TC 2050 IDC, but for SCED, and I just thought this is a very cool connector, even if you don't necessarily use it for programming, it's so hard to find good press fit contacts. And these are not too expensive either. On the connector side, as this is under, even though it's, it's a cable, it's under connectors, you see they actually come in, they're all two row, you can get them in four through 20 pin, and they have the cables ready to rock. So this is a look at two by eight, yeah, two by eight. You also just get the, you know, if you want to make your own cables, you can crimp them. But this looks like perfect six pin. And then on the other side, you can solder to it or you can cut it. Or you can have the, you know, you could have an adapter to take it to whatever programming you want. And these are like a lot less expensive, you know, for $4, $4.50 instead of $40. They're bigger, but, you know, they also come in multiple, like longer arrays. So if you're like, oh, I want it for, you know, Scott was showing off on his deep dives using the trace. Like there's a, a SLD like quad trace connect that is much wider than the standard two by five. I think it's like two by 10. You could use a press fit for that. Again, chunky, but inexpensive. And it looks like it's, you know, easy to use. So two good options. Here it is even up to, yeah, two by 10. So you can get up to two by 10 for this press fit. But I think it can be useful for other uses too. I've never seen press fit IDC connectors. So I'm going to like put that away in my brain for later. So two good options for non-soldering, non-permanent connector, SWJ tag or debugging. That's a great search. All right. That's just lady to almost 30 minutes on the market. Keep these around 25 minutes. Sometimes they're two hours. Sometimes they're one hour. Sometimes they're 30 minutes. And that's where we ended up. Oh, I had one more quick, just super, super quick. I mean, I was trying to get to everything. So I did do one more. Go to your computer. Yeah, go to my computer. I forgot, hi. I was like, there was something else. So one other thing I did is, and I posted the code up so folks can look at it later, is I wrote another library used using chat GPT. We have this great debouncing library for circuit Python. And it's wonderful. It just handles the annoying like it, you know, is just pressed and just released. You know, you don't want to like check the state. And what if it's inverted? You want to like handle inversion back and forth. And GPIO expanders too. I couldn't find an easy lightweight debouncing library for Arduino that could handle GPIO expanders because most assume that the pin that you're debouncing is on an interrupt or a, you know, a pin on Arduino. Whereas I'm using it for something that's going through an expander. And so I wanted to be able to manually set the state from the expander and then be able to test like, okay, did it get pressed or not? So this is one of the things where I was actually working on something else and I needed the bouncer. And I was like, oh man, like I kind of was trying to use all these libraries. I none of them quite did exactly what I needed. I was like, oh, I don't want to like, you know, I was like starting to get veering off of my project, which was trying to, you know, get this camera stuff working. And I was like, oh, I have to write a debouncing library. And I was like, I was like, oh man, I'm just going to lose like two hours. But then I remembered I could use chat GPT to write it. And I posted up the correctly posted the share link. Mr. Lady. I messed up twice. I got, I didn't share it. And you can see this is a non PDF non chip library. It's just like a raw library, but it did a really good job. You know, you can see, I kind of take it through the process and took about an hour total, but it really was like really fun to write it. It did the documentation and like little things like halfway through, I realized like, oh, you know, I want to change how I do the polarity stuff. And it could like, we wrote all the functions for me. So you can check it out. And then again, at the end it's like, okay, add the headers and set the license file and everything. And it did a great job. So, you know, I, you know, I was asking at the end about how long it took. It was like, you know, I took a little bio break here and there, but it was about an hour total. But, you know, everything was documented, completed, past CI, only a couple little typos and mistakes. And of course I updated the documentation because the documentation it writes isn't very explanatory. It's very like bare bones. But so I'm still doing a lot of experimentation with chat to PT and I'm seeing more people do that. I think it's a great tool in the tool chest. So check out this debounce library. I submitted it to the Arduino library manager and I have even a simple test that was added. So that was yesterday. Okay. So now I'm really done. All right. If you say so. Yeah. Okay. Good. So couple, that was the bonus director's code. Yeah. Encore. In addition. Okay, everybody. We'll see you throughout the week and more. That is just glad you did. Happy New Year everybody.