← All talks

Morgan Rogers - The 2025 BSides Knoxville Badge: Tips, Tricks, and Tribulations

BSides Knoxville40:3671 viewsPublished 2025-07Watch on YouTube ↗
About this talk
Morgan Rogers, CTO of Foxpick share his experiences designing, building, debugging, and manufacturing the 2025 BSides Knoxville badge. He'll also go over what it can do, and how you can explore its features and capabilities!
Show transcript [en]

All right. So, welcome to 2025 Knoxville Bides. Um, for those who don't know me, you will. I come to about every Bides in the East Coast, so it feels like that way. Um, I am Morgan Rogers. I run help run my wife runs Foxpic. Let me get that out of the way. Um, but I help run Foxpic. I also do all the engineering for Fox Pic. And Knoxville was gracious enough to ask me to do their badge this year. So, without further ado, we'll kind of dig into what this badge does, what it's made of, and uh I'll take questions at the end, and but hopefully by the time we're done, you'll be able to put your name on it, maybe add some

time to it, uh show you what we can change and what we cannot change, and then I'll give you access to the code so you can make it what you want. So, so tips, tricks, and tribulations, but this is an ESP3 badge. So basically it is the there okay it is basically the I say the flagship that ESP puts out. It's not C6 is but the ESP SS3 is kind of the most supported chip out there. So if you're like hey I want a chip that does Bluetooth and Wi-Fi and all the little AI tools and runs on MicroPython it will do that. So I kind of put that on there because it's kind of the budget chip

that does everything you might want to do. So, basically, it's got 45 GPIOs in built into it, ADCs, again, your Bluetooth, which is BLD5, uh, and your Wi-Fi 2.4 GHz. So, kind of does everything. If you want in the future you want to make, I want to make this, pull this badge out, probably do it. So, um, the very basics I put on here, so we'll go through that, but the basics come out to be just I wanted to give everybody a feel for what this chip will do. Put a screen on it, all little passive touch deals, a little bit of of Wi-Fi deal, and a little bit of Bluetooth built into it as well. So, we

can kind of go through all that works. This mic is be so close to my mouth. Weird. So, first screen. Oh, look. We get the B the B-side screen there. But, yeah, the buttons do work now. So if you hit like left to right on the left side, you'll flip over to my screen. So you can see the FoxP logo and all that. So that's kind of how the graphic simulations work on a on the screen, which is a if anybody cares, an SSD 1309, but um no one no one really cares about any of that. But so in in the the code that I will give you the uh the access to on the site, it has like what

pins you have to hit and all that kind of stuff as far as the constructor has to be built to run that screen. But uh it was the pretty much the budget screen available at the time. So that's what I went with. But so basically this is how graphics get put to the screen. It's like a glyph push. So we pull in and we pretty much populate entire screen through like a page swap. So kind of easy. This screen screen two like what does this actually do? I hit the little button and get Oompa Loompas on the screen or something. What is What is this? Right. So this shows you how many Bluetooth devices are around you. Um, so

you if you hold it down, it like will populate and then the MAC address at the top is actually the one closest to you. So if you hold it down, it starts a little scan and it's like and I think every time I've done it here, it's maxed out. So I don't know if there's like, you know, blew through stuff in the ceiling and all this kind of stuff, but it is like really strong. Um, by the end I'll show you how to like tune it down so you can kind of tune in stuff that's just right next to you or or within five five feet of you, but I think it's reaching out and grabbing stuff within

like 30 feet of you. So it's kind of grabbing everything in the moment at at at my house it's like seven things. So it's not a whole lot but um but yeah it's always like wow everything here has Bluetooth presenting out of it. It's kind of crazy. So but that's that little screen there. So basically that's kind of goes through what it can do as far as Bluetooth scan repeat and pulling MAC address and data from Bluetooth from that chip. So again when you look at the code it's like oh yeah that's how it does it. Obviously a battery voltage screen so you can kind of get a real-time view. It updates every couple milliseconds. So

you can kind of see how much draw you're doing. Um, this I put in there. So there's obviously a a a function in there that you can pull out that says, okay, this is the pin it uses for battery. This is what we're it measures and and the conversion to actually get that power out because it's obviously we're reading across some resistors and stuff. So we don't really want to measure ADC values. We want actually voltage values. So that equation is in there. The offsets in there and all that kind of stuff. So you like what's the math? We don't worry about that. It's in my code, so you have to worry about um also discharge. Lithiums don't

