I wanted to re-purpose an Arduino Pro Mini that I hadn't used for a while, so - as I do with all the Arduinos I re-use - I tried to upload the Blink sketch to return it to a sort of 'default' state and to prove to myself that it is still working.. This failed miserably, and led to a fair bit of wasted time checking connections, the voltage of the Pro Mini and using a couple of different programmers, and so on.
So I thought it may be useful to someone if I briefly explained what I did to fix the issue I had, and return the Pro Mini to a working state. It may also be of use if your Pro Mini has arrived without a bootloader.
Step 1: Stuff
Obviously, an Arduino Pro Mini that you can't upload sketches to
Arduino Uno (can be done with other variants)
6 male-to-male breadboard patch cables
FTDI programmer and cable (to check the fix has worked)
Step 2: Symptoms and Investigation
I normally upload sketches to to a Pro Mini using a USB-Serial FTDI programmer, and plug the Pro Mini opposite it on a breadboard. This way, the pins match up and it does away with any messy cabling. This arrangement has worked without issue numerous times in the past.
This time, however, when I tried to upload the Blink sketch, the Arduino IDE started bleating on about the "programmer not responding" and giving an avrdude error:-
avrdude:stk500_recv():programmer is not responding (sorry, I didn't screenshot it at the time)
I also noticed that the LEDs on the FTDI programmer only flickered a couple of times, when they normally go berserk during a successful upload.
- Checked the connections on the breadboard - looked fine.
- Tried another programmer (same model) - no change.
- Changed USB port on the pc - waste of time
- Updated and repaired the drives for the FTDI device - no difference
- Tried another Pro Mini in the same arrangement - worked like a dream.
Aha. Must be the Pro Mini. I tried to think back to the last time I used this one but it was more than a day ago, so I had little chance. I was about to resort to the Internet when I did remember (it works sometimes) that I had an ESP8266 arrive with a corrupted bootloader and had similar issues. The more I though about it, the more it made sense and tied in with what i was seeing.
Step 3: Fix
There are a number of ways to burn a bootloader to an Arduino device, but the one I used (for convenience and speed) was to use an Arduino Uno as an ISP (In-System Programmer). This is well documented and I've used it a few times for different things.
First step is to set up the Uno to be an ISP:-
- Connect the Uno to the PC (using USB)
- Open the Arduino IDE (I'm using v1.6.11)
- Check the board: Tools Menu -> Board ->Arduino Uno
- Check the port: Tools Menu -> Serial Port -> [select the port for the Uno]
- Load the ISP sketch: File menu -> Examples -> ArduinoISP ->ArduinoISP
- Upload - once complete, the Uno is configured as ISP
- Remove connection from Uno (power off)
Second Step is to connect the two devices for programming:-
- UnoPro Mini
- 5V (vcc) ------------------- VCC
- GND ------------------------GND
- Pin 10 ---------------------- RST
- Pin 11 ---------------------- Pin 11
- Pin12 ---------------------- Pin 12
- Pin 13 ------------------- -- Pin 13
The connections are straightforward and, as can be seen in the photograph, I used a breadboard. I was going to include a Fritzing diagram, but it was more confusing.
Third step is to burn the bootloader:-
- Connect the Uno to the PC (Arduino IDE still open)
- Change the board: Tools Menu -> Board ->Arduino Pro or Pro Mini
- Check the speed and processor: Tools Menu -> Processor -> ATmega328 (5V, 16MHz)
- Choose the programmer> Tools Menu -> Programmer -> Arduino as ISP
- Burn the bootloader: Tools Menu -> Burn Bootloader
The LEDs on the two Arduinos should now perform a synchronised dance while the bootloader is written - only takes a few seconds, and then the IDE shows a completed message.
Fourth step, if you want, is to perform a test upload using your FTDI programmer. If the new bootloader is working, you should see the LEDs on the FTDI programmer and the Pro Mini showing activity.
Step 4: Wrap Up
I hope I've made it easy to see that, if you come across an Arduino or similar device whose bootloader is messed up, it isn't too arduous a task to burn a new one. As long as you have access to a Uno or similar, the IDE and some cables, you can be on the way to uploading the sketch for your next Evil Genius weapon or World Domination IoT thing in next to no time.
This is my first Instructable. I've enjoyed putting it together, and I'd be happy to receive any constructive comments or criticism.