Mosquino: an Arduino-based energy harvesting development board

Mosquino is a software-compatible derivative of the open-source Arduino platform that is designed for extremely low power consumption, operating from ambient (harvested) environmental energy sources such as heat, sunlight and vibration. (Or coincells, if you’re not feeling adventurous.)

Note: This project is in its early beginnings, and has not been exhaustively tested yet. This text is mainly a placeholder for proper documentation.

Why Mosquino?
Mosquino is based on the Sanguino design using the Atmel Atmega644PA and family microcontrollers. It turns out the name Sanguino literally translates as “bleeding”! In keeping with the theme, this parasitically-powered board is a “little bloodsucker”. Don’t worry, it doesn’t drink much. (Also, the name Draculino is already used.)

Important specs:
Operating voltage range: 1.8 ~ 3.3V
Input voltage range: Depends on power shield (the board expects to receive 1.8 ~ 3.6V pre-regulated or 0 ~ 6V unregulated from the power shield).
Speed: 4MHz from onboard crystal oscillator (Atmega’s max. rated speed at 1.8V; you can change to a faster one if operating exclusively at 3.3V).
Shield pinout: does not match official Arduino (Duemilanove/etc.) pinout. Instead, the headers have been aligned on a 100-mil grid for compatibility with perfboard and breadboards.

Downloads / design files
WARNING – This is a very new project and these have not been fully tested yet. Use at your own risk!

Mosquino’s code and design files are now hosted on Google Code. For now, access the current version using the Source tab (use the ‘Repository’ dropdown to select between PCB layouts and code). Beware that this is not a final release yet, and PCB and Arduino cores are not necessarily in sync yet. These boards do, however, contain what is likely to be the official and final Mosquino pinout.

If anyone has built the old ‘rev1’ version, its design and support files can be downloaded below. This design has some bugs and is not recommended for new projects.

Arduino board support dropin rev1 (11/17/2010) – updated to Arduino 0020 core/libraries, added I2C pin definitions. To add Mosquino to the Arduino IDE’s list of boards, unzip this into the /hardware directory inside your Arduino sketch folder (if this folder does not exist, create it). This provides the bootloader and its settings, hardware pin mapping, etc.
Design files / PCBs rev1 (11/17/2010). This file contains the EAGLE schematic, PCB layout and Bill of Materials (parts list) for the mainboard, power shields and I/O shields currently designed. If there is interest / support, they may be available mass-produced someday, but for now it’s roll-your-own.

Features (or, Why create yet another Arduino-based variant):

  • Works with the Arduino toolchain or stand-alone AVR toolchains (avr-gcc and avrdude, etc.)
  • 3.3V (1.8-3.3V) board designed from the ground up with low power consumption in mind. Target quiescent power draw is <1uA including a realtime clock.
  • Power supply (beyond basic battery/USB) implemented as interchangeable shields, allowing harvesting from many power sources (solar, piezo, thermal, RF, …). Power shields may provide regulated or unregulated power, and an aux. output for e.g. clock/memory backup.
  • Direct-wire terminals for power input.
  • Large, 40-pin ATMEGA644P (Sanguino) used to provide additional I/O. This is important, as the design uses up a couple for power-saving features (see below).
  • New shield interface allows up to 3 shields to be installed at once. Common signals (PWR/GND, SPI/I2C buses) are pinned out for each shield block.
  • Prioritized power supply (see below) allows regulated/unregulated or USB power to be used/connected at any time, without backdriving/damaging each other or sacrificing power efficiency. USB power will supercede battery/etc., saving battery power when other sources are present.
  • Still fits in an Altoids tin!

Low-power features:

  • PC interface (FTDI232 USB-to-serial, like on Duemilanove) operates from isolated USB supply; does not consume current when USB cable unplugged. Likewise, bootloader immediately exits if USB cable unplugged.
  • Feedback signals to ATMEGA / user program: BUS_SENSE (detect if USB link / “infinite” power is present), POWER_GOOD (changes to false when power source is nearly depleted, if supported by power shield).
  • Hardware Real-Time Clock and three hardware INTerrupt lines (one for RTC, two uncommitted) to facilitate / encourage event-driven code, CPU sleep mode usage (as opposed to software delay loops) with periodic/scheduled wakeups.
  • Rather than using “diode-or”ing, the power supply uses reversed MOSFETs as diodes to isolate the different supplies while avoiding the voltage drop of typical diodes, and cut-off less favorable supplies (e.g. battery) when a more favorable one is available.
  • Integrated load-switching prevents the circuit from drawing power until the voltage exceeds minimum requirements and there’s enough power to do something useful with. Since many devices behave strangely and often draw excessive current when driven with too-low voltages, the load switch avoids the problem of a slowly-charging power source never getting “over the hump”.

Power Shields currently designed
These are available in the PCB download above.

Thermal, e.g. bodyheat-powered using the Peltier/Seebeck effect. This shield boosts the extremely low voltages (as little as 30mV) from the Peltier device to 3.3V (see LTC3109 data sheet). Using a 4x4cm Peltier device, the board can operate from as little as 2degC thermal gradient. It can also automatically charge a storage device (battery or supercap) when excess power is available. POWER_GOOD output provided.

Vibration energy (piezoelectric) or naturally occurring charge imbalances (electrostatic). This shield converts high-voltage (4-20V) but extremely low current AC or DC sources to 1.8 or 3.3V using the LTC3588 charge management IC. A jumper selects between 1.8V and 3.3V output. This shield can also be used as a general-purpose step-down regulator for multi-cell solar cells, etc. POWER_GOOD output provided.

“Petty Joule Thief” one-shot low-voltage boost converter with optional Schottky fullbridge rectifier. This is a capacitive charge pump that boosts low-voltage (as low as 300mV DC or 400mV AC), low current sources to 1.8-2.4V, storing this voltage on a storage cap. Once the storage cap is full, boosting stops and the power is switched to the load. Once the cap voltage drops below 1.8V, the load is disconnected and boosting restarts. This circuit is for simple “one-shot” applications that wake up and perform a quick task (e.g. take a measurement, send radio packets) in a known amount of time and power.

This circuit can be powered by single-cell (0.6V) solar cells, multi-cell panels in indoor / low light applications, piezoelectrics on weak vibration sources, etc. When set for AC, can be used to draw power from RF / RFID sources.

Null power shield: For direct use of a coincell or 2-6v solar cells, etc.: on the power shield headers, jumper VIN- to GND and Vin+ to either VREG or VUNREG.

Shields currently designed (available in the PCBs download above):
Mosquino Shield Template
MicroSD Socket with FET power switch
Kent Displays 128×32 bistable graphics LCD (image retention for >1 year without power). The below is not a photoshop trick; there really is no power source attached :-)

Next shields:
Micropower Wireless (ANT AP2?)

34 Responses to “Mosquino: an Arduino-based energy harvesting development board”