:: About ::Current Research::Hardware :: Software ::Publications ::Related ::
Pushpin Computing
Responsive Environments Group


During the setup and intitial deployment of a sensor network, time and resource constraints require that sensor nodes are programmed with an identical piece of operating system code. One consequence of this is that all nodes boot into the same initial state. Differentiation from the state of one node from that of its neighbors must come as a response to a unique, local sensor stimulus or a change induced by a piece of mobile code that is injected into the network. We base our software and algorithms on this principal, relying primarily on the locality of sensor stimuli to differentiate the behavior of our nodes.

Current Source Code:

The current Bertha release includes source code for the Pushpin Bootloader, Python based debugging tools, and the Bertha operating system itself. This code is reasonably well commented but comes with little or no documentation. Nonetheless, it may prove useful and instructive, particularly to anyone who needs example code for a microcontroller based on the Intel 8051 architecture. The code is provided as is, however we will gladly answer questions about it if you email us.

Pushpin Operating System (Bertha)

The Pushpins each run an identical piece of operating system code which we have dubbed "Bertha." This code provides access to communications primatives, sensors and actuators, random numbers, and a real-time clock to higher level application code. While much of the this code is intimately related the architecture of the C8051F016 processor, some of the code (notably the higher levels of the communication stack and the application code) is abstract and portable to other sensor network platforms.

  • BerthaV5_1.zip - The current version of the Pushpin operating system (requires SDCC to compile the code). This source include the application code for localizaiton using lateration.

Pushpin Bootloader

A simple bootloader that can receive serial data over the infrared communication channel, load these OS bytes into flash memory, check them with a CRC, and boot the OS. Hundreds of Pushpins can be reprogrammed in this manner using an IR spotlight.

Pushpin IDE and Debugging Tools

PC debugging tools written in Python. These tools are good for compiling and uploading new operating systems, querying the network for data through the IR-to-Serial Gateway, and plotting the results of ad-hoc localization using lateration.


Looking for the old Pushpin software repository? Check here.

Last Updated: 01-DEC-2004
MIT Media Laboratory