Physical Computing Workshop
Physical Computing Workshop
Physical Computing Workshop

Do you want to make things move with a computer? Or generate audio with your body? Want to make a robot, a responsive video installation, or mod your musical instrument? In this production workshop, we explore how digital technology can be integrated into a physical arts practice, be it dance, music, sculpture, installation or performance. "Physical computing, in the broadest sense, means building interactive physical systems by the use of software and hardware that can sense and respond to the analog world" (wikipedia).

This workshop is for newbies to physical computing, but you are expected to be very comfortable with technology, as the majority of the course centers around electronics and programming. Participants are asked to bring their own laptops if they have them.

If you are interested in organizing a workshop for your area please contact me. The ideal number of students is 8, but more or less can be accommodated. For a list of supplies used in the workshop click here.

Topics covered are as follows:

Introduction
Working with electronic technology can seem mystifying especially when you are trying to build your own device, but like any production it can be broken down into a series of steps, for which there are tools to make the work viable. In this section we will look at media artworks both for inspiration and to glean an understanding of how they were crafted. We also discuss the production cycle in the context of technology, which necessitates a different approach problem solving and pacing.

-Instructor and Student Introductions
-Artists in the field
-Production:
  -Planning
  -Research
  -Sourcing
  -Experimenting
  -Prototyping
  -Debugging.



Crack the Whip: First Application and Demo
To get our feet wet, we build a simple application demonstrating the basic workflow of Physical Computing. An enhanced version of the project is then demonstrated to show how the techniques are scaleable to more powerful tasks.

Lab 1: Digital Output - Blink an LED:
  -Install Arduino
  -Open example code

  -Build Circuit with Arduino Microcontroller

  -Upload program
  -See results
-Demo: Blinking power outlet (same code, more power)
-Demo: LED diplay matrix (same technique, greater quantity)



Programming with Microcontrollers
Oh blah, programming...actually it's not that bad. In fact, programming can be amazingly interesting. We use a reduced vocabulary to instruct a machine to perform a task. In the world of physical computing this might be turning on a light, spinning a motor, or reading a sensor. The hardware is connected to a tiny computer called a microcontroller which is program via a PC. Once programmed we can detach the PC and leave the setup to perform the task any time the right conditions are met.

-Microcontrollers
  -what they do
  -how to use them
  -varieties and selection

-Basic Programming Concepts
  -Commands
  -Functions
  -Initializing
  -Loops including 'Main'
  -Variables

  -Conditional Statements: If/Then 
  -I/O - input/output
-From idea to code
  -Build Circuit to match code    

Lab 2: Digital Input - Reading a Switch
 
-Code from Scratch


Electronics
We back up at this point to learn just enough about electricity to know what's happening in the circuits you build, and how to debug any problems. In this section we cover the basics: Ohm's law, schematics, proper design, and of course how to make things happen (blink, spin, switch, crawl). We'll also learn where to find parts, and basic components you'll need to continue on your own.

-Ohm's Law:
  -Voltage, Resistance, Current, Power.

-Circuits
  -Series Vs. Parallel
-Basic Components:
  -Resistors 
  -Capacitors 
  -Diodes
    -LEDs 
  -Switches 
  -Batteries
-Basic Tools
  -Multimeter
  -Breadboard
-Where to find parts (Shopping)
-How to choose parts (Spec Sheets)

* Please click here for a full list of supplies.



Sensors and Actuators
Having covered the basics, we now look at more dynamic I/O types. Sensors are used to monitor physical events. Tactile sensors can be attached to an object's surface to learn how it is being touched. Video cameras can be used to track motion in a room. Microphones can be used to search for specific sounds. Once you've found the pattern you're looking for, you can trigger events such as the playback of video or audio clip, or activate an actuator... An actuator is device such as a motor, solenoid, speaker, or heating element which changes its physical properties when electricity is applied. We learn how to make use of sensors and actuators in our creative applications.

-Digital vs. Analog
-Analog Input - Continuous Sensors
  -Passive Sensors

    -Potentiometers
    -Bend Sensors 
    -Light Sensors 
    -Pressure Sensors 
  -Active Sensors
    -Ultrasonic Sensor 
    -InfraRed Sensor
    -Accelerometer 

Lab 3: Analog Input - Reading a Sensor

-Analog Output
-Lights and Brightness
-Motors and Speed
  -DC Motors
    -Transistors 
      -H-Bridges
  -Stepper
  -Servos 

Lab 4: Analog Output - Dimming an LED

Lab 5: Controlling a Motor (Servo*)
 


Interfacing with a computer
It's often useful to incorporate a PC, especially if the project requires manipulation of audio or video. PCs have much more computing power, and interesting and familiar software we want to use in our work. There are simple ways to connect circuits to PCs such that we can have physical interaction with computer that go beyond the keyboard, monitor, and mouse.

-Serial Communication
  -baud rate (communication speed)
  -adapters

Lab 6: Serial Communication


Programming Graphics and Audio
Now that we can hook up our circuits to our computers, we need to succinctly map the data to the media of our choosing. If you work with audio, you may want to use incoming sensor data to control the volume, pitch or selection of an audio clip. If you work with video or graphics, you may want to coordinate the movement of an element across a screen with the motion of motorized object within the installation space. How is this done? We get oriented with a couple of programming options that allow media manipulation. We focus on Processing which is in keeping with the Arduino language and so not such a big jump. We look briefly at Puredata which is a bigger leap yet a very powerful piece of software particularly for working with audio.

-Processing: <http://www.processing.org>
  -Similarities and Differences with Arduino
  -2D & 3D graphics
    -Vectors
    -Drawing
    -Color
    -Geometry
    -
Animation
    -Interaction
    -Saving Media
  -Video capture/manipulation
  -Video tracking
  -Typographics
  -Particles
  -Image Filters
  -GUI
  -Sound
    -Playback
    -Channels
    -Sythesis
    -Analysis
    -Effects
  -Networking

Lab 7: manipulating audio/video with sensors

Lab 8: transmitting data from PC to control motors

-PureData (Pd): <http://www.puredata.info>
  -Graphical Programming: Max/MSP, Puredata
  -Libraries: GEM, PMPD, PiDiP
-Basic Programming Concepts
  -Objects 
  -Messages 
    -Numbers
 -Working with Media


Advanced Topics
This section introduces an array of topics that are very interesting and extremely useful to a Physical Computing practice, but are too difficult to learn how to practice within the timeframe of this workshop. Instead, key techniques will be briefly explained and resources pointed out for self-guided exploration of each topic.

-Printed Circuit Boards
-Physics Modelling
-Machine Learning
-3D printing

Good Practice
In this final section of the workshop we'll review the general concepts, and will look at how to implement all this technology into diverse projects. Strategies will be taught for designing projects that will last, and for troubleshooting in a pinch. We'll also have a chance to discuss you're own projects.

-Sketches
-Schematics
-FlowCharts
-TroubleShooting
-Purchasing

Indendant Project Development
-class discussion





Creative Commons License
This work is licensed under a Creative Commons Attribution-Share Alike 2.5 Canada License.