The Router

The Hardware Side with William Toohey

April 11, 2021 UQ Computing Society Season 2 Episode 3
The Hardware Side with William Toohey
The Router
More Info
The Router
The Hardware Side with William Toohey
Apr 11, 2021 Season 2 Episode 3
UQ Computing Society

Will Toohey works full-time as a software engineer, but in his spare time he is a passionate rhythm game fan and hardware hobbyist. Today he’s gonna be telling all about his experiences working on side projects, and how you can get into hardware, no 4-year electrical engineering degree required!

Will Toohey (also known as @mon on Slack) currently works as a Firmware Developer at MOVUS, and in his spare time works on hardware-based side projects. From skills he learnt doing projects he developed and sold hundreds of units of a portable Sound Voltex rhythm game controller, called Pocket Voltex, and he also has many other projects on his website.

Will’s project homepage (his Pocket Voltex controller is here!): https://mon.im/
A recommendation for PCB manufacturing: https://jlcpcb.com/

Show Notes Transcript

Will Toohey works full-time as a software engineer, but in his spare time he is a passionate rhythm game fan and hardware hobbyist. Today he’s gonna be telling all about his experiences working on side projects, and how you can get into hardware, no 4-year electrical engineering degree required!

Will Toohey (also known as @mon on Slack) currently works as a Firmware Developer at MOVUS, and in his spare time works on hardware-based side projects. From skills he learnt doing projects he developed and sold hundreds of units of a portable Sound Voltex rhythm game controller, called Pocket Voltex, and he also has many other projects on his website.

Will’s project homepage (his Pocket Voltex controller is here!): https://mon.im/
A recommendation for PCB manufacturing: https://jlcpcb.com/

Matt:

Hi everyone. And welcome to the Router, the official podcast of the UQ computing society, where we explore the human side of tech. I'm your host, Matt. And today I'm having a chat with Will Toohey also known as@mon on Slack. He currently works at MOVUS as a software engineer, but in his spare time, he is a passionate rhythm game fan and a hardware hobbyist. Today, he's going to be telling us all about his experiences working on these side projects and how you can get into hardware too, no 4-year electrical engineering degree required. Welcome to the router. Will, how are you doing?

Will:

I'm doing great. How are you?

Matt:

I am all right. Um, so I thought a good way to start would kind of just feel like, uh, if you could give a bit of an intro about, about yourself.

Will:

So I'm William Toohey. Um, I finished a software engineering degree from UQ a couple of years ago. Um, currently I'm working for a startup coming out of UQ's ilab called MOVUS that works in predictive maintenance. And on the side, my major hobby is making and selling and manufacturing, uh, controllers for arcade games and interface things for arcade games and basically making PCBs and designing PCBs. And that's my hobby at the moment. Yeah. Side hustle. You could call it

Matt:

Side hustle. Yeah. Yeah. Um, so, so that's interesting. So you only studied software engineering, um, so you didn't study computer engineering or anything like that? Just,

Will:

Yeah, so I actually, I started doing mechatronics, uh, but it turns out that I don't like the mechanical side of things, so I switched to software and aerospace because it seems cool, but the math was too heavy. So I went to straight software. Fair enough. But I focus mostly on the firmware side of things. I really get a kick out of optimizing software to make it run on constrained platforms and getting the most out of a piece of hardware.

Matt:

Hmm. So, so did you do a little like embedded systems programming kind of stuff that you need that kind of thing?

Will:

Um, I think the deepest I went, I didn't actually do embedded systems. The closest I went was CSSE2310 actually. And also CSSE310, which I believe is the FPGA course. Yep. Yep. And that was about the deepest I went apart from that it's just applying standard software engineering stuff to embedded and making sure to optimize all the time.

Matt:

Sounds good. So, um, so you mentioned PCBs, uh, I guess to anyone who's so, so as someone who's not super in into this kind of thing, um, I know that it sounds a printed circuit boards, right? So it's a kind of like the green little things. Uh, you have all your, like your circuits printed on them and all that. Um, but could you maybe give a little bit of an intro to those like more software inclined people like, like myself, I guess you kind of don't know what's, what's involved in, in getting a PCB or printing one.

Will:

