Tom's Main Menu

Physical Computing Home

Intro to Physical Computing Syllabus

Networked Objects

Sustainable Practices



code, circuits, & construction

my links


Sensor Workshop

Spring 2006

Instructor: Tom Igoe
Tues, 9:30 AM - 12 PM
Office Hours: Mon, Wed, Thur 4 PM - 6 PM. email me to set up an appointment, please.
Any changes will be posted on my weekly schedule

Good physical interaction design relies on listening to physical action well. In this class, we'll focus on the input side of physical computing by researching various sensors and sensing methods and developing example methods for their use. The class will assemble a library of sensor applications for interactive applications, and apply this research to applications in other classes at ITP.

The class will begin with a review of the electronics of sensor systems as learned in physical computing. From there, we'll talk about types of sensors; sensors, time, and events; amplification and filtering of sensor signals; sensor networks; and related topics that aid in making sensor systems effective.

There will be a number of one-week exercises that students will complete to demonstrate the techniques discussed in class. In addition, students will be responsible for a major sensor research project in which they will explain the operating principles of a given sensor and present a working example of the sensor in use. These research projects will be presented throughout the second half of the semester, and collected into an online reference site. There is no final application project, but students will be evaluated on the application of their research (or that of other students in the class) in production projects developed for other classes.

Class 1 (Jan. 17):

  • Review analog vs. digital
  • Review basic electronics
  • Reading a sensor on an oscilloscope
  • Using a logic probe
  • Assignment:

Class 2 (Jan. 24):

  • Sensors and time
  • Graphing a sensor's value over time
  • Understanding edges, peaks, and thresholds
  • How to define an event in sensor terms
  • Assignment: Sensors and Time

Class 3 (Jan. 31):

  • Present Sensors and Time assignments
  • Types of Sensors
    • Resistive and capacitive sensors
    • Piezoelectric sensors
  • Understanding the electrical properties of a sensor: reading the data sheet
  • Sensor device interfaces:
    • voltage output; using RCtime
    • pulsewidth output; using pulsin
    • serial output
  • Assignment: Datasheet Report

Feb. 7: No Class. Tom In Oslo

Class 4: (Feb 14):

  • Present datasheet Reports and questions
  • Synchronous serial communication
    • SPI
    • I2C

Class 5 (Feb. 21):

  • Present datasheet Reports and questions week 2
  • Connecting sensors to the internet
    • Xport
    • Serial to net
    • Datalogging in a database
  • Assignment: Datalogging

Class 6 (make-up class, Feb. 25, 12:30 - 3:00):

  • Datalogging part 2

Class 7 (Feb. 28):

  • Present datalogging assignments
  • Amplification
  • Op amps

Class 8 (March 7):

  • Filtering, averaging, and weighting
  • Assignment: Actions, Events,and Filtering

Mar. 14 Spring Break

Class 9 (Mar. 21):

  • Presentations week 1
  • Printed Circuit board fabrication for less noisy circuits

Class 10 (Mar. 28):

  • Presentations week 2
  • Printed Circuit board fabrication week 2

Class 11 (Apr. 4):

  • Presentations week 3
  • Present Actions, Events, and Filtering assignments

Class 12 (Apr. 11):

  • Presentations week 4
  • Review material, questions on previous topics

Class 13 (Apr. 18):

  • Presentations week 5
  • Repeat presentations

Class 14 (Apr. 25):

  • Presentations week 6
  • Repeat presentations, remaining assignments, wrap-up


You'll be expected to complete four assignments in this class, and one outside of this class, as follows:

  • Datasheet report
  • Sensor report
  • 2 of 3 Sensor sketches
  • Outside application
Details are below.

Datasheet Report:

Pick a sensor or component to investigate. Find the data sheet for it, and summarize it in the wiki, including any questions you have, and parts you don't understand. Be prepared to present your summary in class next week.

The aim of this assignment is not necessarily to make full sense of a sensor's datasheet, but explain what is clear to you, and to generate a list of specific questions about what is not clear. When these reports are presented in class, we will discuss the questions and attempt to answer them together.

Sensor Report:

Your major project for this class will be a sensor research presentation and report. Include full details on what your sensor senses and how it works both electrically and physically. Give example applications where it's used commercially or industrially. Then explain in depth how to use it. Translate any important information on its electrical, physical, or interface characteristics into clear layman's terms. Include an example circuit, with schematic diagram, and a code example for a microcontroller. And show a working example of your sensor. You might also suggest future directions for development, both of your own work or commercially. Assume your audience knows as much as the typical physical computing student at the end of the semester.

All sensor research reports will be collected in a class wiki. Each entry will include a step-by-step explanation of how to use the sensor or sensor system involved, following along the lines of and

The sensor research projects will be presented over the course of the last several weeks of the semester, three per week. Your in-class presentation should be approximately 20 minutes long total. Make sure to include time in that 20 minutes for questions from the class. Students will be assigned to a given week after the second class of the semester.

There will be time in the last two weeks for anyone from the earlier weeks to do a second presentation, to include details you've learned, corrections to your earlier presentation, clarifications, examples, and so forth. This is optional, but can improve both your grade and your presentation.

You may not repeat a sensor report that is already on the sensor wiki, so read through them carefully before choosing. However, if you wish to expand on an existing report, and feel that you have a lot to add to the report, talk to me about what you have in mind.

These will not be group projects. Each student will do his or her own research project, and is expected to choose a sensor that's unique from the rest of the class. However, you may may build on and correct each others' work. Active feedback on each others' work is expected as a part of your participation grade.