discharge. Oh, we got a question. What? >> Oh god. You know what? >> All right. So, batteries green. So, lithiums don't drain in a linear fashion. They drain in a more of a a reverse log. we call it that. So the function for that is in there too. So you know as you see my proximity to getting dead is really in there. It's really how much battery power you actually have. So it's kind of neat. But as an EE is what I am. I'm sorry I didn't have early on. I get into the details of how circuitry works. Batteries drain all this kind of stuff. So for me to say oh it's I take you know

3.2 to 4.2 and I divide it into fifths here and then divide it out. That's not how batteries drain. So I was like it would eat me up here. like it's been at one bar for like an hour. But yeah, no, that's not how things work. So, but

and then this your name here screen, right? It's like how do I test what's I would like my name there. It would be it'd be cool. So, there is a serial interface built into the the board itself. So, we can actually talk to it and you can type your name in using a little bit of code. Not a little bit of code, type it in. It's not a big deal. And uh and it'll put your name up there. And then where it says no time, if we enter some Wi-Fi data, it will grab the Wi-Fi time and it'll disconnect and then it'll keep that time updated until you turn it off. Your name value, any sort

of other values that that that we set are put in place, they stick. So you turn off and on, your name doesn't go away. The Wi-Fi data doesn't go away. Uh your strength of Bluetooth doesn't go away. All these little data fads don't go away. The only thing that that uh that goes away is again the time because we have to like update that. There's no RTC or real-time clock on this on this chip. So, we have to bring it in from somewhere and then stick it and then I can count it. So, >> I will get to that. >> Oh, so you can hit the buttons at the bottom.

So maybe wasn't up down on the left side. Left side gives you the different screens. Left right will change if the screen has a change on it. And then on the other side there's a status light on the back. Left right will actually change that status light. Again, it's just there so you can kind of see how it does it or how the code works to do that. and then up down uh well it doesn't anymore but it used to change the number of oompas but it doesn't really change that anymore but yeah left left and right will change the color of the neoixel on the back of the board on the right side and then left and right

on the left side will change the actual screen if it has a separate screen there. So

so how do we talk to this thing? That's what everybody wants to know. So it has a CH340 chip. So we have to have the CH340 driver. It is the UART driver for the chip. The chip you can use what they call uh the uh virtual inter interface which is VSI and basically it's a virtual serial. It's not reliable and doesn't give you serial out all the time. So I hate that one on that's built into the chip. So I actually put a serial chip on there that does the UR conversion for you. However, because I don't feel like paying f uh TDI's prices and to have their garbage driver in their chip that dies for no reason at

all when they update the driver, I put the CH3340 on there. Um, so Google a basic CH340. There are hundreds of sites that show you Adafruit and all these will show you how to install that driver. It's fairly easy. And then you'll plug it in. It'll show up as a comp port and then we can start typing to it. So, pretty easy there. Um, you'll need a USB type-C cable. C to C works. Um, and then we'll also be needing Putty or the Arduino IDE. I recommend you go ahead and download the Arduino IDE. I purposely chose to write all the code in that just because it's easier to understand. It's pretty common. Most people have a

familiarity with it and uh it's just the libraries are there for you. Um, I usually write in expressis standard um stuff because then you have access to all the the uh the registers and whatnot. But as far as getting your feet wet into these kinds of kinds of chips, the Arduino side is so much easier to get through. The libraries are there. You can just hit I need this and download it. Does this compile? Great. Burn to it. None of this weird setup or stuff. So, um I recommend we use that. I'll be using that in the demo and we can kind of go go through and uh get to talking the chip now with that.

So, When you plug the chip in in the Arduino IDE, it will actually do a little reset for you and then it'll give you this little command menu. So, these are the commands that you can use to go through and change what you said. They say we have the name, the Wi-Fi, the password, the timeout for the screen. Um, you can reboot the badge. If you don't like any of the data you have on there, hit the reset. It clears all those stuck deals inside. Um, you can change how fast the scroll rate is for your name. Uh you can turn on the debug which pretty much just prints out what it's doing in the in the

uh terminal. You can change the time zone. Say you went to Nashville next uh excuse me tomorrow. Uh then you can change it to CST, you know. And uh then you can change the uh the cut off for how sensitive the uh um the Bluetooth scanner is. So the lower the value the more the lower the greater well say excuse me first that the lower the value closer to 100 I guess I should say the more it will see right uh the lower the value closer to 35 the less it will see if you go below 35 you have to be almost on it to see it so all right let's just talk to this thing

