Engineering the Sun SPOT Hardware

My job at Sun for the past few years has been the hardware lead for the Sun SPOT project. This is a big topic for me and I have a lot of unfinished blogs about it. If you don't know what a Sun SPOT is: go to

Some History

At the end of 2004, John Nolan ported Squawk, a Java JVM, to an Atmel eval board. Another team, Epsilon project were experimenting with wireless sensor networks and were frustrated with the motes of the day. I was finishing up a PowerPC board with Tom Riddle and was asked if I could do due diligence on a board which could run Java. They had a fuzzy picture, 

no specification and it was tied up with red tape.  It seemed we could make one cheaper than what lawyers would cost to unravel the red tape and we were off.

We hired contractor, Del Peck, our trumpet playing, PC layout artist and design engineer to work with me on this project. We came up with the bSPOT based on the AT91FR40162. A company based out of Great Britain, called Syntropy, did most of the port of Squawk to this new SPOT.

This had a rechargeable battery and a FTDI USB to serial chip for communicationsand charging. We used the popular Chipcon CC2420 radio with the reference inverted-F PC trace antenna. We didn't have the RF design tools nor test equipment to play with the antenna much further than that.

We iterated the design and while I liked the "cSPOT run" pun, the microcontroller left a lot to be desired. It wasn't able to hibernate and drew too much standby power. It had minimal peripherals and we even had to bit bang the most basic of SPI (synchronous peripheral interface). What it did have was a large Flash memory that we needed for Java.

An alternative was the ARM9 family with external memory. VMs tend to play out well in a system with a cache memory and having external memory allowed me to hibernate the system. It was also going to be a more involved port requiring custom USB drivers, memory management code, plastic enclosure, prismatic battery and so on. I sprung this option at the end of my cSPOT design review as an "alternate universe" design with CAD drawings of plastics, built in USB, 8bit microcontrollers, etc. Our VP wondered why I wasted his time talking about "cSPOT" and the "eSPOT" began. 


We borrowed John Harada to do the real mechanical design. We also put a shield around the radio to get FCC modular approval. This gave us flexibility to change the digital stuff without having to retest the compliance of the transmitter. We worked with the compliance group to insure it was safe and wasn't going to interfere.

Design Decisions

SPOTs were going to be shared with a community. We open sourced the VM, libraries, applications, design files, schematics, and firmware. We used Sun Java tools (Net Beans, Java SE/ME) and Gnu C tools.

It had to run Java. Our Java used a split model where the suites were compiled on Linux, Windows, Mac, Solaris, whatever and sent via USB or over the air to the SPOT to run. One nice feature was that when all threads were idle for a few seconds, it would go into hibernate mode. The SRAM was powered during this time to be able to recover quickly.

We had to manage low power. The SPOT had similar power pattern of the Cell phone - both have radios, microprocessors, external memory, bells and whistles.

SPOTs had two dedicated 8 bit microcontrollers: one for the eDemo board and one for power control management. The use of these small micros worked out well. One was used like a light's out management and would wake the ARM from sleep. The power consumption of the power controller is still significantly lower overall than most ARMs real time clock and/or the shutdown manager. We also offloaded some of the real time tasks from Java to the microcontrollers and let the ARM be the puppet master. Most of our engineering efforts were around monitoring and managing the power of the SPOT.

Open-Source Hardware

You can see the entire teams efforts here ->

Hardware stuff is here ->

More SPOT blogs to follow





Post a Comment:
  • HTML Syntax: NOT allowed



« April 2014