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
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.
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.
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
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.
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.
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.
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.
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
had to manage low power. The SPOT had similar power pattern of the
Cell phone - both have radios, microprocessors, external memory,
bells and whistles.
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.
can see the entire teams efforts here -> https://spots.dev.java.net/
stuff is here -> https://spots-hardware.dev.java.net/
SPOT blogs to follow