boring

So if you don't have anything in there, there's a reset button on the back. Click it if I did it right. Click in. Come on. See? So why I didn't sacrifice to the demo gods. I'm 11. We're not comment. All right, there we go. So, it'll give you the menu if you hit the reset button and then we can say, "Oh, I want my name in here." Just type name all lowercase and then your name. It should give you a prompt saying I change your name to whatever. And then if we turn badge on now, I can see my name's here scrolling. So really simple, really quick. If I turn it off and on again, it'll be

there. So you set it once, you forget it. Beyond that, time zone, again, same thing. Type it in as it is in there, caps count, um, and set it. So pretty simple, pretty easy. Um, any questions about setting names or anything like that real quick? No, nothing. Okay, so let's go through the code. Why not? Why not? So, I wrote everything in the Arduino IDE, which is hard for me to do because it's very I say flat to me. So, um, basically I structure everything in a way that's kind of broken out. So the user I could have just all done it in one page, but it gets confusing with header files and all this and images and

all this stuff and stuff. So um the images have to be in um what they call um so there's BMPPS and then there's there's XMPPS. XMPPs are the hex version of BMPPS, right? So if you do it in in XMPP, it's easier to get the glyph out to write to the screen. So um there's lots of XMBB converters out there. Just Google it, I guess, and drag it in. It converts it. pull your hex your uh your hex out and change the variable name and then put it in. So any logo I have up here you can make and then just drag and drop it in as long as you put the include you can call it. So it's just a variable

at that at that point. So you want to write a variable to the screen as I scroll the bottom all this all you have to do is just page paint it. So pretty pretty easy pretty quick. It's using the U8 G2 library. So very robust library for writing Arduinos and screens. It's how we've been using for 14 years. So it's very very robust. Just add it. Lots of examples, lots of things to go to go through. The only thing you need to really worry about is I close my menu

is the constructor. So this is the constructor you must have to run the screen with the variable as long as you include my header file all the pins are accounted for. So nothing beyond that. Um but everything else I wish you to go through change what you want make it your own be like I want this kind of thing. The ESP will probably do it. I want to use micro pi. It will do it. It will eat a lot of battery and run clock cycles, but it will do it. So, if you're more familiar with that, load the bootloader on there. It runs it. Um, one of the first badges I I I I was doing I did put through the

uh the micro pi, but because I didn't want them all all to be dead before lunch because they would be, I had to go back to C++. So, um I think I actually wick the battery down in less than 30 minutes. So, we talk about cycles. Wow. Um, but you can be really efficient with the cores as far as the uh um the C++ goes. So, but I did like writing in micro pi. So, if you're more familiar with that and you have it plugged in, it does it right. Or whatever you want to add a bigger battery to it, do that too, right? So, not not a big deal. But so, but I I want to just go through and say

that all the code I hopefully commented well enough for you. We're always bad about that, right? We go back and comment after the fact. Um, and there's a couple things in there I know I added at last minute that I didn't put the uh the comments in there, but it's mostly there just so you can go through and say, "Hey, this is how we do this." I broke everything out. Every screen's a function. So, how that screen gets painted, what's painting to the screens now function, too. So, you can say, "Okay, here's how this little snippet of code works. Here's how this snippet of code works." So, you're not trying to like go through massive

amounts of lines. just go to the bottom and you'll have the the breakouts of how how things actually get put on the screen or work themselves out. So, I didn't want to go through a lot of like tedious code for everybody, but just go through and say, "Hey, it's this work." And it's at the bottom says page one. So, you can look at page one and then in page one are the functions for how page one gets painted. So, it's pretty pretty simple. I like to say elegant. It is not, you know, my elegant stuff is reserved for uh for high-end stuff that I design all the time, but this stuff is more of a let's let's get a everyone out

there making something, doing something with Arduino, doing something with ESPs and kind of getting out of the the the user space and in and into a little bit of the maker space. So, I broke the IO's out on the back as well. So, the IO's I'm not using you can solder to and and use. So, I didn't want to be like, "Oh, you can't use those." You can use them. They're there. Um the ones I'm of course using you can't see but um yeah any questions so far before I just draw on >> the what? So if you scan the QR code in the back, you go to my site. In the top link, there's resources. This thing is labeled

