Export Restrictions

This product has some level of export control/restriction, so may be delayed by 2-3 business days when shipping outside the United States. Contact us with questions, or we will contact you after you place your order.

Creative Commons images are CC BY-NC-SA 3.0

$ 19.95

added to your
shopping cart

In stock 170 in stock
19.95 1+ units
18.95 10+ units
17.96 25+ units
16.96 100+ units

Description: Here at SparkFun, we refuse to leave ‘good enough’ alone. That’s why we’re adding to our line-up of Arduino-compatible microcontrollers once more! The Pro Micro is similar to the Pro Mini except with an ATmega32U4 on board. The USB transceiver inside the 32U4 allows us to add USB connectivity on-board and do away with bulky external USB interface.

This tiny little board does all of the neat-o Arduino tricks that you’re familiar with: 4 channels of 10-bit ADC, 5 PWM pins, 12 DIOs as well as hardware serial connections Rx and Tx. Running at 8MHz and 3.3V, this board will remind you a lot of your other favorite Arduino-compatible boards but this little guy can go just about anywhere.

This is the 3.3V version so, as always, keep in mind the limits of system voltage and so forth. The lower system voltage also has its advantages, though, like ease of use with many common 3.3V sensors. There is a voltage regulator on board so it can accept voltage up to 12VDC. If you’re supplying unregulated power to the board, be sure to connect to the “RAW” pin on not VCC.

Not sure which Arduino or Arduino-compatible board is right for you? Check out our Arduino Buying Guide!

Note: See the GitHub link below for support with the Arduino IDE.

Dimensions: 1.3x0.7"


  • ATMega 32U4 running at 3.3V/8MHz
  • Supported under Arduino IDE v1.0.1
  • On-Board micro-USB connector for programming
  • 4 x 10-bit ADC pins
  • 12 x Digital I/Os (5 are PWM capable)
  • Rx and Tx Hardware Serial Connections
  • Our Smallest Arduino-Compatible Board Yet!


Recommended Products

