MakerLab
ArduinoArduino Fio

Arduino Fio: The Compact Wireless-Ready Board

A compact Arduino board designed for battery-powered applications, featuring onboard battery charging and XBee compatibility.

Arduino Fio

The Arduino Fio was an early member of the Arduino family, released around 2010, specifically designed with portability and wireless communication in mind. It distinguished itself by its small form factor and integrated LiPo battery charging capabilities, making it ideal for projects that needed to be untethered from a power outlet. Its design aimed to simplify the development of battery-powered sensor nodes and remote devices.

At its heart, the Arduino Fio is powered by the ATmega328 microcontroller, a popular 8-bit AVR processor from Atmel (now Microchip Technology). This chip is also found on the Arduino Uno, making the Fio familiar to many Arduino users in terms of programming and peripheral availability. The ATmega328 offers a good balance of processing power, memory, and I/O capabilities for a wide range of embedded projects.

The Fio occupies a niche between the more general-purpose Arduino Uno and dedicated wireless modules. Its primary advantage was its direct support for wireless communication, particularly through its onboard footprint for an XBee module. This allowed makers to easily add Zigbee, 802.15.4, or other wireless protocols without complex wiring. The inclusion of a LiPo charger also streamlined the development of mobile or remote-controlled projects.

This board is well-suited for makers, students, and hobbyists interested in creating portable, battery-operated devices. Its ease of use, combined with the potential for wireless connectivity and integrated power management, makes it a good choice for projects like portable data loggers, remote environmental sensors, simple robotics, or wearable electronics where space and power are at a premium.

Watch

Related video, embedded from YouTube.

Specifications

Microcontroller / SoCAtmel ATmega328P
Architecture8-bit AVR
Clock speed16 MHz
Flash / Storage32 KB (of which 0.5 KB used by bootloader)
RAM / SRAM2 KB
Operating voltage3.3V
Digital I/O pins14 (6 with PWM)
Analog / ADC6 (10-bit)
PWM6 pins (3, 5, 6, 9, 10, 11)
ConnectivityOnboard footprint for XBee/RF modules
USBMini-USB connector (for programming and power)
Power inputVia Mini-USB, external 3.3V or LiPo battery connector
Dimensions40mm x 25mm

Pinout & pin functions

PinFunction
3.3VPower output (regulated)
GNDGround
GNDGround
AREFAnalog Reference voltage
A0Analog Input 0 / Digital I/O 14
A1Analog Input 1 / Digital I/O 15
A2Analog Input 2 / Digital I/O 16
A3Analog Input 3 / Digital I/O 17
A4Analog Input 4 / Digital I/O 18 (SDA)
A5Analog Input 5 / Digital I/O 19 (SCL)
D2Digital I/O 2
D3Digital I/O 3 (PWM)
D4Digital I/O 4
D5Digital I/O 5 (PWM)
D6Digital I/O 6 (PWM)
D7Digital I/O 7
D8Digital I/O 8
D9Digital I/O 9 (PWM)
D10Digital I/O 10 (PWM, SS for SPI)
D11Digital I/O 11 (PWM, MOSI for SPI)
D12Digital I/O 12 (MISO for SPI)
D13Digital I/O 13 (SCK for SPI)
RXSerial Receive (D0)
TXSerial Transmit (D1)
RESETReset pin
VUSBPower input from USB
VBATBattery input (LiPo connector)
CHGBattery charging status LED

Wiring & circuit basics

The Arduino Fio operates at a logic level of 3.3V. This is important to remember when interfacing with external components. Connecting 5V devices directly to its 3.3V I/O pins can damage the Fio, and conversely, 5V signals from external devices might not be reliably read by the Fio's 3.3V inputs. Always use level shifters if you need to connect 5V components.

Powering the Fio can be done via its Mini-USB port, which also serves for programming. Alternatively, you can power it through the VBAT pin using a LiPo battery. The board features an onboard charging circuit for single-cell LiPo batteries, managed by a dedicated chip. When a LiPo battery is connected and the board is powered via USB, the battery will charge. The CHG LED indicates charging status. Ensure your LiPo battery has a suitable JST connector for the onboard plug.

A simple LED circuit demonstrates basic wiring. Connect a digital output pin, for example, D9 (which also supports PWM), to the anode (longer leg) of an LED. Connect the cathode (shorter leg) of the LED to one end of a current-limiting resistor (typically 220-330 Ohms for a 3.3V system). Connect the other end of the resistor to a GND pin on the Fio. This setup allows you to blink the LED or control its brightness using PWM.

Programming & getting started

The Arduino Fio is programmed using the Arduino IDE, just like many other Arduino boards. Download and install the latest version of the Arduino IDE from the official Arduino website. Once installed, select 'Arduino Uno' from the Tools > Board menu, as the Fio uses the same ATmega328P microcontroller and bootloader. Connect the Fio to your computer via its Mini-USB port. Select the correct COM port from the Tools > Port menu. You can then write and upload your first sketch, such as the 'Blink' example, to verify the board is working.

For more advanced users or specific project needs, the Fio can also be programmed using PlatformIO, which offers a more robust development environment and better library management. While it's an AVR-based microcontroller, it's not directly compatible with MicroPython or CircuitPython without significant porting efforts, unlike newer ESP32-based boards.

Project ideas

Portable Weather StationUse A0-A5 to read sensors like temperature, humidity, and barometric pressure. Connect a small LCD or OLED display to I2C pins (A4/A5) for local readings. Program the Fio to log data or transmit it wirelessly via an attached XBee module.
Wireless Data LoggerConnect a variety of sensors (e.g., soil moisture, light levels) to the analog and digital pins. Use an XBee module on the dedicated header to send collected data wirelessly to a base station or computer for logging.
Wearable Fitness TrackerIntegrate an accelerometer (e.g., ADXL345 via I2C) and a pulse sensor. The Fio's small size and battery power make it suitable for a wrist-worn device. Display basic metrics on a small OLED screen connected to I2C.
Remote Control CarUse the Fio's PWM pins to control motor drivers for speed and direction. Pair it with an XBee module for wireless control from a remote transmitter, powered by another Fio or compatible microcontroller.
Smart Home Sensor NodeDeploy the Fio with sensors for motion, light, or door/window status. Program it to send alerts wirelessly via XBee when events are detected, creating a basic DIY home monitoring system.
LiPo Battery MonitorUtilize the analog pins to read battery voltage and current (with appropriate sensors). The onboard charging circuit can be monitored, allowing for a self-contained battery management system for other projects.

Buying tips & gotchas

When purchasing an Arduino Fio, be aware that it is an older board and may be harder to find new. Look for original Adafruit or Arduino versions, as third-party clones might have variations in quality or pinouts. Ensure you have a compatible Mini-USB cable for programming and consider purchasing a suitable single-cell LiPo battery with a JST connector. Because the board operates at 3.3V, always double-check the voltage requirements of any external sensors or modules you plan to connect to avoid damaging the Fio or the peripherals.