 Don Parks Workshop Thursday. Thank you for joining me. First of all, if you're joining us over on Twitch or Facebook or one of those places where there's not an active chat, then head on over to our Discord. It is at adafru.it slash discord. You can jump right into the live broadcast chat channel where you'll see these fine folks. Hello, Jeff. Hello, Sumnice. Hello, Gary Z. Hello, Andy Calloway, Starman. Who else have we got here? Jim Hendrickson. I think I saw Paul Cutler, Cedar Grove. Hey, everybody. Thanks for stopping by. Also over in our YouTube chat, we've got Dave and Gavin and IsThisYouTube. Thanks for stopping by over there as well. So that's our chat. That's where you can hang out. Also, you'll see here if you're new to this, over in our Discord, we've got a whole bunch of channels here. So live broadcast chat is where the chat is happening during the show. But if you need help with CircuitPython, we have a help with CircuitPython channel. If you want help with 3D printing, we have that. If you're a CircuitPython developer, we've got a channel for that. All sorts of different activities going on over here in the Discord. So check it out. You'll notice some more continued rearranging. Back wall there is being repaired. I don't think I can turn this camera. But the back wall of the workshop is getting fixed and I've slid some things around and I moved the lockers over there and Lars is taking advantage of the situation somehow creepily. But there will be some further, nothing too noticeable on camera, but I've got some organizing and restructuring to do in here, so that'll be ongoing. Hey, Johnny Bergdahl, hello. Thanks for stopping by. Okay, so what's gonna happen today? I've got coupon code for you. I've got a recap of the product pick of the week show. I've got a CircuitPython parsec. I've got a little bit of a learn guide recap. I have a retro tech and possible future project idea thing, tear down and video game peripheral demo that I wanna do. And then I've got kicking off a new project on the Memento camera, this little guy here. That's gonna be the pet bowl cam. Thank you, by the way, is this YouTube set? I love the NeoPixels in the back. Yeah, I got to move them or I chose to move them since I was moving stuff over there and now they're sort of ascending off into the heavens of the corner of the workshop there to say hello to the spider webs. That, by the way, is, what is that one? Is that the NeoPixel 8? No, that's the Scorpion. That's the feather, what's your name? Scorpio. That's a feather board that has a, I think it's an eight NeoPixel strand output to make it convenient to do those kinds of things, multi strip assemblies. Um, what else is happening? So let's start off with a coupon code. If you wanna get some stuff over in the Adafruit store, you can use the coupon code today, which is BIRTY, only because there's a vague golf reference to this video game peripheral that I'm gonna look at. But BIRTY, that will get you 10% off in the store today if you head on over to Adafruit, throw some stuff in your cart, type that into the coupon code field before you are done and you'll get 10% off on any goods that you purchase. It does not work for gift certificate subscriptions or software, but it'll be good on any physical things you get. So head on over to Adafruit.com. That's what it looks like right there. Let me move that coupon code over. Yeah, head on over. You will see we've got some new products highlighted here. There's some cool looking new NeoPixel strands or rather, I should say, single color, not NeoPixel, single color, sort of neon-like, five volt strands that are looking pretty cool if you're doing neon sign style stuff. And if you click on View All New Products, you can see some other things that are there. Oh, this is in stock. I didn't realize this came in stock. The CAN bus BFF, if you're doing any CAN networking stuff and you just wanna easy little add-on chip for QT Pi, you can grab one of those. And the coupon code will get you 10% off all day today until midnight tonight, East Coast time. Ooh, now that's off-centered. Let's put that back. Just by typing in birdie. So go and, yeah, those are paleo pixels. Who said that, Jim Hedrickson? Paleo pixels, I like that. So that's your coupon code, use it or don't. Next up, I've got a little recap of my Tuesday show with that terrifying thumbnail on it. On the Tuesday show, I'd like to show you a new product pick and give you a little bit of a demo and a big, deep discount. No coupon code required for that one. It's just during the show period. You can watch the show, buy it for a great, great discount. Here's a little recap of this week's. It is the DRV8871 DC Motor Driver Breakout. You can control it just with PWM coming from your microcontroller. Here is the DRV8871. It's driving the motor under there and we're getting DC power from battery. And then I have a little gear, little technique gear train there. So if I give this microcontroller power, it will start sending PWM to tell the motor to go in one direction, slow it down and then go in the other direction. So this could be any type of hobby application in the used circuit, Python. But you can of course use this for any type of small motor application up through up to a 45 volt motor that draws up to 3.6 amps. So it doesn't have to be tiny. It is the DRV8871 DC Motor Driver Breakout. Beep, beep, beep, beep, beep, beep. So yeah, that was that little motor driver there. Let me know if you do any cool projects with that. That's a pretty neat one. I like seeing what stuff people are motorizing. I saw actually DJ Devon 3 was mentioning during the chat that they were gonna grab some techniques gears and parts to do some Lego-like stuff with motors. So let us know how that goes. By the way, someone pointed out we have a, what I was using on this little TT motor, you can kinda see, oh, I've added some foliage here. You can see it's falling off. You can see I've got a little Technics Axel adapter that's coupled to the shaft that just press fits onto there. We sell those that lets you use those kinda TT motors with standard wheels and gears in the Technics world, Technic, in the Technic world. We also have one of those for servo motors. Let me see if this search will show it. And maybe I'll just type in the word Lego. Okay, yeah, so this Lego compatible brick bracket, I'm using one of those actually, those are kinda neat that gives you a way to just slide the TT motor into that and then it gives you Lego compatible studs on both sides of it. We've got the DC Gearbox TT motor to Lego compatible cross axle, that's what I was using there, a couple of those. And then we also have a similar adapter for these little servo motors. So if you wanna do some servo-y things or pull the stop out of a sort of kick, one of those kinda larger servos, hobby servos, you can pull the stop out of it or break the stop off and then you can do continuous rotation at selectable speeds. So either of those uses of servos, you can graft them into the Technic world if you get one of these cross axis. A nice way to do that. Let's see, yeah, so DJ Devin 3 says, picked up the axle shaft converter, an 800 piece Technic gear set, wow. That must be a Lego clone or that was like $2,000. So I know the price on the genuine Lego stuff is mind boggling sometimes. But great, yeah, that'll be fun to play around with. There's no worries about getting clone stuff for that for sure, that'll make prototyping a lot of fun. Okay, let's see, next up, let me get set up here for a little Circuit Python Parsec for you. And here we go. For the Circuit Python Parsec today, I'd like to show you how you can use the sorted command, sorted with a T, how you can use the sorted command to take a list and then create a new list that has an alphabetical, essentially alphabetical sorting of the items in that list or a reverse sorting of the items in that list while leaving the original list alone. Now the reason I put it this way is that there is a sort command and the sort command will take your existing list and change the ordering of it. Sorted leaves that list alone and allows you to create a brand new list that you can then manipulate or use as you choose. So I've set up a little program here. It is running on my Metro M4 and you can see what it does down in the REPL here. It asks me to enter an answer. So I'm just gonna put some names in here. So I'll say Lars, John, Gary, and Ann. So when I hit enter, what it does is it tells me the original list was, as I typed it, Lars, John, Gary, Ann. The sorted list is now alphabetical, Ann, Gary, John, Lars. And then there's a reversed list where we see Lars, John, Gary, Ann. The way this works in code you can see here, I am setting up a separator and that's just for my join command later when I print these out. I wanna put some commas in there. And I set up a list called answers that is empty to begin with. Then I have this little loop that prompts me for filling in four of those answers. And so it runs through this four times and asks for user input. So it says input and then it gives me a little prompt here and then it appends whatever I type into that list called answers. Then I am taking that list and saying, I'm gonna create a new list called sorted answers and I run the sorted command with the existing list. It populates the new list and I do it a second time. Reversed answers, again, use the sorted command, feed it the original list and then I'm also giving it this flag to say reverse equals true. And then finally, I print the joined versions of those lists so that we can see all three of them. And that is how you can use the sorted command in order to sort a list. And that is your circuit Python Parsec. Work out, work out, work out. Yes, circuit Python. Hope that comes in handy for you. Also, that is, it's interesting because that is a command, let me show this again, that is a command that I believe in regular desktop Python. It does not work on a mixed list of numbers and strings. It seems like it works in that case. I guess maybe when I'm typing in numbers I'm getting strings out of them, right? Yeah, so you could do something like this. Four, two, six, 100. And oh, I've now appended to that list since I didn't rerun it, I'm now adding to that. That's fun. We can, let's see what happens if we give it characters too. Yeah, sure, it's gonna deal with all of those things. So that's pretty interesting. Yeah, so I'm guessing that that answers list is gonna store these all as strings and then you could convert those if you needed two to numbers. So new command to me. I didn't know it existed, I've used sort but not sorted and it was pretty useful to find out that that exists. Let me know in the chat if you have thoughts or experiences with that, ideas of when that can be useful for you. Some nice asks, what if my name is pop with a, with a parenthesis? I assume that that's gonna do something bad. Should I test it? Let's try it. Pop, dude, me and eight. It still alphabetizes it first or no, rather last over here. What is that doing? You've probably just hacked me somehow, I'm nervous. I should stop that right now. Okay, so next up, what is happening? I wanted to give you a little bit of a review of the new learn guide. So let me go to the learn system, pop this up. So this was the project I was showing last week was my Memento wireless remote using TouchOSC and after the show I did some little bit of documentation and photography of it, cleaned up the code and so I just wanted to show you a couple of those updates to it so if you just had to learn, you can see anytime you're looking for a new guide, we've got a new guides banner that'll show up and it's got a little side navigation you can do to kind of scroll through those or you can click view all and it will show you the latest guides in descending order. So this is pretty recent guide, so it lives right up here. So here you can see I've got my little, excuse me, I've got my little Memento camera sitting there and it is on my Wi-Fi network. I've got the phone out and I'm using the TouchOSC to trigger the shutter there and to adjust all of the settings. So all that stuff is really nice and convenient if you're doing something like in this case, doing a little stop motion animation or some other type of photography where you don't want to be bumping the camera in particular or you want to adjust settings between shots if you're doing stuff with lighting, that sort of stuff. So guide will show you what you need for that, get circuit Python installed, create your settings.toml file, which is what gets you onto your network. And then here's the code. Last week, I believe when I showed this, I had taken chunks of code that existed in Jeff's camera example, the main camera example, particularly the stuff that gives us, let me turn this on, I don't know if it's gonna yell at me because it probably won't find the Wi-Fi network it's trying to find, let's see, does it make it? Actually, I'll show you one of the first things that happens is it pauses there for 10 seconds when it gets onto the network, which it did do, and tells you the IP address. This was Ann's suggestion, great suggestion. You need that IP address to tell your phone or tablet or other device running TouchOSC what the TouchOSC IP address is for the host device or client device, it's kind of confusing, which is which. So that was a great suggestion from Ann, we just have that showing up in the REPL here for 10 seconds when it starts up. So all of the, will it focus? All of the camera controls that you see on there that Jeff created that we can scroll through with these hard buttons were existing pieces of code that were down kind of in the main loop, and what I did was I took those and made functions out of them. So now if you look in the code here, we have, I know this isn't the neatest code view in the guide here. If you look at, let's see, where's an example? Wait, is this the right code? Why does this look weird to me? Hey, I don't think that's the right code. I may have just caught a terrible error, a terrible mistake in my code. Let me open it up in a code view instead and I'll go fix that after the show. That's funny. Let's, let's see, on this machine I don't have that git set up, so I'll actually go, here you can watch me go grab this from the learn repo. So I'm gonna go to github.com. Can I do slash eta fruit? Is that the, is that how that works? Yeah. And we can usually scroll, the learn repo gets updated a lot, so it's often up here. Here's the eta fruit learning system guides. You can also search for it. And then in here, we have all of the Memento guides in a directory named Memento. So let's jump in here and wireless remote. And then I will go to code.py and I'll just copy the raw code and then I'm gonna bring it back over to coding window here. Okay, so here's the proper code. So that was the original code. You see there weren't really that many functions. And now I've taken all of those things that the buttons were doing and made functions and that way I can call them with the hardware buttons but I can also call them from the OSC messages that come from the phone. So here's snap jpeg, that is the command that takes a picture. Snap gboy, that's the Game Boy mode so it uses the one bit dithered filter. Snap a GIF, does a little 15 frame GIF recording. Snap stop, that takes the stop motion photo and then also overlays the onion skinned mask version on top so that you can see your frames as you're shooting. And then I have all of the, I think I showed these last week things like the fader handler, the radio button handlers, and those are all of the software messages that come from OSC and what they do. So for example, the button handler here you can see if a button message comes through, it gets sent by the dispatcher to the button handler with the message number and we get from that things like, okay, if it's button number one, that means we're gonna take a picture. Depending on the mode we're in, it will run the snap jpeg function, snap gboy function, snap gif function, snap stop function. So those are those functions that I showed earlier. And now those are also what gets called in the main loop by things like the hardware buttons. So in the main loop here, if we do a short press, then we're going to run those exact same functions right here just in a different order. So that is our update to the code there. I just need to fix the guide for some reason, it's not pointing there. And back to the guide actually, let's go back into here. So we've got the code, once the proper code is there, you'll grab that. And then I have this touch OSC setup and use. I actually included time code stamped video from last week's show just because it's the best demo hands-on I have of showing how it all works. And then here is the layout of the two screens that we have with their tabs. There is a downloadable file that is the touch OSC layout. So you can grab that and then put it on your device to open it up. You can also edit it further. And I showed here are a series of walk through screenshots I did that will show you what to press. It's a slightly confusing interface at first if you haven't used it. So show you what to press to open up some of the sort of sub menus and do your import. And here you can see I've got a couple of available touch OSC layout files, version two and version three, which is what I included in the guide. Shows you what to press and so on. So that'll get you set up. Here is the IP address showing up. I didn't do anything fancy with that. It could have been like a display IO thing, I guess, but I decided, you know what? The REPL is reporting this anyway. It's useful during development. It's useful when you're on your computer. So I just have that show up and stay there for 10 seconds so you have a chance to copy that down. And then a couple little shots of it in action. So that's the memento cam. DJ Devon three asks about stop motion using the onion skin. I think I have one example of that in the main memento guide. So if we just type in, oops, memento. If you look in the starter projects section, here's the stop motion example. So I talk a little bit about stop motion, animations, persistence, vision. Here's an example you can see of the onion skin. So I've got, I did this little animation of my little artist mannequin waving. And in that image above, you can see what the onion skinning looks like. So I shot a frame with the arm down here and then it overlays that on the live view of the camera. So as I'm posing this arm up here, I can see how far I'm moving or the arc that it's moving on if you're trying to follow sort of a visual path in the air. That's the example that I've got up here. And then I did this, essentially you're shooting JPEGs onto the SD card. We're not making a gift for you because you might wanna throw some frames away, double some frames or adjust the timing on it. There's a couple different ways that you can adjust your timing in a stop motion animation like this. I did it in Photoshop, but I mentioned in here stuff like easygif.com has a GIF creator that'll allow you to bring in a pile of frames, reorder them if you need to, delete some if you need to adjust their timing or duplicate frames to get things like a pause. You can see that here when this arm goes up and holds, I think I just duplicated that frame like seven times, which is a valid way of doing this. The other valid way of doing this is in your software saying, okay, hold for one second or half a second or whatever it is. The GIF will not really care. It might make your GIF bigger if you have multiple frames in there, but a lot of the GIF compression techniques with like the transparency button checked will simply ignore pixels that are identical from frame to frame and just leave them on screen. So it shouldn't be a huge difference. So that's the example I've got, DGDM3. Oh yeah, easy GIF to make sprite sheets and edit your GIFs, excellent. I've used it a couple of times, but I'm just in Photoshop all the time, so I tend to do it in there. You could also, by the way, probably bring those frames into something like a pixel art editor, which tends to have really good tools for looping, little subsections of frames and scrubbing and really good for things like timing. And is particularly geared towards making palletized art. So depending on what you're doing, you might check out A-Sprite, A-E-S-P-R-I-T-E, or Pisco online, P-I-S-K-E-L. Those are good pixel art tools that are good for these kinds of small animations. All right, let's see, what else? So that was the Memento OSC guide. Next up, what I wanted to do was head over to the next project, actually. Let's take a look at what's going on for the next project. So what I wanted to do was take advantage of, on the Memento camera, we have a couple of these three-pin JST connectors that give you access to power ground and a pin, in this case, A0 and A1, which you can use as digital pins or you can use as analog pins. So these are great, because if you wanted to hook up a fader or a potentiometer or something, you could do that, or you can do digital things. So what I wanted to do was use one of these PIR sensors, pretty inexpensive PIR sensor, and we have cables for connecting directly to JST, so it makes it nice and easy. Let me turn this off. I'll plug that in. So this will plug right into, actually, I'll show this in the overhead. So you can see there, we've got a cable that almost looks like it's a loop back, but it's the fact that I have this neopixel front panel has its connector, and then that's a connector I'm using just to send power and data and ground for running those neopixels. But this one here, A0, I'm just running a PIR sensor into that. And then what I'm gonna do is connect this to my dog food, my dog's bowl, we have three dogs, but I'm gonna catch each one of the dog food bowls and have the PIR sensor sense when one of them comes over to eat so that we can trigger photos based on pet proximity. And you can do this with a water bowl, although you might be a little bit more at risk of splashing and ruining the camera. But I wanna maybe experiment with doing gifts, experiment with using the lights on here when the pet comes near. So this is pretty decent way, inexpensive way to essentially build a pet cam that will take pictures when your pet is in a certain area. So if we take a look at, I'll turn this on and I think it'll make a sound when it takes the picture. So the trick with this is it's very easy to trigger this PIR sensor just with reflected infrared. Did it just take a picture? No, that was powering on, okay. So if you look, let me turn, yeah, I can leave that alone. What I'm gonna do is I'm gonna point the PIR sensor at myself and it should take a picture. There we go. So it is set up in a mode where we're not gonna re-trigger while an object is in view. Yeah, but now it's bouncing off of things. So this is all the tuning that's gotta happen. If you look, these have, I'll turn this off, these have timing and sensitivity potentiometers on here. I have not adjusted these, these are just the default. And then we have the high, I think it's the high and the low modes here. In the high mode, it will not keep re-triggering while the object is in view. So it's essentially like an edge trigger only. So it'll notice that an object comes in, it'll send one signal, which we're using to snap a photo. And then it's supposed to just sit still until you walk away and then come back into frame. So that's how I'm gonna use it. And then in software, we can do things like, okay, anytime it gets triggered, let's take a picture every half a second or let's just start doing GIF animations or any other maybe set it into stop motion mode so that it's taking essentially a bunch of still, still frames at a certain interval. So that's the idea with that. You can imagine it'll probably be helpful to put some sort of enclosures. And I think about doing maybe a little 3D printed enclosure that clips to the bowl, maybe a little curved thing. So we'll have our PIR sensor and the little LED ring. I did shoot one photo of my dog Zelda. Let me see if I can show that one to the desktop here. All right, here's Zelda. And I did, okay, I'm laughing because I had the LED ring, the Neopixel ring on and so we ended up with kind of one of those nightmarish pet glowing eye photos. Let's see, can I add this with this here? Yeah, oh my gosh, Zelda is not a hellhound. I promise, but she really looks like one there with the glowing eyes. Very suspicious of my camera experimentation. So what I may do is just not use the light or I was even thinking of moving the Neopixel frame off to the side so we just don't get that direct thing. It's that light bouncing off of the retina I think is what causes that type of pet photo. So I may do a little longer cable for the Neopixel so we get some gentler nicer lighting or just use the ambient lighting in the room. So why are you so scary, Zelda? What's going on? Totally possessed German Shepherd. So that's the project there, I can plug this in. Let me find a USB-C cable. I'll show you, this was actually a pretty quick addition that I did to existing camera code. And what I actually did here is I'm building up on what we have. So this is the original Jepler fancy camera as I call it. This is the Memento remote stuff. So if I wanted to go in and change effects from it, I can kind of leave the camera B and then there's the pet cam aspect of it for the guide I do, I'll probably strip out the OSC stuff so it's not confusing and just make it a little leaner. But if you look at the code that I've got right now, reopen code.py, are you it? Yes, this is it. I actually have, if you see up here, commented out at the top, I grabbed the main learn guide that Lamore did on the PIR sensor. She has an example of triggering it in CircuitPython. So this is what triggering this in CircuitPython looks like. In fact, I can get rid of some stuff that I'm not using there. And let me uncomment that so it's a little clearer. Okay, yeah, so this was my, I just wanted to get a baseline of this working. So I set my PIR pin to board A0, that's that JST connection on top there on the Memento. And then I'm creating an object called PIR, which is just a digital in-out pin. And I'm setting that direction to an input using that pin A0. And then we have a variable here for checking the state of things called old value. And that's equal to whatever the PIR value is when you start up. And then in my main loop, the PIR value, this is maybe kind of confusingly named, the PIR value variable is based on PIR dot value, which is just saying yes or no, do you see an object? That's all this sensor sends, this is a zero or one, basically. If there is a one or a true coming back, then we just set the, we test it against the old value, so we have that edge detection, something has changed, and then we just print motion detected. And then if there's a lack of the value coming over from the PIR sensor, then we flip that and say motion ended. In fact, I'll run this right now. Let's comment out all the rest of the code. There's probably a better way to do this, but so I'll hit save. And let me connect to the camera. By the way, if you run disco tool, you'll see the name of, I can unplug this other one, that was probably confusing. The name of the, memento in your device list is just camera. So I'll do disco tool name is cam, to connect to that. And then I'll put my hand in front of the PIR sensor and it says motion detected. And then I don't know what the timeout is right now on this thing, that's one of the variables to set with the PIR sensor. Variables to set with the little trimmer pot on the board. But if I stop moving it for a second, at some point here, it should say motion ended. Motion ended. The moment I move this, it'll probably look at a light or something. Yeah, there's just a lot of IR bouncing around in here. So motion is detected again. So that was the sample baseline that I wanted to do just to make sure this all works. And then I kind of grafted that into the memento remote camera code up here by I think adding digital IO. I don't think we had digital IO library being used before. I do all of my existing setup. Then I add this little PIR setup here. So I set the pin, set the pin as a digital in out and set that as an input. And then in the main code, all I'm doing is calling those same four functions of snap a JPEG, snap a Game Boy, snap a GIF, snap a stop motion. So if you look in the main loop, we're doing the OSC server poll and then we do the check here. Set the PIR value and then check it against the old value and then do one of these things. So that's how it's snapping a picture just based on something going in front of that. And that's all it needs. I said the lights might set it off. Yeah, they're sensitive to, maybe they're not so sensitive to LED. I have some incandescent lighting, some old school incandescent big video lighting bulbs here that I think it's noticing. I don't know if it would do that with the, or it could also just be reflected like my IR bouncing off of things. I have a lot of objects nearby, but you can, in a better space, you can set it up like in a hallway with the pet bowl. It shouldn't get false triggers, is the thought, at least. Which actually begs the question, you know how people used to hang a piece of toilet paper over the PIR light in an office light, bathroom lighting switch because the light was turning off because the timer was set wrong? Did that really work? I doubt it, right? Was that a placebo effect? Because the piece of tissue paper isn't giving off any IR unless there's some being emitted by the lamp itself. I don't know, maybe they had an emitter on there, but it shouldn't have worked. I don't think that really works. Does anyone know what I'm talking about there? Is that familiar? Yes, the pooch cam. Okay, so that's what's going on with that project and I will put that together, put together a little guide, hopefully get some good settings for my PIR sensor, build a nice enclosure for it, maybe move the light so that we don't get scary possessed cam or not use the lights at all depending and I will write that up. You've never heard of that? DJ Devon 3, it used to be a thing, like office bathrooms would have this, this is basically why these exist is they were in light fixtures to turn on the lights in an office bathroom and or any room, not just the bathroom. And if those turned off, if the timing was set too short for people, then the lights would go out while you were in there and so people used to try to hang things in front of it that would move like with just with the air current or whatever. I don't think it really works. Or I imagine the whole thing, that's possible too. Oh, it knows some motion again. Okay, so then let's move on. That's, let me know if you have any thoughts about the dog food bowl camera, I think we should work for cats too. I think they're big enough to trigger these. We'll see, we'll find out. We have one smaller puppy that we'll see how he does. So moving on then, last thing I wanted to get into is a bit of a weird game peripheral thing. So first of all, let's head over here. And I just picked this up by the way. I had lent someone some TVs for a video shoot and they had collected some others from other people and when they finished this said, hey, do you want these? And I said, oh, sure. So yes, I do, I always want TVs. So I got this cool little really sharp black and white tube TV. You can see here I've got some Katamari Damacy playing on the PlayStation 2 and I will turn off this spotlight for a second and adjust the camera. Just so you can see this, this is a really gorgeous monitor. There will be a weird CRT frequency thing that we can't get around, but this is a security camera meant for like a CCTV system has BNC connectors, but it's just a composite, black and white composite in. So I actually have the component video cable coming out of the PlayStation and I'm running just the sync signal, which is the best one you can run into this sort of system. So here's a little Katamari Damacy running on the PlayStation. Now, the reason I have a BNC connector and the reason I have the PlayStation 2 out and the point of all this, let me turn this off for a moment, is I got a weird gaming peripheral that is from like 2004 or something like that. Let me configure here and I'll turn that light back on. I got a weird gaming peripheral and it is made for PlayStation 2. They also made them for the Xbox. Let me throw this through here and it was called the game track. Got it used on eBay for 20 something dollars and it is meant to be a spatial 3D controller. One of the games you can play with it is golf. So they give you a little golf, mini golf club grip to swing to have something to hold on to. This came out before the Wii actually, so I don't know if I have the year right on that, but this predates the Wii. So there really was not a good solution for hand motion tracking on a home game console until this thing came out. I think they made maybe three or four games for it and they sold a lot of them, but it didn't really do that well. It didn't last and certainly other better motion controllers that were optical like the Wii or a mix of optical and IMUs came out. But here's this real world golf. I have not plugged this thing in. I have not tried it. I have no idea if any of this will work, so we'll find out together. And I wanna tell you why this is interesting and why I wanted to get this controller. The way this thing works is this is the hand tracker. This is just a foot switch so that you have one button. So that's kind of nice actually. This is a little two point, looks like a 2.5 millimeter, three position cable on here with one button. So you would step on that to engage things, agree with things and menus and so on. That just plugs into the front of this guy. This has a USB port. Will that work on the PlayStation 2? I think it won't. That's funny. This might be the one that was meant for Xbox. Oh yeah, no, we do have a USB. Okay, we have a USB port on the PS2. They made a version for Xbox. I think that one works in Windows to some degree. And the way this thing works is fascinating. It is a pair of XY potentiometers, joysticks. Well, XY joystick. And it has a Z joystick that is based on cable retraction. So it has this thick orange fishing line. You can see here. And it has gloves. So you wear these gloves, I'll put them on. Is that how it goes? Yeah, okay, so it's very fashionable. You get a pinky there. You get a thumb through there. And then as you move your hand in 3D space, it is actually tracking a X position potentiometer, a Y position potentiometer. And then your Z distance from the unit based on this cable reel and a little worm gear and another potentiometer that's in there, which is pretty great. In fact, I would guess that for certain applications, this is probably a heck of a lot more stable and accurate than most optical systems would be. So through some math, which I don't know if this does it on board and sends the values over to the game console or if it just sends raw values and the math is done over here. But the idea is you can locate a position in 3D space really accurately and this thing goes like three meters long. So I can go way the heck out of here, which means you can do things like your golf swing, which you might have been able to get away with just having a single controller for golf, but they also were envisioning you would do things like fighting games. So you have the two of them and you can punch and move your arms and it's tracking those and that would be triggering things in the game. So that's kind of awesome. For the heck of it, let's just plug it in and see if it does anything, if it works. But more importantly, I wanna take it apart because I wanna try to reuse those controllers, just the raw three potentiometers that are in each of these as a three position controller, which is pretty cool. And I'll show you the inspiration for this was a lot of people have hacked and tinkered with this over the years, particularly experimental music people because this is kind of a neat interface for certain types of control of synthesizers or in pure data or Max MSP for using in software synthesizers on your computer. It's kind of interesting to be able to adjust in two positions this way and then have a really fine grain because the thing is so long, really fine grain control of position which could be for things like pitch, could make for a pretty interesting theremin-like device, especially because theremin is based on both where you are relative to the height of the antenna, as well as your position away from it and this has that X axis, which is probably not anywhere near as fine grain, right? That's probably 128 values that way and 128 that way. So I don't know how good it would be for the volume aspect of a theremin, but still kind of interesting. So let's plug it in and see what happens. I'm gonna turn off my PlayStation. Let's plug this into one of the USB ports. I don't know if I've ever plugged anything into the USB ports on this. Was there any nice peripherals I had that used those? All right, well, I've plugged into the top one. Let's take this Katamari Dama-C out. I put in real world golf in. Let me switch the cameras here for you too. That spot so you can see it a little better. All right, let's see what real world golf says. Reading disc, no data, that's a bad sign. Let me power cycle this. I will also check the chat while that boots up. Who said that? Oh, Todd Bout said, I heard John Park's middle name is Weird Gaming Peripheral. I love Weird Gaming Peripherals. How great is it? Come on. Yeah, right? DJ Devon III says, wow, I can't believe this is a real thing and then includes the Pinocchio GIF. That's great. I flipped the USB plug, I think four times before I got it in there. That's a valid question. Is it not recognizing the disc or did it just take that long to boot it? Disc looks good. Remember it was blue? Not all PlayStation 2 games were like that. I can't remember what the change was, why the change happened, but yeah, these were supposed to be unpiratable because of the blue, right? They look really cool, like ink. I don't have a memory card plugged in there. I don't think that should stop it. Reading disc, is it just really this slow or is it having an error? I'm sort of waiting to see it say something like error. Just saying no data. All right, I'm willing to give up on that, although let me try unplugging the peripheral and starting again. Just in case something is up with the game track. I don't even know if this is necessarily a PlayStation version. Oh, this is the game track V2. Okay, that's good because from what I've read, okay, yeah, we're not gonna get that to play. That's okay. That's not the point of all this, really. Point of all this is to take it apart, so I'll set that over there. We won't get to see it in action. You can look online. You will find videos of people playing a fairly mediocre looking golf game using this. Turn the lights back on and let me full screen this. So the reason it's good that this is the version two is that I believe this has modularized, version two modularized the real, the cable retraction real and potentiometer trio for this joystick. But actually, in fact, before I open it, I wanna show you the inspiration for this, for me, I'd never heard of this thing, even though it's been around for a long time, is I saw this recent synthesizer, modularizer module usage called String Thing. So this is NervousSquirrel.com and they are a builder of 5U and 4U and now you're a rack modules that are interesting as heck and this one, as you can see right there, there's our friend, the orange fishing line and there is the cable retraction unit and the joysticks taken out of these things. The only reason this Gizmo exists or the only place you're gonna get this particular thing in the world that I know of, a potentiometer connected to a cable retraction system is in that game track. So go buy one in eBay, they're like 30 to 50 bucks if you're interested in it. So here is a video, I don't know how well you can hear this. So you can go check that out, String Thing, I'll just put a link in the comments. I saw that and said, oh my gosh, I gotta hunt down the peripheral this came out of. So let's take it apart. Enough talk, let's go get in there and see what's going on here. So let's go get in there and see what's going on here. So let's go get in there and see what's going on here. Let's go get in there and see what we can see. So from what I've read, there are five screws. So we're gonna take a guess on, I don't, you know what, I don't mind taking off these feet. Some people just punch through them and extract the screws, but I'm not gonna actually use this for its intended purpose. So let me zoom in a bit and angle it for you. There you go. And I'm just gonna scrape off these feet. That one might not have a screw. That one definitely has a screw. Actually, okay, I'll do it this way too. There's no reason to pull them off, this works pretty well. And let's see, let's, I'm guessing a Phillips. That looks, yeah, looks like that'll work. Oh, that's a weird view. Hold on, let me fix the, go to, not that, that. I used to have one of the electric screwdrivers and it burned out and I kind of wanna get one again cause it's very handy for these types of disassemblies. I even have like a little kind of impact driver that's kind of a small side that would be good for this. Okay, I think it's gonna be more than five screws, at least six. I also like that the design of it looks kind of like an Xbox, it sort of has that feel. It's very chunky and heavy. And the creator, by the way, if you look it up, there's a neat story. The creator was looking for ways to do a 3D motion controller and came up with the idea while in a hotel, in the shower, sometimes in a hotel shower, there'll be a cable retraction, clothes drying string kind of thing and that gave him the idea, which is great. Oh yes, someone said that looked like Sam from Look Mom, No Computer. Yeah, he was playing with it. He's not the creator of that synth but he was visiting the nervous squirrel, world headquarters there. Okay, screws are out. I'm gonna remove these little gloves. These have nice little clips, little plastic clips, allow the gloves to come off and means we should be able to take that. Face off, so nice, so easy. This is really well-designed and well-made. I have a little mini ice cube tray that's decent for these kind of screws to keep track of them. All right, we got two more that maybe don't wanna come out due to the little rubber feet things but I know I'll lose them if I don't get them out. All right, maybe they'll stay. I'll leave them about you, you want them out? Not coming out, that's okay. All right, so let's get a little close up here. I moved the light, that's why it's dark over here, sorry. Tilt this to get better lighting. So you can see, here's one of these. So this looks like a standard joystick component here. So it's a springless, no spring return, XY joystick, local lighting on there. Okay, so that little cable retraction wheel is turning, it's running through a little pulley system to turn this little worm gear right here. You see those sort of threads on it which in turn is turning the little gear that is on the shaft of this little stubby potentiometer right here. So you can see I can pull a lot of cable longer than I can reach. I want to get it knotted up. Let me see if I can, sorry for the camera wiggle, I'm gonna. Okay, so you can see that as I turn and turn and turn. Whoa, there we go, I reached the limit of it. Watch that guy right there. Very nice and slowly, evenly spinning that little potentiometer. So that's pretty cool. So it looks like we've just got two of these modules here and here. Here's our USB cable coming in here. I think I'll probably leave this intact for now because I just want to try it out as what USB messages are coming into. Probably Windows would be the place to try that if anyone's written drivers for it. It'd be kind of interesting to see what info we can get on the computer. But ultimately, there's, I think this is the XY. This is the XY, I think this is the XY set here. The white and the orange would be the two potentiometers for this, same here, orange and white and then the red and black are the voltage reference for the voltage dividers. So we got those right there. And then this is both of the retraction ones. So this little board right here kind of has everything we need as far as the signals coming to it. And then there's some capacitors and a crystal on there. So they're doing a little more, but these little look like JST connectors we could probably build a little board to grab those and then read them into a microcontroller instead. And now you can do things like send MIDI messages, use it to control sprites on a screen. We could do like eight dimensional Pac-Man if we can get FOMI guy on board with some VR goggles. I don't know. Pretty cool though, really cool. Yeah, this is well designed. This is the V2. So I think this is the one people have said is a little more modularized. It looks pretty good. I think you might be able to take this whole second section out on its own. So maybe I'll do that next time. I'll play around with this. And then when we get together again, I'll maybe pull one of these, get rid of some, I don't know if there's hot glue on there. Holding those in or not. But yeah, I'll spend a little care with that. So go get one if you wanna play with it. We can play along together, it'd be kind of fun. That is the game track. Make a fishing game. Oh yeah, you could cast your cast into the pond there. Do some fishing. Here is, if you wanna see what the packaging looked like. It varies depending on the region. There's one. Madcats, I guess, had distribution. It wasn't made for Madcats, but I guess maybe they bought it or they had distribution. So you'll see that. I didn't bother getting one with packaging. Here's what some of the other ones looked like. Is that? I don't know if there's a clear difference with the exterior of V1 and V2. Yeah, weird gaming peripheral. It's not that. Okay, I think that's gonna do it. So before I go, I will say, go get yourself some stuff from the Adafruit Store for 10% off with the coupon code BIRTY. And you can head on over and pick up some gear things to graft your Lego into your servos or get a microcontroller 10, whatever you want. Any physical stuff you get in the store before midnight East Coast time tonight, that coupon code should work for you just to type in BIRTY on the coupon code field when you're checking out and gotta share the gift from Yaniscu. Hey, well, hey, yeah, I'm sorry, my PlayStation didn't wanna play that disc there. I don't know, could it be region locked? Who knows? I don't know what the deal is with that, but that's okay. That's not why we're here for that. We're here to pull this thing apart and use it for our own weird projects. Oh, apparently my AV has gone out of sync. All right, that's probably a good time to stop then. Thanks everyone for stopping by. For Adafruit Industries, I'm John Park. This has been John Park's workshop and I will see you next week. Tune in tomorrow, I believe is gonna be a deep dive with Scott if he's available, so come and check it out over on Discord. You can find out who is broadcasting and when and also check the blog. All right, thanks everyone for Adafruit and John Park. I will see you next time. Bye-bye.