We sure love the ATmega328 here at Adafruit, and we use them a lot for our own projects. The processor has plenty of GPIO, Analog inputs, hardware UART SPI and I2C, timers and PWM galore - just enough for most simple projects. When we need to go small, we use a Pro Trinket 3V or 5V, but if you want to have USB-to-Serial built in, we reach for an Adafruit METRO Mini.
METRO Mini is the culmination of years of playing with AVRs: we wanted to make a tiny, breadboard-friendly development board that is easy to use and is hacker friendly. Metro Mini can be programmed with the Arduino IDE (select 'UNO' in the boards dropdown)
ATmega328 brains - This popular chip has 32KB of flash (1/2 K is reserved for the bootloader), 2KB of RAM, clocked at 16MHz
Power the METRO Mini with 6-16V polarity protected on the Vin pin, or plug the micro USB connector to any 5V USB source.
METRO has 20 GPIO pins, 6 of which are Analog in as well, and 2 of which are reserved for the USB-serial converter. There's also 6 PWMs available on 3 timers (1 x 16-bit, 2 x 8-bit). There's a hardware SPI port, hardware I2C port and hardware UART to USB.
GPIO Logic level is 5V but by cutting and soldering closed a jumper on the bottom, you can easily convert it to 3.3V logic
5V onboard regulator with 150mA out, 3.3V 50mA available via FTDI chip
USB to Serial converter, there's a genuine SiLabs CP2104 hardware USB to Serial converter that can be used by any computer to listen/send data to the METRO, and can also be used to launch and update code via the bootloader
Four indicator LEDs, on the top of the PCB, for easy debugging. One green power LED, two RX/TX LEDs for the UART, and a red LED connected to pin PB5 / digital #13
Easy reprogramming, comes pre-loaded with the Optiboot bootloader
Beautiful styling by PaintYourDragon and Bruce Yan, in Adafruit Black with gold plated pads.
The Metro Mini comes as a fully assembled and tested board, with bootloader burned in and also a stick of 0.1" header. Some light soldering is required if you'd like to plug it into a breadboard, or you can solder wires or header directly to the breakout pads. Once headers are installed they can be fitted into 0.6" wide sockets
- ATmega328 microcontroller with Optiboot (UNO) Bootloader
- USB Programming and debugging via the well-supported genuine FTDI FT231X or the SiLabs CP2104
- Input voltage (Vin): 6-16V (a 9VDC power supply is recommended)
- 5V logic with 3.3V compatible inputs, can be converted to 3.3V logic operation
- 20 Digital I/O Pins: 6 are also PWM outputs and 6 are also Analog Inputs
- 32KB Flash Memory - 0.5K for bootloader, 31.5KB available after bootloading
- 16MHz Clock Speed
- Adafruit Black PCB with gold plate on pads
- 18mm x 44mm x 4mm / 0.7" x 1.7" x 0.2"
- Weight: 3g
- Derivative of "Arduino UNO R3 Reference design"
- Open source hardware files on github!
We packed a full Metro's worth of goodies into this slim little PCB. There's everything you need to build a project in Arduino - lets check it out!
The USB plug is how you will need to program and debug your code. We use it to both power your project and also provide the USB serial interface. Check the Arduino IDE Usage page for how to install the drivers.
Microcontroller & Crystal
This is the brains of your Metro Mini. We use the ATmega328P at 16 MHz. This matches the same exact chip used in the Adafruit Metro and Arduino Uno, so you know that you'll have 100% compatibility.
There are 4 LEDs in the middle of the board. In no particular order:
ON is a green LED that is always lit when the board is powered, it is connected directly to the 5V power supply through a 1K resistor
L is the red 'pin 13' LED and is connected to (you guessed it) pin #13 through a 1K resistor
RX and TX are controlled by the USB serial chip. They will let you know when data is sent from or to the computer. Both are yellow. They are driven by the USB serial chip only, you cannot control them directly.
The bottom row has 6 power pins that you will find handy!
USB is connected directly to the micro USB connector, and is great when you need a lot of 5V power for NeoPixels or servos, etc. If USB is not plugged in, this will not be powered
3V this is the 3V regulator ouput. On the FTDI-using Metro Mini, this will be 50mA output. On the CP2104-using Metro Mini it will be 500mA max output. Note you can only get 500mA out when its plugged into USB
5V is the 5V output. If powered from USB, it is powered from USB power through a Schottkey diode. If you are only powering from Vin, it will give you up to 150mA of current out
Vin is the battery input. You can provide 5V to 16V input. Note that we linearly regulate this down, so using a higher voltage will cause your board to heat up more. 5-8V is a good place to stay.
You can connect both USB and Vin power, and the metro will automatically switch between the two to maintain the highest voltage output on 5V out.
On the right hand side are all the digital I/O pins you expect. These match the same names/usage of the Adafruit Metro and Arduino UNO. They are all 5V logic output/input unless you've set the Mini to be 3V logic (see at the end)
The two pins labeled 0 and 1 are the two Serial pins that are used to send data to and from the Arduino to the USB-Serial translator chip.
Don't connect anything to Digital 0 or 1 unless you are super sure because it will affect your Metro's ability to communicate!
Digital 2 through Digital 12 are normal every day digital pins. Pins # 3, 5, 6, 9, 10, 11 can do PWM output
Digital 13 is a little special because it is also connected to the L LED. You can use this pin without affecting the Arduino just be aware that the L LED will also blink at the same time.
Analog In + Digital I/O Pins
The analog input pins are special pins that can read sensors. They can also be used as digital input/output pins, they really are the most versatile pins!
Each analog pin can read a voltage between 0 and 5V. When used in digital mode, they are all 5V logic output/input. Unless you've set the Mini to be 3V logic (see at the end) in which case the analog read-range and logic level is 3.3V
There's a Reset pin and button, they are connected together. When RST is connected to ground, it will reset your Metro Mini. Note it will not reset the serial connection so you can keep that open when resetting. The button will do the same as connecting RST to ground, but its fun to press.
Aref is the analog reference, which can be connected to other voltages when you want to change the range or quality of your analog readings.
On the bottom of the board, there is a Vio jumper, which you can see ties the middle pad to 5V. If you want to use your Metro Mini in 3V logic mode - which can really simplify connecting to many chips, sensors, and displays - cut the little trace to the left, and solder the middle pad and right pad together. Use a multimeter to check that you really cut that trace, as shorting 3V and 5V together is very bad and may damage your Mini!
Installing USB Serial Drivers
The USB plug is how you will need to program and debug your code. We use it to both power your project and also provide the USB serial interface. On older Metro Mini's we used a FT231X chip. On newer Metro Mini's we now have the CP2104 chip. Both act the same but the CP2104 is a little less expensive so we were able to lower the price. For either one, you'll need to install drivers if you are using Mac or Windows. Linux comes with both drivers already.
Windows users can try plugging the board in, Windows update will probably install drivers for you. If the device is not recognized, simply download and install the Adafruit Windows Driver package. When you run it, make sure to click that you want to install the SiLabs CP210x and FTDI chip drivers too!
Mac users can grab & install the FTDI VCP drivers from FTDI If you are running Mac OS X , please use the SiLabs v4 drivers (there's a recently-uncovered bug that makes v5 not work and its fine to use the older drivers).
Once drivers are installed and you've rebooted, you will have a Serial COM port.
Using the Arduino IDE
The Adafruit Metro Mini is an 'Arduino Compatible' - that means that when using the Arduino IDE or other Arduino-friendly development environments, you can simply treat the 'Mini like an Arduino UNO.
When programming, simply select Arduino UNO in the dropdown menu!