AIR: Art, Interactivity, and Robotics Curriculum and Tools Development
Advisor: Dave Musicant
Carleton sculpture professor Stephen Mohring and I have been teaching a wonderful course for a number of years now, titled "AIR: Art, Interactivity, and Robotics." In this course, students build interactive scultpures that use Arduinos as the underlying technology to power the creations. Students in the course learn about how to build things with wood and metal, about the fundamentals of aesthetic design, some basic electronics, and how to program Arduinos to make things happen.
The Arduinos that we use are programmed in a subset of C++. This generally works reasonably well, as it's a pretty small subset of C++, with no pointers necessary. That said, a number of new products have appeared on the market which would enable us to potentially use Python, which might be wonderful. This project would consist of the following:
- You would build your own AIR-like final project using the Arduinos we have, using typical Arduino-C++, to come up to speed with what we have been doing in our course. That course is aimed at people with no programming experience, so you'll get through the programming learning really quickly. Stephen has agreed to work with this comps team to get a crash course in building kinetic sculpture with wood and other materials.
- Learn about how to use a variety of alternative Arduino-like products that use Python to see if they can be successfully used for the kinds of work we want to do. Reimplement your project using a variety of other microcontrollers.
- Produce a presentation and/or a report for Stephen and me carefully laying out the pros and cons of different hardware approaches, including information on development environments, speed, robustness, hidden gotchas, and so on.
- Produce curricula and a set of labs for future students who take AIR who would use the new technology that you are experimenting with. We hope to see two sets of these: one for the current AIR audience, who has no programming experience; and a second set for more experienced CS students.
Stephen and I are aware of the following options we'd like to pursue. It's possible you'll discover something else we might want to try, but here's what we know about:
- The traditional Arduino. The particular Arduino variant that we currently use is the Dagu Spider Red Back. It is programmed via the typical Arduino IDE, using a variant of C++.
- MicroPython. This is a language option supported by some microcontroller boards. You would research the hardware available, consult with us in picking something that looks like a good choice for our course, and then accomplish the tasks laid out above.
- Raspberry Pi. Unlike the above options, which require you to write a program on a typical computer and download compiled code to a microcontroller, the Raspberry Pi is a completely self-contained small computer of its own. It is capable of running Python, and there is at least one library available for programming its output pins via Python. You would get a Raspberry Pi configured, and work through what it means to implement programs with it.
You'll be expected to produce the following two deliverables associated with
- An interactive sculpture of your own (each team member will do this independently) that has aesthetic merit, and also serves as a vehicle for test driving the technology.
- A curriculum for future intro-level AIR students to learn about each form of technology that you've researched. This might be one curriculum with drop-in programming changes, or if the technology is different enough, it might be separate curricula.
- A second curriculum designed for more experienced CS students who want to do something like AIR (e.g., yourselves). This would presumably go more in depth into the hardware workings of the device and include more advanced tricks. (multitasking? lower-level programming? You'll have to see what your options are.
- A report or presentation for Stephen and me detailing the tradeoffs between the devices and programming environments as they would relate to our course. This is different from the classic "end of comps" presentation that you'll also do, which summarizes the project as a whole.
None. CS 208 (Organization and Architecture) and/or Physics 343 (Electronics) would undoubtedly be helpful, but aren't essential.