Sensor Sketches:

These are short assignments, not much more than lab exercises, to help you understand some of the techniques shown in class. You may do them alone or in groups, as long as all members of the group share the workload equally, and demonstrate their understanding of the whole project and how it uses the technique discussed in class.

Pick two of the three assignments listed below as your minor assignments. The due dates for these assignments are listed above. I strongly suggest that everyone do the first one, sensors and time, ans one of the other two.

Sensors and Time: Build a simple microcontroller/sensor system that outputs the sensor's changes over time, in order to visualize or sonify the sensor's reaction curve. This piece of code, written in Processing, is a good place to start. The output of your system should be very simple, and give a clear picture of the changes in the sensor over time.

Datalogging: Build a long-term datalogging system. Capture data from the physical world in a database and build a web interface to display the data gathered over time. Pick a time scale that's longer than normal reaction time. For example, you might capture the number of people who enter the floor per day, or the temperature over a week, or the average noise level of a space per hour. This network datalogging suite or this Xport to SQL example may help.

Use a different sensor for this assignment than you did for your first assignment. Feel free to swap sensors with a friend.

Since this assignment involves some CGI and database programming (which is not covered in this class), I suggest doing this one only if you're already familiar with CGI and database programming, if you're taking a class in it at the moment, or if you've got a knack for learning new application areas quickly.

Actions, Events,and Filtering: Build a sensor application that senses the actions of a person and responds appropriately. Your system should indicate that it understands when significant events occur: for example, it it might when a person first makes contact with the physical interface, or when she breaks contact with the interface, rather than responding continually. It might respond differently to a tap as oppposed to a stroke, or it might respond differently to a sharp gesture as opposed to a smooth gesture. It might count the number of times that a person presses a sensor, and responds differntly based on the number of presses and the force of each press. It might respond to a sequence of breaths, and the intensity of the breaths. The key here is to understand when a sensor senses significant changes, and to reliably identify and respond to those changes, and to filter out insignificant changes.

Use a different sensor for this assignment than you did for your first assignment. Feel free to swap sensors with a friend.

Outside application:

As part of your work in other classes, you will most likely need to use a sensor system. Use your own work or another student's from this class (with appropriate citation). You can choose to present this project in class as part of your sensor research report, or you can make arrangements with me to see it outside of class. If you're not already required to document this project online for the other class, do so as a part of this class. Include details of how the sensing is accomplished, and how it fits into the physical interaction as a whole.

Journal & Documentation:

As mentioned above, all sensor research projects will be a part of the class wiki. you'll be expected to document your research there, and journal any in-process notes, and to read your classmates' notes, and help where possible. You should also document your outside project at least as thoroughly as required by your other class(es), though that documentation may live on a separate site. If you choose to keep a separate site for your own notes as well, you should link it to the class wiki. The purpose of the wiki is to begin building an ongoing knowledge base on sensors and sensor systems for current and future ITP community members.

Participation & Attendance

Showing up on time, engaging in the class discussion, reading any articles or papers assigned and bringing that knowledge into your discussion and research, and offering advice and critique on other projects in the class is a major part of your grade. Please be present and prompt. Late attendance affects your grade adversely. If you're going to be late or absent, please email me in advance. If you have an emergency, please let me know as soon as you can afterward. Please turn in assignments on time as well.


  • Participation & Attendance: 20%
  • Minor Assignments: 20%
  • Sensor research presentation: 25%
  • Documentation: 20%
  • Outside application: 15%


Laptop use is fine if you are using your laptop to present in class, or if we're in the middle of an exercise that makes use of it, or if I'm introducing new material on which you want to take notes. During class discussions, or when your fellow classmates are presenting, however, please keep your laptop closed. The quality of the class depends in large part on the quality of your attention and active participation, so chat live with your classmates in an old-school, oral way.

Please turn your mobile phone off or on vibrate before class.


The parts you used for intro to physical computing should get you started. Any additional parts will be determined by what sensors you choose to work with.


Below are recommended texts for the course in general.

Physical Computing: Sensing and Controlling the Physical World with Computers, Dan O'Sullivan and Tom Igoe ©2004, Thomson Course Technology PTR; ISBN: 159200346X
Includes much of the material covered in class and lots of advanced examples as well.

Getting Started in Electronics, Forrest M. Mims III, ©1983, Forrest M. Mims III
A very basic introduction to electricity and electronics, written in notebook style. Includes descriptions of the basic components and what they do, and how they relate to each other.

Practical Electronics for Inventors, 1st Edition. Paul Scherz, ©2000, McGraw-Hill Professional Publishing; ISBN: 0070580782
A more in-depth treatment of electronics, with many practical examples and illustrations. An excellent reference for those comfortable with the basic topics. The use of plumbing systems as examples to demonstrate electric principles makes for some very clear illustrations of how different components work. Good chapters on sound electronics and motors as well.

The Art of Electronics, 2nd Edition. Paul Horowitz & Winfield Hill ©1989, Cambridge University Press, ISBN 0-521-37095-7
For more advanced coverage of electronics, but still accessible to the non-engineeer, this is an invaluable reference. Not as accessible as Practical Electronics (above), but more in-depth on some topics.

Build Your Own Printed Circuit Board, Al Williams, ©2003, McGraw-Hill/TAB Electronics. ISBN 639785506973
The title says it all. This book introduces how circuit boards are made, how you design them using specialized CAD software, and how to fabriacte them at home or to get them manufactured professionally. A good introduction to the process.