Using an Arduino to read data from serial device then send data over bluetooth
A serial protocol mostly uses a master/slave configuration with different addressing schemes:


SPI: Serial Peripheral Interface; pins often labeled MOSI, MISO, SS or Select, and SCLK or CLK.

Here is a library and user guide. Pins 10-13 are used.

I2C / TWI: Inter-Integrated Circuit / Two Wire Interface; pins often labeled SDA and SCL.

The library is included, called Wire, and here is a user guide. Pins 4 and 5 are used with the Arduino Diecimila.

1-Wire: Actually needs two or more wires -- at least power/data and ground.

Here is a library and user guide or two. Uses any free GPIO.

UNI/O: used with some EEPROM ICs from Microchip; will likely have to write your own library.
U[S]ART: Universal [Synchronous/] Asynchronous Receiver/Transmitter; typically does not use master/slave configuration, only being used for point-to-point communication.

The library is built in, and there are extensions (two) and optimizations. It uses pins 0 and 1.

USB: Universal Serial Bus; uses a host/device scheme akin to master/slave. Pins often labeled VCC, DATA+, DATA-, and ground or GND.

Although possible without, usually requires extra hardware and interpreters for 8-bit micros like the Arduino to use. Ready-made Arduino platforms have USB-to-serial converter chips for IDE communication and extensions; there are also some shields (with libraries).

PS/2: Personal System/2 connector, an old IBM PC std. connector; pins are often labeled VCC, DATA, CLK, and ground or GND; often made interchangeable with USB sockets.

Here is a library and guide. Any GPIO can be used for DATA, but pin 3 must be CLK.



The library NewSoftSerial by Mikal Hart allows the user to implement an interrupt-driven software (as opposed to hardware, like UART peripherals) routine for serial communications. Use it if you need to, but be aware that debugging clashing interrupts is more challenging than debugging polling routines (which is apparently what the default libraries do).