Sense Bus

The Sense Bus is a system for collaboration among interactive artworks. The system is based upon the core idea expressed by the three words: sense / transform / express. The Sense Bus is very simple and can be implemented with a minimum of resources (the target implementation platform is the Basic Stamp micro-controller from Parallax). The bus allows the sharing of sense experience amoung a small group of interconnected peers.

Sense / Transform / Express
Sense Bus: Implementation
Activities on the Network
Sample Basic Stamp Implementation
Sense Bus Internet Bridge

Sense / Transform / Express

The flow of information in an interactive artwork can be modeled by the phrase sense / transform / express. The artwork gathers information from the outside world using various types of sensors (like video cameras, motion detectors, thermometers, etc) and transforms this raw information (with a computer perhaps) so that in turn it can, in some way, be expressed (the turning on/off of video monitors, the playing of music, etc). By defining boundaries between these stages it becomes possible for one artwork to share the sense information it gathers with other artworks. It is possible to allow the sharing of information at the sense/transform and transform/express boundaries but this is not practical for very simple systems. The Sense Bus limits the sharing of information to the sense/transform boundary:

Sense Bus: Implementation

The sense bus protocol requires that all sense types be assigned an ID (which range from 1 to 254) and that the values for those senses be expressable by a number which ranges from 1 to 254, ie:

ID # Description Value Meaning
01 temperature 1= -10 degrees; 254 = 40 degrees
02 sound volume 1 = quiet; 254 = loud
03 sound direction 1 = north; 2 = ne; 3 = e; 4 = se; 5 = s etc
etc

Each packet of sense information consists of a one byte ID and a one byte value. The protocol allows each peer to express a number of sense packets before releasing control of the network to the next peer. A stream of sense packets consists of the letters 'TS' followed by a number of two byte sense packets and terminated by two zero bytes. All peers on the network must have a unique ID number and the upperlimit of peers that can be on the network must also be known.

Activities on the Network

All peers must be able to perform the following actions to participate in the Sense Bus: Join, Read Sense, Send Sense, Pass Token, Accept Token.

Join

To join the network:

listen on the network for any activity for 10 seconds 
if there is activity then 
    Read Sense packets 
otherwise 
    Send Sense Packets

Read Sense

To read sense packets:

wait for the beginning of the packets: "TS" 
read the one byte sense ID 
read the one byte sense value 
if both ID and value are zero then 
    wait for the Pass Token 
otherwise 
    do somthing with the sense packet 
    continue reading sense packets

Send Sense

To send sense packets:

send the beginning of the sense packets "TS" 
send a number of sense packets 
send the end of the sense packets (two zero bytes) 
pass the token to the next peer

Pass Token

To pass the token to the next peer:

send the pass token packet "PT" + next ID 
if there is a response then 
    Read Sense packets 
otherwise 
    keep incrementing the next ID and send pass token 
if you get back to your own ID then Send Send packets

Accept Token

To accept the token to send sense:

send the accept packet "A" <pause> "AT" 
Send Sense packets

Sample Basic Stamp Implementation

Below is a sample implementation for a Basic Stamp I computer. The demonstration arragement allows the turning on and off of something attached to pin 7 (ie a motor) based on a sensed value transmitted by a peer and allows the transmitting of a sensed value (an analog voltage measured on pin 6):

symbol commPin = 0
symbol maxPulseTime = 0
symbol joinTimeout = 5
symbol netID = 1
symbol netSize  = 4
symbol interestingID = 20
symbol senseID = 10

dirs = %01111111
pins = 0

' first thing to do is join the network
JOIN:   b2 = 0
JOIN1:  pulsin commPin, 0, w0
        if w0 <> maxPulseTime then WAIT0
        b2 = b2 + 1
        if b2 < joinTimeout then JOIN1
        goto SEND

'wait for an end of sense packet
WAIT0:  b1 = 0
NOT0:   serin commPin, OT2400, b0
        if b0 <> 0 then NOT0
        b1 = b1 + 1
        if b1 <> 2 then NOT0
        goto READSP

'read in sense packets
READSP: serin commPin, OT2400, ("TS")
READ1:  serin commPin, OT2400, b0, b1
        if b0 = 0 and b1 = 0 then WAITPT
        'do something with sense packet in w0
        if b0 <> interestingID then READ1
        if b1 > 128 then TURNON
        Pin7 = 0
        goto READ1
TURNON: Pin7 = 1
        goto READ1


'wait for pass token
WAITPT: b2 = 1
NOAT:   serin commPin, OT2400, ("PT"), b0
        if b0 = netID then ACCEPT
        pulsin commPin, 0, w0
        if w0 <> maxPulseTime then READSP
        b2 = b2 + 1
        if b2 = netSize then READSP
        goto WAITPT

'accept the token and start sending
ACCEPT: serout commPin, T2400, ("A")
        pause 1
        serout commPin, T2400, ("AT")
        goto SEND


'send out sense packets
SEND:   pause 10
        serout commPin, T2400, ("TS")
SEND1:  'write out sense packet
        b0 = senseID
        'value of sense comes from pot on pin6
        pot 6, 20, b1
        serout commPin, T2400, (b0, b1)
        pause 2
        b0 = 0: b1 = 0
        serout commPin, T2400, (b0, b1)
        pause 10
        goto PASS


'pass the token to the next peer
PASS:   b2 = netID
        pause 10
PASS1:  b2 = b2 + 1
        if b2 <= netSize then NOLOOP
        b2 = 1
NOLOOP: if b2 = netID then SEND
        serout commPin, T2400, ("PT", b2)
        pulsin commPin, 0, w0
        if w0 <> maxPulseTime then READSP
        pause 10
        goto PASS1

Sense Bus Internet Bridge


The Sense Bus Internet Bridge is a program that allows two Sense Bus networks to be connected across the Internet, sharing sense information. The bridge program acts as a peer on the network, storing all of the sense packets that have been sent since the last time the program held the token. When the bridge gets the token it sends all of its stored sense packets across the internet to its companion on the other sense network. If the companion computer has sent sense packets to the bridge, it transmits these (on the local sense network) at the same time. The bridge program runs on a computer running Windows NT or Windows 95.