B size Knoxville 2025. So it'll take you to my GitHub. We like to say there's a lot of public stuff on my GitHub. There's not. I'm sorry. I have a lot of IP I have to protect, but that is on there and open. As I add things or whatever to other badges, you'll see that populate, too. But um but right now, it's just that badge, so it's pretty easy to see. But, um, any other questions? I think I I think I'll put a link to the driver on there, too, so it's a little easier to find because it's a CH340 and there's unless you if you go to the actual C340 site, I think it's all in

Chinese, so you need to like translate it. So, uh, uh, the uh the the um WCH who makes that that that that chip. They make a lot of nice chips no one's ever heard of. Um, that's one of them. They make a lot of great processors no one's heard of and they're cheap. So they make an an Arduino clone for 20 cents out there. So it's actually if you go to Nash tomorrow, uh the badge I did I I I did for those actually has one of those on there that runs all the LEDs because it was cheaper than doing it with actual, you know, AR, you know, with with with anything else, you know. It was just

like, okay, I could do it with transistors and stuff or I could just pro, you know, code it, you know. So So it's easier. It's a chip in LEDs. It was in like a nickel to produce. It was weird. So, but yeah, it's it's a great platform. Not a lot of support for it because again, no one knows about it, but if you're familiar with uh um how microcontrollers work, I would recommend ordering a an EVA board for what's called 32 V3s. Yeah. And they're CH32Vs. And they're a fantastic little little chip that's does everything an Arduino will will do plus some. Plus, it's faster and runs lighter on power, too. So, who knows? So, any questions beyond

that? I'm gonna wrap this up. Yeah, it will. Um, couple things about that. So, when you plug it in, if it's on, it won't actually load your comp port. Um, because it goes into charging mode and it doesn't sync itself up. So, if you turn it off and then back on, it'll stay that way. But, if you have to be off to actually get it to set the compport first, uh, had to do that for battery protection reasons. Uh, you'll actually get a a short through if you plug it in and it's on. It's like, hey, I'm on and the battery is connected. Um there's a blocking circuit that keeps its from happening, but uh

uh no, it will run on USB power just fine. It's just easy if you're going to talk talk to it and it's on when you plug it in, it won't sync up because it holds that circuit open for you. So there's a protection circuit that keeps it from like getting hot. So um it does charge while you're using it though. So if you had it on, I have it have it here. It's on with the battery on it. It's charged. It's fine. It shuts itself off. So, um, we I put all the battery protection circuitry in there. What's not on the board is actually on the battery itself. So, there's no really chance of it catching fire, we hope,

unless it's a battery manufacturing problem. But, um, um, yeah, I went ahead and we designed a lot of that back in to keep that from from happening or shorting your computer out or anything weird like that. So, a lot a lot of detail was paid to the power side. About 3 minutes was paid to the uh the other side of the chip. weeks weeks were done in in uh in sim and uh in in design for the uh for the power side just because I'm very particular about power because that's the dangerous side of the world, right? You know, we're actually taking this 3.2 volt uh or 3.7 and boosting it to 14 volts on here, right? So then we have to

to run the back of this screen. It's low amp, so not a big deal, but yeah, we have to take these these voltages and ramp them way up to run the the LEDs and all that kind of stuff. So there's a lot of detail paid to this side of of of of the board to make sure that was safe and didn't run blow caps up or all kinds of crazy stuff. So done it in the past. So you know learn from your mistakes I hope. But um but so as as a day job which is not it's not not it's not this I am an e I I I design custom electronics for microchip design. So

that's that's kind of what I I I do for a living and uh so there's a lot of a lot that goes into designing stuff that doesn't exist because that's what we have to do, right? So um so I sit around and have to think of every way we can break this and then try not to break it and that's you know and we fail a lot of the times. That's how it works, right? So you always break something or you get something backwards or you run it out. But um but yeah, so so to do stuff like this is always like the fun side of it. I actually get to use my knowledge and

and and training and and and uh to sit down and design pretty much toys, right? That's how it works. So the the toy maker, it's kind of fun. But so I literally do do this on my weekends and uh and I I enjoy it. So you I was I was happy when Nash and Noox and and four others came came to me and like I want you to badge. She's like sweet. I'll do that. I like doing stuff like this. It gives me something to learn, right? So I I'm always thinking, hey, let's learn something new. what is it going to be and you're like where do you start? But when people come to you with a project