Yeah. So if you do I believe team project, uh, there'll be a PCB component there and it's effectively, okay. You've got your software on your computer, but you want something to happen in the real world. Maybe it's as simple as a keyboard. In my case, it's a slightly more complicated keyboard with a couple of knobs on it, but really all you want to do is you want to attach those knobs to a controller that talks over USB to your computer and gets input into your thing. Or it could be a standalone thing, whatever you want, but it's effectively just designing a circuit that connects all the components together that you'd want to connect together and putting that all into a flat piece of fiberglass and making it easy to manufacture and you stick it all together. And instead of having to wire up everything by hand, you're just solder everything to the board and it's all connected for you.

Matt:

Oh, very nice. And then, like, if you had like any, like, I guess I/O or anything like that, you kind of just do that after the fact, right? Like on the top of the board,

Will:

Uh, what do you mean by that? As in like connections to other things?

Matt:

Yeah. So you felt like your, like your rhythm game controllers or anything like that, you'd have some sort of like USB port or something, right?

Will:

Oh yeah. So you're just solder on a USB port and you'd get a USB cable and plug it in. And as long as you haven't messed up your PCB design and everything's connected properly, you plug it in and you get that beautiful boom, boom. And off you go.

Matt:

All right. Sounds amazing. And I guess like, yeah, so that, that would be like the next step off. Do you have some sort of like a, uh, maybe like an Arduino or something as what you'd first be or how

Will:

You always have to start with an Arduino on a bread board because there's no faster way to prototype things really.

Matt:

Um, and then PCB is kind of like the polished finished version I guess.

Will:

Uh, I've got several unfinished PCBs. I can assure you.

Matt:

I know, unfinished or finished depends on, it depends on the state of the project.

Will:

Definitely a lot less broken than wires all over your desk.

Matt:

Yeah. I think like with, um, the students who don't really go into, um, do team project or anything like that, um, the most that software students get exposed to nowadays, I think is, is really that breadboard kinda kind of thing from a CSSE2010. Um, they're like, yeah, they're the tiny little cables that break and all that. So

Will:

Yeah. And I think CSSE2010 in particular, I think is an absolutely fantastic introduction. Um, if, for example, you're in a stream, is it, is it optional in any streams because if it's optional, I recommend taking it. Yeah,

Matt:

Yeah. Yeah. So studying computer science and software engineering, it's definitely compulsory. So yeah. Good. Yeah. Very good. I loved it as well. Um, so another question, I guess I had, um, so with these hardware projects, could you go a bit into, uh, you mentioned rhythm game controllers, uh, for the uninitiated, uh, um, what, what are those, what does that entail?

Will:

So if you're not sure what a rhythm game is, you might've heard of osu!, You might've heard of guitar hero, you might've heard of dance dance revolution, there's music on the screen and notes that you have to hit in time to the music. And I got really into this rhythm game called Sound Voltex, which is, um, effectively six buttons to hit with your fingers and knobs, to twiddle with your fingers. And it's quite unique and it's very difficult to simulate knobs with a keyboard, um, there existing controllers on the market, but they're massive. They're about$200 and an extra$150 in shipping. And I thought I can do a bit better than that. I can make this smaller and a bit more portable. So I designed a small PCB put on an ATmega controller, similar to the one you might be using in 2010 slapped on a couple of buttons and a bunch of encoders made a PCB for it. And it actually worked fairly well. And so I started iterating on that and made it bigger because it was too small and too cramped and slowly over the course of a couple of years design this thing, um, posted about it online and people thought it was pretty cool. So I made a bunch more and I think I've sold about 300 so far.

Matt:

Cool. Very nice. Um, yeah, I'll, I'll make sure to chuck the link as well, if anyone is interested in, in Sound Voltex, uh, in the description. Um, but, um, so that's kind of cool. So, so how long did it take to build the first version of that? Like the first working prototype? Was it over like a, like a one weekend of just like crazy, uh, prototyping or was it kind of a long term?

Will:

The first prototype actually? Yeah, it was about it pretty much was a weekend project. I just drew up and I was using Altium at the time because you get to use Altium at uni. Um, I just threw this thing together, drew up what seemed to be the right idea, put stuff on the board, um, sent it off to be manufactured by a random Chinese fab place received it two weeks later. And there were a couple of problems with it. The USB connector, for example, I had wired and correctly and had to hotwire some of the connectors to actually make it work. But yeah, you can really throw together a quick test PCB in a weekend easily. And if you get a bit more practice under your belt in a couple of hours, sometimes I can get a PCB just to test a concept because sometimes even with bread boarding, I don't like breadboarding, it's a lot of effort to plug in all the wires everywhere. Sometimes I'll just design a PCB to make my life easier.

