I found the following online MIT course that’s being offered through edX.org. Looks like it has the potential to be both a great learning experience and lots of fun.
Introduction to Control System Design - A First Look
Learn the theory and practice of controller design by building and then position-stabilizing a propeller-levitated arm.
I haven’t done any control system work since my undergrad work and I’ve been telling myself that I want to go back and revisit/relearn some of those concepts. I found the above course that looks to be a great learning experience as well as a lot of fun. This course started on August 1, but the first assignment isn’t due until August 29 so I signed up
One of the neat things about it is how the Arduino is controlled. There’s a python serial server that talks to the Arduino via serial interface (pyserial). The GUI (graphing, control of Arduino, etc) is implemented in a web page and communicates with the serial server via Websockets over localhost port 9000. All of the above software components are provided and usable in turnkey fashion.
It will be interesting to peek under the hood and see how this all fits together and learn about about both pyserial and Websockets. The overall structure looks to be really useful for implementing a local web page GUI to configure & control any Arduino/ARM/SBC as well as collect data and display it in a way that’s somewhat platform agnostic…
For someone with experience implementing control systems, the following course might be a better fit. This is a sister course to the above that’s almost identical, with the difference being it’s a bit more conceptually/mathematically rigorous. It uses the Teensy, a Cortex-M based board, instead of an Arduino. I believe that other than the Arduino vs. Teensy board, the lab hardware components are the same and the ultimate design goal of making a balancing system is the same.
Introduction to State Space Control
Learn physical, computational, and measured-data approaches to state-space modeling and control, by building a copter-levitated arm and then designing and testing high-performance microcontroller-based positioning systems.