it's like oh I get to learn new stuff and you know and see what it's about. So, so I recommend as we as you play with it, go do the same thing like what can I learn? Google what does ESP332 S S3s do? You know, what can I do with it? Says everything on here is pretty much you bought a adder feather or a um the the the dev mod boards or any of the ESP32 SS S3 boards with the OEDs on them. Same star circuitry within range, you know. Um, and uh, and so it will do everything those little boards will do, except I gave you the benefit of having your the uh, touch pins brought out to

touch pads. So you're not sitting with like a wire and some foil or something, right? So you should get nice touch pads on it like that. But um, see how many see how many Bluetooth things. See just lights up. So Bluetooth everywhere in this room. So that works out. Any more questions? Yeah. Yeah.

>> So due to scale, there's a lot of people here, a lot of badges. We had to outsource that. Um, sadly with EPAs and all that, we always have to go overseas for all this stuff. It's how it works. Um, most of the electronics are made overseas. There's very, unless it's a processor, it's probably not made here. So, it's got to be a processor or a trans like a a power trans something like that. Something big. They're all made made here. Small discreets are typically made overseas. So, it's all had to be ordered China or Philippines or somewhere else. Um before terrorists, I got these in. So, it was a is a a chore, but we we got it worked out. But,

um I am actually changing everything over to a Filipino board house. And I found some local assembly houses. I'm actually going to be one of them. So, the pick and places and screen machines and all that are coming um to build these things, but um mostly because now there's demand for it, right? We didn't have a demand before um because you could have them produced for a dollar badge per se um you know, but now with with tariffs and all that stuff that that's changing, good and bad, I guess. Um there's there's no real infrastructure yet. So, it's bad at this point, but maybe in the future it'll be better. Who knows? Um it really depends

on what comes of it and if it sticks. So, but but yeah, so as to your question, I guess we had to outsource a lot of it because of production runs and and and volume is like that. There's just nowhere in the states who could do it affordably. Um so we to do it that way. I know that.

>> Yeah. Um Okay. Um so, >> yeah, currently we are so there's a lot of US base houses now. They're smaller. So depending on your scale it comes comes out to there's actually a house down in Augusta um that does stuff too but um we are currently or I'm currently looking at uh so Battelli is a that's spelled like beetle I think it's bi t is a Canadian house I think their board house is actually in China though so it's kind of like their Canadian house for assembly but the board house is in China but so um beyond that there's some some Philippine houses uh I think there's a couple of of uh Mexico places

too that were they're starting to do it. Um, but it's primarily been a China heavy place, I think. And and they have everything in place for it because they've been making electronics for so long since since the 80s, right? Let's be real. Since since they moved everything o over there um that and since they had the warehouse and all that, they they have a lot of these in fact to the point where they actually have their own um EDAS. So their own software built into their house where you can design their board and their software and just hit buy. Right. So, uh, PCBUA and, um, um, Easy EDA, which is JLC, um, do that. So, which is if you're if you're kind of

wanting to get your feet wet into EDA and design, you can use their use their tools and export the Gerbers and order your boards from somewhere else. Um, but the the tools are free and robust. So I I you know because a subscription to Altium is like 2,000 a year or something. So no one wants to do that. >> Yes.

>> So overall so the yes and no. So the cost is around about that. Um there's so you have to factor in shipping taxes and all that too, right? So there there's there's some other costs tacked onto there that so if you were like oh I part of this board out but because I order in volume of course now we can slide that price down a little bit too because you order a thousand of these processors they're now not $3 or a dollar right so you can kind of get twice that like if you had an unpopulated board and you went to build today it'd be about 40 $42. So, mostly because tariff costs have brought some things up, but

any other questions up here. Yeah.

So as a microchip tester um I have found so typically these problems occur on the the analog to digital side. So anything we're taking analog signal in and converting it to digital and reading it out. That's where we see a lot of degragation. Um it typically happens over the course of heat. Um because now these these resistor arrays start to get more resistor or less resistor depending on the heat and uh and so you start to see a lot of flux based on heat. Arduino is bad for it. um clock is also can swing around a lot because of that things with internal clocks. Um I think the C C2 from ESP has a little bit of

variance there. Not enough to matter. Um Arduino was designed to run off a resonator which has a lot of error already. So it kind of works stuff out. I I I wouldn't use a a an um an ATM 328 for much of anything other than running basic backend stuff that doesn't require a lot of of uh precision. Beyond that, you want to get a precision chip that does that. So, um the S3 I found to be the excuse me, the S3 module. I don't know about the actual chip itself. I don't really buy those cuz it's a lot of overhead to get it to work. Um the modules seem to be really really well. they just work really really well for

