Summer 2019 Syllabus¶
Contents
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 several skill-building labs to learn basic CAD, electronics theory, Arduino microprocessor programming, and the properties of the sensor and actuator components. The students will simultaneously develop a detailed project concept, followed by developing and testing progressively more detailed prototype revisions.
Project Description¶
Students will work in small teams to design, build, and program a pinball machine from scratch. The emphasis is on elegant design and execution within a tight budget. The physical construction will use both laser-cut wooden parts and commercial components. The scope of the project includes game concept design, mechanical design, real-time software development, project management, and electronic and mechanical fabrication and testing. The skills section covers elementary 3D CAD and the use of essential electronic lab equipment including multimeters, soldering irons, and oscilloscopes.
We will begin by analyzing the previous game boards, covering basic circuit theory, mechanism, and real-time software methods. We will synthesize a new game design and develop new mechanical component designs. 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.
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
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.
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 facilities in Hunt Library. 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.
Calendar¶
The general plan is as follows:
Week 1 | Introduction, ideation, and skills.
|
Week 2 | Skill development: CAD, mechanism, electronics, programming.
|
Week 3 | Game design and prototyping.
|
Week 4 | Game production.
|
Week 5 | Integration and testing.
|
Week 6 | Debugging, documentation, demonstration.
|
The full project plan will be continually revised as a Google Sheet; please see the daily Log Book pages for the links.
The following course calendar will be adjusted as we go:
Date | Day | Class | In-Class Activity |
---|---|---|---|
Jul 01
|
Mon
|
Welcome!
Course overview.
Review of SAMS 2018 final game.
Visual introduction to tools, components, and materials.
Introduction to parametric design.
|
|
Jul 02
|
Tue
|
Laser-cutter tutorial.
SolidWorks CAD tutorial.
|
|
Jul 03
|
Wed
|
Field trip to Kickback Cafe.
Note: special day this week to make up for holiday.
Note: brainstorming exercise will be due Monday.
|
|
Jul 04
|
Thu
|
No class for July 4 holiday.
|
|
Jul 08
|
Mon
|
Game mechanical design discussion.
Game concept discussion.
Game sketching session.
|
|
Jul 09
|
Tue
|
Introduction to the Arduino.
Basic embedded programming tutorial.
Game sketching session.
|
|
Jul 11
|
Thu
|
Elementary electronics lecture.
Basic sensor and actuator circuit tutorial.
|
|
Jul 15
|
Mon
|
Game design and development.
Proof of concept testing.
|
|
Jul 16 | Tue | 8 | Game design and development. |
Jul 18
|
Thu
|
Fabrication and production.
|
|
Jul 22 | Mon | 10 | Fabrication and production. |
Jul 23 | Tue | 11 | Fabrication and production. |
Jul 25
|
Thu
|
Fabrication and production.
|
|
Jul 29 | Mon | 13 | System integration. |
Jul 30 | Tue | 14 | System integration. |
Aug 01
|
Thu
|
System integration.
|
|
Aug 05 | Mon | 16 | Playtesting and debugging. |
Aug 06 | Tue | 17 | Playtesting and debugging. |
Aug 08 | Thu | 18 | Practice presentations. |
Aug 09
|
Fri
|
Closing Symposium
|
Please note that Hunt Library is not open 24/7 during the summer. Notably, the Hunt Library Hours calendar indicates the building closes at 6PM on Fridays, and 9PM Monday through Thursday. This can limit the possibilities for last-minute pushes; please plan accordingly.