1. Summer 2017 Syllabus¶
Contents
1.1. Course Description¶
This project-based course introduces students to the fundamentals of electronic and software engineering in the context of developing a pinball machine. This objective combines elements of electromechanical systems, real-time software, human interaction, and physical dynamics. The specific outcome will be driven by student game designs and culminate in one or more working machines to be performed or played at a final show.
The course will begin with a series of skill-building labs to learn basic electronics theory, Arduino microprocessor programming, and the properties of the sensor and actuator components. The students will then develop a detailed project concept, followed by developing and testing a series of progressively more detailed prototype revisions.
1.2. Project Description¶
Students will work in small teams to design, build, and program a pinball machine from scratch. The scope of the project includes real-time software, game concept design, and electronic and mechanical fabrication and testing. The emphasis is on elegant design and execution using low-cost components. The physical construction will use laser-cut and CNC-routed wooden parts. The skills section covers use of essential electronic lab equipment including multimeters, soldering irons, and oscilloscopes. If time permits, students may also participate in the CAD/CAM and CNC fabrication of the wooden parts.
We will begin by analyzing the two game boards developed last summer, covering circuit theory, lab technique, and real-time software methods. We will synthesize a new game design and develop new mechanical component designs as needed. In parallel, the software stack will be extended to support the game logic. The system will be brought together as a whole, play-tested, and revised. The final outcome will be a playable game to be demonstrated at the closing symposium.
1.3. Course Goals¶
Upon completing this course students will be able to do the following:
- apply basic electronic theory to build and analyze simple sensor and actuator circuits
- write Arduino software to implement real-time control of an electromechanical system
- develop reactive behaviors
- design state machines for implementing control logic
- develop a machine prototype through multiple iterations
- observe good lab discipline and etiquette
1.4. Course Resources¶
The course will be hosted in Carnegie Mellon’s IDeATe Physical Computing Lab. Students will have access to Arduino microcontrollers, a variety of electronic components and test equipment, prototyping supplies, and programming software on university computers. Project materials will be free to students.
1.5. Policies¶
Coming to class is mandatory. The coursework will primarily take place during the lab sessions.
The classroom for the course in the IDeATe Physical Computing Lab in Hunt A10, part of the IDeATe@Hunt Collaborative Making Facility. All lab users are expected to abide by the Physical Computing Lab Policies. The lab inventory of components and materials is available online under Physical Computing Lab Inventory.
1.6. Calendar¶
The general plan is as follows:
Week 1 | rapid introduction to Arduino microcontroller programming
basic electrical theory and practice
basic physical input/output
|
Week 2 | basic principles of state machine design and programming
actuators and sensors
discussion of pinball concept and history
|
Week 3 | project ideation: what kind of machine(s) will we build?
writing a development and testing plan
basic real-time programming techniques
feasibility experiments
|
Week 4 | design and fabrication of physical structure
ball actuator tests (solenoids, servos, speakers, LED modules)
ball sensor tests (microswitches, photoreflectors)
game or performance software prototype
|
Week 5 | installing actuator systems
installing sensor systems
testing, testing, testing
|
Week 6 | play-testing
software finalization
final documentation
performance and presentation
|
During the first two weeks of lab sessions we will explore many basic programming and circuit principles via in-class technical exercises. Then the emphasis will shift to developing the implementing the project idea.
The following course calendar will be filled in as we go:
Date | Day | Class | In-Class Activity |
---|---|---|---|
Jul 4 | Tue | No class for July 4 holiday. | |
Jul 5
|
Wed
|
1
|
Welcome!
Course overview.
Elementary electrical theory.
Basic electronic tools.
LEDs.
|
Jul 6
|
Thu
|
2
|
Ohm’s Law.
Voltage Divider circuits.
Basic sensors.
|
Jul 7
|
Fri
|
3
|
Motors and Actuators.
DC motors.
Solenoids.
Speakers.
Review of SAMS 2016 games.
|
Jul 11 | Tue | 4 | Introduction to the Arduino. |
Jul 12 | Wed | 5 | |
Jul 13 | Thu | 6 | |
Jul 14 | Fri | 7 | Tentative: field trip to Kickback Cafe. |
Jul 18
|
Tue
|
8
|
Field trip review discussion.
Project brainstorming.
|
Jul 19 | Wed | 9 | |
Jul 20 | Thu | 10 | |
Jul 21 | Fri | 11 | |
Jul 25 | Tue | 12 | |
Jul 26 | Wed | 13 | |
Jul 27 | Thu | 14 | |
Jul 28 | Fri | 15 | |
Aug 1 | Tue | 16 | |
Aug 2 | Wed | 17 | |
Aug 3 | Thu | 18 | |
Aug 4 | Fri | 19 | |
Aug 8 | Tue | 20 | |
Aug 9 | Wed | 21 | |
Aug 10 | Thu | 22 | Practice presentations. |
Aug 11 | Fri | 23 | Closing Symposium |