what they what you know for doing the Bluetooth and Wi-Fi. They don't do five gigahertz or uh or Wi-Fi 6, but uh as far as those kinds of timing things, they work really really well. So um the clock is very square on this chip and and typically you see a sawtooth clock on a lot of these chips because it's just not designed well. It's just okay. There's a up and a down but the slooh rate is almost a a uh a um a 45. you know, it's it's terrible. Uh, the square waves on this, if you look at the spy and put a scope on it, are just just clean square waves. It's it's fantastic

on this chip, but um I was shocked actually. I'm used to seeing very skewed or or curved lines on these things, but for this thing to be nice and square, I was I was surprised. So, um so yeah, and it's probably why I' I've I picked that chip, too. It was just very robust, clean, mid-grade chip around. Uh you can always go more expensive I guess but for that for that chip it just does everything any little hacker space might want to do right so it has all the wireless with the antennas built into it as well as all the capacitive touch screen driven uh protocols are built in so your I squared C and spy are both on chip

they're not like a bit bankank scenario um which is why we can on the code it's hardware not softwarebased um so yeah it's It's that's a great chip. But again, the other stuff at Mega, the um uh the Arduino Megas are are fairly good, too, as far as running servos and all that all that kind of stuff. If you come to the Fox table, I have a some games. They're running off the I think I use the 328s in all the locks and then I'm using an ESP to actually drive them on. So, yeah.

Yeah. So, I commented the code as best as I could based on like how my wife read it and her question. So now she is an engineering background just not where I am at. So it was more of a are you techie but maybe you're not you know an engineer. Um so I commented things as is just to make it so where I want to do this and the variable names make sense. It wasn't so I bothered to type out a variable name that's like long right. So it's not like what does tr mean? No none of that kind of stuff. It's you know time register or something. It's actually written out. So you're not

trying to like go through and and figure out what I was trying to make of it. I didn't use a lot of pointers unless I had to. Um so anything where a string is handled, if anyone works with string values in in in process in any sort of code, it's always a const pointer somewhere um because it's easier to pass. And with microcontrollers, you have to hide it that way. It's basically an array of of characters that I have to point to as a as a string. Um, but I try to limit that as much as possible so you're not going, "Wow, there's all these ands and asterisks in here. What's he talking about?" Because that that

gets confusing. And so I I tried to just I actually the code is very large for this chip. Um, because I was very verbose in how it did it. So it was like, "Okay, I can't use a pointer. I can't be like, okay, everything gets pointed back to here and save all this this this uh this variable space." I was like, you know, here's a variable. Here's a variable. Here's a variable. They're all like ins, not like, you know, eight and and 16 and 32. I didn't like define them. It was like, okay, they're all just int values, so it's easy to read. You're not going, why do you make this an eight and why is this a

16 and why is this 32? You know, uh because the color for the LED is 32 bits. Um a lot of the variables could be in N8 and but things like uh time and all that need to be in A16, right? you know, because your clock goes further out. But yeah, just like that where it's like I didn't bother to go through with that deep because I knew there'd be a lot of people new to code looking at it. And when you start going into code design and why you pick this, that's a whole different class, right? That's a that's where we have to sit down and go why, what's the end, what's going to use

it, where's it going to go, what am I putting it on, um how's it going to be used in the future, what kind of temperature we're sitting at, stuff like that. So there's all kinds of things we have to think about when we're dealing with the real world and microcontrollers when we actually write the code because we sit down and think about everything and then make it fit on this nothing of space right and nothing of cycles and the speed is you know an eighth a 16th of what a a uh a computer would be right so to make it run fast and work well we have to really be explicit in what we do

but for this code I was like you know I can be explicit But let's just make this easy, easy to read, structure it in a way that's easy to read and break out everything into a function that we can. So the actual running code is very short, but how it does it is very long. So as you read through it, you're not going, what does he mean by this? And if you are, if you get to a point, my emails on that page, right? Just shoot me an email. Um, you know, I hope I don't get suspected a ton of them, but I do answer the questions as they come. Um, I will probably put

