Welcome to the CircuitPython Show. I'm your host, Paul Cutler.
This episode, I'm joined by Liz Clark and Noe Ruiz from Adafruit Industries
to discuss how they collaborate on projects together.
Noe and Liz, welcome to the show.
Hi. Thanks for having us.
I'm so glad you're here. I've got so many questions for you about all the projects
that you've collaborated on. Let's start at the beginning. How do your projects
start? Where do you get inspiration from and how do they influence your projects?
It kind of depends on whose idea the project is,
because we kind of have different specialties.
Noe, of course, has the 3D printing and design background,
whereas I have more of the CircuitPython coding background.
So if it's a project idea that I have,
then I'm kind of collaborating with him on
how I want the enclosure to be and things like that,
versus if it's his idea, then we're kind of more discussing
like how we want the code to work.
We have a lot of these conversations on walks.
For those that don't know, we are married.
So we live together, of course,
and we take at least one walk a day.
And when we're out walking,
like we'll kind of discuss what we're working on.
And if we're starting a new project,
we'll kind of walk through what we're looking to accomplish.
- So for me, it's a little different.
- My inspiration comes from either from above,
which is Limor.
She'll give us an idea.
She's like, "Hey, I saw this," or, "Hey, would this be cool?"
And then we go from there.
If it's something that I come up with,
it's something I see on Instagram,
it's someone else's project,
or something that I see at Target or Ikea.
And then from there, it's like,
"Okay, we got these new parts.
Maybe we can fit this thing into that."
It's always coming back to like,
what is a new thing that Limor is working on
that would be cool?
So for example, we got this new stepper motor and I'm just going crazy with let's make everything
motorized.
Yeah.
Turntables, camera sliders, anything that spins.
At the end of the year, we did LEDs that are spinning as a POV motorized thing.
So I'm just all over the place with this stepper driver.
So that's kind of where my inspiration comes from.
A little more.
Yes.
Does she have an idea or she have a new product?
And then I go from there.
Or is it an Instagram?
I see this cool prop that someone else is making.
and I'm thinking, "Ooh, could I do something like that?"
And a fact, a shape, a lot of the times it's like,
"Oh, I just like this shape.
I wanna do this shape."
And then I go crazy with it.
I think you're kind of similar.
You see something that's a musical thing,
and hey, I wanna make a motorized robot thing.
- Yeah, often, you know, like now I'll be looking
on Instagram or Pinterest,
I might see something that looks unique and think,
"Hmm, you know, could I recreate this with CircuitPython
or stuff we have in the shop?"
And then same thing too, when there's new things
the shop, I tend to write most of the new product guides. So I kind of get a crash course
in every new product. So I'll run the examples. And then as I'm running the examples for the
guide and looking at all the pins, I'll kind of get my gears turning of like, how could
we use this and something or, oh, you know, we've always talked about wanting to build
this thing. This part really makes it possible. As Noy just said, there's a new stepper driver.
So that's been on our minds. And you know, we've wanted to do a lot of stepper motor
projects and the new drivers are kind of getting our gears turning and you know motor spinning.
We watch a lot of TV and when it's a sci-fi show it's like okay you wanted to do this
prop from Severance. It's coming back and you're like okay the timing is good here.
Yeah so in Severance there's um these like weird terminals that the people work at and
there are these like kind of floating letters on the screen and they're using a little ball mouse
to scroll around.
And so that's something I've wanted to try to recreate in CircuitPython for a while.
And now we kind of can, hopefully, with the RP2350,
because it has the HSTX peripheral for DVI output.
And then that frees up the PIO for USB host.
And in like two weeks from when we're recording right now, early January,
the new Severance Season's coming out.
So like that's all the pieces are kind of coming together.
So hopefully I'll be able to work on that, use that as a project inspiration.
Oh, that's great.
So you've had inspiration, you've gone for a walk and you've kind of talked it through.
You come back to the home office.
What's next?
That's when we'll kind of iterate.
So often if we've discussed things, you know, we'll work on a Fritzing diagram for code.
I'll do kind of a step by step thing where, um, if it's complicated code, I like to break it down into different parts.
So if there's multiple things going on, then I'll kind of test everything and then put them together.
So like if we have sound and lights, you know, I'll do the lights first sound and then bring them together
Make sure it's gonna work as we expect
Especially with props and you expect it to work a certain way for the end user
you want to make sure there aren't gonna be any like blocking delays or anything that make it kind of weird and
Then we just kind of chat back and forth. Yeah, I'll open a bunch of tabs on Google Chrome and look for
Reference images if it's a physical thing, I'll go to Pinterest and see what's out there
I'll just look at where has anyone made this before
and see what people have done.
If anything, if it's never been done,
it gets a little hard, but there's always something out there that I can reference.
Even like you're talking about the severance terminal,
I can look at real things that were computer enclosures in the '70s,
because it's the vibe.
Then I'll just collect things.
I don't have a particular app where I'll collect images,
just save images to my folder.
>> Yeah, I end up just with a million tabs.
A million tabs, yeah.
And also, I often will then also have a million tabs
of different learn projects too,
either ones I've written or other folks have written
to be getting different code snippets and stuff.
So I try to reuse as much code as I can
without having to start from scratch.
And that is good in that I know this code worked previously
and then I'm not having to do too much new testing out
and stuff.
Sure.
So working together,
How does that improve the finished project?
- I like that we can kind of immediately get feedback
from one another, it's more of a conversation.
Whereas like if we were not in the same space,
it would be a little tricky
'cause you have to wait for that response and everything.
- Yeah, I don't have much of a background
in code and development,
so I would really not be able to do any of the things
that you can do.
So I think the marriage of our different skill sets
really make the project possible.
It's like two very experienced people in these two realms come together,
and then you get this cool kind of thing that does a cool thing and looks really
cool and can be built in a relatively easy way.
Yeah.
And you're able to do such cool design tricks and iterate so quickly in Fusion
360, and you can easily tweak things with the way that you set up your projects.
I will do a little bit of 3D modeling, but my timeline, I know, stresses
him out when he looks at it.
So he does it like the right way so that if we get to the assembly stage, it's like,
"Oh, you know what? We need like two more millimeters here."
He can easily just add that to the design and then it's perfect instead of having to redo it all over again.
Likewise, I'll ask, "Hey, can we make it so that when this thing is shaken,
can we have it do an extra animation?"
And you can go in there and figure out how to make it happen.
Yeah, because often, I know this is your experience too,
sometimes you get the working prototype of the project
and just with how we work,
we're kind of documenting as we go,
just 'cause we do try to publish at least once a week
with Adafruit and sometimes it's not until
you're documenting and really using it that you think,
oh, you know what, I would love if it did
this one extra thing or had this one extra feature.
So it's nice to be able to quickly iterate like that.
- That's great.
Let's talk about some of your favorite projects.
Noe, what's one of your favorites?
start with you.
- Yeah, one of my favorite projects is probably the Adabot RP2040 toy robot.
Just because it ticks all the boxes of something.
It's a fun, interactive little robot.
It has a glowing mouth.
It has sound effects, has built-in accelerometers so you can kind of turn it upside down and
it kind of does this sleep mode.
That's kind of my favorite.
And it's just got like the mascot, right?
Adabot is Adafruit's mascot.
So it's got all the little pieces.
It's so cute as well.
Having something cute is a big factor for me
when I'm making a project.
How do I make it cute?
And you can't get cuter than Adabot.
That's one of my favorites.
And from the code perspective, I believe
when we made that, the RP2040 prop maker feather was new.
So for the code, it was a really good project
to be able to show off everything
that the feather could do.
Because it has the accelerometer,
it has the onboard speaker.
you know, everything. And so with that code, it was a nice way to show off, like, you can
control all these different components with just one board. It makes the wiring really
neat. And yeah, it's huge. Yeah.
Yeah, I interviewed Aaron Penley a while back and the PropMaker Feather is his favorite
board. I think for a lot of people, it just does so many different things so well.
Yeah, yeah. It's great to especially I find for audio projects too, because the PropMaker
name might make people think like, Oh, I'll use this for
props. But actually, I think it's a great music board to
just because it has the I2S amp on board and then terminal
block to connect up a speaker. Really cool board.
Is there a favorite project that comes to mind for you, Liz?
Oh, there's so many. Um, one collab that we had a lot of fun
with was the Pico MIDI fighter. And at that point, the Raspberry
Pi Pico was kind of new. It was cool to have like all these GPIO
available on it. So we were able to do this four by four grid of arcade buttons. We had the screen
so you're able to assign different MIDI note numbers to each button and you could change them
on the fly. And that was such a fun collaboration. Noe did this great case with a handle on it so
it looks kind of like a lunchbox and which is kind of like teenage engineering kind of style.
One design house that we both get a lot of inspiration from and folks in the community
have also remixed it and changed up the code and stuff.
So it's, I really like that project because I felt like it kind of laid a good foundation
for RP2040 MIDI projects to reference for and also kind of show like what you could
do with CircuitPython and you know, a lot of GPIO pins.
I like that project.
I mean, yeah, it's got 16 buttons, but I like the way that you showcase the Pi Pico in that
see-through case.
And then you mentioned the handle, which also doubles as a kickstand for it, which is just
an ingenious design.
Speaking of MIDI projects, tell me about the MX Guitar.
Yeah, so there's two MX Guitars.
The first one was a MIDI controller, and we released that kind of the week that COVID-19
started the lockdown.
Yeah, we shut down, everybody shut down.
The week of Friday the 13th of March.
But that was our first guitar project and we wanted to do a MIDI guitar and we thought
of the Guitar Hero controllers because the Guitar Hero controllers have like the whammy
bar and it has that really cool strum mechanism.
At the time we did not live together so I took apart a Guitar Hero controller, I took
like a bunch of photos and we're sending them to him so he can have it as like a design
reference and it was really fun but a real bear to wire.
Yeah, it was.
Because each button was individually wired up.
>> We ended up using the Grand Central because it has all the GPIO.
For the shape, I got a crash course on all the different guitar bodies.
I actually am not a guitarist,
I'm more of a drummer, but you are a guitarist.
So you know all the things about guitar anatomy.
I'm like, what's the coolest guitar?
I think we narrowed it down to the Flying V.
>> Yes. We used the Flying V for that one.
I remember that night that we were chatting,
we were just going through all these different guitar shapes together and everything.
and we used a real guitar whammy bar in the final design.
>> That's right. It just screws into
this 3D printed little adaptive thing that turns into a,
what was it? Is it a potentiometer?
>> Yes, it was a potentiometer.
Because if you open up the Guitar Hero controllers,
that's actually what it is. It's like
this spring mechanism that's turning a potentiometer.
That was our first MX guitar.
We always feel a little bad because it was the week of
pandemic, like truly. So I know for myself, too, I had other things to worry about. Like
once I get once the guide went up, it got to the point where I was like, I got I got
too much going on. So we always wanted to revisit it because we really liked the concept.
So when synth.io was added to the core, we thought, you know, what a great opportunity
to make another guitar, but instead of it being a MIDI controller, make it like an actual
synthesizer, and especially we have two young nephews, so the idea that like, you know,
someone could use it as a music making tool, but then, you know, kids could also use it
as a toy.
And with what we learned with the first MX Guitar, we wanted to try to simplify the wiring.
So we were able to use two 1x4 Neokey Seesaw breakouts.
So that's I squared C breakouts, so really simplifies the wiring.
And you still get eight notes.
And then that was also the prop maker feather.
- Yeah, it was.
Yeah, it made a lot of the wiring easy with StemmaQT.
You could just kind of connect those two
one by four keys together.
And you still gotta wire, you know, some potentiometers.
But yeah, I think it was a fun one
'cause everything's self-contained.
You got a built-in speaker in the head,
which was completely different.
We have built-in batteries that are AA
that are easy to change out.
So it's like kid-friendly.
You don't have to worry about puncturing a battery
'cause there are these nice AA batteries.
- Yeah.
- And the body's different.
I kind of forgot the name of it,
but do you know what it is?
- It's like a Gibson SG,
so it has those two horns kind of at the top.
- Yeah.
- You know, that's a great example of, you know,
we did one project and then we were able
to kind of revisit it, like, okay, what did we like?
What didn't we like?
And kind of remix it.
- Yeah.
- I like when we get the opportunity to do that.
- And then I got to reuse the same mechanism.
We didn't need a whammy bar because we have the built-in accelerometers.
We could just move the guitar.
Yes.
So that was different.
But yeah, we had a lot of fun playing around with
all the different modulation things that you can do with Synth.io.
And are they rotary encoders?
Those are rotary encoders.
Yeah, they're again, the Stemma QT rotary encoders.
There's three of them.
Yeah.
We're looking at it on our wall right now.
Yeah.
We're like, what is this thing?
Oh, yeah, that's great.
Yeah.
Well, I'll make sure I link to all of these learn guides in the show notes as well,
if people want to dig in and see the guides.
Thank you.
Yeah, I'd love to see more people build it.
Yeah.
The next project is another remix or something you visited from the past, but it's a little
more utilitarian.
What is the CircuitPython Slider?
Oh, yeah.
Yeah, the CircuitPython Slider is a remake of a motorized slider that we did with Arduino
and a BLE module.
So we both love doing videos and cinematography and getting these nice sliding shots is something
we always wanted to do.
They're pretty pricey, motorized sliders.
I thought it'd be cool to redo that Arduino project with a feather, a motor feather wing,
and this time in CircuitPython with an onboard screen so you can control it all without having
to like futz around with your phone and remembering like, what does this number do?
Or what does the keypads do?
So that was the idea behind that one.
And we are actually hoping to make a third version
this time with the silent stepper motor driver.
But yeah, that was a lot of fun to do.
- And I would love to redo that code.
That was probably the biggest CircuitPython project
I had done at that point, and that's back in November 2019.
And I was not working full time with Adafruit yet.
I was still just kind of in the community.
And that was a huge level up for me
as far as the coding went and also working with stepper motors
and there's a whole menu system and everything.
And I've looked at the code every once in a while since then,
and I know there's definitely a way it could be condensed
and be a little bit more streamlined.
So I would love to be able to go back
and kind of have a full circle moment with that.
- Hopefully this year.
- Hopefully this year, yeah.
- Well, that's true of any project.
You get done, you look back at it and you go,
oh, I could do this differently
or I could simplify the code here.
- And parts are just better.
Like it's so loud.
It's like, eh, eh, eh, eh,
'cause it's like an eight bit chip or something,
you know, it's very loud, you know, stepper driver.
- Yeah, yeah, so it'd be good to have a silent one.
- Yeah.
- Let's talk about some of your more recent projects.
Let's start with the prop maker,
Jack-O-Lantern from this past Halloween.
- Yeah. - Yeah.
- That one was actually inspired by, I guess, you, Liz.
You got an email 'cause you're subscribed
to the IKEA newsletter and you saw that there's this new pumpkin that they started selling.
Yeah, in August, IKEA, which we also love and get a lot of inspiration from, and also
the breakfast at IKEA is excellent.
They're on target.
I know.
But IKEA this year had this pumpkin light and I said to Noe, I was like, "Oh, you know,
that could be a cool Halloween prop maybe."
And then you kind of ran with it and you totally made this unique thing.
At first I was like, I don't know what I'm going to do with this.
Yeah, at first you weren't into it.
Yeah.
At all.
I forget how, but at some point I thought it'd be cool to make the head turn.
And in order to do that, I need a base.
So then I went down this route of like, what's a cool base that the pumpkin could sit on?
And then I kind of ran with that and figuring out how do I take out the guts of it, just
like a little lamp and then like fit it into a new base,
add a gear, add a motor.
And then were you the one who was like,
let's make it interactive.
We can use a time of flight sensors
so that as you approach it, it has different sound effects.
- I think that was Lamore.
- That was Lamore, okay.
- Yeah, so again, like what's great is like,
we might have kind of a base idea
and then when we pitch it to Lamore Ladyada
in our meetings or, you know, internal communications,
she'll often have ways to use other components
or just really flush out the project
to make it like a better, basically.
- Yeah. - Yeah.
What was great too, when we filmed the project video,
friend of mine recently bought a house,
so they had like a nice stoop we were able to use
'cause we're still in an apartment
and they have a little kid,
so a little kid was able to see the pumpkin and everything.
And then we manned their door for trick or treat
and Noe was able to set it up on the stoop,
so all the trick or treaters were seeing it and everything.
So it was a really cool project to be able to then use to on Halloween.
Oh, that's great.
Longtime listeners know that I'm a big fan of physical media, whether it's,
you know, my vinyl music collection or collecting movies.
So I love these next two projects.
The NFC Raspberry Pi media player uses Blinka for CircuitPython.
How did that project come about?
- So I believe that L'amour saw on a blog
someone else had done kind of a similar concept,
which is basically you have an NFC card
and you scan it on the NFC reader
and then it triggers a movie or TV show to play.
And we're like, you know, we could do this
with just a Raspberry Pi and Blinka.
And so we have the NFC breakout in the shop.
So we use that over Spy.
and then the Raspberry Pi 5 has the SSD hat,
which lets you have a lot of storage on there.
So it was a full Raspberry Pi project.
The hat was kind of new to, I think for Adafruit,
we hadn't really done a project that used it yet.
- Is it the M.2?
- M.2 hat, yeah.
- So basically the way it works is you've got the NFC card,
you scan it, and then the movie starts playing
on the monitor connected to the Raspberry Pi.
- Yes, yes.
That sounds very simple in theory,
but then in practice, it was a little tricky
on the software end of things.
Not the Blinka part.
The Blinka part just worked 'cause the NFC
and you can play the video file in VLC.
But it got more into almost a Linux project really
because you had to, well, I had to in the Python script
figure out, okay, how do I have kind of a graphical
interface, how do I get the movie to read properly from the
disk? How and how do I get to mount it boots and all that. So
that was, it was tricky. But I'm glad that now it's documented
for folks if they want to do that with the m.2 hat, or you
know, anything like that, because
there's like a dedicated page on setting up your your Python
environment. Yes, five is like, Okay, here's a whole new way to
do Python.
Yes, the Pi 5, the new version of Raspberry Pi OS,
you have to have the virtual Python environment
and yada, yada, yada.
So that was very tricky.
So that was definitely some frustration moments
because also when we were documenting the project
and we'd go to test it, sometimes we'd find that,
oh, actually this part still isn't quite configured right.
But that's good because then,
in the guide we have it totally right
and hopefully folks won't have to go to the forums
to be like, "Hey, this isn't actually working."
- From the enclosure standpoint,
the Pi 5 gets hot.
And it turns out it can melt PLA.
So I had to go back and redesign the case
to allow some room for the active cooling fans.
Like any Pi project that we do now,
you've gotta have the active cooling fan.
It just gets too hot.
- Yeah, which we hadn't run into before
when we've done other Raspberry Pi projects.
- I can still smell the burning PLA turning back
and be like, "Is it the case?
Oh my God, it is.
And it was all warped and stuff.
So it's good to test your project long-term,
not just for five minutes, play a whole movie.
And you know, find out, is this thing working?
Not just from the code, but is my enclosure melting?
- But much like you, Paul, I love physical media
and I have a really big movie collection.
So, and I've always been trying to find like ways to,
you know, digitize it or, you know,
make it so that it's like streaming, but still using it.
So I really liked the opportunity to kind of test that out.
And then you also had a really fun design thing
with the cards.
- Yeah, we could have always just put like a sticker
on the NFC card, but I thought it'd be cool
to turn the card into a little mini VHS themed enclosure.
So I created this little case that the card would fit into.
And that was fun to kind of throw back to VHS
'cause that's kind of what we grew up on
in the 90s with VHS.
and then you got to use all those kind of throwaway
NFC cards that you collected.
And you're like, one day I'm gonna use these cards.
What kind of cards are they?
- They were MBTA,
which is Massachusetts Bay Transit Authority,
cards for taking the train in Massachusetts.
I used to have a new train pass every month
and I never got rid of them
'cause it felt kind of wasteful
'cause I knew there were electronics in it.
And turns out they use the same protocol
that the NFC cards that we sell in the Adafruit shop uses.
stack of these cards.
Yeah, so we have a bunch if we want to extend.
The last project I want to ask about is this is how I started in CircuitPython was doing
audio reactive projects.
You created the audio reactive video synth with the new RP-2350.
Yeah, so that was my third video synth that I've done for Adafruit.
And for me, it felt like this really kind of fun full circle thing.
I'd always wanted to do an audio reactive one,
but for whatever reason, it was either too resource intensive
or whatever programming language I was using
didn't quite work out.
And this was the first time I was able to do it
in CircuitPython.
And the Feather RP2350 with the HSTX made that possible.
So that was really awesome.
I was really excited that everything I wanted to do
in CircuitPython was able to be accomplished
and it was working exactly how I wanted it to.
And then I kind of turned to you for the enclosure.
And you had a good start.
I like when you make an enclosure has like angled faces.
And that's really cool.
Yeah. But when we when I started to remake it,
I found it difficult to mount the mic just because the mounting holes
are in this weird spot and they're a little close together.
So it's very cool to put the mic in its own enclosure
and then fit that on top of the main base of the enclosure.
And that way you can have kind of fun.
And I went with like this kind of like mics from the 50s,
like they have like the kind of the steel enclosure.
So it was fun to kind of break that out and make it its own thing,
because that's kind of kind of calling attention to this is where the audio goes into.
Right. So it's kind of cool.
And then we could use different colors.
We always come up with these fun kind of Fisher Price colors.
Yeah, I always want a bunch of colors.
Yeah. And the enclosure is also kind of inspired by Love Holton,
who's another designer we like a lot.
And for those who don't know, he takes these, you know,
off the shelf synths or guitar pedals, and he makes these completely new
housings that look a lot like, you know, postmodern kind of stuff.
Yeah, kind of 70s vibe. Yeah. Yeah.
So in the enclosure, there's built three or four pots
and you can change modes.
What are the different modes in the video synth?
Yeah. So I used a rotary encoder for mode changing.
And so the first one is kind of audio reactive bars, like your classic audio EQ.
And that was kind of cribbed by Phil B had done some code using
our, one of the matrix breakouts.
And that was kind of my test to see like, okay, will the audio reactive
stuff work with the DVI output from the RP 2350, or am I going to like
run into memory errors because.
Yeah, you're asking the board to do a lot when you're, you know, displaying
out DBI and you're using audio reactive, which is FFT, but it
did it. And so then I went from there and I made a kind of
bouncing circles, one that had the circles change shape,
depending on the audio spectrum, those coming in, and they're
bouncing around the screen. And then the third animation is a
party parrot. So you have the party parrot in the back and the
he's kind of bopping around to the lower frequency. So if you
had a bass drum beat going, then he would move his head for every beat.
So you kind of get this syncopated vibe from him.
And then there are these two circles on either side of him that are going to the overall
amplitude.
So depending on how loud the music is, that affects their size.
And then I had three potentiometers that were changing color for different shapes or how
reactive it was.
Because the thing with the audio reactive stuff is with the music, like your music will
be different levels, obviously. So I wanted to be able to control like how sensitive things were,
so you wouldn't have to have the music blasting. And yeah, it was just really fun to be able to
have it all come together in CircuitPython. I'd done one in Arduino before, but
waiting to compile everything for testing was always really tricky. So to be able to
test those three animations quickly, the CircuitPython also made it really enjoyable.
Do you have any advice for people when collaborating?
I think just based on not great collabs I've had and then versus really good collabs, because
I've been in bands too where you're working together with people, is always be open to
other folks' point of view and always be willing to kind of step back and let other folks work
on different aspects that maybe aren't your strongest suit.
So sometimes, like, for example, with the video synth,
I was thinking it was going to be a project I just worked on by myself.
So I had sketched up the enclosure.
But I knew almost immediately that the enclosure wasn't that great.
I knew, no, I could do a better job.
So I was like, hey, let's actually collab on this and have him come in.
And he makes this beautiful enclosure that is just fantastic
and greater than anything I could have done on my own.
And also he did it faster than I could have as well.
Resisting the urge to stay in your silo
and just power through and get stuff done,
kind of open things up and yeah,
just be open to other folks.
- Liz, that's a great answer.
Noe and Liz, thanks so much for coming on the show.
- Thanks so much for having us.
- Thank you.
- Thank you to Liz and Noe for sharing
how they work together and collaborate on their projects
and discussing some of their awesome collabs.
For show notes and transcripts, visit www.circuitpythonshow.com.
Until next time, stay positive.