Firefly Design LLC

Product Design Consulting

Firefly Ice Blue: Core Enclosure

Posted by denisbohm on October 08, 2013. 0 Comments

Firefly Ice Blue Core Parts

The Firefly Ice Blue core enclosure design files are now available:

GitHub: Firefly Ice Mechanical

The Firefly Ice Blue core enclosure design has 4 elements:

  • plastic “back” in black PC
  • plastic “shell” in colored PC
  • plastic “spacer” in black PC
  • plastic “top” in clear PC

The spacer and top are co-molded into a single piece, so there are only 3 parts for final assembly.  The final assembly process is very simple:

  1. Press the top/spacer into the shell.
  2. Bond the top/spacer to the shell with a solvent applied to the inner seam.
  3. Place the electronic assembly onto the mounting posts.
  4. Snap the back piece on.

The shell will come in green, pink, blue, and black :


The core parts are all generated by a Python script run inside Rhino 3D.  That makes it easy to tweak the design.

PCBA 3D Model: Eagle CAD to Rhino 3D

Posted by denisbohm on September 14, 2013. 0 Comments

Firefly Ice Blue PCBA 3D Model

Having a 3D model of a PCBA can be very useful when designing a small enclosure with small clearances.  To help with this I've written a small Objective-C program to read the Eagle CAD PCB board file and generate a Rhino 3D Python script to create a 3D model of the board.  This makes it easy to check an enclosure design.

Place the 3D board model into your 3D enclosure and visually check for alignment, clearances, etc.  You can also do boolean operations to check for any interferences and see their exact shape.

The code is available in the Pcb-To-3D directory of the firefly-production-tools repository on GitHub.

Firefly Production: BOM Tool

Posted by denisbohm on July 22, 2013. 0 Comments

I've developed a Bill Of Materials (BOM) tool that helps with pricing and availability of parts:


When doing low volume builds, it is important to be able to track availability of parts and pricing.  It is often difficult to find all of the required parts from the same distributor. Parts go in and out of stock leaving the need to check other sources.  A design may have a number of assembly variants (different ways to populate the PCB with parts) depending on what features are needed for a particular build.  Determining the price and availability can be a time consuming process.

The BOM tool reads an Eagle schematic and creates a part list.  Attributes in the schematic are used to specify the manufacturers part number.  Optional attributes can be specified on parts in the schematic to describe different assembly variants.  The BOM tool uses the Octopart API to find distributor pricing and availability for all of the parts.  The assembly variants and distributors that carry the parts are shown and can be individually selected.  A pricing and availability information summary is shown and a detailed report for each quantity is saved.

With this tool, it is now possible to easily estimate prices and lead times at various volumes for Firefly Ice Blue.

Firefly Ice Blue: Clip Mechanics

Posted by denisbohm on July 21, 2013. 0 Comments

Shown below are the first mechanical prototype parts for the firefly ice blue enclosure with an integrated spring clip.  These were made from a clear material in order to easily see the fit of various parts, and designed for initial testing of the following mechanical features:

  • joining the clip to the main body using the threaded rod
  • spring action of the clip provided by the bent metal spring
  • mounting features inside the main body for the PCBA
  • fit of the battery in the main body
  • fit of the USB connector in the main body


Firefly Ice Blue: Getting Ready for Production

Posted by denisbohm on June 10, 2013. 0 Comments

The next revision of the Firefly Ice hardware, called Firefly Ice Blue, is now on github in the repository firefly-ice-electronics.


Some of the more notable changes are:

  • Completely round PCB with a smaller diameter of 34 mm.
  • New RGB LED controller provides full color control.
  • External flash storage has been increased to 2 MB.
  • I2C connector to support external circuitry.
  • Design tweaks in support of very low sleep currents.
  • Mounting holes on either side of the USB connector and on the opposite end of the board.

A small prototype PCBA run has been started and should be ready in early July.  This design that will go into production this year.  I've switched gears to focus on the mechanical design of the enclosure.  More information on that will be coming soon.  If you are interested in purchasing Firefly Ice Blue PCBAs and/or complete Firefly Ice Blue devices please get in touch.

Firefly Ice: Power Measurements

Posted by denisbohm on May 15, 2013. 0 Comments

The first power measurements for the Firefly Ice prototype PCBA look really good.  Very low power means small batteries can be used while still getting great battery life.

Sleep Mode

Average power consumption for the PCBA with the real time clock and watchdog timer running (everything else in sleep mode) was measured at 2.7uA.

Plus Accelerometer

Average power consumption for the PCBA with the real time clock, watchdog timer, and accelerometer running (everything else in sleep mode) was measured at 6.0uA.  The accelerometer was running at 25Hz in low power mode.

Battery Life

To relate the 6.0uA to battery life:

  1. A CR2032 240mAh coin cell battery would last 4.5 years.
  2. A  40mAh rechargeable lithium polymer battery would last 9 months.

Of course a typical application will need to use other devices on the PCBA, such as the Bluetooth 4.0 low energy radio, LEDs, CPU, etc.

Activity Monitoring Scenario

Consider a simple activity monitoring scenario.  The radio sleeps 90% of the time, is in discovery mode 5% of the time, and connected 5% of the time, adding 2.4uA.  The CPU usage averages 10,000 instructions per second adding 2.8uA.  Two LEDs are illuminated for 30 seconds a day adding 3.5uA.  This along with the CPU and accelerometer usage of 6.0uA, brings the total average current to 14.7uA.  The CR2032 battery would last about 1.8 years and the 40mAh battery would last about 3.5 months.