Matt:

So again, I guess like over that weekend, you kind of used a lot of the like PCB design tools and things like that. How much of that was, was picked up from uni and how much of it was stuff that you just kind of had to like, you know, mucked around with and, and Google, is it kind of like when, when, like when you walk into an entirely software project? No, at least for me, um, a lot of the time is spent just going on stack overflow and looking up very ad hoc solutions to the problems I kept running into and solving it that way. Um, was it kind of like that or?

Will:

In PCB design, at least for me as a software person. So I wasn't trained in electrical engineering. I don't know some of the more advanced electrical aspects of it. It's kind of a, a feeling, uh, intuition that you get for how to make things and not have any problems. So, and that just comes with practice. One of my initial designs, I accidentally had a ground wire that instead of going from point a to point B looped around the entire PCB and then got to point B. And when I got the board, sometimes when I was turning the knobs, the buttons would start turning on by themselves and the board would start resetting if you spun the knob too fast. And without an oscilloscope, I just kind of looked at the board and eventually realized this ground wire was too long. Um, I fixed that in the next revision and it worked fine. So electrical engineers probably have a bit more official teachings. I know that there were a couple of PCB design lectures in one of the team project, uh, lectures. Oh yeah. Um, which definitely gave you kind of the basics, but yeah, a lot of it's just a wire needs to go from point a to point B direct from point a to point B and StackOverflow is still quite useful. Um, sometimes I'm not sure for example, USB, they say that you need to have differential pairs in that the wires need to be the same length. Um, so I looked up the USB routing best practices on stack overflow. And the end result is a lot of the time. It doesn't matter too much because the traces that you're making are maybe 10 centimeters long, the USB signals to be good can be somewhere within 20 centimeters of each other, which on a small PCB is huge.

Matt:

So instead of looking up how to do stuff, you just look up some concept and then best practice and stack overflow ends up giving you pretty good results that way. I see. Yeah. So, Oh, interesting. I guess like for me personally, these hardware projects are super intimidating. Cause it seems like there's so many ways in which you can, um, get things wrong. But

Will:

I think the main mental block as well. Yeah, there are so many things that can go wrong and PCB design. The main thing is just accept that everything's going to go wrong all the time. Eventually it will stop going wrong because you learn, but things always go wrong. You just iterate and try again. Think about how many times you've hit compile on a C program and you've had a compiler or how many times you've thrown some JavaScript onto a website and you've uncovered some stupid bug. The only problem with printed circuit board is it cost you about$10 every time that happens, but it, things will go wrong. As long as you commit to actually iterate your project. You'll get there in the end.

Matt:

Let's see. Um, do you have any recommendations, I guess, for those who want to get started? Like, so you need to find somewhere to, to manufacture these, these PCBs, to print them out. Um, do you have any recommendations?

Will:

So for the longest time I've been using Seeed Studio because they've been cheap and reliable, but recently JLC PCB along with, if you follow anyone electronics on YouTube, they advertise a lot, but thankfully they actually, they actually provide a fairly good service. Uh, they're very, very cheap. I think it's$2 for a set of PCBs. Plus don't ever forget the$15 tax. They ship it to you, but the PCBs themselves are quite cheap. The traces are all quite nicely routed. The silk screen is crisp the silk screen. Of course, being the writing on the PCB that tells you which parts that go where, um, but there's a bunch there's JLC PCB, there's Elecrow there's seed studio. There's a couple of others and they're all fairly similar. The PCBs are under$5. If they're 10 by 10 centimeters, you get five of them and they get delivered by us now, now,

Matt:

Oh, see you get multiple, you get multiple PCBs.

Will:

Oh yeah. You're always, you always get five copies. So if you want to cut a PCB up and see what it looks inside, or if you want to completely ruin a PCB, um, if I've got some trace that is connected to a component, and I'm worried that if you hit this component too hard, the trace might come off. I'll just solder the component on a, rip it off myself because I've got five more PCBs to test it with. And that way you get a really good feel for exactly how strong these circuit boards are. And they actually are quite strong.

