The School of Electrical and Computer Engineering at Cornell University has made [Bruce Land]’s lectures and materials for the Designing with Microcontrollers (ECE 4760) course available for many years. But recently [Bruce], who semi-retired in 2020, and the new lecturer [Hunter Adams] have reworked the course and labs to use the Raspberry Pi Pico. You can see the introductory lecture of the reworked class below.
Not only are the videos available online, but the class’s GitHub repository hosts extensive and well-documented examples, lecture notes, and helpful links. If you want to get started with RP2040 programming, or just want to dig deeper into a particular technique, this is a great place to start.
From what we can tell, this is the third overhaul of the class this century. Back in 2012 the course was using the ATmega1284 AVR microcontroller, and in 2015 it switched to the Microstick II using a Microchip PIC32MX. Not only were these lecture series also available free online, but each has been maintained as reference after being replaced. One common thread with all of these platforms is their low cost of entry. Assuming you already have a computer, setting up the hardware and software development environment for these modules costs less than the price of a pizza dinner, a fact no doubt appreciated by the ECE department’s budget director.
We’ve covered this course before back in 2015 when it first changed. Another free online course on embedded system design is from [Prof James Conrad] at UNC Charlotte, based on the Renasas RX63N microcontroller — the UNC Charlotte team drove development of the autonomous vehicle project we covered back in 2009. If you know of other online embedded systems classes, let us know in the comments below.
Aha! Now students in the class (or viewing the materials) could also program the RP2040 with the most user-friendly IDE available for microcontrollers — MicroBlocks! It lets users focus on the physical making part without the oft frustration of the coding part. ;)
I’m going to check out the materials links…
Sorry professor that I was not able to hand in my final. I was unable to find any RP2040’s to use.
https://wokwi.com/projects/new/pi-pico
Online simulation, in case that helps.
RP2040s (and the Pi Picos they’re on) have consistently been one of the most available MCUs since they came out.
Unless there’s a joke that’s flying over my head here.
Your not looking very hard :) . Pico’ are everywhere. I order a couple almost every time I place an order with Adafruit as they are ‘cheap’. Normal, Wifi, Feather, Qt Py …. Plus there many other boards with a RP2040 onboard from other vendors. Like Sparkfun.
Digikey currently has around 26,000 Pi Picos and 105,000 RP2050’s in stock, all at MSRP. This has more or less been the case since their release.
RO2040 is quite available, LCSC has 16000, Mouser has 12000, etc
This course is a pretty high level one. I’ve watched the first lecture and it assumes from the start that you’re comfortable implementing fourier transforms and mimicking floating point arithmetic in integers. I’ve played with microcontrollers for years, including following the University of Texas course that was on EdX some years ago (Embedded Systems – Shape The World if anyone wants to google it), but they were all varieties of read input, wait a bit, switch output, wait a bit more. Does anyone have any suggestions for maths courses that might get me to the level I need. I’ve taken UK A’ level (exams you do at 18) in maths so I’m not a complete beginner, but this stuff is way beyond me.
I believe it’s a senior level engineering class.
This is the kind of professor that your are excited to get. I had few like this but they were the exceptions not the rule
Fourier is cool, but you don’t need it to have fun with microcontrollers. Basic programming, a woring knowledge of atomic access, PID systems and simple state machine with housekeeping routines and you can build something cool.
Be aware that DMA exists, interrupts can have priorities, and memory is limited. Keep your interrupts small.
Have fun.
Everything is a library call these days so you mainly just need to know the high level stuff like: why and when to use it; how to setup the library call; and how to interpret the results. I know the “serious” guys will throw rocks but “knowing the math” isn’t required for most work any more.
MCU class without bare metal understanding and totally relying existing rpi libs 👎, Mediocre considering its “Cornel”.
Projects look good though.
I took this couse as a student in 2003…best course in the history of my career (I took many courses after too!). Bruce if you read this… many thanks for creating such an inspiring and practical course and steering so many into the embedded field!
There are bare metal courses too. And for >95% of students, learning concepts like DMA using an SDK and RTOS is significantly more valuable (and can cover more content) than if it was only in assembly. Unless a student is getting a job specifically in some high performance embedded design, bare metal has little value. Learning how many more advanced concepts work generally is significantly more valuable.
First, it’s “Cornell” not “Cornel”. Second, you must start getting comfortable with the concepts and using the system first with the “high-level” libraries then dive into the metal.