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: 9 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.
Based on 13 ratings:
1 of 1 found this helpful:
Fantastic board. Amazingly compact and powerful for its incredibility small size. Very low power requirements. 1 LiPo cell will power it.
1 of 1 found this helpful:
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 2 found this helpful:
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.
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.
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.
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.
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.
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
Compared to the more popular Arduino boards, this board is a perfect feature combination for battery-powered devices and for miniature devices. It runs on much less power giving a longer battery life, it accepts any voltage but it also accepts much lower voltage meaning fewer cells and more versatility. It’s power regulator is efficient, and it outputs regulated-3.3v to power the other components (which typically results in even more total power savings), and this also eliminates the need for level conversion circuitry (because it seems like everything is 3.3v these days). It’s significantly smaller than even the Arduino nano, and with the aforementioned fewer cells in the battery pack (due to that lower operating voltage), it allows either smaller batteries or greater capacity batteries. I also like the slimmer and more convenient/universal micro-USB connector, which works with standard phone cables.
The downside is that it seems the hardware serial RX TX pins share the USB serial, so when you are using the serial monitor to debug, you’re going to prevent the hardware serial from functioning. That can be pretty inconvenient, but a small price for the advantages, and I’ve had no problems using a soft serial connection instead. The chip’s on-board USB also causes my computer’s detected com port number to change during the upload/reboot sequence, which can also be annoying - it often adds more mouseclicks to the process, though doesn’t actually affect functionality in any way.
This is now my favorite board by far. If you’re making something that wants to be battery-powered or tiny or both, this seems like the clear frontrunner.
This is the worst Arduino I have ever owned. It just makes your life miserable as you discover that the board does not program because the mini USB micro port disconnects the data lines every time it is touched. I bought two of these Pro Micros and the behavior is the same even with multiple USB cables.
The nail in the coffin is the driver. The serial port changes every time I program the board, so I have to re-select it each time. And this all happens when nothing is connected to the board.
Hmmm, that’s not normal behavior all for these boards. If you’re running a Mac with OS X, there may be some driver conflict there, but the data lines shouldn’t be disconnecting whenever the port is touched. I would recommend getting in touch with out tech support team, they should be able to assist you with your issues pertaining to this board.
Using 10 of these for a handheld RFID inventory project (SPI interface to RFID chip and also USB serial to labview application). During programming the serial port disconnects from the driver then reconnects, sometimes causing my windows environment to change the port ID, a minor annoyance and only during programming. The MISO/MOSI/CLK/SS pins are different from other arduino IC variations but located same place on the pcb. To avoid damaging the micro USB connector we use a second USB chassis mounted jack on the handheld case we designed. Overall a good project board for inexpensive 3.3v peripherals.
0 of 1 found this helpful:
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!
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.
Timing Issues w/ USB Communication through CDC
Interrupts Atmega32u4’s built in CDC driver for USB communication can have timing issues when messing with the watchdog timer, sleep modes, and timer interrupts. I am unsure of how to fix this issue if you continue to use code that interferes with the CDC. I recommend trying a different method than using the interrupt timers.
Wrong Bootloader It’s possible to brick your Pro Micro 3.3V/8MHz if you used the wrong board selection with the wrong frequency. If you upload the wrong frequency, the IC will not be able to understand any new code that is being uploaded. It expects to have code that is compiled for another bootloader, instead of using the 8MHz frequency with the oscillator.
When either of these cases happens, the device manager is not able to recognize the device and is usually seen as an “unknown device” when the microcontroller runs the sketch. There are ways to recover the an Atmega32U4 (i.e. LilyPad Arduino USB - Atmega32U4 board, FioV3 - Atmega32U4, Pro Micro 5V/16Mhz, Pro Micro - 3.3V/8Mhz, etc) if this happens. Check below for more information:
A.) Upload when LilyPad USB with Atmega32U4/Pro Micro/FioV3 is still in Bootloader Mode
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 explained in the Troubleshooting sections labeled as Reset to Bootloader and How to Revive a “Bricked” Pro Micro => https://learn.sparkfun.com/tutorials/pro-micro–fio-v3-hookup-guide/troubleshooting-and-faq.
1.) Open the Arduino IDE.
2.) Choose a simple code to upload on the Arduino. I used the blink test code from the hookup guide [ https://learn.sparkfun.com/tutorials/pro-micro–fio-v3-hookup-guide#example-1-blinkies ] to upload.
3.) Check your Tools>Port menu for the list of COM ports when the Arduino is connected. You will probably not see it in the list.
4.) Click somewhere else to stop viewing the list of COM ports.
5.) Ground the RST button 2x as stated in the Troubleshooting and FAQ [ https://cdn.sparkfun.com/assets/6/d/¾/a/523c8e23757b7fbe5f8b4584.png ].
6.) Re-open the Tools>Port menu to view the list of COM ports again to see what the Pro Micro enumerates to when its in its bootloader. There is an 8 second window to view the COM port when the board is in bootloader mode.
Note: Feel free to use the device manager at this step. Opening up the device manager on your operating system will help to see when the Arduino pops up and disappears.
7.) Select the COM port that the Pro Micro is on before it disappears again.
8.) Hit the Upload button to compile and upload.
9.) Wait a few seconds for the Arduino IDE to compile code. The progress bar should be just over the halfway mark.
Note: On Windows, this takes about 20 seconds to compile and upload. The device will show up as “SparkFun Pro Micro (COM##)”. Trying this on a Mac seemed a little faster to compile and upload.
10.) Hit the reset button twice again to place the Pro Micro in bootloader mode while the Arduino IDE is uploading.
11.) If successful, you will have no error messages the Arduino IDE will tell you that it is “Done uploading.”
After selecting the correct board definition and timing the double reset method correctly, I was able to upload successfully. It took me a couple of tries before I could get this right because of the timing. You should not need to go through this recovery procedure for subsequent uploads unless you brick the Atmega32U4 again.
B.) Outdated or Corrupt drivers
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.
C.) Reinstalling the Bootloader
As a last result, you can always try to reinstall the bootloader. The tutorial is designed for the Arduino Uno, but it should work for Atmega32U4’s bootloaded with Arduino. 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 an AVR 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 target device (i.e. LilyPad Arduino USB, Pro Micro, Fio V3, Makey Makey, or Leonardo) to reflash the bootloader. 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).
1.): Get a programmer
This you can do by following the directions in the tutorial.
2): Connect the programmer/Arduino as ISP to the Target Device
You will need to connect to the same pins to your target device (i.e. LilyPad Arduino - USB, Pro Micro, Fio V3, Makey Makey, or Leonardo). On the Leonardo you can connect it just like the Uno. The LilyPad Arduino - USB has small ICSP pins. I managed to solder wires directly to the pins for access. 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:
ICSP Pins <=> Pro Micro Pin GND <=> GND RST <=> RST VCC <=> VCC MISO <=> D14 SCK <=> D15 MOSI <=> D16
Note: There is a silkscreen error and D17 is labeled D14 on the Pro Micro.
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 (LilyPad Arduino - USB, 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. You can find the latest board definitions from the SparkFun GitHub Repository [ https://github.com/sparkfun/Arduino_Boards ].
If you have problems uploading code with this error using the Pro Micro on a Linux machine:
avrdude: ser_recv(): programmer is not responding avrdude: butterfly_recv(): programmer is not responding
try following these instructions from Arduino => http://forum.arduino.cc/index.php?topic=217910.0. They need to change some udev rules. There was a customer had the same problem but got it working after changing the settings.
By connecting to the FioV3 at a baud rate of 1200 and closing the COM port, this will initiate a software reset with the Atmega32U4 just like the Arduino Leonardo (as stated in the Automatic (Software) Reset and Bootloader Initiation for a Leonardo => https://www.arduino.cc/en/Main/ArduinoBoardLeonardo ) .
The serialEvent() function is not compatible with the Esplora, Leonardo, or Micro” that uses the Atmega32U4 https://www.arduino.cc/en/Reference/SerialEvent.
There was a customer that 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.
The 3.3V/8MHz Pro Micro schematic says that it is using a 16Mhz crystal oscillator. However, our production populates the board with an 8MHz crystal oscillator. The reason for this is because our production uses the same board layout as the 5V/16Mhz Pro Micro. The only major differences between the Pro Micros are the voltage regulator, solder jumper, and crystal.