free hardware
Free software has made software ever more accessible on many levels,
from cost to ability to learn an modify. Software must run on hardware,
yet there is no free hardware platform in existance.
I am currently working on a standard firmware for the Arduino platform which
allows users to just plug in the Arduino and control it from their host
software. This means that the user would not have to learn how to
program the Arduino in order to get sensor data, control lights and
motors, etc. Instead everything would be set up and controlled from the
host software that is already familiar to the user.
protocol design
I considered a number of protocols during the design and implementation
of the Firmata firmware for Arduino
- USB HID
-
Arduino could not be a proper USB HID device because it uses
USB-serial. But it still could use the HID protocol. I opted not to
use it because it is a very complicated and obfuscated protocol, which
is a perfect example of design-by-committee. In the long run, it
would probably be best to use it though...
- ASCII-based protocols
-
There are a number of simple, ASCII-based protocols out there which
are generally pretty easy to implement and understand. The problem is
that they are very verbose, and the Arduino is limited to serial
rates, so a maximum of 115,200 bits/second. One example is the
Simple Message System for Arduino. It needs 4
bytes to set one digital pin, 56 bytes to set all digital pins.
Firmata needs 3 bytes to set one digital pin or all digital pins.
$Id: hardware.html,v 1.1 2008-02-13 18:52:35 hans Exp $