The Smart Badge, contains an IrDA transceiver, PIC microcontroller and an array of sensors. It periodically polls its sensors, transmits the result of the poll and then waits for commands from the location server. After a time-out period the Smart Badge goes to sleep. When it wakes up it repeats its loop.
If the Smart Badge is left still and in a dark place for a long time (e.g. your desk draw) then it will go into hibernation and will simply wake up and check to see if it has moved or if the lights have come up. If neither event happens it will go back to sleep without transmitting any data. Given that the IrDA interface consumes 1A peak, hibernation dramatically extends battery life.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Sensors | Tilt (4 in quadrature), light, sound, temperature, humidity |
| Actuators | Piezoelectric transducer (beeper) |
Frames are either output frames from the badge (called sensor frames), input frames to the badge from the location server (called command frames) or error frames generated by the badge in response to a command frame (called error frames). The badge is single buffered due to limitations in RAM space. A protocol field is used to distinguish between frame types as PROTO_DUMB and PROTO_SENSOR frames have exactly the same format. They differ only in the protocol field which is used to distinguish between Dumb Badge and Smart Badge devices. All frames contain a random field used to provide some variation in the data content (prior to encryption) of immobile badges, hence improving their resistance to cryptographic analysis.
All frames consists of a sync byte followed by 26 data bytes. Future versions will use IrDA framing. The IrDA framing may replace the sync and crc fields or may simply encapsulate the whole badge message in an IrDA message. The current proposal is to use two broadcast messages in the IrDA SIR protocol for badge-to-sensor communication:
Of course the frame format is subject to change without notice. The next change is likely to be to increase the size of X, Y and Z to 32 bits each to provide positions to 10cm resolution. Although 28 bits would provide sufficient precision, unfortunately 28 bits isn't a convenient size, hence we will use 32 bits.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| IN_LENGTH | inframe_data[0] |
| IN_RANDOM | inframe_date[1] |
| IN_PROTOCOL | inframe_data[2] |
| IN_SEQUENCE | inframe_data[3] |
| IN_ADDRESS0 | inframe_data[4] |
| IN_ADDRESS1 | inframe_data[5] |
| IN_ADDRESS2 | inframe_data[6] |
| IN_ADDRESS3 | inframe_data[7] |
| IN_COMMAND | inframe_data[8] |
| IN_ARGUMENT_00 | inframe_data[9] |
| IN_ARGUMENT_01 | inframe_data[10] |
| IN_ARGUMENT_02 | inframe_data[11] |
| IN_ARGUMENT_03 | inframe_data[12] |
| IN_ARGUMENT_04 | inframe_data[13] |
| IN_ARGUMENT_05 | inframe_data[14] |
| IN_ARGUMENT_06 | inframe_data[15] |
| IN_ARGUMENT_07 | inframe_data[16] |
| IN_ARGUMENT_08 | inframe_data[17] |
| IN_ARGUMENT_09 | inframe_data[18] |
| IN_ARGUMENT_10 | inframe_data[19] |
| IN_ARGUMENT_11 | inframe_data[20] |
| IN_ARGUMENT_12 | inframe_data[21] |
| IN_ARGUMENT_13 | inframe_data[22] |
| IN_ARGUMENT_14 | inframe_data[23] |
| IN_ARGUMENT_15 | inframe_data[24] |
| IN_CRC0 | inframe_data[25] |
| IN_CRC1 | inframe_data[26] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| COMMAND_NULL | 0x00 |
| COMMAND_OUTFRAME | 0x01 |
| COMMAND_BEEP | 0x02 |
| COMMAND_ERRORS | 0x03 |
| COMMAND_ADDRESS | 0x04 |
| COMMAND_KEY | 0x05 |
| PROTO_SENSOR | 0 |
| PROTO_COMMAND | 1 |
| PROTO_ERROR | 2 |
| PROTO_DUMB | 3 |
The complete badge design (schematic, artwork) are available for download. At this time the badge control program is unavailable.
The original badge board and change list for version 1.
If you use the design or have any comments or suggestions we would like to hear from you.
H. W. Peter Beadle (Email: beadle@elec.uow.edu.au)
March 11, 1997
Back to the Location Aware Home Page