Arduino Fio: The Compact Wireless-Ready Board
A compact Arduino board designed for battery-powered applications, featuring onboard battery charging and XBee compatibility.
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 / SoC | Atmel ATmega328P |
| Architecture | 8-bit AVR |
| Clock speed | 16 MHz |
| Flash / Storage | 32 KB (of which 0.5 KB used by bootloader) |
| RAM / SRAM | 2 KB |
| Operating voltage | 3.3V |
| Digital I/O pins | 14 (6 with PWM) |
| Analog / ADC | 6 (10-bit) |
| PWM | 6 pins (3, 5, 6, 9, 10, 11) |
| Connectivity | Onboard footprint for XBee/RF modules |
| USB | Mini-USB connector (for programming and power) |
| Power input | Via Mini-USB, external 3.3V or LiPo battery connector |
| Dimensions | 40mm x 25mm |
Pinout & pin functions
| Pin | Function |
|---|---|
| 3.3V | Power output (regulated) |
| GND | Ground |
| GND | Ground |
| AREF | Analog Reference voltage |
| A0 | Analog Input 0 / Digital I/O 14 |
| A1 | Analog Input 1 / Digital I/O 15 |
| A2 | Analog Input 2 / Digital I/O 16 |
| A3 | Analog Input 3 / Digital I/O 17 |
| A4 | Analog Input 4 / Digital I/O 18 (SDA) |
| A5 | Analog Input 5 / Digital I/O 19 (SCL) |
| D2 | Digital I/O 2 |
| D3 | Digital I/O 3 (PWM) |
| D4 | Digital I/O 4 |
| D5 | Digital I/O 5 (PWM) |
| D6 | Digital I/O 6 (PWM) |
| D7 | Digital I/O 7 |
| D8 | Digital I/O 8 |
| D9 | Digital I/O 9 (PWM) |
| D10 | Digital I/O 10 (PWM, SS for SPI) |
| D11 | Digital I/O 11 (PWM, MOSI for SPI) |
| D12 | Digital I/O 12 (MISO for SPI) |
| D13 | Digital I/O 13 (SCK for SPI) |
| RX | Serial Receive (D0) |
| TX | Serial Transmit (D1) |
| RESET | Reset pin |
| VUSB | Power input from USB |
| VBAT | Battery input (LiPo connector) |
| CHG | Battery 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.