Matt:

So yeah, I get more opportunity for trial and error than I thought. That's cool. Yeah. Um, and I know we'll, we'll leave that in the description. And just to clarify, we are not sponsored by, uh, any sponsored by no one. Yeah. Just, uh, it's the word of mouth recommendation. Um, but cool. Um, I guess, were there any other projects that you kind of, uh, I I'm guessing that it hasn't been your only project.

Will:

Yeah. If I go into my products folder, I've got something like 30 different things in various stages of things.

Matt:

Any, any, any good stories, any like, um,

Will:

I've got, um, there's some interesting stuff with the Pocket Voltex, which is the Sound Voltex controller is the initial version. I wanted the RGB LEDs and I wanted them to be side mounted, but side mounted, RGB LEDs didn't exist in a very convenient form. So I got these through hole LEDs and bent the legs on them, but then I needed to drive them and I didn't want to get an expensive controller chip. And it turns out that you can push an ATmega chip a fair way past its stated maximum limits, as long as you do it infrequently enough. So if you've ever heard of multiplexing, it's powering something for only a small period of time. So if you have 60 LEDs, you power one at a time when you loop around and do them all in rows and columns. So I multiplex the LEDs together and an Arduino's pins I think are specified for a maximum of 50 milliamps per pin constantly. And I was able to push, I think about 120 milliamps through the pin because I was only firing through that pin about 10% of the time. And that's the really good thing about being a hobbyist is you don't need to worry about producing 10,000 of these or a hundred thousand of these. If you're doing something that's a bit naughty, if you can get away with it, it doesn't matter because it still works. So you can often drive things faster or use the wrong resistor. And it doesn't really make much of a difference.

Matt:

So kind of, kind of going against like the super rigorous principles, but it's all right. Cause you know, it's your own little.

Will:

Throw stuff off the wall and seeing what sticks.

Matt:

Yeah. Um, one question as a is a more moderately curious software person with little experience. Um, I've always been worried that I'm going to like fry my fingers or hurt myself in some way when playing with all these like, you know, electronics, cause I don't know what, what I'm doing. Uh, would you say that it's at all dangerous or if there are any basic safety precautions, you would recommend the people who are messing around with hardware for the first time he want electrically trained.

Will:

There are really only two big things to be very, very, very afraid of. And that is 240 volt AC power and batteries that go into like drones or scooters or e-bikes. Those are very scary and I would recommend staying away from them unless you're extremely comfortable with them. Everything else, it's all low voltage, five volt, 12 volt. There's not much that can happen. The worst things that I've done is you plug in your board, windows says this USB port is using too much power and you see a small little wisp of smoke rising from the board and you realize something's gone wrong. Now, obviously the first, uh, the first thought you have after that is to touch it and see how hot it got. But don't do that because you will burn your fingers doing that. But apart from that, it's, it's all such low power that it's very difficult to hurt yourself. You might stab yourself on a sharp pin more often than you'll hurt yourself with, uh, blowing things up.

Matt:

Hmm. Sorry. So low risk, as long as you avoid AC power from your straight from there. Okay. All right. Um, one last question I kind of had, um, was about, so, you know, you mentioned, so you only studied software engineering, um, but you mentioned 2010, um, as well, 2310, 3010. Is there anything else you'd recommend if you wanted to learn about this kind of thing? Cause, cause for, for software engineers, right? Um, and, and computer science students, we don't actually do the team projects anymore. Oh no, we do. We do, uh, design computing, which is kind of more like, uh, uh, entirely software focused kind of like there's like a game design thing and there's thing like that. But, um, would you recommend anything for those wanting to get into this kind of thing,

Will:

Any courses that are all similar team product, if you have to make something that will be infinitely more useful than any other optional course that you could do because just forcing yourself to actually get hands on and as well, being surrounded by other people who might know something that you don't, that's the best thing that you can do. Um, as well as going to places like the edge in South bank who always have a bunch of people messing on random hardware products or I think hackerspace BNE has some very interesting,

Matt:

Oh yeah. I've heard about hackerspace as well. Um, warehouse or something, right where with all the stuff.

Will:

