USB Bootcamp

Members: Adam McLeod, Daniel B. Fasnacht, Francisco Barranco, Jonathan Tapson, Sergio Davies, Tomas Figliolia, Tobi Delbruck

Leader: Daniel B. Fasnacht

Learn how to use USB (Universal Serial Bus - the thing you have on every PC) to interface to neuromorphic chips and actuators. Write your own USB driver, make a robot that uses a silicon retina, write microcontroller firmware for the first time. Unlock the power of combining ubiquitous PC digital computation with your own hardware.

More specifically we are going to build USB microcontroller boards (based on the Atmel AVR32 series of processors). We are going to program that microcontroller and write software to control it from your PC. The drivers we have available from last year are really multi-platform and work on Linux, Windows or Mac. In 2010 we used  Python to control our boards, but most other languages can be used too...

Related Lecture at ETH Zurich

The materials use in this tutorial have been developed by Tobi Delbruck & Daniel B. Fasnacht in the past year's Telluride Workshop. Based on that there was a new course held at  ETH Zurich earlier this year. You can find the course material, background information and a related step-by-step guide, on:  http://www.ini.uzh.ch/~tobi/wiki/doku.php?id=dig:uc

Assembling your USB Board

In the SMD Soldering Tutorial we will build the USB microcontroller boards we are going to use for the USB tutorial. You can either build your own board or arrange with somebody in the SMD tutorial to build one for you...

First Session 2011-07-01, 20:00 - 21:00

  • demonstrate what we built last year in the USB tutorial
  • give you a quick intro to the most important aspects of USB
  • give you an overview of the capabilities of the Atmel AVR32 microcontroller we have on our USB boards
  • disucss about what we could build this year, maybe something that can be used in other workgroups even...?

AVR32 Studio

Firmware programming / flashing

  • through DFU using dfu-programmer on Linux: ...
  • through DFU using the AVR32 Studio on Linux: ...
  • through DFU using the AVR32 Studio on Windows: see wiki:2011/usb11/InstallWindows.
  • through JTAG using the AVR-Dragon Programmer: ...

Firmware Projects

gpio-toggle & gpio-toggle-all

This basic project toggles pins on the AVR32.

rgb: using PWM to control an LED

This project reads the ADC and uses the values to set the PWM output duty cycle.


This project reads an ADC input and sends the values to a host PC over USB. It also sets 3 PWM outputs according to commands sent from the host.

rainbow.py on linux

This picture shows the rainbow.py running on Linux.

The cyclic pattern from the LDR is there because a white paper-slip is put onto the board. Thus the LDR sees the light from the RGB LED...