The Arduino Micro is a DIP module that features an ATmega32U4 microcontroller which provides 20 digital I/O pins (of which seven can be used as PWM outputs and 12 as analog inputs). The board provides a 16 MHz crystal oscillator, a micro-USB connection, an ICSP header, and a reset button. This DIP module features two single rows of male header pins (0.1" spacing, 0.6" wide) on the bottom that allow it to be inserted into solderless breadboards for easy access to and wiring of all ATmega32U4 pins.
The Micro is similar to the Leonardo in that the ATmega32U4 has built-in USB capability, eliminating the need for a secondary processor as found on other Arduino boards. This allows the Micro to appear to a connected computer as a mouse and keyboard in addition to a virtual (CDC) serial/COM port. It also has other implications for the behavior of the board — particularly reset behavior. It also means that there are now separate Serial and Serial1 classes for the virtual serial driver and the hardware serial port, respectively. This also has an effect on the capabilities and assignments of some pins, e.g. SPI and TWI.
This ATmega32U4 board is pre-programmed with the Arduino bootloader that allows you to upload code to it via USB using the open-source Arduino development environment.
|Microcontroller ||Atmel ATmega32U4 |
|Operating Voltage (logic level) ||5V |
|Input Voltage (recommended) ||7-12V |
|Input Voltage (limits) ||6-20V |
|Digital I/O Pins ||20 |
|PWM Channels ||7 |
|Analog Input Channels ||12 |
|DC Current per I/O Pin ||40mA |
|DC Current for 3.3V Pin ||50mA |
|Flash Memory ||32KB on ATmega32U4, of which 4KB is used by bootloader |
|SRAM ||2.5KB on ATmega32U4 |
|EEPROM ||1KB on ATmega32U4 |
|Clock Speed ||16 MHz |
|Dimensions ||48 × 17.7 mm (PCB itself; USB connector extends slightly) |
Arduino Micro Features
Power The Arduino Micro can be powered via the micro-USB connection, 7-12V unregulated external power supply, or 5V regulated external power supply. The power source is selected automatically to the highest voltage source. (While the maximum ratings for external power are 6-20V, the board is likely to be unstable below 7V and can overheat above 12V.) Power pins are labeled like so:
- VI — The input voltage to the board when it's using an external power source (as opposed to 5V from the USB connection or other regulated power source). You can supply voltage through this pin.
- 5V — The regulated power supply used to power the microcontroller and other components on the board. This can come either from VIN via an on-board regulator, or be supplied by USB or another regulated 5V supply.
- 3V — A 3.3V supply generated by the on-board regulator. Maximum current draw is 50mA.
- ⏚ — Ground pins.
Memory The ATmega32U4 on the Micro has 32 KB of flash memory for storing code, of which 4 KB is used for the bootloader. It also has 2.5 KB of SRAM and 1 KB of EEPROM (which can be read and written with the EEPROM library).
Input and Output Each of the 20 digital pins on the Micro can be used as an input or output, using pinMode(), digitalWrite(), and digitalRead() functions. They operate at 5V. Each pin can provide or receive a maximum of 40mA and has an internal pull-up resistor (disconnected by default) of 20-50 kΩ. In addition, some pins have specialized functions:
- Serial: 0 (RX) and 1 (TX) — Used to receive (RX) and transmit (TX) TTL serial data. Note that on the Micro, the Serial class refers to USB (CDC) communication; Serial1 refers to TTL serial on pins 0 and 1.
- TWI: 2 (SDA) and 3 (SCL) — Supports TWI communication using the Wire library.
- External Interrupts: 0 (RX), 1 (TX), 2 and 3 — These pins can be configured to trigger an interrupt on a Low value, a rising or falling edge, or a change in value. See the attachInterrupt() function for details.
- PWM: 3, 5, 6, 9, 10, 11, 13 — These provide 8-bit PWM output with the analogWrite() function.
- SPI: on the ISCP header — These pins support SPI communication using the SPI library. Note that the SPI pins are not connected to any of the digital I/O pins like they are on an Arduino Uno; they are available only on the ICSP connector and on the nearby pins labeled MI (MISO), MOSI and SCK.
- RX_LED/SS — This is an additional pin with respect to the Leonardo and Micro. It is connected to the RX_LED that indicates transmission activity during USB communication, but also can be used as the Slave Select (SS) pin in SPI communication.
- LED: 13 — There is a built-in LED connected to digital pin 13. When the pin is High value, the LED is on; when the pin is Low, it's off.
- Analog Inputs: A0-A5, A6-A11 (on digital pins 4, 6, 8, 9, 10, 12) — The Micro has 12 analog inputs. Pins A0 to A5 are labeled direction on the pins. The others can be utilized in your code using constants A6 through A11; they are shared on digital pins 4, 6, 8, 9, 10, and 12 respectively. Each analog input provides 10 bits of resolution (i.e. 1024 different values). By default, they measure from ground to 5V, though is it possible to change the upper end of their range using the AREF pin and the analogReference() function.
- Reset — Bring this line Low to reset the microcontroller. Typically it is used to add a reset button to shields or enclosures which block the one on the board.
See also the mapping between Arduino pins and ATmega32U4 ports reference.
Communication The Micro has a number of facilities for communicating with a computer, another Arduino, or other microcontrollers. The ATmega32U4 provides UART TTL (5V) serial communication, which is available on digital pins 0 (RX) and 1 (TX). The 32U4 also allows for serial (CDC) communication over USB and appears as a virtual COM port to software on the computer. The chip also acts as a full-speed USB 2.0 device, using standard USB COM drivers. On Windows, a .inf file is required (included with the IDE; see below). The Arduino software includes a serial monitor which allows simple text-based data to be sent to and from the Arduino board. The RX and TX LEDs on the board will flash when data are being transmitted via the USB connection to the computer (but not for serial communication on pins 0 and 1).
The SoftwareSerial library allows for serial communication on any of the Micro's digital pins. The ATmega32U4 also supports I2C (TWI) and SPI communication. The Arduino software includes a Wire library to simplify use of the I2C bus. For SPI communication, use the SPI library.
The Micro appears as a generic keyboard and mouse, and can be programmed to control these input devices using the Keyboard and Mouse classes.
Installing drivers for the Arduino Micro under Windows 7, Vista or XP
- Plug in your board and wait for Windows to begin its driver installation process. If the installer does not launch automatically, navigate to the Windows Device Manager (Start→Control Panel→Hardware) and find the Arduino Micro listing. Right-click and choose Update driver.
- If prompted to search for drivers online, choose "No, not this time" and click Next.
- When asked to install automatically or from a specific location, select "Install from a list or specific location" and click Next.
- Choose "Search for the best driver in these locations" and check the box "Incude this location in the search". Click the Browse button and navigate to your Arduino 1.0.4 or later installation. Select the drivers folder and select the arduino.inf file, then click OK.
- Now just click Next, then Continue Anyway when Windows complains about the drivers not passing Windows Logo testing. After a moment, it will inform you that installation is complete. Click Finish.
Programming The Arduino Micro can be programmed with the Arduino software. For details, see the Arduino Reference and Basic Concepts.
The ATmega32U4 on the Arduino Micro comes pre-burned with a bootloader that allows you to upload new code to it without the use of an external hardware programmer. It communicates using the AVR109 protocol. It is possible to bypass the bootloader and program the microcontroller through the ICSP header instead; see these instructions for details.
Automatic (Software) Reset and Bootloader Initiation Rather than requiring a physical press of the reset button before an upload, the Arduino Micro is designed in a way that allows it to be reset by software running on a connected computer. The reset is triggered when the Micro's virtual (CDC) serial/COM port is opened at 1200 baud and then closed. When this happens, the processor will reset, breaking the USB connection to the computer (meaning that the virtual serial/COM port will disappear). After the processor resets, the bootloader starts, remaining active for about eight seconds. The bootloader also can be initiated by pressing the reset button on the Micro. When the board first powers up, however, it will jump straight to the user sketch (program) if present, rather than initiating the bootloader.
Because of the way the Micro handles reset, it's best to let the Arduino software try to initiate the reset before uploading code, especially if you are in the habit of pressing the reset button before uploading on other boards. If the software can't reset the board, you can always start the bootloader by pressing the reset button on the board.
USB Overcurrent Protection The Micro has a resettable polyfuse that protects your computer's USB ports from shorts and overcurrent. Although most computers provide their own internal protection, this fuse provides an extra layer of protection. If more than 500mA is applied to the USB port, the fuse will break the connection until the short or overload is removed.
About Arduino Arduino is an open-source platform based on boards featuring an Atmel AVR microcontroller with a pre-programmed bootloader and a development environment that implements the Processing / Wiring language. Arduino can be used to develop stand-alone interactive objects or can be connected to software on your computer (e.g. Flash, Processing, MaxMSP). The open-source IDE can be downloaded for free (currently for Mac OS X, Windows, and Linux).
Arduino Micro Resources