Introduction: Uploading Sketches to Arduino Pro Mini Using Arduino UNO Board (without Removing Atmel Chip)
This outlines a procedure for making use of Arduino UNO's built-in USB to Serial(TTL) converter to upload sketches to Arduino Pro Mini board without the need for removing the UNO's Atmel micro-controller chip. This is useful for those starting out with Arduino UNO board (with soldered Atmel chip) and want to explore Pro Mini for a project with what they have.
The principle is simple and involves following steps:
1) Disable the serial communication port in UNO's onboard micro-controller by uploading the attached sketch(serial-diable.ino) to UNO board
2) After the above step, disable the auto reset feature in UNO board (to avoid the serial port getting activated again) by connecting a 10 microfarad Electrolytic capacitor across UNO board's Reset pin and GND pin (refer to the attached image above). The positive terminal of the capacitor should be connected to reset pin and negative terminal to the GND pin. This is one of the options recommended to disable auto reset as outlined in this article
3) Connect TX, RX , VCC and GND pins of UNO board to the Pro Mini's TX , RX, VCC and GND pins in the usual way.
4) Choose the board as "Arduino Pro or Pro Mini" in Arduino IDE
5) You can start uploading sketches to Pro Mini now. Just press and release the Pro Mini's reset button just after choosing the upload from IDE.
After the first three steps are done, the USB to serial/TTL converter in the Uno board can freely communicate and upload sketches to the Pro Mini from a PC connected to the USB port of UNO board . Also you can continue to use the UNO board as a simple USB to serial converter as long as the 10 microfarad capacitor stays connected . (even after powering off and on) between its reset and ground pins.
For step 1 above, make use of the sketch listed below:( Also, attached as a file )
#define ledbrd 13 #define rxpin 0 #define txpin 1
void setup() {
pinMode(ledbrd, OUTPUT); // initialize digital pin 13 as an output. Serial.end(); // disable the serial port pinMode(rxpin, INPUT); //set the serial rx pin as input for high impedance pinMode(txpin,INPUT); // set the serial tx pin as input for high impedance }
// Very low duty cycle blink to indicate idle mode of UNO board void loop() { digitalWrite(ledbrd, HIGH); // turn the LED on delay(1); // wait for a very short (minimum) time digitalWrite(ledbrd, LOW); // turn the LED off delay(4000); // wait for many seconds }
If you desire auto reset feature for Pro Mini(to avoid the manual press of reset button on Pro Mini every time) to be enabled before uploading the sketch every time, it can be done by following two steps:
I. Extend the DTR line track (from the USB to serial converter chip in UNO board) to the unused pin (left most pin in bottom connector) in the UNO connector by soldering an enamelled copper wire(after removing the insulation from the two tips). Refer to the attached image for details
II. Connect the above extended DTR pin of UNO board to the DTR pin of the Pro Mini board.
The above modification will not affect the normal functioning of the UNO board.
In order to make use of the UNO board normally, just remove the 10 microfarad capacitor connected across its reset and ground pins and remove all connections to the Pro mini board.
UPDATE 1: Just found that this works even without the second step i.e. without connecting the 10 microfarad capacitor as long as one chooses the target board as 'Arduino Pro or Pro mini" . So it might be that the UNO's bootloader is looking for a specific board type on the received data initially and if it is not received, the UNO board control will go to the sketch loaded (in this case the 'serial-disable' sketch which disables the serial port) without sending anything on the TX line
UPDATE 2: Also found that just connecting the reset pin of UNO board to Ground directly using jumper is sufficient to achieve this functionality.This would not need any sketch or capacitor !! But I am not very sure whether this can be recommended fully for use for long duration for debugging etc. (since it keeps the UNO Board on reset for a long duration)
14 Comments
8 months ago
Still not succeeding with upload to pro-mini. I tried holding the RESET on the MINI but that did not succeed. I trried uploading through FTDI 232 and FTDI "BASIC" (Sparkfun). "Cannot find programmer" or lack of sync. I tried both combinations of RX TX (i.e., opposing or matching). Does the attached image show an error in wiring?
Thank you your help; Obviously, I am doing something wrong.
Added info; The UNO I have does not match the illustration in this Instructable item. PLease advise me as to how to use this UNO (added illustratoin attached). Thaks. Tom Kane
6 years ago
Thanks very much, I made it with no troubles. I didn't upload any code to the Uno and just used the jumper from Reset to Gnd (your Update 2) and worked like a charm. Well done!
7 years ago
I am attempting the same procedure but with an ATMega328-PU DIP chip - will it work?
7 years ago
you're a life saver !!!
THANK YOU!!!!!!
7 years ago
i just found out that if you select the pro mini from the board list and hold reset on the mini till it says uploading it works fine, just uploaded blink to my uno and a faster blink to my pro mini and all i had to do other than selecting the right board and erasing a zero was hold the reset button on the mini and release it when it said uploading, easy as can be unless someone makes a way to link the auto reset together
Reply 7 years ago
This really works. Thanks a lot!
7 years ago
Awesome Project , really nice
check this one out :
https://www.instructables.com/id/Arduino-Pro-Mini-Stand-Make-It-Reusable/
7 years ago
A short note on programming 3.3v pro with the uno:
Based on atmel spec's absolute max ratings, no pin should receive above Vcc +0.5v (in case 3.3v Pro his is 3.8v), thus by simply connecting as advised above can damage your little board. Go-around is by using a simple voltage divider resistance pair on the RX side.
To be able to use it with SMC Uno, reset pin should be wired to gnd. This is essential to keep the Uno "quite" thus their HIGH levels could also be harmfull for the Pro. So make sure RST pin is wired before powering up this setup.
Reply 7 years ago
what value of resistor is used in the voltage divider? can't clearly read it.. thanks in advance
Reply 7 years ago
I have used a 1k resistor pair. The point is here not to overload the output of the usb coupling ic, and be at least an order above digital pin input resistance.
7 years ago
will this work on Arduino UNO that has a removable Atmel chip also there is no DTR on the uno board and recommended to connect from DTR mini to reset on the uno.
Please advise
Reply 7 years ago
The procedures discussed here will work with UNO board with removable chip. If you cannot locate the DTR signal track from USB to serial converter chip on UNO board ( so as to connect to the DTR pin of Pro Mini) , the procedure would still work but you have to reset the Pro mini board manually just prior to the upload of the sketch.
8 years ago on Introduction
just what i was looking for
thanks
8 years ago on Introduction
Thanks!