1 00:00:00,000 --> 00:00:02,580 (upbeat music) 2 00:00:02,580 --> 00:00:06,520 - Welcome to The Bootloader, I'm Paul Cutler. 3 00:00:06,520 --> 00:00:07,800 - And I'm Tod Kurt. 4 00:00:07,800 --> 00:00:10,600 Each podcast will be bringing you news, project updates, 5 00:00:10,600 --> 00:00:13,260 product talk from the tech and maker scenes. 6 00:00:13,260 --> 00:00:15,280 And for each episode, we'll be talking about it 7 00:00:15,280 --> 00:00:17,560 around three, no more than five things 8 00:00:17,560 --> 00:00:20,080 and chat about them for a few minutes each. 9 00:00:20,080 --> 00:00:22,440 Paul, what do you have for us this week for your first one? 10 00:00:22,440 --> 00:00:24,280 - First up, I've got a segment that I like to call 11 00:00:24,280 --> 00:00:25,280 Meet the Maker. 12 00:00:25,280 --> 00:00:28,000 And first up is Carrie Sundra of Alpenglow. 13 00:00:28,000 --> 00:00:29,400 Now I've never met Carrie. 14 00:00:29,400 --> 00:00:32,060 I just follow her on Mastodon and the socials. 15 00:00:32,060 --> 00:00:34,240 And shame on me, but I've never took a good look 16 00:00:34,240 --> 00:00:37,880 at the products and services offered by Alpenglow. 17 00:00:37,880 --> 00:00:40,920 I visited their website and if you visit the about page, 18 00:00:40,920 --> 00:00:43,040 I wanted to share Alpenglow's mission statement, 19 00:00:43,040 --> 00:00:45,440 which is to teach you about electronics 20 00:00:45,440 --> 00:00:47,220 without gatekeeping. 21 00:00:47,220 --> 00:00:48,560 It goes on to say, 22 00:00:48,560 --> 00:00:51,480 we are passionate about representation in electronics. 23 00:00:51,480 --> 00:00:54,000 The field is still overwhelmingly white and male 24 00:00:54,000 --> 00:00:58,480 with only 10% of electrical engineers identifying as women. 25 00:00:58,480 --> 00:01:00,320 Having worked in the field for over 20 years, 26 00:01:00,320 --> 00:01:03,300 we know how much gatekeeping and hostility there can be. 27 00:01:03,300 --> 00:01:04,880 We aim to provide a welcoming space 28 00:01:04,880 --> 00:01:06,520 where adults can learn about electronics 29 00:01:06,520 --> 00:01:10,020 without judgment or any previous experience. 30 00:01:10,020 --> 00:01:11,440 So right there, you know it's a business 31 00:01:11,440 --> 00:01:13,180 that you want to support and do business with. 32 00:01:13,180 --> 00:01:15,200 That is just such a cool mission statement 33 00:01:15,200 --> 00:01:16,640 to share with the world. 34 00:01:16,640 --> 00:01:18,160 And it's something that I'm passionate about too, 35 00:01:18,160 --> 00:01:21,120 that whole women in tech and under-representation in tech. 36 00:01:21,120 --> 00:01:22,760 And it's great to see her trying to bring people 37 00:01:22,760 --> 00:01:24,560 into electronics and soldering. 38 00:01:24,560 --> 00:01:28,880 What sparked my interest was on Mastodon a couple weekends ago 39 00:01:28,880 --> 00:01:31,800 they shared a learn to solder surface mount kit. 40 00:01:31,800 --> 00:01:34,040 And that got me to visit the shop 41 00:01:34,040 --> 00:01:36,440 and I saw the various learn to solder through hole kits 42 00:01:36,440 --> 00:01:37,440 as well as surface mount. 43 00:01:37,440 --> 00:01:39,560 Now I'm terrible at soldering. 44 00:01:39,560 --> 00:01:42,440 I just started soldering within the last couple of years. 45 00:01:42,440 --> 00:01:44,680 And if I had known about this a couple of years ago, 46 00:01:44,680 --> 00:01:46,640 I probably would have picked one out. 47 00:01:46,640 --> 00:01:48,640 I still don't know how to do surface mount soldering. 48 00:01:48,640 --> 00:01:50,700 So I'm tempted to buy one of those. 49 00:01:50,700 --> 00:01:53,080 And the kit, which is called the SMT Garden, 50 00:01:53,080 --> 00:01:55,320 it's only 20 bucks and it includes 51 00:01:55,320 --> 00:01:58,360 over a hundred different pieces from practice capacitors 52 00:01:58,360 --> 00:02:00,840 to different colors of LEDs, as well as resistors 53 00:02:00,840 --> 00:02:02,020 and a battery holder. 54 00:02:02,020 --> 00:02:05,760 So there's tons of stuff that you can practice soldering on. 55 00:02:05,760 --> 00:02:07,280 There's so many cool things in the shop 56 00:02:07,280 --> 00:02:09,940 that I encourage you to go spend a few minutes browsing, 57 00:02:09,940 --> 00:02:12,240 pick up something if you're looking to learn to solder 58 00:02:12,240 --> 00:02:14,200 or improve your soldering skills. 59 00:02:14,200 --> 00:02:15,320 And that's not all she does. 60 00:02:15,320 --> 00:02:18,640 She also runs a learn electronics workshop 61 00:02:18,640 --> 00:02:20,340 and a learn to solder workshop 62 00:02:20,340 --> 00:02:24,280 and encourages those underrepresented in tech to attend. 63 00:02:24,280 --> 00:02:25,160 Be sure to check it out. 64 00:02:25,160 --> 00:02:27,960 I've included a number of links in the show notes. 65 00:02:27,960 --> 00:02:29,540 - I follow her on Acidon too. 66 00:02:29,540 --> 00:02:32,740 And like, I'm always seeing these great soldering classes 67 00:02:32,740 --> 00:02:35,220 and electronics classes that she gives. 68 00:02:35,220 --> 00:02:38,560 And like most soldering kits are kind of boring. 69 00:02:38,560 --> 00:02:40,920 They're like little square things that have like, you know, 70 00:02:40,920 --> 00:02:42,920 four little LEDs or something 71 00:02:42,920 --> 00:02:45,440 and they just blink or just go on. 72 00:02:45,440 --> 00:02:47,760 But her PCB designs are beautiful, 73 00:02:47,760 --> 00:02:49,420 like little bits of art that light up. 74 00:02:49,420 --> 00:02:52,720 And it's, especially for SMD, it's a really great intro 75 00:02:52,720 --> 00:02:54,840 because like SMD seems kind of scary, but like, 76 00:02:54,840 --> 00:02:56,400 oh, this is just LEDs. 77 00:02:56,400 --> 00:02:57,720 You know, if you mess one up, 78 00:02:57,720 --> 00:02:59,080 you still have three or four others 79 00:02:59,080 --> 00:03:01,080 that are gonna light up for just this one part. 80 00:03:01,080 --> 00:03:04,120 And there's like four different parts of the whole PCB. 81 00:03:04,120 --> 00:03:07,640 And so, yeah, just even if it's not turned on, 82 00:03:07,640 --> 00:03:09,040 it looks cool. 83 00:03:09,040 --> 00:03:09,880 - Yes. 84 00:03:09,880 --> 00:03:12,640 - And then if you add to it, then it'll look even better. 85 00:03:12,640 --> 00:03:14,480 - Her products do look cool. 86 00:03:14,480 --> 00:03:15,780 I mean, there's holiday themed one. 87 00:03:15,780 --> 00:03:17,440 There's a light up Krampus. 88 00:03:17,440 --> 00:03:20,280 There's some no soldering ones that are available. 89 00:03:20,280 --> 00:03:21,920 So depending on what your skill set, 90 00:03:21,920 --> 00:03:24,580 there's a little bit of everything for everyone, I think. 91 00:03:24,580 --> 00:03:25,600 - Yeah. 92 00:03:25,600 --> 00:03:27,940 Yeah, it's really cool 'cause electronics is not that scary. 93 00:03:27,940 --> 00:03:29,280 It just kind of looks scary. 94 00:03:29,280 --> 00:03:31,280 - It does. 95 00:03:31,280 --> 00:03:33,320 And I would say that's my experience in the last few years 96 00:03:33,320 --> 00:03:34,740 is I really came into this 97 00:03:34,740 --> 00:03:36,780 thinking it was a lot scarier than it is. 98 00:03:36,780 --> 00:03:38,880 And it's just amazing how much you pick up 99 00:03:38,880 --> 00:03:41,040 just doing it over and over again in the practice, 100 00:03:41,040 --> 00:03:43,120 which is perfect for something like this. 101 00:03:43,120 --> 00:03:44,660 - Yeah, like so much of things. 102 00:03:44,660 --> 00:03:47,660 If you don't keep using it, you kind of lose it. 103 00:03:47,660 --> 00:03:48,860 - Absolutely. 104 00:03:48,860 --> 00:03:51,040 What did you have up for us next? 105 00:03:51,040 --> 00:03:52,440 - From like intro to electronics 106 00:03:52,440 --> 00:03:54,660 to like some of the most complicated electronics 107 00:03:54,660 --> 00:03:57,620 that I know of is how to make a synthesizer. 108 00:03:57,620 --> 00:04:01,660 And so from previous shows and just if you follow me, 109 00:04:01,660 --> 00:04:03,260 you've probably seen that I've made little toy, 110 00:04:03,260 --> 00:04:05,780 kind of toy synthesizers using either Arduino 111 00:04:05,780 --> 00:04:08,940 with this library called Mozi or in circuit Python 112 00:04:08,940 --> 00:04:10,660 with the new synth IO functionality 113 00:04:10,660 --> 00:04:11,980 that's built in a circuit Python. 114 00:04:11,980 --> 00:04:13,820 But they're kind of toys. 115 00:04:13,820 --> 00:04:17,140 Like there are a lot of real synthesis platforms out there 116 00:04:17,140 --> 00:04:21,380 that let you do like professional quality synthesizers. 117 00:04:21,380 --> 00:04:24,620 And I've never really gotten into them until recently. 118 00:04:24,620 --> 00:04:26,660 There's one module, it looks kind of like an Arduino 119 00:04:26,660 --> 00:04:29,820 called Daisy Seed from this company called Electrosmith. 120 00:04:29,820 --> 00:04:31,180 We'll have a link to it in the show notes. 121 00:04:31,180 --> 00:04:35,980 And it's 25 bucks and it's a Cortex-M7 chip, 122 00:04:35,980 --> 00:04:39,660 which is one of the most powerful microcontrollers 123 00:04:39,660 --> 00:04:41,220 you can get on a tiny board. 124 00:04:41,220 --> 00:04:43,960 And it has 65 megabytes of RAM. 125 00:04:43,960 --> 00:04:45,420 So like, you know, RAM is important 126 00:04:45,420 --> 00:04:47,600 in when you're making synthesizers or digital effects, 127 00:04:47,600 --> 00:04:49,920 like pedals, like guitar pedals and stuff, 128 00:04:49,920 --> 00:04:52,620 because you need that memory to act as the buffer 129 00:04:52,620 --> 00:04:54,580 for like the delay effect or something 130 00:04:54,580 --> 00:04:55,760 or the reverb effect. 131 00:04:55,760 --> 00:04:59,080 You kind of need to store copies of the sound. 132 00:04:59,080 --> 00:05:00,620 With this chip, sorry, this board, 133 00:05:00,620 --> 00:05:03,620 this Daisy Seed board also has a professional quality 134 00:05:03,620 --> 00:05:08,020 24-bit 96 kilohertz audio input and output and stereo. 135 00:05:08,020 --> 00:05:09,320 And then for like knobs and stuff, 136 00:05:09,320 --> 00:05:13,960 it's got 16 ADC, sorry, 12 16-bit ADC pins 137 00:05:13,960 --> 00:05:16,460 and two 12-bit DACs to control stuff. 138 00:05:16,460 --> 00:05:19,440 31 GPIO pins to like let you control LEDs 139 00:05:19,440 --> 00:05:21,820 or like drive a display or something 140 00:05:21,820 --> 00:05:24,020 or like read from an SD card. 141 00:05:24,020 --> 00:05:25,440 And it fits on a breadboard. 142 00:05:25,440 --> 00:05:27,600 So it's kind of like, you know, 143 00:05:27,600 --> 00:05:31,480 if someone made an Arduino and it grew up 144 00:05:31,480 --> 00:05:33,500 and wanted to make music, 145 00:05:33,500 --> 00:05:35,560 it's kind of what the Daisy Seed is. 146 00:05:35,560 --> 00:05:37,060 And Electrosmith provides all these 147 00:05:37,060 --> 00:05:38,620 really great libraries for it, 148 00:05:38,620 --> 00:05:41,100 but they're pretty complicated C++ libraries. 149 00:05:41,100 --> 00:05:45,260 They've got a Arduino library that wraps the C++ stuff, 150 00:05:45,260 --> 00:05:48,120 but it's still, you need to kind of know how to C++. 151 00:05:48,120 --> 00:05:50,900 So it's pretty daunting if you just like go and look at it 152 00:05:50,900 --> 00:05:53,260 and go through their tutorials, it's like, whoa, 153 00:05:53,260 --> 00:05:54,120 that's a lot. 154 00:05:54,120 --> 00:05:57,120 But thankfully there's this nonprofit in the UK 155 00:05:57,120 --> 00:06:00,080 called Synth UX Academy, sorry, not in UK, 156 00:06:00,080 --> 00:06:01,060 in the Netherlands. 157 00:06:01,060 --> 00:06:05,160 And they've been doing these online classes and, sorry, 158 00:06:05,160 --> 00:06:06,820 in-person and online classes 159 00:06:06,820 --> 00:06:09,440 that they've been streaming for free on YouTube 160 00:06:09,440 --> 00:06:11,680 and putting their code up on GitHub 161 00:06:11,680 --> 00:06:12,780 so that you can follow along. 162 00:06:12,780 --> 00:06:15,080 And they're only using the Daisy Seed 163 00:06:15,080 --> 00:06:18,060 and they have this really great little PCB set they sell 164 00:06:18,060 --> 00:06:21,120 that's like a little tiny synthesizer like platform. 165 00:06:21,120 --> 00:06:22,400 Their whole idea was that like, 166 00:06:22,400 --> 00:06:26,160 hey, here's a big gridded PCB with a lot of holes in it 167 00:06:26,160 --> 00:06:28,440 where you can put the knobs kind of wherever you want 168 00:06:28,440 --> 00:06:32,560 to design what interface you want your synthesizer to have 169 00:06:32,560 --> 00:06:34,700 and just quickly wire them up to the Daisy Seed 170 00:06:34,700 --> 00:06:37,160 and like wire up an output jack 171 00:06:37,160 --> 00:06:40,240 and boom, you've got a synthesizer. 172 00:06:40,240 --> 00:06:43,400 And so it's been a really nice sort of intro level 173 00:06:43,400 --> 00:06:47,300 getting you slightly involved in the whole Daisy Seed 174 00:06:47,300 --> 00:06:49,520 way of thinking about how to deal with audio 175 00:06:49,520 --> 00:06:50,480 and how to generate audio 176 00:06:50,480 --> 00:06:54,100 or how to generate like a guitar pedal effects and stuff. 177 00:06:54,100 --> 00:06:55,980 So it's been really cool. 178 00:06:55,980 --> 00:06:58,520 I've been wanting to play with the Daisy Seed for years. 179 00:06:58,520 --> 00:07:01,680 I supported their Kickstarter back in like 2020 180 00:07:01,680 --> 00:07:05,640 and it's been sitting in a box since then. (laughs) 181 00:07:05,640 --> 00:07:07,920 But I finally, like just like in the last two weeks 182 00:07:07,920 --> 00:07:10,220 I've like gotten out of the box, started playing with it. 183 00:07:10,220 --> 00:07:11,220 And it's all because of this, 184 00:07:11,220 --> 00:07:14,160 the Synth UX Academy YouTube videos and their GitHub stuff. 185 00:07:14,160 --> 00:07:17,160 So if you're into this sort of thing, check it out. 186 00:07:17,160 --> 00:07:18,500 It's really cool. 187 00:07:18,500 --> 00:07:20,980 - It looks just like, it's just a microcontroller. 188 00:07:20,980 --> 00:07:23,040 It looks a little bigger than a Pico. 189 00:07:23,040 --> 00:07:26,060 And it was only $21 when I looked at the website. 190 00:07:26,060 --> 00:07:28,380 I was kind of taken aback by how cheap it is 191 00:07:28,380 --> 00:07:32,320 for that much RAM and M7, like you said. 192 00:07:32,320 --> 00:07:34,560 - Yeah, and it's used in like real products. 193 00:07:34,560 --> 00:07:37,220 Like there's some guitar pedals that use it. 194 00:07:37,220 --> 00:07:38,520 There's some like official, 195 00:07:38,520 --> 00:07:41,000 you can go and buy them at like Guitar Center, I think. 196 00:07:41,000 --> 00:07:42,360 There's some synthesizers, 197 00:07:42,360 --> 00:07:44,400 like the thing called the Chompy. 198 00:07:44,400 --> 00:07:47,080 That's like this cute little synthesizer 199 00:07:47,080 --> 00:07:50,620 that has like uses computer key switch keys 200 00:07:50,620 --> 00:07:52,080 for its keyboard. 201 00:07:52,080 --> 00:07:54,460 It uses a Daisy Seed inside of it. 202 00:07:54,460 --> 00:07:56,400 And then there's a bunch of Eurek modules 203 00:07:56,400 --> 00:07:58,420 that use the Daisy Seed internally. 204 00:07:58,420 --> 00:07:59,260 And you wouldn't know it. 205 00:07:59,260 --> 00:08:01,340 They're just like, they're hidden and they just, 206 00:08:01,340 --> 00:08:03,820 oh, here's this platform to do cool audio stuff. 207 00:08:03,820 --> 00:08:05,200 - That's pretty neat. 208 00:08:05,200 --> 00:08:07,980 - So what's your second one for this week? 209 00:08:07,980 --> 00:08:11,240 - My next one is the Microdot web framework. 210 00:08:11,240 --> 00:08:13,200 I've shared before that I enjoy programming 211 00:08:13,200 --> 00:08:14,760 for the web and Python. 212 00:08:14,760 --> 00:08:18,440 I've used both Pyramid and FastAPI web frameworks, 213 00:08:18,440 --> 00:08:21,360 but I recently came across the Microdot web framework 214 00:08:21,360 --> 00:08:23,560 for CPython and MicroPython, 215 00:08:23,560 --> 00:08:25,040 which I thought was interesting. 216 00:08:25,040 --> 00:08:26,200 - Interesting, yeah. 217 00:08:26,200 --> 00:08:27,920 - It was created by Miguel Grinberg, 218 00:08:27,920 --> 00:08:29,840 who wrote the Flask mega tutorial, 219 00:08:29,840 --> 00:08:33,160 Flask being a popular Python web framework as well. 220 00:08:33,160 --> 00:08:34,960 Microdot's homepage describes it as 221 00:08:34,960 --> 00:08:36,900 the impossibly small web framework 222 00:08:36,900 --> 00:08:39,140 for Python and MicroPython. 223 00:08:39,140 --> 00:08:41,440 And it's inspired by Flask. 224 00:08:41,440 --> 00:08:44,040 What is interesting is that you'll be able to prototype 225 00:08:44,040 --> 00:08:46,800 and write all your code and have it run on desktop Python, 226 00:08:46,800 --> 00:08:49,060 on CPython before you bring it over 227 00:08:49,060 --> 00:08:51,920 to a microcontroller running MicroPython. 228 00:08:51,920 --> 00:08:54,120 Virgin 2 was released this past December, 229 00:08:54,120 --> 00:08:57,120 and it looks like there may even be CircuitPython support. 230 00:08:57,120 --> 00:09:00,320 I saw Miguel had filed a few bugs with CircuitPython, 231 00:09:00,320 --> 00:09:02,160 so the Microdot test suite would pass, 232 00:09:02,160 --> 00:09:04,300 which is how I first came across Microdot 233 00:09:04,300 --> 00:09:05,920 was seeing the bug reports. 234 00:09:05,920 --> 00:09:07,600 So I haven't looked to see if it actually runs 235 00:09:07,600 --> 00:09:10,360 on CircuitPython, but it does run on MicroPython, 236 00:09:10,360 --> 00:09:12,480 and I was surprised to learn that there's over 237 00:09:12,480 --> 00:09:15,840 a dozen different web frameworks for MicroPython, 238 00:09:15,840 --> 00:09:18,000 including Microdot. 239 00:09:18,000 --> 00:09:20,720 So if you're coming from the world of CPython 240 00:09:20,720 --> 00:09:22,680 and you've used Flask and you're coming to the world 241 00:09:22,680 --> 00:09:25,280 of microcontrollers, it really looks like Microdot 242 00:09:25,280 --> 00:09:27,120 might be the perfect web framework 243 00:09:27,120 --> 00:09:29,240 to bridge both of those worlds. 244 00:09:29,240 --> 00:09:30,400 - That's really amazing. 245 00:09:30,400 --> 00:09:32,080 I'm really impressed. 246 00:09:32,080 --> 00:09:34,360 Like I did some networking, 247 00:09:34,360 --> 00:09:36,920 some UDP networking stuff a couple months ago. 248 00:09:36,920 --> 00:09:38,200 That was mostly for CircuitPython, 249 00:09:38,200 --> 00:09:42,080 but because the API, the network API is a CircuitPython 250 00:09:42,080 --> 00:09:45,180 and normal Python, or CPython, are so close, 251 00:09:45,180 --> 00:09:47,720 I was able to have my library support both. 252 00:09:47,720 --> 00:09:49,960 And that was really cool because yeah, 253 00:09:49,960 --> 00:09:52,860 I could do all my development on the desktop 254 00:09:52,860 --> 00:09:56,920 and then try it in CircuitPython and it would just work. 255 00:09:56,920 --> 00:09:59,300 I'm just like, this is kind of the promise 256 00:09:59,300 --> 00:10:02,640 of why MicroPython and CircuitPython exists 257 00:10:02,640 --> 00:10:05,760 is that you can take your learning from DesktopPython 258 00:10:05,760 --> 00:10:08,160 and apply it to embedded microcontrollers, 259 00:10:08,160 --> 00:10:09,600 which is amazing. 260 00:10:09,600 --> 00:10:13,040 - Exactly, or even the other way around as well. 261 00:10:13,040 --> 00:10:15,100 - Yeah, yeah, that's very much true for me 262 00:10:15,100 --> 00:10:17,600 'cause I actually don't know DesktopPython too much. 263 00:10:17,600 --> 00:10:19,860 I have heard of Flask though, 264 00:10:19,860 --> 00:10:22,120 so I'm gonna look at this Microdot thing. 265 00:10:22,120 --> 00:10:23,160 - There you go. 266 00:10:23,160 --> 00:10:25,300 What do you have for us next? 267 00:10:25,300 --> 00:10:26,220 - To go even deeper. 268 00:10:26,220 --> 00:10:30,100 So like what's lower level than CircuitPython? 269 00:10:30,100 --> 00:10:30,940 - C. 270 00:10:30,940 --> 00:10:32,480 - C, right, yeah, exactly. 271 00:10:32,480 --> 00:10:35,040 I was gonna say the next step down might be Arduino. 272 00:10:35,040 --> 00:10:38,480 Lower than that would be C with like say a vendor SDK. 273 00:10:38,480 --> 00:10:41,460 Like you see you need to have some way of knowing 274 00:10:41,460 --> 00:10:44,200 some functions you can call to do like, 275 00:10:44,200 --> 00:10:46,560 make the pin go high, make the pin go low. 276 00:10:46,560 --> 00:10:48,280 But what's even lower than that, 277 00:10:48,280 --> 00:10:50,460 you could write C code that manipulates 278 00:10:50,460 --> 00:10:51,800 a chip's registers directly 279 00:10:51,800 --> 00:10:54,320 because that's really all this vendor SDK does 280 00:10:54,320 --> 00:10:57,520 is you can just know what memory locations, 281 00:10:57,520 --> 00:11:02,200 where the pin register lives and modify that with C. 282 00:11:02,200 --> 00:11:05,680 Or you go even lower, you could do assembly language, 283 00:11:05,680 --> 00:11:08,560 which I don't know if you ever heard of assembly language, 284 00:11:08,560 --> 00:11:10,640 but it's pretty much the lowest level. 285 00:11:10,640 --> 00:11:15,200 It is these tiny instructions that represent 286 00:11:15,200 --> 00:11:18,720 the actual bits that are sent to the CPU 287 00:11:18,720 --> 00:11:20,480 and the CPU decodes those bits. 288 00:11:20,480 --> 00:11:22,000 And then that's an instruction 289 00:11:22,000 --> 00:11:23,920 and it does one of the instructions, 290 00:11:23,920 --> 00:11:26,280 which could be load something by memory 291 00:11:26,280 --> 00:11:29,120 or add two registers together or something like that. 292 00:11:29,120 --> 00:11:32,220 And so Carlynorama, disclosure, she's my wife, 293 00:11:32,220 --> 00:11:36,240 has been doing a deep dive on ARM assembly language. 294 00:11:36,240 --> 00:11:37,920 And I've been finding this really fascinating. 295 00:11:37,920 --> 00:11:40,680 See, she started out, she knows Arduino 296 00:11:40,680 --> 00:11:43,720 and low level Arduino and AVR stuff very well for me. 297 00:11:43,720 --> 00:11:47,520 Original Arduino back in 2006 or so, 298 00:11:47,520 --> 00:11:49,480 she wrote some of the original documentation 299 00:11:49,480 --> 00:11:52,320 for the Arduino website back in 2006. 300 00:11:52,320 --> 00:11:56,040 She knows all about like low level, bare bones, AVR stuff. 301 00:11:56,040 --> 00:11:58,080 And so she decided to kind of get back into it 302 00:11:58,080 --> 00:12:03,080 by writing some bare metal C code to drive an AC tiny 45, 303 00:12:03,080 --> 00:12:06,480 and which is a little eight pin AVR, 304 00:12:06,480 --> 00:12:10,840 unlike the larger like 28 pin AVR that's in an Arduino. 305 00:12:10,840 --> 00:12:12,820 And she got that to work and it was like, 306 00:12:12,820 --> 00:12:15,100 that was a cool couple of days of work. 307 00:12:15,100 --> 00:12:18,720 But now, 'cause like her real target is to learn, 308 00:12:18,720 --> 00:12:21,480 not necessarily to learn ARM assembly, 309 00:12:21,480 --> 00:12:24,340 but to learn how ARM chips work. 310 00:12:24,340 --> 00:12:25,540 Because she has some like, 311 00:12:25,540 --> 00:12:27,340 she has some plans down the road. 312 00:12:27,340 --> 00:12:31,120 And so she went to a Trinket M0, 313 00:12:31,120 --> 00:12:34,020 which is a SAMD21 ARM chip and started, 314 00:12:34,020 --> 00:12:36,840 instead of just programming an Arduino or programming C, 315 00:12:36,840 --> 00:12:39,040 she's like, nope, I'm gonna go with the bottom level. 316 00:12:39,040 --> 00:12:40,980 I'm gonna figure out how this chip starts up 317 00:12:40,980 --> 00:12:43,720 when you apply power, what does the chip start to do? 318 00:12:43,720 --> 00:12:46,240 Okay, I'm gonna feed it code to know how to do that. 319 00:12:46,240 --> 00:12:47,840 And then within about a week or so, 320 00:12:47,840 --> 00:12:50,200 she got it to blink an LED. 321 00:12:50,200 --> 00:12:51,160 And then a couple of days later, 322 00:12:51,160 --> 00:12:55,000 she got it to read a button using the lowest level code 323 00:12:55,000 --> 00:12:55,920 as the ARM assembly. 324 00:12:55,920 --> 00:12:58,680 And it's really cool because like, 325 00:12:58,680 --> 00:13:02,880 ARM chips are what are in all of our devices now, 326 00:13:02,880 --> 00:13:05,840 like our phones, our computers, 327 00:13:05,840 --> 00:13:09,120 they all use the ARM processor, the ARM instruction set. 328 00:13:09,120 --> 00:13:13,820 And so, unfortunately, the instruction set 329 00:13:13,820 --> 00:13:14,980 on these little chips, 330 00:13:14,980 --> 00:13:18,180 like the little ones that run Arduino and CircuitPython, 331 00:13:18,180 --> 00:13:22,720 they're a kind of ARM called the Cortex-M series. 332 00:13:22,720 --> 00:13:26,860 And it's the lowest level of the Cortex-M, the Cortex-M0. 333 00:13:26,860 --> 00:13:29,100 And so each one of those, 334 00:13:29,100 --> 00:13:31,460 each one of those sort of subsets 335 00:13:31,460 --> 00:13:34,060 are a smaller and smaller number of instructions 336 00:13:34,060 --> 00:13:34,900 that are available to you 337 00:13:34,900 --> 00:13:37,980 from what the big ARM instruction set has. 338 00:13:37,980 --> 00:13:39,700 So the big ARM instruction set has like 339 00:13:39,700 --> 00:13:42,820 really big, cool instructions for doing DSP functions 340 00:13:42,820 --> 00:13:43,660 and stuff like that. 341 00:13:43,660 --> 00:13:45,540 But when you're on the little microcontroller, 342 00:13:45,540 --> 00:13:46,580 you get like the bare minimum. 343 00:13:46,580 --> 00:13:48,900 So trying to figure out when you just type in 344 00:13:48,900 --> 00:13:51,300 ARM assembly on Google, 345 00:13:51,300 --> 00:13:55,080 gives you this wide range of information 346 00:13:55,080 --> 00:13:57,980 and you have to figure out what part of this 347 00:13:57,980 --> 00:14:00,920 is applicable to these tiny chips. 348 00:14:00,920 --> 00:14:02,640 And so that was like coming into one of the first hurdles 349 00:14:02,640 --> 00:14:04,620 that I was watching her get over. 350 00:14:04,620 --> 00:14:05,600 Like, I don't know any of this. 351 00:14:05,600 --> 00:14:09,640 I know assembly a little bit from like Apple II, 352 00:14:09,640 --> 00:14:11,160 you know, way back a long time ago. 353 00:14:11,160 --> 00:14:12,000 - Sure. 354 00:14:12,000 --> 00:14:14,080 - But my current assembly language knowledge 355 00:14:14,080 --> 00:14:15,620 is pretty, pretty scant. 356 00:14:15,620 --> 00:14:18,440 So it's really fun to like just kind of sit back 357 00:14:18,440 --> 00:14:21,600 and see her figure out this stuff 358 00:14:21,600 --> 00:14:22,740 and then kind of draft off her 359 00:14:22,740 --> 00:14:24,720 and kind of do it off to the side myself 360 00:14:24,720 --> 00:14:25,780 to see if I can make stuff work. 361 00:14:25,780 --> 00:14:26,880 And sometimes I can't. 362 00:14:26,880 --> 00:14:31,200 But it's these instruction sets, 363 00:14:31,200 --> 00:14:32,720 the really cool thing about the ARM instruction set 364 00:14:32,720 --> 00:14:34,320 is it's really regular. 365 00:14:34,320 --> 00:14:37,040 Like the old instruction sets of like the Apple II 366 00:14:37,040 --> 00:14:39,240 and the x86 chips, 367 00:14:39,240 --> 00:14:41,160 they were what's called the complex, 368 00:14:41,160 --> 00:14:43,140 CISC, complex instruction set. 369 00:14:43,140 --> 00:14:45,640 What does the C stand for? 370 00:14:45,640 --> 00:14:50,080 The complex CISC, complex instruction set, something. 371 00:14:50,080 --> 00:14:51,640 And then RISC, which is what ARM is, 372 00:14:51,640 --> 00:14:54,840 is the reduced instruction set, something. 373 00:14:54,840 --> 00:14:56,800 And so the cool thing about RISC 374 00:14:56,800 --> 00:14:59,220 is that you have a fewer number of instructions overall, 375 00:14:59,220 --> 00:15:01,160 but the instructions are very regular. 376 00:15:01,160 --> 00:15:03,700 And so you don't have all these different ways 377 00:15:03,700 --> 00:15:06,520 of loading from a memory location. 378 00:15:06,520 --> 00:15:07,800 You just have one. 379 00:15:07,800 --> 00:15:09,840 And then you do have to do everything in the register. 380 00:15:09,840 --> 00:15:10,780 It's hard to explain, 381 00:15:10,780 --> 00:15:14,920 but without going into a hour long description 382 00:15:14,920 --> 00:15:16,480 of like instruction sets. 383 00:15:16,480 --> 00:15:18,240 But I know a little bit about this now. 384 00:15:18,240 --> 00:15:20,100 (laughs) 385 00:15:20,100 --> 00:15:21,160 - That's pretty cool. 386 00:15:21,160 --> 00:15:23,480 You've got to be pretty curious 387 00:15:23,480 --> 00:15:25,260 to go all the way down to that low level 388 00:15:25,260 --> 00:15:27,280 and start building back up. 389 00:15:27,280 --> 00:15:31,240 - Yeah, no, she's very much like a documentarian 390 00:15:31,240 --> 00:15:32,080 approaching it. 391 00:15:32,080 --> 00:15:34,760 She's been blogging about all of this 392 00:15:34,760 --> 00:15:36,920 in this little blog she has off to the side 393 00:15:36,920 --> 00:15:40,080 of her main sort of blog of like, 394 00:15:40,080 --> 00:15:43,340 let's see what are all the different possible ways 395 00:15:43,340 --> 00:15:45,080 this can be done and then figuring out the way 396 00:15:45,080 --> 00:15:46,640 that actually is the right way. 397 00:15:46,640 --> 00:15:51,580 'Cause not only is there this subsetting 398 00:15:51,580 --> 00:15:52,840 of the ARM instruction set, 399 00:15:52,840 --> 00:15:54,620 but there's also all these different chips 400 00:15:54,620 --> 00:15:58,180 that implement the Cortex-M0 instruction set. 401 00:15:58,180 --> 00:16:00,740 There's the SAMD21, which is what we're familiar with, 402 00:16:00,740 --> 00:16:02,500 like the original QTPI. 403 00:16:02,500 --> 00:16:04,420 There's the STM32 chips, 404 00:16:04,420 --> 00:16:06,940 which are really, really popular and really common, 405 00:16:06,940 --> 00:16:09,240 but neither of us have any experience with STM32, 406 00:16:09,240 --> 00:16:11,400 but yet there's a lot of documentation 407 00:16:11,400 --> 00:16:14,280 on the STM32 assembly language for some reason. 408 00:16:14,280 --> 00:16:17,320 And then there's like people talking about 409 00:16:17,320 --> 00:16:22,320 these more complicated STM32 ARM chips for audio stuff, 410 00:16:22,320 --> 00:16:24,240 which is what I was running into. 411 00:16:24,240 --> 00:16:25,080 'Cause I was seeing that like, 412 00:16:25,080 --> 00:16:27,920 oh, some of these synthesizer people 413 00:16:27,920 --> 00:16:30,680 implement large chunks of their very complicated 414 00:16:30,680 --> 00:16:34,220 DSP code as really tight assembly language loops 415 00:16:34,220 --> 00:16:37,620 inside of a much larger C program that does the synthesizer. 416 00:16:37,620 --> 00:16:39,480 And so it's like, well, that's not applicable 417 00:16:39,480 --> 00:16:42,820 to this problem of like programming a QTPI, 418 00:16:42,820 --> 00:16:43,740 (laughs) 419 00:16:43,740 --> 00:16:45,080 but it's interesting. 420 00:16:45,080 --> 00:16:45,920 - Right. 421 00:16:45,920 --> 00:16:50,520 - But like along the way, she also learned 422 00:16:50,520 --> 00:16:52,980 that there's a really great ARM simulator, 423 00:16:52,980 --> 00:16:54,880 online ARM simulator you can go to 424 00:16:54,880 --> 00:16:57,080 and you can like just type in some language instructions 425 00:16:57,080 --> 00:16:59,820 into it and compile it in the browser. 426 00:16:59,820 --> 00:17:01,360 And you can kind of step through it 427 00:17:01,360 --> 00:17:02,720 with a little built-in debugger 428 00:17:02,720 --> 00:17:06,200 and it's like cycle accurate emulation apparently 429 00:17:06,200 --> 00:17:08,860 for a bunch of different types of chip architectures. 430 00:17:08,860 --> 00:17:11,460 And that was really, really fascinating to see that. 431 00:17:11,460 --> 00:17:16,020 She also learned how to actually run and use GDB, 432 00:17:16,020 --> 00:17:18,220 which I don't know if you ever had to use GDB before, 433 00:17:18,220 --> 00:17:21,060 I've used it once, you know, 20 years ago, 434 00:17:21,060 --> 00:17:23,560 but it's a way of hooking into your program 435 00:17:23,560 --> 00:17:26,960 and telling it to stop and telling it to step, step, step, 436 00:17:26,960 --> 00:17:30,160 one instruction at a time and setting break points 437 00:17:30,160 --> 00:17:31,300 at certain parts in your code 438 00:17:31,300 --> 00:17:35,500 so you can kind of inspect the state of the program 439 00:17:35,500 --> 00:17:37,440 without having to use print statements. 440 00:17:37,440 --> 00:17:40,040 So it's really powerful way of debugging your program. 441 00:17:40,040 --> 00:17:43,000 Usually pretty hard to do on an embedded system, 442 00:17:43,000 --> 00:17:46,360 but these ARM chips have a built-in debugging system 443 00:17:46,360 --> 00:17:49,800 called SWD, software debugging I think is what it stands for. 444 00:17:49,800 --> 00:17:52,040 And so you can use these little $10 programmers 445 00:17:52,040 --> 00:17:54,440 that just hook into a couple of pins on the chip 446 00:17:54,440 --> 00:17:56,160 and then you can just use GDB to it 447 00:17:56,160 --> 00:17:58,840 and tell it to stop and inspect registers 448 00:17:58,840 --> 00:18:01,680 and inspect memory locations and see, okay, yes, 449 00:18:01,680 --> 00:18:04,880 my code did accurately twiddle this one little memory 450 00:18:04,880 --> 00:18:08,040 location that represents the pin register 451 00:18:08,040 --> 00:18:11,700 to cause it to be like turn the LED on or off or whatever. 452 00:18:11,700 --> 00:18:14,140 - Very cool. 453 00:18:14,140 --> 00:18:16,240 - Yeah, so it's incredibly fascinating. 454 00:18:16,240 --> 00:18:19,040 It makes me appreciate all the work that goes into 455 00:18:19,040 --> 00:18:22,860 when you write in Arduino, say pin mode and input pull-up, 456 00:18:22,860 --> 00:18:25,920 or when you say in Circuit Python, 457 00:18:25,920 --> 00:18:29,560 button equals digital in out and your pin number. 458 00:18:29,560 --> 00:18:31,680 There's a lot of stuff, like you just look at the C code 459 00:18:31,680 --> 00:18:33,200 that it goes, that goes and does that, 460 00:18:33,200 --> 00:18:34,900 maybe it's only one or two lines, 461 00:18:34,900 --> 00:18:37,240 but then you see all the assembly language instructions 462 00:18:37,240 --> 00:18:41,160 that have to happen to make that work and it's pretty cool. 463 00:18:41,160 --> 00:18:42,700 And then her next steps are, I think, 464 00:18:42,700 --> 00:18:46,200 going to move to the Clang compiler system. 465 00:18:46,200 --> 00:18:48,920 So there's this kind of two different ways 466 00:18:48,920 --> 00:18:50,980 of compiling for chips. 467 00:18:50,980 --> 00:18:55,880 There's the older and more sort of established GCC 468 00:18:55,880 --> 00:18:59,840 toolset and then there's this new thing called Clang 469 00:18:59,840 --> 00:19:02,600 and LLVM, Clang is kind of the front end, 470 00:19:02,600 --> 00:19:04,540 LLVM is kind of the back end, I think. 471 00:19:04,540 --> 00:19:08,960 And that's, I think the future maybe. 472 00:19:08,960 --> 00:19:12,200 So that's where she's heading next, I think. 473 00:19:12,200 --> 00:19:13,320 And I'm fascinated to see that 474 00:19:13,320 --> 00:19:15,120 'cause I know nothing about Clang. 475 00:19:15,120 --> 00:19:16,620 - Yeah, it'll be fun to watch. 476 00:19:16,620 --> 00:19:18,640 - It's all right. 477 00:19:18,640 --> 00:19:20,240 So what's your third one today? 478 00:19:20,240 --> 00:19:22,760 - Mine is a callback to way back in episode one 479 00:19:22,760 --> 00:19:24,920 in September of 2022. 480 00:19:24,920 --> 00:19:29,140 I had talked briefly about the bamboo X1 carbon 3D printer, 481 00:19:29,140 --> 00:19:31,360 which had just hit the market at the time. 482 00:19:31,360 --> 00:19:33,960 I had mentioned a good friend of mine had bought one 483 00:19:33,960 --> 00:19:36,460 and I questioned how long it would last. 484 00:19:36,460 --> 00:19:38,960 Well, after watching him have his 485 00:19:38,960 --> 00:19:41,280 for about six months later, I bought one. 486 00:19:41,280 --> 00:19:43,840 So I've just passed the one year mark of having one 487 00:19:43,840 --> 00:19:46,080 and I have the P1P model. 488 00:19:46,080 --> 00:19:47,480 I know it's not an open source printer 489 00:19:47,480 --> 00:19:49,300 and I'll take some flack from it, 490 00:19:49,300 --> 00:19:53,460 but I gotta say a year later, it still just works. 491 00:19:54,100 --> 00:19:55,140 - Oh, wow. 492 00:19:55,140 --> 00:19:56,780 - I don't have to fiddle with the bed. 493 00:19:56,780 --> 00:19:58,560 I don't get clogged nozzles. 494 00:19:58,560 --> 00:20:01,540 Now I know that I went from an Ender 3 to a bamboo, 495 00:20:01,540 --> 00:20:03,460 which is kind of like going from a really cheap car 496 00:20:03,460 --> 00:20:04,800 to a really nice car. 497 00:20:04,800 --> 00:20:08,460 But the worst thing I can say about it 498 00:20:08,460 --> 00:20:10,380 is that I have to keep my greasy fingers clean 499 00:20:10,380 --> 00:20:12,400 when I'm taking things off the bed. 500 00:20:12,400 --> 00:20:13,640 Just trying to keep the bed clean 501 00:20:13,640 --> 00:20:15,540 is probably the worst problem I have. 502 00:20:15,540 --> 00:20:16,780 And if that's the worst problem you have 503 00:20:16,780 --> 00:20:18,980 when you come to 3D printing, 504 00:20:18,980 --> 00:20:20,580 then you're doing something right. 505 00:20:20,580 --> 00:20:23,380 - Yeah, I've heard so many good things about it. 506 00:20:23,380 --> 00:20:26,260 People are claiming it's like a toaster 507 00:20:26,260 --> 00:20:28,260 where you just go to it and you just push the button 508 00:20:28,260 --> 00:20:31,780 and it works and it seems so fast to print 509 00:20:31,780 --> 00:20:33,060 from what I've heard. 510 00:20:33,060 --> 00:20:34,820 It's like, man, that's amazing. 511 00:20:34,820 --> 00:20:36,340 - Well, that's been my experience. 512 00:20:36,340 --> 00:20:39,680 And bamboo was actually in the news this week. 513 00:20:39,680 --> 00:20:42,380 It looks like they tried to slip something by their users 514 00:20:42,380 --> 00:20:43,340 and it didn't get through, 515 00:20:43,340 --> 00:20:45,700 which was claiming that their software 516 00:20:45,700 --> 00:20:48,500 would only be updated through 2025. 517 00:20:48,500 --> 00:20:51,300 Well, there was a big brouhaha about it 518 00:20:51,300 --> 00:20:53,220 and they came out today actually and said, 519 00:20:53,220 --> 00:20:56,260 "Nope, they're gonna support the printer's firmware 520 00:20:56,260 --> 00:20:59,840 through 2027 and security fixes through 2029." 521 00:20:59,840 --> 00:21:02,520 So that's pretty interesting when you think 2027, 522 00:21:02,520 --> 00:21:05,800 that'll give the printer four years of life, 523 00:21:05,800 --> 00:21:08,560 which in this industry is probably not too bad. 524 00:21:08,560 --> 00:21:10,740 - Yeah, totally. 525 00:21:10,740 --> 00:21:12,060 But yeah, that's always the danger 526 00:21:12,060 --> 00:21:16,780 with any of these complicated computing-based devices 527 00:21:16,780 --> 00:21:19,500 is how long does their support last 528 00:21:19,500 --> 00:21:22,740 because things seems to always decay. 529 00:21:22,740 --> 00:21:24,140 Like the software-based things always decay 530 00:21:24,140 --> 00:21:25,780 unless you keep updating them nowadays. 531 00:21:25,780 --> 00:21:27,460 - Right, and you could argue 532 00:21:27,460 --> 00:21:30,460 that their firmware is exactly that. 533 00:21:30,460 --> 00:21:31,780 People either love it or hate it 534 00:21:31,780 --> 00:21:34,620 every time an update comes out, it seems. 535 00:21:34,620 --> 00:21:36,780 But they've done a good job with documentation. 536 00:21:36,780 --> 00:21:38,860 They've got a Wiki which includes maintenance tips 537 00:21:38,860 --> 00:21:40,340 and when to perform them. 538 00:21:40,340 --> 00:21:43,340 I know the bamboo costs more than your average 3D printer, 539 00:21:43,340 --> 00:21:45,300 but for me, it's been worth every penny 540 00:21:45,300 --> 00:21:48,100 'cause as I said, it just works. 541 00:21:48,100 --> 00:21:51,060 - Yeah, yeah, I've been involved 542 00:21:51,980 --> 00:21:54,700 trying to play 3D printer for jeez, forever, 543 00:21:54,700 --> 00:21:56,260 like since kind of the first MakerBots. 544 00:21:56,260 --> 00:22:01,260 And I got so sick of having them be a hobby 545 00:22:01,260 --> 00:22:03,120 rather than a tool. 546 00:22:03,120 --> 00:22:06,060 And so at one point, I bought like a really expensive one 547 00:22:06,060 --> 00:22:10,620 just to like get, just to get out of the morass 548 00:22:10,620 --> 00:22:12,380 of like always tuning the printer 549 00:22:12,380 --> 00:22:13,700 to get it to work properly. 550 00:22:13,700 --> 00:22:15,820 And then just like pay too much money 551 00:22:15,820 --> 00:22:17,080 and get a printer that works. 552 00:22:17,080 --> 00:22:21,000 And thankfully now, getting a printer that works 553 00:22:21,000 --> 00:22:23,420 is really low cost comparatively. 554 00:22:23,420 --> 00:22:25,080 Used to be like $20,000. 555 00:22:25,080 --> 00:22:25,920 - Right. 556 00:22:25,920 --> 00:22:30,340 Now anywhere from 300 to call it $1,600 557 00:22:30,340 --> 00:22:32,740 if you get like a fully loaded bamboo with the AMS 558 00:22:32,740 --> 00:22:34,180 and all that kind of stuff. 559 00:22:34,180 --> 00:22:35,700 - The AMF, that's the one where it can like 560 00:22:35,700 --> 00:22:36,960 change the filament color 561 00:22:36,960 --> 00:22:38,980 or change which filament you're printing with. 562 00:22:38,980 --> 00:22:41,260 - Yep, up to four filaments you can have loaded at any time 563 00:22:41,260 --> 00:22:42,980 and it can auto switch them out. 564 00:22:42,980 --> 00:22:43,820 - That's crazy. 565 00:22:43,820 --> 00:22:45,960 It's like, yeah. 566 00:22:45,960 --> 00:22:47,660 - I did not shell out for that. 567 00:22:47,660 --> 00:22:49,780 The printing I do is still pretty basic. 568 00:22:49,780 --> 00:22:51,820 It's prototypes and that kind of stuff. 569 00:22:51,820 --> 00:22:55,580 I don't need, you know, I'm kind of, 570 00:22:55,580 --> 00:22:58,680 I've been through the phase where I printed the pretty toys 571 00:22:58,680 --> 00:23:01,180 that was already behind me by the time I got this. 572 00:23:01,180 --> 00:23:04,840 So I didn't need an AMS to do the multicolor printing. 573 00:23:04,840 --> 00:23:05,820 - Totally. 574 00:23:05,820 --> 00:23:08,120 - What's your last one for us this week? 575 00:23:08,120 --> 00:23:11,440 - All right, so let's talk about capacitive touch sensors 576 00:23:11,440 --> 00:23:12,880 and sliders. 577 00:23:12,880 --> 00:23:14,660 So if you haven't followed me again, 578 00:23:14,660 --> 00:23:16,240 you've probably been seeing that I've been playing with, 579 00:23:16,240 --> 00:23:18,620 I've been exploring capacitive touch sensors 580 00:23:18,620 --> 00:23:22,540 and they're a really great way of adding buttons 581 00:23:22,540 --> 00:23:25,620 to your project without actually having to have 582 00:23:25,620 --> 00:23:27,020 any extra hardware, 583 00:23:27,020 --> 00:23:29,380 except for like one little resistor per button. 584 00:23:29,380 --> 00:23:34,140 And so if you can make a PCB, you can have 10, 20 buttons. 585 00:23:34,140 --> 00:23:36,060 Like I've got a little a MIDI keyboard 586 00:23:36,060 --> 00:23:39,960 that's got I think 25, it's a 25 key keyboard I think, 587 00:23:39,960 --> 00:23:43,860 you know, just with cap touch pads and an Arduino, 588 00:23:43,860 --> 00:23:46,220 sorry, a Raspberry Pi Pico. 589 00:23:46,220 --> 00:23:48,700 One of the things I've been wanting to play with is the 590 00:23:48,700 --> 00:23:51,260 little sliders, like you've seen, like the most famous 591 00:23:51,260 --> 00:23:55,460 is like the second version of the iPod touch wheel 592 00:23:55,460 --> 00:23:57,140 or scrolly wheel. 593 00:23:57,140 --> 00:23:59,620 And the first one was a mechanical little thing that moved, 594 00:23:59,620 --> 00:24:01,620 but the second version and kind of all the way up 595 00:24:01,620 --> 00:24:02,760 to I think till the end, 596 00:24:02,760 --> 00:24:06,060 was this non-moving capacitive touch surface 597 00:24:06,060 --> 00:24:08,900 that you just kind of scrolled your finger around on. 598 00:24:08,900 --> 00:24:13,140 I've seen in some of the capacitive touch design guidelines, 599 00:24:13,140 --> 00:24:16,180 how to make one of these types of little wheels 600 00:24:16,180 --> 00:24:18,220 and the wheels are actually just a special case 601 00:24:18,220 --> 00:24:21,420 of a linear slider uses the same technique. 602 00:24:21,420 --> 00:24:24,540 And so I'm like, let me try to build something like this. 603 00:24:24,540 --> 00:24:28,120 And so first, how do these capacitive sensors work? 604 00:24:28,120 --> 00:24:30,620 The way that the technique that I use, 605 00:24:30,620 --> 00:24:33,140 that is one of the really common ones is, 606 00:24:33,140 --> 00:24:37,260 so all wires, all traces on a PCB 607 00:24:37,260 --> 00:24:39,060 are actually little capacitors. 608 00:24:39,060 --> 00:24:40,820 Like when you set them high, 609 00:24:40,820 --> 00:24:44,060 it actually takes some time to get to that high state 610 00:24:44,060 --> 00:24:47,500 because the capacitance of the metal and the fiberglass 611 00:24:47,500 --> 00:24:49,260 and the ground plane on the bottom, 612 00:24:49,260 --> 00:24:50,460 that forms a little capacitor 613 00:24:50,460 --> 00:24:54,460 and it has to take time to charge up that wire 614 00:24:54,460 --> 00:24:58,700 that is your signal trace or your capacitive touch pad 615 00:24:58,700 --> 00:25:00,260 takes some amount of time. 616 00:25:00,260 --> 00:25:03,200 And then when you make it go low again, it takes some time. 617 00:25:03,200 --> 00:25:04,340 It's not instantaneous. 618 00:25:04,340 --> 00:25:06,460 Nothing in electronics is instantaneous, 619 00:25:06,460 --> 00:25:09,260 even though you said, go low now. 620 00:25:09,260 --> 00:25:11,140 It's like, well, it takes a little bit of time. 621 00:25:11,140 --> 00:25:13,660 And that time is driven by that capacitance 622 00:25:13,660 --> 00:25:17,620 of the physical copper on the PCB. 623 00:25:17,620 --> 00:25:19,180 And so you can use that effect 624 00:25:19,180 --> 00:25:23,180 if you make that piece of copper bigger, like finger sized. 625 00:25:23,180 --> 00:25:24,780 And then if you tell your microcontroller 626 00:25:24,780 --> 00:25:28,580 to raise that pad to the high state 627 00:25:28,580 --> 00:25:32,760 and then time how long it takes to go low, 628 00:25:32,760 --> 00:25:34,620 you are now able to detect, 629 00:25:34,620 --> 00:25:37,500 is there a person touching the pad or not? 630 00:25:37,500 --> 00:25:39,620 Because what happens is if you put your finger 631 00:25:39,620 --> 00:25:44,580 next to a copper trace, you add your body's capacitance 632 00:25:44,580 --> 00:25:47,460 to the capacitance that's inherently on the PCB. 633 00:25:47,460 --> 00:25:50,420 And it like, I think it's like maybe two or three times. 634 00:25:50,420 --> 00:25:53,740 It's almost like you're adding another capacitor's worth 635 00:25:53,740 --> 00:25:56,460 of charge when you put your finger next to it. 636 00:25:56,460 --> 00:25:57,300 So it's kind of cool. 637 00:25:57,300 --> 00:26:00,100 It's like this like really ambient physical effect. 638 00:26:00,100 --> 00:26:03,780 You can, there was normally like a bad thing in electronics 639 00:26:03,780 --> 00:26:05,560 that like, oh, your finger's affecting the circuit, 640 00:26:05,560 --> 00:26:08,580 but we're using it to actually affect a usable, 641 00:26:08,580 --> 00:26:10,520 useful technique, which is like, oh, 642 00:26:10,520 --> 00:26:11,740 and I have a little fake button 643 00:26:11,740 --> 00:26:14,620 by having just a piece of copper on a PCB. 644 00:26:14,620 --> 00:26:17,440 And so that's how just on/off buttons work. 645 00:26:17,440 --> 00:26:20,480 Well, the sliders work by just having three or more 646 00:26:20,480 --> 00:26:24,880 of these copper surfaces and they interleave them. 647 00:26:24,880 --> 00:26:26,380 Kind of like if you take your two fingers 648 00:26:26,380 --> 00:26:28,180 and sort of like, sorry, take your two hands 649 00:26:28,180 --> 00:26:30,700 and sort of splay your fingers and put them together. 650 00:26:30,700 --> 00:26:33,060 When you interleave the copper traces like that, 651 00:26:33,060 --> 00:26:37,420 and if you then put your finger somewhere on that gradient 652 00:26:37,420 --> 00:26:40,200 of like the two copper pieces, 653 00:26:40,200 --> 00:26:41,920 if you're like, if you're to touch, 654 00:26:41,920 --> 00:26:43,900 say on your left side of your hand, 655 00:26:43,900 --> 00:26:46,300 when your fingers are kind of connected like that, 656 00:26:46,300 --> 00:26:47,940 then you'll get just the left hand. 657 00:26:47,940 --> 00:26:51,420 And as you move your finger across to the right hand, 658 00:26:51,420 --> 00:26:53,360 you'll get less and less of the left hand 659 00:26:53,360 --> 00:26:54,660 and more and more of the right hand 660 00:26:54,660 --> 00:26:56,440 as you move your finger across. 661 00:26:56,440 --> 00:26:58,240 And so that's kind of how these things work is you, 662 00:26:58,240 --> 00:27:00,240 instead of reading like just an on/off value, 663 00:27:00,240 --> 00:27:03,540 you kind of read a analog value 664 00:27:03,540 --> 00:27:08,080 of what that capacitance changes in the pads. 665 00:27:08,080 --> 00:27:11,420 And you can have not just two pads that are interleaved, 666 00:27:11,420 --> 00:27:13,820 you can have say three or four or five, six, seven pads, 667 00:27:13,820 --> 00:27:16,320 and that will give you more resolution in a way, 668 00:27:16,320 --> 00:27:19,420 because you're using more little individual pads 669 00:27:19,420 --> 00:27:20,860 to indicate where things are. 670 00:27:20,860 --> 00:27:23,500 I'm not sure how many of the original iPod slide, 671 00:27:23,500 --> 00:27:25,180 the touch wheel had, 672 00:27:25,180 --> 00:27:28,340 but the minimum that I've seen is about three. 673 00:27:28,340 --> 00:27:29,620 You need three pads. 674 00:27:29,620 --> 00:27:31,740 And my little Pico slider toy, 675 00:27:31,740 --> 00:27:33,700 that little PCB that I came out with, 676 00:27:33,700 --> 00:27:37,740 uses this three pad technique for doing two rotary dials 677 00:27:37,740 --> 00:27:41,060 and three vertical sliders. 678 00:27:41,060 --> 00:27:42,380 It actually kind of works. 679 00:27:42,380 --> 00:27:45,160 It's using a Raspberry Pi Pico, 680 00:27:45,160 --> 00:27:49,620 and the code for it is pretty simple code. 681 00:27:49,620 --> 00:27:51,580 It's like just simple sort of algebra, 682 00:27:51,580 --> 00:27:54,580 sort of linear sliding two values next to each other. 683 00:27:54,580 --> 00:27:57,200 And I don't know, I'm pretty excited on like, 684 00:27:57,200 --> 00:27:58,820 what other dumb things I can do with it. 685 00:27:58,820 --> 00:28:00,540 Like the real downside of the capacitive touch 686 00:28:00,540 --> 00:28:02,180 is that there's no feedback. 687 00:28:02,180 --> 00:28:04,260 You know, with a button, when you push the button, 688 00:28:04,260 --> 00:28:05,660 you hear a click. 689 00:28:05,660 --> 00:28:06,500 - Right. 690 00:28:06,500 --> 00:28:07,340 - Some people pay a lot of money 691 00:28:07,340 --> 00:28:09,080 on the mechanical keyboards 692 00:28:09,080 --> 00:28:11,460 to get even a louder click than normal. 693 00:28:11,460 --> 00:28:14,660 And, but you get some sort of pushback, 694 00:28:14,660 --> 00:28:17,860 and there's no pushback with these capacitive touch things. 695 00:28:17,860 --> 00:28:18,860 It's one of the downsides. 696 00:28:18,860 --> 00:28:22,220 It's one of the things that people levied against our phones 697 00:28:22,220 --> 00:28:24,280 compared to the phones that preceded it, 698 00:28:24,280 --> 00:28:27,740 because the big black screen of a iPhone 699 00:28:27,740 --> 00:28:31,240 doesn't have any ridges to tell you where the buttons are, 700 00:28:31,240 --> 00:28:32,520 because you know, every interface 701 00:28:32,520 --> 00:28:34,220 has a different layout of buttons. 702 00:28:34,220 --> 00:28:36,580 But we're getting used to it. 703 00:28:36,580 --> 00:28:38,500 So I feel like, you know, the capacitive touch 704 00:28:38,500 --> 00:28:40,560 is sort of like due for a comeback 705 00:28:40,560 --> 00:28:42,260 in terms of microcontroller interfaces, 706 00:28:42,260 --> 00:28:46,520 because we're so used to the non-tactility of a phone surface 707 00:28:46,520 --> 00:28:49,960 that, you know, these flat capacitive touch surfaces 708 00:28:49,960 --> 00:28:52,960 of a microcontroller touch interface would be okay. 709 00:28:52,960 --> 00:28:54,220 - Right. 710 00:28:54,220 --> 00:28:56,780 So you link to the code for both the touch wheels 711 00:28:56,780 --> 00:28:57,980 and the Pico Slider toy. 712 00:28:57,980 --> 00:29:01,260 Is the Pico Slider toy available on your Tindy store as well? 713 00:29:01,260 --> 00:29:03,560 - Oh yes, by the way, I have a Tindy store. 714 00:29:03,560 --> 00:29:08,640 And I have both the larger Pico Slider toy, 715 00:29:08,640 --> 00:29:11,540 which has something like 16 different controls 716 00:29:11,540 --> 00:29:14,420 and two rotary sliders, three linear sliders, 717 00:29:14,420 --> 00:29:15,260 and a bunch of buttons. 718 00:29:15,260 --> 00:29:18,860 And then also the prototype, my little touch wheel zero, 719 00:29:18,860 --> 00:29:20,900 that's just one of those little rotary controls, 720 00:29:20,900 --> 00:29:23,340 like an iPod slide wheel. 721 00:29:23,340 --> 00:29:25,140 And those are both in the Tindy store 722 00:29:25,140 --> 00:29:26,720 if you want to try them out. 723 00:29:26,720 --> 00:29:28,620 And the code for it is like, yeah, 724 00:29:28,620 --> 00:29:30,260 like 10 lines of circuit Python. 725 00:29:30,260 --> 00:29:33,220 - That's all we have for you this episode. 726 00:29:33,220 --> 00:29:35,500 For detailed show notes and for transcripts, 727 00:29:35,500 --> 00:29:37,020 visit thebootloader.net. 728 00:29:37,020 --> 00:29:38,320 I'm Paul Cutler. 729 00:29:38,320 --> 00:29:39,660 - And I'm Tod Kurt. 730 00:29:39,660 --> 00:29:41,440 - Until next time, stay positive. 731 00:29:41,440 --> 00:29:43,440 You