So that was my real introduction to the hardware projects was being lucky enough to be surrounded by all these smarter people than me at uni to get me excited about it.

Matt:

Yes. That's great. That's basically it for me. I guess I want to ask if there's anything you wanted to, to say anyone, any other advice or,

Will:

Oh yeah. There is one more thing I want to talk about actually. Get into Kicad. Kicad is an absolutely tremendous piece of software. If you haven't heard of it, it is a free PCB design software sponsored by the guys at CERN who do the large Hadron Collider. Um, five years ago it was acceptable, but not really great. It was kind of janky they've recently, not recently last eight months or so. They came out with a new version, version five and it is really a tremendous piece of software. Now completely lowers the barrier to entry. You don't have to worry about paying$10,000 for Altium. You don't have to worry about Altiums free cloud offering. That means that if they ever go down, you lose all your PCBs. It's all local. All the PCBs are text files. Often I'll find a bug with keycard where they won't let you do something, but you know, it's technically possible. You can just edit the text file.

Matt:

Hmm. Oh, so that's cool. So this, this would kind of replace any like other kind of software, but it's text based?

Will:

Well, the, you edit it using a GUI, but Altium for example, even Microsoft office Libreoffice, no matter what you're looking at, if you're trying to open up a document in there, it's a bunch of XML files and zip things together can be quite complex. PDF files, especially an extremely complex, whereas keycard, you can look inside it and you can instantly understand just as a human being. Oh, okay. This is a piece of line on the copper layer on the top. And if you want to change the layer from f.cu, which is front copper to back.silkscreen, if the GUI is too dumb to let you do it, you just modify the text file and reload the GUI. And it works because it doesn't really care too much.

Matt:

Oh, that's cool. Is it? And this is all like open source.

Will:

Yeah. Completely open source and Python scriptable as well. So if you have a massive PCB layout, I'm designing a keyboard that has 64 switches on it. Um, in Altium you might use rooms that lets you do that. But I just wrote a Python script that laid out the board for me in a perfect grid. And every time I wanted to move one thing, it moved them all forming. And there's a, there's actually quite a community around making scripts for Kicad that let you do interesting things like that.

Matt:

I guess that would be, that'd be kind of cool. Cause it would cater to all the programmers, you know, who just want to try messing around with scripts or whatever to make their little PCBs. Oh, that's cool.

Will:

And one last thing I wanted to say as well, if you are a programmer wanting to get into PCB design, one thing I've noticed about the small hobbyist industry is that it's full of people who don't actually know how to write code, but they're really good at the hardware thing. So if you can bring your programming knowledge into the hardware space, you can produce some incredibly valuable PCBs. You can make some gorgeous interfaces that connect your PCB to your computer. Maybe you want to make a really cool audio amplifier that no one's done before, or whereas look something and go, if you need inspiration, look at a project that you use or a product that you use and think, can I do this better? Or even if you're starting out, just can I do this? Try and replicate something, put your own spin on it.

Matt:

Would you recommend a rhythm game controller?

Will:

Only if you're into rhythm games, but if you are, it's quite fun because they're, they're very simple. It's just a USB controller buttons, maybe some knobs.

Matt:

A mini, basically a mini keyboard right here.

Will:

Yeah. It's basically a small keyboard. In fact, that's also a good start. If you wanted to make your own 60% keyboard from scratch, you just make your own PCB put in a bunch of diodes, a bunch of switches wired all up. It can be quite therapeutic wiring, a PCB.

Matt:

Hmm. Well I guess there you go, anyone who's listening. If you want to mess around with hardware, um, it's not as intimidating as you might. You might think, you know? Um, and uh,

Will:

I basically live in the projects channel in Slack. So feel free to, if you want any help with hardware stuff, feel free to ping me. I'd love to give you a hand,

Matt:

Right? That's it#projects on Slack and I'll link anything that was mentioned in the description of this episode. So you can, um, look into it further. All right. Thanks so much, Will.

Will:

Fantastic. Thanks for having me.

Matt:

All right. That's all we have time for today. Thanks for joining us. As usual, our next episode will be out in a fortnight. So until then come join us on our Slack community at slack.uqcs.org or listen to past episodes of the router at router.uqcs.org. My name is Matthew Low and this podcast was created by the UQ Computing Society with gracious support from our industry sponsors.