Spritzer: A hardware-based Arduino simulator for the Fritzing environment
Presented at the Fritzing'08 summit in Potsdam, Berlin.When designing a prototype for a physical computing device, developers usually go through an iterative process of building a real world prototype. The first version often consist of a rather fragile circuitry using wires and perhaps a breadboard. If the intention is to construct a prototype for a mobile device, this is not sufficient, so a more robust version is needed. If for example using the Arduino, a shield is a nice solution (see for example snowboard). This means to get to know additional CAD tools for doing the blueprints for a PCB, check their electrical correctness and so on.
The Fritzing software is meant to help designers with low or no knowledge about electrical circuitry with this task. The idea is to allow them to just copy the breadboard design, using images of the used parts and then easily get to a PCB design (the software is still under development though).
Fritzing highly supports prototyping using the Arduino, actually the open hardware board is one of the first parts implemented.
Unfortunately they can not check their "Fritzing-Image" of the design for correctness, because the software currently lacks a simulation mode.
Spritzer aims at adding this functionality to Fritzing and allow users to simulate their breadboard prototype before exporting it into a PCB layout.
Simulating a normal, simple circuitry should not be that hard using existing simulation software like for example SPICE. The challenging part would be to simulate the ATMega168 found on the Arduino.
AVR, the manufacturer of the microcontroller, only offers a windows version of a software simulation for the chip. The idea for Spritzer is to not actually write a software simulation of the microcontroller, but construct a hardware interface that links the Fritzing software with the actual Arduino/microcontroller running the software used for the prototype. In a sense, this would be a "hardware hardware simulator".
This hardware interface, sending the input the Fritzing software (or more specifically the circuit simulation added to it) generates to the Arduino and fetching its output for Fritzing again, could be constructed also of one or two Arduino boards.
This image illustrates how the general concept of Spritzer would work and look like. Note that the Arduino running the software from the prototype that is to be built is called "kernel" in this context.
Because one Arduino does not provide enough I/O pins to generate all input for the kernel, the interface probably will have to use more than just one. A special "shield" could be used to combine two of them and the kernel, forming a kind of debugging interface.
Of course this is just a first concept drafts and there are still things to be considered. For example one problem with this design is a dynamical change of input to output pins in the kernels software, which is probably not supported with this approach. A completely different approach would be to use the microcontrollers JTAG interface, though this might have its drawbacks as well.
We plan to give out developing this debugging interface for Fritzing as a diploma or master's thesis at our chair.
Contact: Gero Herkenrath.