Two of the primary design challenges for body worn sensors are size and battery life.  Those are opposing forces - smaller size means smaller batteries and lower battery life.  One of the keys to a good design is to find the right balance for your application.  For certain applications where the duty cycles are low it is certainly possible, with a good design, to have a very low overall average current which enables long life when using small batteries.

Firefly Ice: Getting Started with Firmware Development

Posted by denisbohm on May 02, 2013. 0 Comments

Compiling the Firmware

The Firefly firmware uses freely available libraries and tools.  To get setup for building the Firefly Ice firmware you will need the following:

  • GNU Tools for ARM Embedded Processors
  • EnergyMicro CMSIS Software
  • Firefly version of the EnergyMicro CMSIS USB Software
  • Firefly Ice Firmware

The following commands can be used in the Mac OS X terminal to download and extract all of the above:

curl -O
tar jxf gcc-arm-none-eabi-4_7-2013q1-20130313-mac.tar.bz2
export PATH=`pwd`/gcc-arm-none-eabi-4_7-2013q1/bin:$PATH

curl -O
unzip -d energymicro EM_CMSIS_3.0.2.zipgit clone
git clone
cd firefly-ice-firmware
mkdir obj bin

Finally, from within the firefly-ice-firmware directory you can build the firmware using make:


The resulting FireflyIce.elf binary file can be found in the bin directory.

Loading the Firmware

It's time to get the hardware setup.  In addition to a Firefly Ice PCBA, you will need the following:

Connect everything together, plug the USB cable from the ARM-USB-TINY-H into your Mac, and plug the USB cable from the Firefly Ice into any USB port for power.


The Firefly Flash production software will be used to load the compiled FireflyIce.elf binary into the Firefly Ice PCBA.  Download and run (it should automatically unzip when downloaded by Safari).


Click on "Select firmware ELF file..." and select the FireflyIce.elf file that you compiled in the steps above.  Click "Program" and in a few seconds the indicators on the Firefly Ice should indicate that the firmware is running.

Debugging the Firmware

The Firefly Flash software acts as a gdb remote target for debugging.  To start debugging with gdb:


then enter the following gdb commands:

target extended-remote tcp:
set architecture armv3m
file bin/FireflyIce.elf

Now you can use gdb commands for debugging.


The process above is one way to build, run, and debug Firefly Ice.  But it isn't the only option.  For example, a project file for the Rowley Associates CrossWorks for ARM development system is included in the Firefly Ice firmware repository as well.  CrossWorks runs on Windows, Linux, and the Mac.

Any ARM Cortex-M3 gcc distribution could be used for compiling.

Any JTAG with SWD capability and the associated tool chain could be used for running and debugging.  For example, the Olimex ARM-JTAG-SWD in combination with the Olimex ARM-JTAG-20-10 can be used instead of the Rowley ARM SWD Adapter with the same tool chain as above.


Firefly Ice: Source Code Repositories

Posted by denisbohm on April 17, 2013. 0 Comments

Lots of things coming together this week:


  • The firmware to read the sensors and communicate via Bluetooth Low Energy & USB is working.
  • Development of cloud data storage and syncing has started.
  • 3D printed enclosure prototypes have arrived.
  • I'm presenting this project at the Austin Hardware Startup Meetup.

Source Code Repositories: Below are links to all of the current source code repositories for the software, firmware, hardware, and enclosure.

Data Storage Service

GitHub: Firefly Data Storage Service

Cloud data storage service in Ruby / Sinatra hosted on Heroku and Mongohq.

API/SDK & Example Applications

GitHub: Firefly Ice API

Device API/SDK for iOS and Mac OS X with example applications.


GitHub: Firefly Ice Firmware

Device firmware written in 'C' using gcc.

Schematics & Printed Circuit Board Layout

GitHub: Firefly Ice Electronics

Eagle schematics & printed circuit board layout files.  The schematics have annotations that can be used to generate BOMs for ordering parts and for assembly.  The printed circuit board layout has layers for documentation of assembly locations of all BOM parts.

Note that the current schematics are for the first build of 10 prototype PCBAs.  There will be some changes based on testing and tuning done with those prototype PCBAs.

Component Parts Library

GitHub: Firefly Eagle Library

The Eagle component parts library has all of the parts used by the Firefly Ice electronics.

Rhino 3D Enclosure

Thingiverse: Firefly Ice Enclosure

The Rhino 3D file has all the development enclosure parts as well as some other parts used as reference such as the cover pate, battery, screws, etc.

Orderable Custom Enclosure Parts

Shapeways: Firefly Ice

The Shapeways files are printable STLs of the main body of the enclosure as well as the battery cover.  The cover plate, screws, etc, are standard parts that need to be ordered separately.

Energy Micro USB Firmware

GitHub: Energy Micro USB Firmware

Energy Micro USB firmware with a few fixes (gcc compatibility and not using port F pin 5 for VBUSEN).

Production Tools

GitHub: Firefly Production Tools for Mac OS X

Includes Firefly Flash application for Mac OS X that can be used to program firefly devices and also provides a GDB server so that any GDB based debugger can be used for development.

ARM SWD Framework

GitHub: ARM Serial Wire Debug Framework

The ARM Serial Wire Debug Mac OS X framework will be used by the production tools for testing and programming boards during production.

Project Tracking

Pivotal Tracker: Firefly Ice

Firefly Ice: PCBA Checkout

Posted by denisbohm on April 03, 2013. 0 Comments

The first Firefly Ice PCBA arrived May 29th.  So far the communication between all the chips on the board have checked out fine.  Still more testing to do, but things look really good.  The remaining PCBAs from this first build of 10 should be here this week.  Effort is now shifting to focus on the firmware development.

firefly-ice-pcba-top firefly-ice-pcba-bottom