Arduino Nano¶
The Arduino Nano is a compact, breadboard-friendly microcontroller board based on the Atmel ATmega328P. In the Bitstream Evolution project, a Nano-compatible clone serves as the fitness evaluation MCU: it reads the analog output of the iCEstick FPGA through its built-in 10-bit ADC, computes fitness values, and communicates results back to the host PC over USB serial.
Arduino Documentation Hardware Setup Guide
Specifications¶
| Feature | Details |
|---|---|
| Microcontroller | ATmega328P (8-bit AVR) |
| Clock Speed | 16 MHz |
| Flash Memory | 32 KB (2 KB used by bootloader) |
| SRAM | 2 KB |
| Analog Input Pins | 8 (10-bit ADC, 0--5V range) |
| Digital I/O Pins | 14 (6 with PWM) |
| Communication | UART, I2C, SPI |
| USB | Mini-B (clones often use CH340 USB-serial chip) |
| Operating Voltage | 5V |
| Approximate Cost | ~$3--10 (Nano-compatible clone) |
Role in Bitstream Evolution¶
The iCEstick FPGA does not have a built-in analog-to-digital converter, so the Arduino Nano fills this role as an intermediary between the FPGA's analog output and the host PC running the evolutionary algorithm.
In the standard wiring:
- FPGA pin 10 connects to Arduino pin A0 --- the ADC reads the evolved circuit's output voltage
- Arduino pin D2 is bridged to A0 --- provides a digital interrupt for pulse counting experiments
- The host PC requests fitness readings over USB serial, and the Arduino responds with ADC samples
Why the Arduino Nano¶
- 10-bit ADC --- 1024-level resolution (4.9 mV per step) is sufficient for distinguishing fitness gradients in EHW experiments
- Breadboard-friendly --- DIP-style pin headers plug directly into the breadboard alongside the iCEstick
- Extremely low cost --- Nano-compatible clones are available for ~$3--10
- Easy to program --- fitness evaluation firmware is straightforward to write and customize using the Arduino IDE or PlatformIO
Project Use¶
The Arduino Nano is used exclusively in the Bitstream Evolution (iCEstick) hardware setup. The newer pico2-ice platform integrates the microcontroller (RP2350B) directly on the same board as the FPGA, eliminating the need for a separate Arduino.
Clone Driver Note
Nano-compatible clones using the CH340 USB-serial chip may require a separate driver installation on some operating systems.