 Hey, hello, and welcome to the show. It's me, John Park. It's time for John Park's workshop, and here we are. Ready to go. It's been an exciting morning and early afternoon getting prepped for the show today. All kinds of things were breaking, so it's gonna be exciting and fun. And I'm full of coffee, so let's do it. Hey, thanks for stopping by over in the chat. I know that we've got C Grover who just popped in over here in our Discord chat, which looks a lot like that right there. And if you wanna join in our chat, if you're wondering where are all these people talking, that's it, it's our Discord. It's adafru.it slash discord. You'll get an instant invite and you'll wanna head over to the live broadcast chat channel. We do have a whole bunch of other channels, however, that are great for project help, help with Circuit Python, help with 3D printing, show and tell, off topic, pet photos, all kinds of great things there. So hello, Andy Calloway, Gary Z, Abadouzz, Abadouzz. I don't know how to say her name, I'm sorry. Nice to see you all and hey, Dale, thanks for stopping by over in the YouTube chat. I do have that one open and I can keep an eye on it. And I got my iPad over there, so hopefully I'll be able to see what's going on in the chat while I'm at the workbench today, which we'll be spending some time over there. I've got some stuff set up that I'm excited about. But first of all, let's do some housekeeping. So first of all, I wanna mention our jobs board. If you are looking for work, if you are looking to hire someone, this is a great place to check out. It is the Adafruit Job Board, jobs.adafruit.com. Let me bring up my webpage here and that's not it. But this'll be, just go to jobs.adafruit.com. You can see here, someone's looking for a creative engineer fabricator in mechatronics at Shopcat in Brooklyn, New York. That's a pretty new posting. As of last week, and you can see there's even some positions filled here. We'll edit it if it opens again. So there's some movement going on over there on jobs.adafruit.com. It doesn't cost anything to use. You can just go there and fill in your information if you're looking to post your resume info or if you're looking to put a job placement. We won't automatically include that. It actually is all vetted through PT and LeMore. So they will have a look at things to see if they sort of are a good fit for our community. So that's where you'll find some good job info, jobs.adafruit.com. I've got this show on Tuesdays. Right there, it's called JP's product pick of the week. Sometimes it looks like this. That's what it looked like this week. And every week I go through a product. Sometimes it's brand new. Sometimes it's an oldie but goodie like this one. This is product ID 259. So a pretty early one. I think we're up into the 5,000s right now for IDs in our store. I go through a product. I show you how it works. Go through the specs. Take a look at the data sheet if there is one. Do some coding examples if that's pertinent. And there's a huge discount. This week it was 50% off on this great USB LiPo charger. Here's a little one minute recap in case you missed it. The USB LiPo battery charger. It charges in three stages. It does a preconditioning, it does a fast charge and then it does a trickle charge. It tells us that we have power with a little red LED here. And then this is indicator that is yellow right now that tells me this is charging. And then when it gets to a full charge and it's just doing the trickle, that LED turns off and we instead get the done or green LED to light up. So if I have battery plugged in, you'll see that immediately powers up the device. Now if I want to start charging this, I can just plug in and it won't interrupt anything. You can see the power is still running over here. There's no hiccups there. And now we are driving this either off of available battery power or over the USB. It's never gonna turn that device off. The USB LiPo battery charger. Yes, you get my hand. All right, let's get set up for this. I've just got to bring up my coding window. Is mic off? When was mic off? Was mic off when I said, let's do the circuit Python Parsec? Well, I think we're back now. So hopefully that is all good. Thanks for the warning over there in the chat over the Discord. Mike, yeah, I guess I came on without a mic. How about now? Have you got any audio? Did you hear the Parsec song? My software is claiming that I'm making sounds. Let me check the chat. Audio, good now, thanks. Okay, good. Great to know that that's working before we dive into this. And now let me bring up my little coding window here. All right, let's jump over to this example. For the circuit Python Parsec today, I wanted to show you how you can scan a Wi-Fi network using an ESP32-S2 based microcontroller. Right here you'll see I have a Feather ESP32-S2 and I have a little, just a tiny little bit of code here that you can see that allows us to scan the networks. So here's how the code works. It imports Wi-Fi, then we set up a little list called networks, it's empty to start with. Then for network in Wi-Fi radio, to start scanning networks, it appends the name to that little array. Then we stop scanning the networks, we sort those based on the strength of the signal and then we print those out. So here you can see when this runs, my little antenna there just sniffed around and it found three SSIDs and it gives us our signal strength on those. I think the strongest is the lowest number there and then it's done running. I don't know if we'll get any different results if I kind of wave it up in the air. Let's rerun that, so I'm gonna hit control D. Whoops, let me hit control D and run that. And hey, we picked up one more just by virtue of me holding that up a little bit higher. So you can imagine you could bolt a little screen on there and have a little Wi-Fi SSID sniffer that's pretty portable, maybe put a little battery on it. And that's how easy it is to sniff for Wi-Fi networks using CircuitPython. And that's been your CircuitPython Parsec. Yes, CircuitPython. So that was actually, I'm so glad that went well once we got the mics sorted out because that was one where when I had, this was fresh out of the bag. I hadn't used this Feather ESP32 S2 and it was one of the few that shipped out early and didn't have a boot loader on it. I had to go through the sort of fresh boot load using the ESP tool on Chrome to get this thing flashed. And at first I was like, uh-oh, am I gonna make this in time? It was kind of a last second thing. So, whew, glad that worked. And thanks to our good friend, Todd Botte, who can't join us. He's not in the chat today on the show, but Todd Botte had a nice example code on hub for doing a little Wi-Fi sniffing. I also imagine that, I can't remember if this one is a, I don't think this one is, but this one has a coprocessor. The different Pi portals have an ESP32 coprocessor, if I recall correctly, and a M4 chip maybe as the main chip. So these may be able to reuse that code. That code of just importing Wi-Fi, that's pretty specific to the ESP32. Oh no, we have some buffering going on. That's too bad. I had started that project originally using one of our airlifts, but I think the code I needed for that is different. I couldn't just install using SirCup, install the Wi-Fi. All right, so hopefully the streaming buffers will clear out. Looks like it's still running in some locales. Looks like in fact, the Facebook stream looks pretty good. I don't know what's going on with YouTube. So I'll give that a minute to calm itself down. And he says it's good now. All right, great. I suppose I could, yeah, it's funny. The health warnings I get on YouTube don't seem to have a lot to do with reality. They're not very helpful, unfortunately. So if we're good to go then, what I wanna do is start talking about the project of the week, which involves this guy right over here. So let me move my base of operations over to the work bench. Head on over here. So grab my coffee on the way over there. So you may recall, some people may recall, I had, oh, I've got a light out. Let's see, is it gonna, hey, whoa, that's bright. Okay, I had picked up this at an estate sale. And this was probably a couple months ago. It's a lovely Model 500 Western Electric telephone, real standard sort of in the U.S. at least. This is the phone that we had here for decades and decades. I grew up with these before touch tone became as common. And it's a rotary dial phone. You never owned these. These were always on loan to you by Bell Systems or whichever local bell you had once those started to split up, built like a tank. And what I wanted to do was tap into this rotary dial mechanism today. So for those of you not familiar, the way these phones were dialed was put your finger in a number, go to the right, let go, and it clicks a little switch, a certain number of times. So just pulsed that switch six times. So that would register as a six, register as a nine and so on. So let's take a look inside of it. We'll take it apart, get inside of there and then talk about how we can read those pulses and use them to create an interface. You may recall actually I've done a similar project before using this old lineman's handset. It's the same mechanism. This was a butt set or a Batinsky or lineman's handset used to climb up a pole, hook onto a line, see if it's working and still be able to dial numbers. Mechanically it's just a little bit different. You can see that the finger stop moves just because it's in such a compact area. And I had to modify this one so that I could have the dial going directly to these leads rather than work internally with the mechanism. When I did that project before, I actually clipped it onto a circle playground express and I was using make code to do it. Today what we're gonna do is tap into the dial sort of a little more properly and we'll use circuit Python in order to read pulses and then write them out as USB numbers. So one, two, up through zero will actually get written out over USB as if we're typing those on a keyboard. So that's my idea with this. So first of all, we have RJ 11 and I think these might be RJ 10 which are the two line plugs for the handset and the four line plug for going into the wall. I will actually, my plan is use a bit of phone cord to make a USB cable that can plug into this phone without having to modify it that much. So we'll see how we do on that. It's kind of a long line and I don't think it's shielded so it could be a disaster but we'll find out. So this is the pair of screws here that will unscrew to release the shell. So it's mostly just a shell sitting on top of pretty much everything else. So I'm just gonna dive in here and oh, Andy Callaway found where Lars moved to. That's disturbing, more, there we go. Okay, so there's the shell and we won't need that for now. There's really nothing much going on there. So I will set those about right here in front of Lars. And now we get to the guts of this. So you'll see there are a couple of these jacks for the handset and the main line and I think we'll tap into this one into these wires to create our USB connection there. And then as far as the dial goes, I think we should pull this off to take a look at it. We actually, it's got wiring coming off of the bottom of the pulse dialing mechanism that is connected up to this block here, which is sort of the guts of the phone. And what we'll do is just loosen a couple of screws here and you can see, getting a call, there are some retaining clips that just pop out on each side here and here. So by the way, I'm not gonna try to do anything with the ringer on here. I think these ring at 48 volts DC or it might be that's the steady line and it's even higher when it rings. So you need quite a bit of power to use this internal mechanism here. So I'm not gonna be messing with that for this project at least. But this is the very cool dialing mechanism and the way these work is they have a little mechanical governor that allows them to rotate at a constant rate. So as we turn that, let's turn to a zero, you should be able to see little flywheel here and a little governor mechanism and gearing that just like with a watch or a clock, it makes it move at a consistent rate. And that rate is important because the way the phone system worked at that time when these were in use and actually some phone lines will still work with pulse dialing and even some modems like cable modems and things like that will allow you to use pulse dialing and then it converts that into a digital signal or a modern digital signal to send to your sort of voice over IP style phone line. So this has two pairs of wires coming off of it and one of them is just simply to let the phone know that dialing has begun. And so that is a normally open switch that closes when this moves at all. And that's the pair of white wires on here. And that is used just to disconnect the sound from going to the earpiece. So you just don't hear all the loud dialing sounds in your ear. That's all that one does. So as soon as this moves, that's gonna turn off and we'll actually let's tap into that right now just to do this as we go. So I have a photo that I took of this so I know where these lines go. Doesn't actually matter which block the white wires go to the pair of them, but I did mark them. And the wires have been in this thing so long. I think this phone's probably from the 50s or early 60s that the wires kind of have a memory of where they go. So this right here, if we take a multimeter and just put it into continuity test mode, I'll hook up to these two wires and you'll hear we don't have any continuity until we begin dialing. So as soon as it starts, that closes that switch and that tells the system to disconnect the earpiece from the rest of the phone. So we're not hearing all of the dialing sounds in our ear. See, it's just any dialing that's happening. It's closing that switch. And then as soon as it finishes, it lets that switch open again. So that's the white switch. We could use that for something. For example, light up an LED or something like that to know that some dialing is taking place. That's one way we could do it. And then these other two, these little blue wires here, we'll bring the phone back into this but for today at least I wanna get in where. And if you look closely here, let me, what you'll see, and this has a little, I don't know if I can remove this little plastic cover here, I probably can. It's kind of molded to this. I don't think I wanna pop it off. Oh, I've popped it off. Okay, that's just some shielding for keeping things from contacting. So you can see there's these little leafy contacts that touch or don't touch, they're sort of springy, depending on what's going on with the mechanism. So the white wire line, those are apart from each other until a little cam moves and then the two contact each other and that's what closes that switch. Opposite is true for the blue line which is the individual pulses. Those are normally closed and then each pulse of the number dial spinning opens them for about 50 milliseconds or so. So if we connect up to this, we probably won't hear a perfect, I don't think my multimeter's fast enough maybe. So we're gonna hear it get interrupted a certain number of times, right? So it actually would have been at six times but my meter isn't fast enough. Okay, so the meter's not able to capture that fast enough but what's going on is it is closed and then it'll, if you dial a three, it'll go open one, two, three times and it'll send us three pulses. And so that's why this timing is important because those pulses need to be within a pretty small margin of error about what is it? I think 10 to 20 milliseconds apart so that they're considered part of a sequence. So we're dialing a three and not three individual ones, for example. So what we'll do, again, I'll set the phone aside for now but what we're gonna do is use a microcontroller. In this case, I've got this, let me zoom out a little bit. Got a cutie pie here that I was testing things with and I'm using a pull-up resistor and a debouncer in code so that we can just simply connect one side of the dial pulses to ground and the other to a digital input pin and I happen to be using the RX pin in this case. So with this setup, what we should get is a switch that is normally closed and that means it's heading to, I believe that means it's heading to low and then for each pulse as it opens, it'll head high and we'll register that change, sort of edge detection in the debouncer and then be able to do something with that. So what we'll do at this time is take this over to the workbench, plug it in. I was having some problems with this particular microcontroller right before the show started as well. So we may do some reconfiguring of things and I might not be able to use the breadboard but I should be able to just hold the contacts down on this one, which I think I'll use this in the final one. I don't really need any sort of proto board for this. My idea will be to run wiring from this plug, which has three wires in it right now. So we'll need four to do USB and so that'll give us power and data on this and then I'll have a couple of these little alligator clips like I did here, just running back to the terminal blocks on here if that works or we can disconnect them from the dial or go directly. So let's take this over here and see what we can get working and let me know, I can keep an eye on Discord so let me know if you have any questions or thoughts. Okay, so I will write this arrangement of things that should work. I'll pause it over there. QZorn on YouTube asks if that's the phone Lily Tomlin used to un-laugh in. That's a good question. Okay, so yeah, first things first let me just see if I can get this QDPI recognized. I don't know what was happening with it before when it was, yeah, so it's blinking. Let me see what you can see. Yeah, so that was blinking on there and let me go over to, yeah, I don't see it showing up. It's not happy. Let's just see if we can, let me see if I can reset it. Okay, let me just try to put CircuitPython back on it. We need to download that. Okay, let me, I'll show you in the browser where I'm going for fun. So here's, I'll just go to CircuitPython.org head to downloads. I'll do RP2040 QDPI, oh it doesn't like that order. QDPI RP, there it is. And I'll download the 7.1.1 UF2 file. And then you're not seeing this right now but in my finder I see the RP-RP2 drive show up, USB drive show up. And so I'm just gonna drag this UF2 onto it. And that actually should, if that works the way it typically does, that should give us all of our libraries and code that were already on there. Good chance it's gonna be preserved. So it just flashed the thing, it's restarted and it's showing up now as a CircuitPyDrive. So that's good. So now you can see, let me hide this. Now you can see over in, oops, over in Atom, I should be able to open code.py off of that drive. Oh yeah, okay, so the thing got reset, that's right. So I'll paste in, so I'm just repasting this. One thing that'll happen here is there may be some libraries like HID and debouncer that are just not by default on that image of CircuitPython. So what I'll do is I'll open up the serial REPL here and then I'm gonna save this code onto that drive. And what it'll probably do is import error, no module named Adafruit HID. So again, this is something you won't see, I've shown this before on CircuitPython Parsec. I'm just gonna open up a terminal window and in there, I'm gonna type in cirq-up-c-i-r-c-u-p, it's like for CircuitPython update, install Adafruit underscore HID. It's gonna go grab that file and any associated ones that it needs and put it on the disk. Oh, it said that there was a problem downloading the bundle, please try again in a moment. All right, so I'll do the manual way. What's going on there? So I can go back to circuitpython.org, head up to libraries and I'll just download the library bundle. This means that I will just need to manually drag and drop libraries over. I don't know what's going on with circuit, that's bizarre. So that downloaded a zip file that I'll open up and again, sorry, you won't see this part just because I don't have a screen share for this. I'm going into the CircuitPython bundle, library directory and I'm opening up the library directory on my QDPy there and then I'll drag over Adafruit HID and it'll copy that over and then if we keep an eye on the REPL there, it'll then find the next thing that's missing that it's trying to import, which is debouncer. So I can find that juggling a lot of windows, find debouncer, debouncer, not alphabetical. Debouncer, there you are, okay. And I'll drag that into my library on the CircuitPython drive as well and then we'll check out the next. Okay, so no errors, I think. That's good, so I'll go, oh, nope. No module named Adafruit ticks. What is it missing there? Hmm, that's a new one on me, Adafruit ticks, where are you? Hey, there it is, Adafruit ticks, thing has changed. All right, and now again, we'll check the output here and I can hit Control-D to goose the board. Okay, so it looks like it's booted and it hasn't run into any problems. Now, since the way the dial is gonna work, it's just closing this and opening this contact. You can see there it counted pulses and oops, it also typed for me. So that's good, that means things are working. What I'll do is let's make a little comment area here so we can safely USB type and then what I'm gonna do is hook up the blue wires. So these two alligator clip leads. These are really convenient, by the way. I don't know if you've seen these in Adafruit Store, they're little cable assemblies that have a header pin on one end and an alligator clip on the other end coming in a few colors. Okay, so let's try, I'll dial a one and you'll see there it counted one pulse and in my sort of serial print output and then up here where my cursor is I can type things in there and so can the circuit pie drive. So this is, you can mess yourself up pretty well with this but you can go type in a nine and a five, seven. So that's working pretty well. So let's take a look at the code and see what's happening there. Also I will keep an eye on my discord to make sure we don't have any. Issues, yeah, oh thanks Michael. Michael says debouncer requires ticks now. I did not know. So here's what's going on code. I'm importing the board and time libraries for board pin definitions time so I can wait for stuff, pause. Digital IO so that we can read a pin as a digital input and then HID stuff is all just about being able to type and then the Adafruit debouncer. Then I'm setting up a pin on the board. In this case it's board RX. I'm calling this the switch in pin. It's set as a pull up. So it's using the internal pull up resistor on the chip and then the switch is the debouncer object that's in that digital IO pin. We then set up keyboard and then I've created a little list here of the things I want it to be able to type. So one through nine and a zero. This could be anything. This could be ABCD and so on but that's what I'm gonna use for now. Then I have this little function here that's called read rotary dial pulses and we set a very specific time out here which allows us enough time to read one of these pulses based on the governed speed of this dial but not so long that we get broken up nine becomes a five and a four. In this function the debouncer update happens so switch.update in parentheses and then I made myself notes here because it's always confused me. So yeah, this is a normally closed switch pin. So it is pulled low normally and then it goes high when it is opened which is what's happening every time it sort of pulses. So if it has not risen, if it's just hanging out low then nothing happens, return zero. The pulse count starts off at a one when this gets called because we've definitely started turning the dial and then the last pulse time is set to time monotonic which is just this sort of ongoing clock since the device was powered up. While the time monotonic minus the last pulse time is less than whatever that timeout is that means that this is one set of pulses that are together that are being considered one number are happening. Switch gets updated, if the switch rises we increment the pulse count by one and then we reset that timer so that the next one we can check as well and then we return that pulse count, whatever that is. So this function at the end of the day it just gives out a pulse count which you see printed down there below and then in my main loop here we're doing the number of pulses equals go call that function and then what happens if we get pulses? So if there are pulses I'm printing out pulses count equals and whatever that number is and then I'm doing my little keyboard send. So keyboard send is a little different than keyboard press because keyboard press also needs keyboard release. Keyboard send is a press and a release so it's perfect for this type of setup. So keyboard send, key map and then that's that little list I made whatever the number of pulses is minus one and that's just to get to zero indexing. So if the number of pulses is one then I'm going to use the zero item in this list which is this, key code one. So one ends up being one. And that's it, that's how simple that is. So you can see here we'll go and go through the numbers zero, one, two, three. And so that recovery time between dialing is longer than 0.2 seconds. So it doesn't confuse those, it doesn't add them up or anything like that. You're not gonna dial a three by dialing a one and a two. So it's all based on that sort of very precise timing. And you can go and look, there's a lot of resources out there on the web about what the timings are on these and you can see actually what happens if you make this number too low, let's do 0.1. Now watch, I'm gonna dial let's say a six. So it counted that, oops, you can see there, as three twos. So the timing, if we get that timing wrong there, I picked that up as a three here. It's three twos and a one. So it gets confused if you have too short of a pulse time here. So we'll leave that at the point two that's recommended. Let's see, so any questions about that, let me know. What I wanted to do, what I wanted to try next and this is dangerous because this could be what kind of screwed things up earlier, but I wanted to see can I get this to dial using my phone. So I'm gonna use a little adapter cable so that I can go from USB to my phone. So I'll unplug this and let's switch, switch our view here for a second. And let me grab, so since I'm using iOS I've gotta use this little weird iOS adapter. I mean it's not that weird, they just call it a camera adapter, which is weird but it's really kind of an OTG which goes from Lightning to USB. And now if I plug this into my phone maybe this is what caused my problems before, shouldn't, I don't know what caused those problems before, this should, if you look at my phone here, if I dial a four, hey it's working. So that'll send, that'll send whatever USB, same as it sent to the computer. And now let's see if I can use it on the phone app, I actually don't know if it'll allow that. So let's see, two, that's fun. Do you hear the little beep, let me try out the line. All right, it's a super, super inconvenient dialer but you can see there it was, I'm not dialing any number in particular, it was working good, I'm excited about that. So what I wanna do now is, oh there's a question, WagonLose asks pulse dial to touch tone. Yeah, you should be able to do it, I was able to do touch tone dialing on a Circuit Playground Express using our nice little external speaker, I think I have one of them right here. This little speaker up really at the, just the right distance from the microphone on a phone will send dual tone, multifunction, or touch tone to the phone. So you could build your own rotary to touch tone device, which would be fun. The, yeah the trickiest thing about that is that touch tone is a pair of oscillators running at two different frequencies. And so it's pretty hard to do that without threaded sort of multitasking. It may be possible on Circuit Python, it would be way easier to just make some wave files, you can download wave files of each number, so rather than generating your own pair of oscillators per number, because it's this sort of column and row thing, you might be better off just getting a wave and playing each of those wave files at the right time. So let's now see about hooking this up to the phone itself. And this may be something that becomes too fiddly and we'll pick it up next week or I'll do it in the interim and show you my progress next week. So let's head back over here. And here's what I was envisioning. I've got the standard phone cable, twisted pairs. So this is 426 AWG gauge wire. And this one happens to be nice. Some phone wire, if you've ever dealt with it, used to be this like foil junk. This is actually copper wire. I've tinned the ends of these and I can zoom in here a bit. So this is the wiring. And what I needed to figure out is if we wanna go ahead and make essentially a USB cable with this phone jack on one end, so I can plug this into the phone, the other end into the computer or my iPhone or something like that. I need to know what my wiring pattern is for USB. So I was doing this earlier just to test things out. So here is one end I could use, at least just for testing purposes. This is a little breakout that we have, which is a USB A to screw terminals and these are the positive voltage, negative data line is the white one, I believe. Sorry, positive data line. I made that yellow, some people make that black and then switch these around and then use black as ground. So following that, oh, these kind of fell out but these are temporary. I have another breakout here that I was gonna use to go to the QTiPi because QTiPi doesn't have, where's that spare one? QTiPi doesn't have the USB pins broken out. The KB2040 might be a good choice instead because it does break out the two USB data plus and minus so you could kinda go a little more directly but this was kinda my idea is use this little plug to plug adapter. We probably have some other better adapter in the store and I just don't have one on me. So with that arrangement there, we would get wiring out to USB. So that means on this end of this guy, I'm gonna sub those for this and I have a little, I'll just translate white to green on this one and otherwise I'll keep the color in the same. So let me put this together here and I'll get that in focus. There you go. Franklenses, you can get the jacks from oldphoneshop.com and they have the 500 series and the 2500 which is the touch tone one modular jack set. Thank you, Franklin, that's great. I'll check that out later. So there's a link in the discord if you're wondering. So this'll be black, yellow, green, red going from right to left. Black, yellow, red, green. Remind me of that in a second when I forget. No, black, yellow, green, red. Yeah, there we go. Black, let me arrange these and then do it. So this is sorta temporary doing the cable this way. We do have some DIY USB cables that might be better suited for the long run but I'll, for now. So there's this little sort of dance you do to try to get all these. I think I'm gonna strip this a little longer. Oops, get, yeah, beware like really flat, floppy phone wire. It's gonna have this garbage-y foil stuff that's super annoying to deal with. So if you can get a thicker piece of phone line that's gonna make life easier. All right, I think I had black, yellow, green, red, right to left as my goal. Screw these the rest of the way, hold on. There we go. So these go on top of the little metal contact there. Sort of pinches and elevates them up. Not all of them work that way. Some of them push down on a thing but very often that little screw terminal thread lifts up the contact, squishes your wire. All right, they look to be in there. Okay, so now what I may have just made is a RJ11, if I have that right, I think that's RJ11 to USB. So that would allow me to plug phone to computer or phone to iPhone. And where I'm plugging that, there's some stuff here, is this jack right here, like the ones Franklin pointed out. You can see this one goes like that, plugs in. Now, like I said, unfortunately this one is just a three conductor one. So I'll need to add, doesn't even have the little spring terminal end there, so I'll need to add wiring to make that work. I think I'll do that offline, but my idea was just to say, okay, if I can simply tap into these wires and they're all just screwed in on little blocks here, those are what I would connect to this right here and then have the QDPI sitting in here with connections to the dial. So that's the idea is to non-destructively edit here, non-destructively change this to have a same plug and just unscrew some things and connect them up. So I'll leave that be. What I'll do for the short term though, let's do just a regular USB cable coming out. And actually you can, nice thing is you can, since that's free to move out of the way, we can just have a USB cable coming out of this hole and just tuck this inside. So to that end, what I'll do is take this QDPI right here, we'll run just a regular USB cable out and then I'm gonna connect this to the dial and I think I'll use these, a couple of these. In fact, I'll use these very ones because I don't see any extras that I have laying around, here's one. I'll use these to just tap onto the dial where it lives. So let's see if that works first of all. So I'm gonna, can we still read those when they are connected to the rest of the system? Should, but it's not always the case. So I'm just gonna rest those in there and we'll connect those back up. So this was, I believe, there. I'm gonna consult my photo I took earlier so I get that right. There we go. Look, it's inception of, so you get that on there and this one up above, I'll leave the white wires off for just this quick test. By the way, you may be asking what about switch hook dialing? For those of you who may have been goofing around with these phones back then, the pulse that was sent down to the phone company when the dial turned was the same as the pulse sent when the switch hook went off and on. So you could dial a one, dial a two, dial a three and so on. It's really hard to get a nine right, but I don't know yet if I'm gonna try to add that. That would be kind of fun, especially if it had some different function. Oh, I got these wrong. Not that it matters, but the, I haven't looked to see where it connects this switch, which wiring comes out of the bottom there. I haven't looked to into that yet. Nice bells, huh? All right, so this one, and sorry, you'd be able to see this a lot better if I were using some tweezers or pliers. There are some tweezers or pliers. I think that's not any better, sorry. There we go. So yeah, so the question I wanna try to answer right now is if I leave those connected to the rest of the phone and just clip to those terminal screws, will that still work? And I think we should be able to find out with, this might be what caused my issues earlier with the board needing to be reset, because I think I was trying this when this happened, but we'll find out. So I will go into the phone here. Let me go back to the notes application. And so this should power the board. Okay, so this, when the phone's virtual keyboard disappears, that's a good sign that means that it is recognized that a USB keyboard has been plugged in. Okay, that works, good. So we can leave this connected, which is neat. The potential actually exists that you could use this both as the regular phone and as the USB dialer simultaneously, because now, other than the switch hook right now, nothing is unplugged. I don't think any voltage goes through the dialing mechanism or anything like that. So let's unplug that. And I will reconnect the white wires as well just to get them back in place. And those are here and here. C Grover says tapping the hook was a theatrical way to get the operator's attention. Did that make a lot of noise for the operator? Okay, so what we can do now is I'll reinsert these little retention clips of the dial and I can tighten the screws that hold it to this post at this gorgeous angle. I think this was, we looked at this last time, I think this was the second design basically, the first revision of this phone by Henry Dreyfus, the great industrial designer. So what I wanna do is check, does this one have that same code running on it? I think I have it on there. And then I will solder these on like this. So that's just what's gonna clip into the system and then have the USB cable. I can probably test this just holding those in place like so. So let's reconnect to here. And so this one just happens to be a Qtipi M0. The other one was a Qtipi RP2040, that shouldn't make any difference. And so I will hook into these two dialing lugs here, terminals, let's plug USB into the phone. Okay, little green light, that's a good sign. Connected to the wrong, hopefully I didn't just break it. Maybe that's what I did before. No, probably not likely. I have done bad things to this board. You can see it's blinking angrily now. Drat, all right, let me, let's go fix that. All right, whoopsie. Let's head back over here. Hope you don't mind the realistic tour of troubleshooting issues I'm going through here. So plug this into the computer. I should see, these are some little troubleshooting signs. So this one I can double click to get it to bootloader mode and then I should be able to put the firmware back on it. So the UF2 file. So Qtipi boot just showed up on my desktop. Qtipi M0 firmware. Sorry, you're not seeing that part I know. Hello, Johnny Bergdahl, welcome. Wagonload says, use a magnetic read relay if you wanna keep pulse dial function of the phone. Oh, interesting. Radio Shack Touchtone chips. I have a few, I had one of those. I never did anything with it, but I got one. I thought this is somehow gonna be useful. Okay, so now I have Qtipi loaded back on to here. Code is back on. Okay, so that's a good sign. Let's just go test that then again on the phone. All right, Kazitski, you got your KB2040 keyboard. Excellent. So now, what I did before by accident was I plugged one side of this into the five volt instead of the ground. So if you look closely at the Qtipi, you actually have to pay attention to what you're doing because you probably won't be able to see it in great detail there. But the very last pin there is five volt I meant to go to its neighbor, which is ground, which is how I screwed things up. Okay, so here you can see it has shown up on my phone as a keyboard. You know that, because you don't see the virtual keyboard. I've hopefully got those pinched tight enough in there to contact these lugs. Is it not? Am I not convincing enough to need to solder those in? I shouldn't have to. Let's reset. No, let's try. Now let's bring this back over to the workbench. Let's see if the code is really running when I have it plugged in. Okay. Oh, sorry, I went over there and didn't change the camera, so you were not seeing any of that. My apologies, it's okay, it didn't work, so we're back. And wait, am I, do I have this wrong? What was I plugged into? Was I plugged into three volt and not ground? I think that's the case. Yeah, because this is pull up. I bet that's it. Let me test that right here. Sorry about that, I don't have my little wiring diagram here. Let's go over to Adam, let's save this, this board. Oh, this one doesn't have HID on it. That's strange. Oh, I did it, hmm, shouldn't have gotten reset. All right, let me get this board. I, by the way, renamed cutie pie. I'm gonna re-rename it to circuit pie drive so that it can maybe work with circuit. Let's rename it, circuit. Yeah, I'm having a problem getting these bundles. All right, that's okay, I will drag it over. I don't have any J-hook alligator clips, that would be fantastic wagon loads, that would work the best for this for sure. I might have to make some, I don't know if I've ever seen any. All right, back to the bundle. Could have sworn I had this drive working like that before. Library, yeah, it doesn't have HID on it. B, HID, this is why I like when circuit is working because then you don't have to drag stuff around. Manage disk space, okay. Let me delete some stuff off of here. Don't need Neo-key, don't need seesaw. This is the issue with the M-zero cutie pie. It's got very little space. Hopefully enough for HID. If not, I will bail on trying to use this one. Okay, HID, good, and now I need debouncer and ticks. Bouncer, oh no, not enough disk space for that. Okay, so I can't use this M-zero. Oh, we'll ditch that idea. So in the interest of time, I think we'll bail there. Let me just head back over to the workbench and hook it up the way I had it. And then we'll get out of here and I will do some of this wiring offline. I'll make a little wiring diagram for us to reference as well as a guide. So that's what's necessary, if I recall correctly, is the three volt, and no, it's ground. It's got to be ground. Let's see if I got that right. Let me grab that USB cable. I have not tried to dial the number that is on here. I don't know if anyone has. I think that's probably not working anymore, but could be. Yay, working again. Okay, so that's the one that works. I think I will try the KB2040 since it's got the data lines out. It'll make USB wiring really nice and neat. And I won't have to go through some adapters. So it could be that or it could end up being this KB2040 cutie pie friend here. All right, great. So let's wrap that up. We'll pretend that got put back together, but that'll have to wait. All right, I think that's gonna do it. Thanks everyone for poppin' by over in the Discord and in the YouTube chat. The cron job says, hi, it looks like I'm late to the show. You're gonna delay lunch and rewind. Good, well, you'll see us say that later. Good, Wigo connectors, yes. Gonna check that out later. Franklin, thank you so much for the link. Timeout is the shorting. Start to end dial sequence, such as dialing a one. See, go over a little five volts. Illinois could ring the bell. Oh, good thinking. And Griffin Brooks says, where do I go if I have questions about Adafruit projects? So you can go to the forums. I think forums.adafruit.com or forum. I forget if it's singular or plural. So head over to the forums. There's a link on the Adafruit site to the forums on there as well. You can also go to project help in the Discord. So the Adafruit Discord is adafruit.it slash discord. And there's a general project help as well as some more specific ones depending on the nature of your questions. All right, that's gonna do it. Thanks everyone for stopping by for John Park's workshop. I will see you next time and tune in tomorrow for a deep dive with Scott. Thanks everyone. Bye-bye.