them on the GitHub as well as I answer things. So, you can always post a comment there, too. So, um, and I'll answer them as they as they uh as they come in. But also, if you want to make a branch of it, make a branch. I want to see what people make. So, that's how I learn. I'm like, did you know you could do this? No, I did not. I might have done it. So, go ahead, make a branch. Do what you want to do with it. But, so five minutes here. Anybody ask a question?

is a standard SAO. If you want to populate it, it will run 3.3 volts. It's got the I squared C built into it as well. So, if you wanted to, I don't know, make a light up thing that's controlled by I squared C from the controller, you could do that as well. So, I went ahead and ran it because I had the space and the IC lines were freed up. So,

So that's a relative term. Uh I've been doing this for 14 years. Um so for me to uh it it took me probably two months of design to get the power circuitry done. Um these are based on designs I already do though. So uh these circuits were is basically how do I make them work on this board. So as far as values go and all that those are defined already for me. So um but get getting the fit component selection all that and I say two months but it's two months of weekends and in time. It wasn't like consistent. Um and then the tool I used uh Kyat I think for this one. I I swap

around a lot because I get questions on a lot of them and in order to answer questions on a lot of EDAs I have to like use them all. So, um, I actually swap around. I I use, uh, the Altium suite for a lot of my stuff just because I'm it's it's the pro version. I do it for a living and it's what I have. Um, and it goes quick. I don't like Altium for reasons. Um, mostly it's expensive and and there are things about it now. They got bought out by Renaissance I don't like, but that's here or there. Um, but as far as a free tool goes, Easy EDA has a pro version that's free and

permanently free. That's really, really good. Um, it's it's coupled with the JLC, which is a board house in China, but it is a very robust tool. Their parts are attached to it. So you can actually you know assign parts that you can actually buy and things like that which you know that's always been the uh the headache in design is is this part an active part does it work you know where can I buy it from all these things so the libraries are attached to it so you can sit there and build your bombs and build all this kind of stuff with it I say bombs boom not anything explosive bill of materials there's a lot of

acronyms out there um so basically you know it's a nice tool to say I need a resistance here that's 220 ohm. You just go to the thing and resistor there and 220 ohm and it and it builds that for you. So now you have a shopping list as well your design. So it's it's it's a it's a really welllaidout tool and you know for anyone getting into it and just want to see and get the feel of schematic work. It does that kind of stuff. If you want to get into um like simulation uh like spice and all that or the pspice type stuff, uh there's a couple of online editors around. Um I think one

force stall or something like that is a nice drag and drop online. Put a resistor there. Put a cap there and you can watch the current go through the stuff. Uh, so you can kind of build circuits and like, oh, it makes the LED flash or if I do a transistor with this and it charges, you know, so you can kind of watch how things work. Um, and in like the very very slow clock time, too. It's like, you know, 1 second's, you know, a millisecond or something, something long. So, you can actually see how long it takes a cap to charge or something like that. So, um, beyond that, if you want like a good book on

circuit design, uh, there's a book called the inventors or excuse me, circuits for the inventor, I think it's called. And I actually reference it a lot even though as as as a uh as a professional. Um, it has a lot of these circuits broke down for you and you're not having to go through and design them yourself. It's like these are known circuits are used in the industry every day. Don't invent the wheel, just put the wheel on, right? modify it for your you know for your design but don't try and invent it. It's been done even what I do we have tables and it's like hey I need to make this do this we say we have a cap of this value

involves this value and we drag across and resist this it is you know we don't do the math like we used to anymore so because it's been done so any other questions before I wrap it up >> how hard would it be to add a video >> to add a video >> to that >> uh I don't even know if it's possible so So right right right right right right right right right right right right right right right right right right right right right right now is the video actually shows up and we're actually saying okay it's a one for for uh for black and a zero for white you know and so I make a matrix of that

whole screen 128x 64 and then we paint it so it loads the registers and paints it is what we're doing so if you want to make an animation all you got to do is sit there and say okay we cycle through with a a a uh a frame rate and in the in the in the code I have the frame rate and so I have a variable that goes through we track the loop time and when that loop time hits in, you know, a zero for the most part, then we paint the screen again. So that way we're not overpainting or underpainting. All right, I think that's it. So again, make it your own. I like to I would like

to see some code and some uh some some branches on my GitHub come out and what people are doing with these badges and and next year maybe bring it, you know, I want to see it cuz I'm interested in what they can they they can do too. There's a lot of projects for ESP32s out there. So it'll run them all. So give it a go.