Home > On-Demand Archives > Q&A Sessions >
Live Q&A - Beyond Arduino: Now what?
Mitch Davis - Watch Now - EOC 2021 - Duration: 27:00
Great talk Mitch! Every year I do some technical talks about embedded systems to undergrads and everyyear during Q&A someone asks 'what do you think about Arduino?'. The way that you sort of broken down why people use Arduino is great and now I can answer that question really well.
Good job! (I absolutely love short effective videos)
I?m glad to hear it was helpful. Just curious, what sort of topics do you speak about to undergrads?
Thankyou. I?m the opposite, from the STM32 world and knowing nothing about the Arduino!
That?s awesome. How did you first learn it? Was it school, on-the-job, or self-taught?
On the job. CubeMX helps put much of the skeleton code in place.
That was really interesting. But a very short talk (not for a single take though ;-)). I am exploring building embedded applications with STM and NXP microcontrollers and your suggestions make complete sense. I tried a little with compiler optimisations in the Arduino IDE but did not achieve much success.
I am not so good in working with linker scripts and exploring other optimisation techniques, its a long learning process. Thank you!
I like to keep my videos bit-sized, and avoid any unnecessary fluff. Most of my technical videos are 20-30 mins long, but this was a tad shorter since I didn't want to jump into a tutorial of "how to use any microcontroller". After seeing other talks on here, it seems I'm certainly the shortest one. Oh well.
Have fun with your adventures in STM and NXP. I know STM fairly well, but I haven't had a chance to play around with any NXP micros yet.
Great talk! I used to do this in a less organized fashion already, but seeing it laid out so clearly will probably help me out a lot going forward
Thanks! Just curious, what do you mean that you used to do this in a less organized fashion? Reading datasheets, learning by breaking things down one step at a time, or something else?
I meant "this" as in reimplementing the same thing in a new way. I haven't done much with embedded yet, but whenever I got into a new programming language, I'd redo an old project in the new way to see what's the same, what's different and when I should choose one or the other. Embedded never felt like something I could do it, though, because of the amount of jargon. Glad to know it works :)
As someone who used to write datasheets for a living, this made me smile. As a lecturer, this is an eye-opener for me. Now I know what to write. Many thanks for sharing!
Writing datasheets sounds like it would be incredibly difficult. It's no easy task to take something highly complex and write it out in a way that makes sense to the reader without diluting any necessary technical information. Thanks!
I have a further question. Is there any way I can contact you? I'm trying to create a course that targets this specific field, and I'd really appreciate your input on this subject, on what parts were frightening, what unexpected things you went through, etc.
Thank you! I admire how you look at things going beyond what seems like "the easy route". I'm betting there are a handful of people like you who really start to understand how microcontrollers work inside and out? Again, great job!
Thanks! I spend a lot of time tearing down microcontrollers to see how they tick, but then I almost end up going back to the high-level stuff because it's much more practical. It certainly makes it easier to jump from chip to chip, and why different manufacturers take different design approaches.
Hey Mitch, Great video! Thanks for sharing! I think you did a great job breaking it down. I learnt on a mix of Raspberry Pi and Arduino a few years ago, and I think there is still a big chasm between what you can do with a dev board and a tutorial, and getting something up and running from scratch. This isn't confined to embedded - people doing web development, AI, and the rest all have similar problems. Everything we can do to explain how to move on is great and I will definitely check out your Youtube channel. If there's anyone here who likes their Arduino and wants a step in between the Arduino IDE and bare metal, there is a new tool called Arduino CLI. I've made a video about what it is and why you might want to use it (https://youtu.be/Uk5_RKMf2Dk) as well as how to get set up from scratch (https://youtu.be/oXWGsVfYS6k)
I'll have to add this to my list of things to learn. Arduino also released a new IDE that's actually an IDE, but I still haven't gotten a chance to play with it yet. I was just about to ask you a few questions about why you'd use the Arduino CLI, but it sounds like your video should answer that. Thanks!
Yea I haven't played with Arduino IDE 2.0 either. The nice thing about the CLI tool is that it answers both of the questions: "What next?" and "I am experienced enough to know that Arduino will get the job done quickly for this job (prototyping or testing tool), how can I make it reliable over a long period of time?". For beginners, just typing things on the command line will feel like a big step forward, and is part of a natural progression towards avr-gcc, linkers, Makefiles and all the rest. For The experienced, it provides at least some dependency management, potential for unit testing and CI, and access to your own IDE :) I think it is a pretty useful tool and stepping stone.
Having said all that, there is a definite need for more resources to bridge the gap between the hobby and industrial market for embedded. Sounds like your videos do a great job of that and I'm hoping I can contribute as well!
Microchip sells a dev board (about $10) for the ATmega328PB with provisions for Arduino-shield-compatible headers that has another microcontroller on it acting as a debug interface (they call it their mEDBG); the ATmega328PB-XMINI (the X stands for eXplained). This lets you do "traditional" debugging (breakpoints, single stepping, memory view, etc.) in the Atmel Studio; a big step up from "printf" debugging on the Arduino. I think this is another alternative to taking the chip off the Uno and putting it on a prototyping plugboard.
That's interesting, I've never used this before. At first glance, this seems like a REAL development board for ATMEGA328's. That being said, there's still something satisfying about pulling a chip off an arduino and watching it run on a breadboard. However, as soon as you try to do anything practical, it gets messy really fast. At that point, I'd probably switch to something like the XMINI
I think you are totally correct about datasheets. I took a course on digital logic decades ago and the first thing the instructor said was "I bet you thought you were going to learn about digital logic in this course. Well, guess what - I'm going to teach you how to read datasheets. Knowing that, you can teach yourself about digital logic". That was a very valuable lesson and has served me well all these years.
Being able to read datasheets is indescribably helpful. I?m actualy really glad I?ve been reading STM32 datasheets recently because this microcontroller shortage is forcing me to use some obscure chips. Spent all day yesterday reading the reference manual, and I?m about to continue today.
Thanks for the talk, Mitch! This is a topic that needs more attention and I love that you're producing content in this area. Keep it up! I had a moment in grad school where I realized that although I was getting my master's degree in computer engineering, I had no idea how to build any projects without a $20 development board. I spent a year working on an independent study to try and remedy that. I was already armed with that "base level of understanding", which helped, but I learned WAY more by simply picking a bunch of new microcontrollers and experimenting until I could blink an LED. It was a highly rewarding experience and I recommend folks follow your advice and do something similar: take something close to what you know (i.e. Arduino) and find a way to make it work in a slightly different way. I wrote up the things I learned here in the hopes that it might help someone else.
Thanks! I'm glad to hear I wasn't the only one. I was mostly self-taught (and also learned on-the-job). Arduino made everything seem easy, so I figured it wouldn't be hard to try other things as well. That's when I realized how much of an impact the community has on a product line. On paper, other microcontrollers were WAYY better, but they're much harder to learn if you don't know what you're doing.
That github link looks really cool. You've put an incredible amount of work into documenting your knowledge, and stuff like that is a goldmine for anyone trying to do something similar. I spend a lot of time reading through people's wikis/repos to see what's out there.
I'll date myself. Arduino did not exist, it was a Tattletale by Onset Computer which I first really built something with, sort of the Arduino of its day. I went off away from hardware work for a decade, now have some full circle and now want to learn the STM32, staying in the open source world if possible.
When you're learning new stuff, do you use all the fancy high-level IDEs, or do you like to stick closer to bare metal? I'm always curious to see what people think about the direction that some microcontrollers are moving in.
I am at this conference to figure that out. I would like to learn fewer things well.
Sometimes you get thrown into the tar pit and never really see the gap between beginning with an Arduino and working directly with uControllers. Thank you for your talk, I think it really helps to bridge the gap.
Thanks for the feedback. I often find myself wondering what is happening behind the scenes, and after figuring out how it works, I go back to the high-level stuff. It certainly helps understanding the seemingly weird design choices that people make
Love the video. Going back to the beginning and teach fundamentals is much harder that it looks like if you really want to help people out. Which is exactly what you're doing on your you tube channel. Keep up with the great work Mitch.
Thanks for the kind words. I certainly don't have as much experience as most of the people who are here watching / making videos for this conference, but I'm still trying my best to create some well-planned content for people trying to learn. Most of my inspiration to get involved was fueled by frustration due to inconsistent or nonexistent tutorials. I hope other people do the same.
Hey everyone, I hope you enjoy this 13-min talk on moving beyond Arduino.
If you were introduced to the world of embedded through Arduino, let me know in the comments. If you have already gone beyond Arduino, I?d love to hear what route you took, and what challenges you faced along the way.
16:02:49 From Sai Y : We can hear you clearly! 16:03:28 From Al Anway : Mitch: love your blackboard background, too! 16:06:16 From Sai Y : Great talk on moving past the Arduino platform - In your talk you recommended going baremetal using the Atmega328P (as an example). When you go from using an Arduino library wrapper to baremetal, what were the challenges you encounted in the migration? For example: Did you have to write your own libraries for the peripherals? Were you able to reuse any of them? 16:07:39 From Peter Sik : How do you handle switching different vendor frameworks when moving away from Arduino? Do you recommend avoiding vendor frameworks for a beginner (Microchip ASF etc.)? 16:08:53 From Peter Sik : Nevermind, basically answered 16:09:10 From Sai Y : thanks 16:09:15 From Bob Dowling : Peter: Microchip has a couple of webinars that walk you through taking an Arduino project and porting it into ASF. I found them easy to follow, but then again I've been doing embedded work for a long time. 16:13:08 From NateWelch : Do you have a recommendation on good screen capture software to use when making instructional videos? 16:13:31 From busa2191 : Why wouldn't you want to use st-micro's CUBE bare metal ecosystem. 16:16:14 From Tim G : OBS is pretty good for screen recording :) 16:16:51 From John Lowe : yes, OBS is good (mostly) 16:17:54 From busa2191 : So what do you think of Platform I/O so far? 16:20:00 From Wellington : When moving away from Arduino IDE, how much code reuse can a developer have when making the transition? 16:21:08 From Leopy : For someone that has never used an RTOS, would you recommend getting started with them or stick and "excel" on lower, machine-like languages that (usually) allow for better performance? 16:22:01 From Naveen Shankar : Can we access map files to do linker related optimisations for Arduin targets? 16:22:50 From javi : Don't you think that modern IDEs like STMCubeIDE, with a graphical interface for MCU configuration and all the autogenerated code, also abstract the development too much to actually learn how things really work? 16:28:11 From javi : Thanks!
Excellent talk, Mitch! As someone earlier in their embedded career and with a background / education in other areas of engineering, this has been the question on my mind since I started tinkering with Arduino and Raspberry Pi - how do I move this to a more professional skillset? I think you did a great job answering that question here, and now that I have professional embedded experience, I think your advice is spot on. Thanks again, and much appreciated!