Customer Comments

  • Bricked Atmega32U4

    The ATmega32U4 is more for advanced users so the board can brick you are note careful. I know there are issues that happen when messing with the watchdog timer and sleep modes with the built in CDC driver for USB communication with the Atmega32u4. There might be something similar that is happening in the code using the timer interrupts. I am unsure of how to fix this issue if you continue to use the code. I recommend trying a different method than using the interrupt timers.

    It’s possible that you have used the wrong board selection that also had the wrong frequency which bricked your Pro Micro. If you upload the wrong frequency, the IC will not be able to understand any new code that is being uploaded to it because it expects to have code that is compiled for the 16MHz bootloader, instead of using the 8MHz frequency with the oscillator on your board. When either of these cases happens, the device manager is not able to recognize the device and is seen as an unknown device when it runs the sketch. There are ways to recover the Pro Micro though. Check below for more information:

    Upload when Pro Micro/FioV3 is still in Its Bootloader

    You can try the double reset method by tapping the RST pin to GND twice (since there is no reset button on the board) as indicated in the Reset to Bootloader and How to Revive a “Bricked” Pro Micro section of the FAQ => https://learn.sparkfun.com/tutorials/pro-micro–fio-v3-hookup-guide/troubleshooting-and-faq. As you are still in the bootloader, you can upload code and see it enumerate on a COM port within a 8 second window. This will give you time to select the COM port that the board’s bootloader enumerated to in Arduino IDE. Opening up the device manager on you operating system will help to see when it pops up and disappears. On Windows, this takes about 20 seconds to compile and upload. Trying this on a Mac seemed a little faster to compile and upload.

    I used the Pro Micro test code that was in the tutorial https://learn.sparkfun.com/tutorials/pro-micro–fio-v3-hookup-guide/example-1-blinkies to upload. After selecting the correct board definition and timing the double reset correctly, I was able to upload successfully in the bootloader after bricking it. It took me a couple of tries before I could get this right because of the timing.

    If board is showing up as Arduino Micro (COM##) or Pro Micro (COM##), try the double reset method and updating the drivers while still in bootloader mode:

    1) Use the double reset method while having the device manager open

    2) When the board entered the bootloader mode, I right-clicked on the

    Arduino board in the device manager as shown in this screen shot: http://puu.sh/iaYYC/d45153914c.png

    3) I updated the driver for the board

    4) Once the update was completed, I compiled and uploaded the code. When the uploading status bar was half-way through, I did double reset again and the problem was fixed

    Reinstalling the Bootloader

    As a last result, you can always try to reinstall the bootloader. The tutorial is designed for the Arduino Uno, but we’ve had a lot of people asking about uploading code to the Pro Micro and Leonardo. The idea is the same but the specifics are different. Start by reading the tutorial => https://learn.sparkfun.com/tutorials/installing-an-arduino-bootloader. The first thing you are going to need is a programmer. You can use a standard AVR programmer or any Arduino with the ISP code on it (the standard code will not work with the Leonardo). You will then need to connect it to the Pro Micro or Leonardo and upload the code. Don’t worry about the fuse bits or even the avrdude commands (they’re great, if you are installing third party stuff, but this will work just fine).

    Step 1: Get a programmer

    This you can do by following the directions in the tutorial.

    Step 2: Connect the programmer/Arduino as ISP to the Pro Micro, Fio V3, Makey Makey, or Leonardo

    You will need to connect the same pins, on the Leonardo you can connect it just like the Uno, but the Pro Micro does not have an ISP header and the pin numbers are different. Check the tutorial for location of the pins on the programmer. Here are the pins for the Pro Micro Board:

    GND, RST, VCC, MISO (D14), SCK (D15), MOSI (D16)

    Note: There is a silkscreen error and D17 is labeled D14 on the board.

    Step 3: Program

    Using Arduino v1.6+ go under Tools and select the correct programmer (if your programmer uses a COM port select that too), and the correct board (Pro Micro, FioV3, Makey Makey, or Leonardo). Then select Burn Bootloader. For the Pro Micro, this will use the bootloader in the addon file, so make sure you have the correct addon file installed.

  • FYI, using Arduino IDE 1.6.6 seems to have issues with deprecated platform.txt and subsequent inability to locate avrdude. Reverting to Arduino 1.6.5 solves this.

  • Is the only difference between the 3.3v and the 5v the voltage regulator on the RAW pin, and the software configuration (e.g. clk freq)? I see “VCC = 2.7V to 5.5V (unless otherwise noted)” mentioned on page 383 of the 32U4 datasheet. In general, can microcontrollers be powered with a range of voltages?

    Specifically, I am wondering if I can run the 3.3v version at 3.6v. Thanks.

  • There appear to be some errors in the schematic linked to on this page, and for the 5v part. Pin PB0 is the SS pin but has the net name MISO and PB3 is the MISO pin but has the net name D14/RXLED - in the caterina bootloader source the RXLED pin is PB0, not PB3 … looks to me like the PB0 and PB3 names on the 32u4 schematic part have been swapped over by accident.

    • Sigh, yes, the schematic makes me want to cry a bit. It’s on our list of things to do (although not super high priority). In the mean time check out the graphical datasheets. I dug into the ATmega32U4 datasheet and triple checked it so it should be correct.

  • The serialEvent() function is not compatible with the Esplora, Leonardo, or Micro” that uses the Atmega32U4 https://www.arduino.cc/en/Reference/SerialEvent.

    Customer was able to resolve this by using the serialEventRun(). For more information, try looking through this forum that helped the customer resolve the issue => https://forum.sparkfun.com/viewtopic.php?f=14&t=41515.

  • I needed to use the analog pins as digital I/O and found the answer to addressing them in leonardo\pins_arduino.h

    PF, // D18 - A0 - PF7
    PF, // D19 - A1 - PF6
    PF, // D20 - A2 - PF5
    PF, // D21 - A3 - PF4

    The SparkFun schematic shows PF7(ADC7) for A0, but it doesn’t clearly indicate that it can be addressed as digital pin 18. Well, it can. Enjoy your extra 4 digital I/Os

  • Why does this board have an external crystal when the chip has an internal 8MHz oscillator?

    • Mostly for better accuracy. All of our 8MHz boards actually have an oscillator for that reason (if not all then most).

      • If we wanted to de-solder the crystal, what would we need to do to tell the 32U4 to use the internal oscillator instead?

        • You can tell the 32U4 to use the internal oscillator even if you don’t desolder it. This is done with fuse bits and an avr programmer. Whenever you upload the bootloader it automatically configures the fusebits (which it gets from the boards.txt file), but you can also set them yourself from a command line. Check out this calculator for figuring out what fuse bit you want to use. Also check out this quick run through about fuse bits in general. If you have any other questions feel free to email techsupport@sparkfun.com

  • Do I need an external programmer?

    • No, the Pro Micro has native USB and the bootloader is designed to program over USB, so you should be fine with just a USB cable

  • Is anyone else having issues getting the board recognized by OSX Yosemite (IDE 1.6)?

    I’ve tried the Troubleshoot (dump IDE, plug out/wait/plug in), other variations, restarted many times… and only ONCE was I able to get my usbcom working. When it did work, I got a “new keyboard” popup per documentation, but also got a second page where it asked me to hit the key to the right of the right-hand shift key… which I just closed. Everything worked fine and was able to get Blink and my own code working. That was yesterday; in countless tries since (or before) it has never worked.

    Incidentally, when it did work, I had a browser open in the background and noticed that the page I was on (the troubleshoot page) scrolled a bit every time I plugged in/out.

    Any ideas? Is this happening to anyone else? I’d really appreciate some help/guidance. Thanks

  • Can a Pro Micro - 5V/16MHz be power with a Voltage of 3.3Volt ?

    • That’s a tricky questions. As a general rule we run our 16MHz AVRs at 5V and our 8MHz AVRs at 3.3V. The reason for this is that the more voltage you give the chip the faster it can run. 16MHz/3.3V is technically out of spec on the ATMega328 (although it does tend to work fine). I believe it is in spec on the ATMega32U4 board though. The regulator on this board will still be 5V, so you would have to hook the 3.3V directly up to the VCC pin and not the RAW pin, but that should work just fine.

  • wirahim / last year * / 1

    What should I do if I want to convert a 5v version to 3.3v version? I need a to operate the chip at 16MHz at 3.3v.

  • Can this board be powered and run through USB port in stead of an external LiPo battery or wall adapter? If yes, can the 5V line on the USB header be connected to Raw/Vcc or is it already connected?

  • Would it be possible to use the adafruit battery backpack with this or is there a sparkfun equivalent?


  • How much current can the digital i/o pin safely push under continuous load?

  • Can someone please share a Fritzing part for this?

  • First thing I did with my Pro Micro 3.3v was try to upload the Examples>04.Communication>SerialCallResponseASCII sketch. I had the Leonardo board selected and now the thing seems bricked. Ideas?

    • I was able to recover my Pro Micro 3.3v using a new Pro Micro 3.3v that I ordered as its replacement! Now they both work. I basically followed these instructions but the wiring was confusing. I used:

      10  -> RST
      16  -> 16
      14  -> 14
      15  -> 15
      VCC -> VCC
      GND -> GND

      …and change the ArduinoISP sketch to

      #define RESET     10

      At this point I got an error when trying to “Burn Bootloader” that said “first mismatch at byte 0x0000 0xfe != 0xce” A little Google-fu lead me to this forum post and just as he said I edited the file:


      and put:


      in the “promicro8.name=SparkFun Pro Micro 3.3V/8MHz” section and then the “Burn Bootloader” function worked. I verified it with the Examples>04.Communication>ASCIITable sketch and it worked.

  • Does this use a .8mm thin PCB like the Pro Mini? https://www.sparkfun.com/products/11114

  • This posting needs some new photos with the inch/cm scale super imposed. BTW, it’s 33mm x 18mm.

  • My chip is really hot and all the lights are on when I plug in the board. The USB port on my computer says it the chip is pulling too much power. Can I reset my board?

    • That does not sound like a software issue, but like a faulty board (probably a short of some kind). Email techsupport@sparkfun.com and they should be able to help you out.

  • Why do you say that it works at 8MHz and in the schematic there is a 16MHz oscillator? Is there an error? If yes which one is wrong? Thank you

    • Sorry, the 5V/16MHz and 3.3V/8MHz versions use the same PCB. The only differences are the voltage regulator and crystal (and a solder jumper). I’m not sure if we have 2 different schematics, but these are populated with a 3.3V regulator and 8MHz crystal.

      • Thanks for the answer! Yes i noticed that, that’s why I didn’t know which one to choose between them because I need 3.3V and 16MHz… Isn’t it possible? If I change the voltage regulator on the one that works at 5V, do you think i can make it work at 3.3V and 16MHz? Thank you

        • With the ATMega32U4 that might actually be in spec, but even if not it should probably work fine. Don’t forget, you can also just put 3.3V on the VCC pin.

          • yes, but then if i connect the USB i get a short circuit, no?

            • Even with them in stock configuration I don’t recommend having a power source on VCC with the USB plugged in. Having 2 power sources on a board is never a good idea. But if they are both 3.3V its probably not going to hurt while programming (don’t forget to open the solder jumper on the board as well).

  • For the same sketch I get: Pro micro Binary sketch size: 34,750 bytes (of a 28,672 byte maximum)

    Arduino Uno Binary sketch size: 32,160 bytes (of a 32,256 byte maximum)

    Why is the sketch bigger and the sketch maximum smaller?

    • Okay, so I’ve learned that the additional sketch size comes from the USB libraries that are needed for the Pro Micro and the smaller maximum sketch size is due to the boot loader.

      All this would have been nice to know before I purchased this board.

      • Thank you for the numbers, this will help others who are already pushing the limits of an Uno.

  • Anyone know how to get the hardware files to work with the 1.5.6 IDE? In the release notes there is a new hardware file protocal / description. I can see the pro-micro in the 1.0.5 environment but NOT in 1.5.6. Looks like Sparkfun will need to provide updated hardware files for the new environment. This is my first time using this particualr board, I love it!! building a remote mounted altimeter using this chip, the BMP-180 and an xBee. Works great except I get the panic screen on my MAC more frequently with this chip that’s why I want to switch over to the newer environment.

  • It seems there’s an error in boards.txt The Efuse bits should be 0xce not 0xfe

  • I’ve been trying to verify that I can re-burn the bootloader (I have my reasons, muhaha..) and it doesn’t work from arduino. I get a verification error. From the command line it works fine… any ideas folks?

  • Following the instructions in the Hookup Guide Tutorial but so far no luck installing driver on Windows 7 64. Downloaded driver ZIP-file from https://github.com/sparkfun/SF32u4_boards. Device is detected properly as ‘USB IO Board’ in Device Manager but when I point the driver installation to the SF32u4_boards-master\driver directory I keep getting ‘Windows was unable to install your USB IO Board… Windows could not find driver software for your device’. Anyone know what’s up?

    • Figured it out with help of this: https://forum.sparkfun.com/viewtopic.php?f=32&t=37026. Sparkfun should update their tutorial and driver (INF) files. The rest of the tutorial looks ok.. I can upload the sample program to the board and it works ok.

  • Hi, I work with the Arduino Pro 3.3V “DEV-10914” and the FDTI basic 3.3V “DEV-09873.” Today, I want to work with Pro Micro 3.3V “DEV-12587” or fio v3 “DEV-11520.” How to flash my new board without the port USB converter 5V/3.3V ?

  • Does anybody know if the Pro Micro can support a display? If yes, what kind of display and how? (what kind of connection and how to program it) I have attached the pro micro with a bluetooth serial port module in order to send some dummy readings to an android app via bluetooth and I would like to have these readings shown on a display as well. Thank you

  • Has anyone run into problems using the EEPROMex library on these Pro Micro boards? I used that library flawlessly on an Arduino Uno, but I think using it bricked by Pro Micro 5V (I was able to recover it by reflashing the bootloader: https://learn.sparkfun.com/tutorials/installing-an-arduino-bootloader/uploading-code—easy-way), but I’m wary of trying again. Any ideas on how to easily use EEPROM memory would be fantastic! Thanks!

  • after my initial prototyping with Pro Mini’s, I bought a couple of Pro Micro units because it would eliminate the external power supply. following the instructions for the Addon files, i was able to program both units (one via a Mac, the other via Linux both with Arduino IDE 1.0.5) using an example from RF24 library to verify my wiring. the functioning setup was disconnected overnight and now neither board is recognized (i.e. the Mac and the Linux setup exhibit the same behavior). i’m stuck. this seems to be a known issue (e.g. http://mrgazz.com/blog/computers/computers-mainmenu-138/hardware-mainmenu-140/sparkfun-arduino-pro-micro-and-linux and https://forums.freebsd.org/viewtopic.php?&t=37505 and https://forum.sparkfun.com/viewtopic.php?f=32&t=37466). is there a documented solution to this?

    • Update: Using windows 7 and arduino IDE 1.0.5 + the above addon files, I tried the recommended remedy for getting into bootloader mode and loading a sketch; i’ve not been able to get into bootloader mode (50+ tries).

      • last update synopsis: i’m able to see/program the boards again, but i don’t know why. long version: after unsuccessfully trying to get the IDE to see the board under windows via the bootloader mode reset x 2 sequence, i rebooted the mac into OS X and noticed that the serial port (/dev/tty.usbmodem1411) has reappeared. i was able to download the blinky test sketch into the board, switch to the second board and perform the same thing. i rebooted the linux and it was able to see the board again. my w-a-g is that there’s an issue with the USB dialect that the board uses.

        • Did you ever determine the cause and resolution? I have MANY styles of 5v Arduinos that appear fine on my Mac. I have exactly two 3.3v devices and neither show up in the IDE, but this one (the DEV-12587) doesn’t even show up in system information.

          When I first connected it, it showed up as a keyboard and I sent a modified blink code to it. Since then I can’t see it in the IDE port list anymore. This is on two different computers (both running Mavericks, though).

          Would love to find a fix.

          • I’m having the same problem. I was programming it one day and all of a sudden it stopped showing up in my Windows 7 Device Manager (regardless of the USB port I was using [I’ve had trouble using it on my USB 3.0 port]). When I do the “double tap” reset trick to get it into bootloader mode, my Windows 7 Device Manager flickers as if it were recognizing a new device, and the Arduino IDE see it on Port 9 for a few seconds. I haven’t been able to successfully upload a sketch to the Arduino while doing this though. I wish we could find a fix.

  • Could you please specify the quiescient current at poiwer down? Thank you

  • I’ve got a few of these, and was wondering if I could convert one of them to 5V by simply changing the Crystal to 16Mhz, soldering the jumper closed, and flashing with the Caterina_promicro16.hex bootloader?

  • I developed HID keyboard using example source.

    However, BIOS does not work on the problem. (Mac, Windows in normal operation.)

  • This is a fantastic deal!

  • I’m looking at the schematic and it looks like there’s either an error in the board or the schematic:

    The silkscreen on the board has pins on the bottom corner labeled 10, 16, 14, 15, A0, etc. The schematic shows those same pins as D10, MOSI, MISO, SCK, A0, etc. This is mostly ok as D16==MOSI and D14==SCK. However, D14 is not the same as MISO. According to the schematic, D14 is connected directly to the RX LED. Either the schematic or the silkscreen should be updated.

    • and PB3(MISO) is Arduino pin D14.

      John in the original post is correct. The silk screen layer and resulting board are incorrect.

    • I think the schematic is wired correctly, but labelled wrongly: PB0(SS) is Arduino pin D17, and PB3(MISO) is Arduino pin D14. The PCB is correct.

    • I agree that the confusing naming is, well, confusing. Basically you’re thinking ‘Pin 14 on the header, that must be the same as D14 in the schematic’, while it’s not. Gets even more fun when you try to figure out which pin number that would be on a various traditional arduino boards :)

  • What type of micro-USB connector are you using on this? It looks MUCH easier to solder than the ones I’ve been messing around with!

    • The easier to solder connectors are not necessarily a good thing. I’ve had several micro-USB connectors snap off of 5V Pro Micros while attaching a USB cable, lifting traces in the process and generally being a big pain to repair. Maybe the solder pads to the left and right of the connector should be made a little larger to give the connector a little more footing on the board.

      • That’s one of the reason for the change. The new boards have a new connector with a more secure footprint to help prevent that accidental removal.

Customer Reviews

3.4 out of 5

Based on 10 ratings:

5 star
4 star
3 star
2 star
1 star

1 of 1 found this helpful:

Small, solid arduino compatible

I used it to drive remote controls, connected to an Nrf24L01 and a couple of pots and buttons. Works very well and lasts a long time with a regular 9v battery.

1 of 1 found this helpful:

Pro Micro - 3.3V/8MHz

Fantastic board. Amazingly compact and powerful for its incredibility small size. Very low power requirements. 1 LiPo cell will power it.

1 of 2 found this helpful:

Great Idea but so so execution

I have only had it for a few weeks so I cannot give a long term evaluation opinion but a few things surface pretty quickly. Initial setup was a bit bumpy but the documentation on the website explains all and you only have to follow thoroughly. The unit is small, light, provides decent functionality. The main issues I have with the unit so far: The micro USB connector… what went wrong there ? This must be the crappiest connector available on the market. I don’t even dare to remove the USB cable once it was plugged in. This connector will undoubtedly rip off the PCB after a few connects/disconnects. In expectation of that it would have been helpful to have the D+ and D- pins broken out so I can access them via header, but no. If this connector comes off it gets messy. Second.. What is the deal with those 5 pins that are not broken out and marked Not Used in the schematic ? I’d rather have access to those pins and have the PCB slightly larger than the way it is now. Timer 0 would be nice to use with two compare outputs (OC0A and OC0B or PB7 and PD0) but one of them is not broken out… Why ? It is still a nice unit but those two issues bother me already. So much for now.

Works great

I love the small form factor and native USB support. I’ve got mine acting as an I2C slave receiving commands from a Raspberry Pi.

Good, not great

Software set up and uploading was pretty straightforward, and it does its job well. - main issue is the flimsy micro USB connector, have to be extremely careful with it

Note for Ubuntu 14.04 users have to add some udev rules so that your OS doesn’t mistake the Pro Micro for a GSM modem (https://forum.arduino.cc/index.php?topic=217910.0)

We’ve tried many different Micro USB connectors to try to resolve the risk of popping the jack off the board. Unfortunately this tiny connector can be very hard to keep stable with such little solder points and without being in a enclosure designed to support the jack. One tip is to carefully tack the jack down with some hot glue. This will at least help support the jack better.

My 5v one is great, the 3v3 never worked

I purchased this back in April 2015 and just finally opened it up (Oct 2015). I developed a small system around the 5v one with a regulator for my 3v3 components (all of them). So I finally have an application now where the 3v3 one is a better fit (just a SATCOM updating system with a venus chip and a dense sensor board). Anyway, I pulled it out, soldered on headers, and plugged it in (alone first) - it didn’t even recognize. The power light shows but the serial port won’t show up and I don’t see any bad solders - note to self: try it before doing any soldering to at least know for the post mortem if I caused it or if it was DOA.

Probably my fault for waiting so long, and I am obviously long past being able to return/exchange it (totally valid). I’m sure the ones that work are great, I can attest to the 5v one being as awesome as most SF products are :)

EDIT: Looks like I left my settings on the 5v/16mhz one - so I’m pretty sure I caused it! Any one know how to reflash the bootloader on these?

Hi, Here’s instructions on how to recover a bricked pro micro. https://learn.sparkfun.com/tutorials/pro-micro–fio-v3-hookup-guide/troubleshooting-and-faq#ts-revive

Did not work

I received the board two weeks ago and it never worked. The board is not recognized at all. Sent an email Friday and still waiting to hear.

You ticket was received after Support was closed for the weekend. Someone will respond to your ticket as soon as possible.

Worked about 5 times

I initially bought the pro micro 3.3v which worked for about 5 uploads then lost connection. Ho Yun “Bobby” Chan, provided excellent support. He got me a refund and recommended the pro mini with FTDI board which worked great. Great support, give Bobby a raise!!

Sorry you had an issue with your Pro Micro. I’m glad Bobby could help you out. He’s an awesome technician, and we appreciate his contributions to our Tech Support team. :) Thanks for the kind words.

works perfectly

I haven’t used it extensively, but this cheap little board worked like a charm for all the small projects I have used it for. It’s tiny enough that you can embed it in any project, but it has enough broken out pins to to almost anything. Also the second hardware Serial proved to be really useful.

0 of 1 found this helpful:

Incredible simple product

When I received it, I simply plugged it in and pulled out my iPhone. Using the official app I was able to simply connect to the device. Wonderful. Cannot wait to get making!