Programming Arduino NANO with Arduino UNO as ArduinoISP?

Hello Arduino community.

I have an Arduino Nano laying around, collecting dust, because it has a cheap FTDI chip on it and I have to reinstall the driver every time I want to program it. So generally, I prefer to use my Uno's because they cooperate with me..

However, I am now working on a project that I don't plan on disassembling for parts on a later project, so this is the perfect chance to make use of that darn Nano so that I don`t have to worry about that anymore.

I have been googling around for a way to program my Nano, and everything seems to come down to reinstalling the FTDI driver, with handy videos like these;

Its an effective way, until I reboot my PC. Then I`ll have to redo it all again.

I was hoping for a way to use one of my Uno's as an ISP to upload my code to it. The downside is that every google result seems to think I want to use my Nano as the ISP to program another Arduino board, or they give me results like these;

And I don't really understand what I am doing anymore.

Is it at all possible to use my Uno to program my Nano in a breadboard setup?
Do I have to give it all up and just surrender to re-installing that driver every time I spot a flaw in my code?

If anyone could help me out, it would be greatly appreciated.

Seems to me that the problem is figuring out why you would ever need to re-install the FTDI driver.

The best solution would be to install Linux Mint as a dual boot and use that always as your Arduino IDE platform.

The driver issue is probably the counterfeit FTDI thing (I only use boards with CH340G for serial, or 16u2, for this reason).

Using linux is not a great solution to recommend to the general population - Most people are not comfortable working in a linux environment. I'm pretty sure the majority of us on here develop on Windows.

I'm not sure what the confusion with the ISP programming is... you connect the SPI pins of the two boards together (digital pins 11 through 13 - one-to-one), and pin 10 of the one acting as programmer to the reset pin of the target - and ground to ground, 5v to 5v. On the programmer, after uploading Arduino as ISP, you put a capacitor (10uf is the commonly cited value, but just about anything larger than 1uF should do the trick) to disable the autoreset. Then you select the proper COM port and board (for the target), programmer Arduino as ISP - and use Upload using Programmer to upload your sketch (note that this removes the bootloader from the target - to upload over serial in the future, you would need to connect to ISP programmer and do "burn bootloader")

DrAzzy:
Most people are not comfortable working in a Linux environment.

You call Windoze 10 "comfortable"? :astonished: :astonished: :astonished:

Linux Mint presents an interface very much like Windoze, just runs more reliably and smoothly. Software installation from the repositories is ridiculously smooth though admittedly the Arduino IDE is not being kept up to date in the repository and you do have to install it "manually".

The only reason ever to use Windoze is the reason you do. That you have some proprietary software you need which has unfortunately been written for Windoze. Even Steve Gibson is regretting being stuck to it.

DrAzzy:
you connect the SPI pins of the two boards together (digital pins 11 through 13 - one-to-one), and pin 10 of the one acting as programmer to the reset pin of the target - and ground to ground, 5v to 5v. On the programmer, after uploading Arduino as ISP, you put a capacitor (10uf is the commonly cited value, but just about anything larger than 1uF should do the trick) to disable the autoreset. Then you select the proper COM port and board (for the target), programmer Arduino as ISP - and use Upload using Programmer to upload your sketch (note that this removes the bootloader from the target - to upload over serial in the future, you would need to connect to ISP programmer and do "burn bootloader")

See, somehow none of the sources that I find seemed to think it was a good idea to write it down like this.
I`ll give this a shot tomorrow, when im back in the workshop.

Thanks for the replies folks!

All you hae to do is stop Windows from updating the driver and you're fine. How to temporarily prevent a Windows or driver update from reinstalling in Windows 10 which is as temporary as you make it. Works a treat with a PL2303 under Windows 10 :slight_smile: But be sure to delete the whole newer driver from the machine.

If your UNO does not have a smd mcu I think you can try this :

  1. remove the ATmega328 chip from the socket
  2. connect 5V,GND,D0,D1 and reset of the 2 boards
  3. upload your sketch

I don't see why it should not work, even if I have not tried.

Cheers, Ale

So I uploaded ArduinoISP to my Uno, hooked up my Nano as seen in this image, but I get sync errors when I try to upload the blink sketch.
"avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x1c"

I`m googling it as we speek, but maybe one of you folks have an immediate suggestion what went wrong.

Also, my on board L led's keep blinking in a short-short-long tempo. Since its most likely been over a year since I last used this board, I wonder if its a standard protocol or something I did.

Your capacitor appears to be plugged into "IOR..." instead of Reset.

DrAzzy:
<...>
Using linux is not a great solution to recommend to the general population - Most people are not comfortable working in a linux environment. I'm pretty sure the majority of us on here develop on Windows.
<...>

I'm a retired MCSE and the FTDI issue about drove me nuts working through my Chinese clones. So, an old notebook too old for Win8.1 was converted to Linux Mint. Wow. Anyone that has ever been exposed to Win-XP can use Mint for GUI programs in about 5 minutes. A very nice side benefit is that the OS breathes new performance into older hardware.

Now, my wife uses Win 8.1 @work and is entirely comfortable using Linux Mint 17.3... mostly for browsing or playing music from our home network (Unbuntu.)

I do not disagree with your assessment, but Linux has come a long, long way... these days I di all of my ESP8266 and STM32 and AVR development on Linux.

Ray
ex-MCSE

mrburnette:
... Wow. ...

Good summary.

Paul__B:
Your capacitor appears to be plugged into "IOR..." instead of Reset.

Extra reference image of my situation
It seems to be a perspective problem, plus the fact that my Uno's have an (seemingly unused) slot extra next to the IOREF.
I also uploaded the ArduinoISP sketch to my Uno, and as far as I understand from my datasheet, I hooked up everything correctly to the Nano.
Do I need to burn a bootloader to my Nano first? (Not according to what I find on other sources, but it never hurts to ask)

mrburnette:
... I do not disagree with your assessment, but Linux has come a long, long way... these days I di all of my ESP8266 and STM32 and AVR development on Linux....

Not that I do not find this fascinating etc, but could we prevent the continuation of this conversation in this topic?
Id like to make sure everything is on-topic as much as possible, and switching to Linux for a Nano that I`ll use for this project (and never again) is quite a big step for me, haha.

So please, all Windows10 based solutions and suggestions are welcome.

Filecreator:
Do I need to burn a bootloader to my Nano first? (Not according to what I find on other sources, but it never hurts to ask)

No.

Edit: However, you do need to modify the fuses. They need to be changed so the reset vector does not point to where the bootloader used to be.

So, I tested what I suggest in reply #6, and was not working, because the cheap nano clone that I have has the RX led connected to pin 0. To let it work I have to add a PNP transitor with collector to ground, emitter to nano pin 0 and base to UNO pin 0, pin 1 straight connected to the 2 board. So if you wish you can give it a try. I used a bc327, but any small pnp transistor should work.

Cheers, Ale.

P.S.: Of course in this case you don't use the UNo as ISP but only use the serial interface of the UNO to connect to the nano, so remove the cap from the reset!

Maybe stupid question, you you use Upload using programmer when you try to program the Nano?

Filecreator:
So please, all Windows10 based solutions and suggestions are welcome.

See post 5 :wink: Works a treat.

ilguargua:
So, I tested what I suggest in reply #6, and was not working, because the cheap nano clone that I have has the RX led connected to pin 0. To let it work I have to add a PNP transitor with collector to ground, emitter to nano pin 0 and base to UNO pin 0, pin 1 straight connected to the 2 board. So if you wish you can give it a try. I used a bc327, but any small pnp transistor should work.

Cheers, Ale.

P.S.: Of course in this case you don't use the UNo as ISP but only use the serial interface of the UNO to connect to the nano, so remove the cap from the reset!

It seems that I am still getting errors, did I set everything up correctly?

At first I thought it was because I didnt remove the connections from D10 to D13, but it seems that I kept getting the error even after just connecting it to the RX and TX.
Did I miss something here? I even used the same PNP transistor as you mentioned.

It seems missing the reset connection between the 2 boards. And also check if rx led is blinking (even shortly an dim) while you try to upload.

Cheers, Ale

Edit: just checked better your 2° photo, you must remove the AT mega 328 from the socket on UNO, otherwise will never work!

ilguargua:
Edit: just checked better your 2° photo, you must remove the AT mega 328 from the socket on UNO, otherwise will never work!

To get an Uno to act as a serial relay, connecting RESET to GND on the Uno is all that is necessary. Removing the processor from the Uno is not necessary.

And how do you reset the other board?

Cheers, Ale.

Finger. :slight_smile:

Good point about auto-reset. If you want it, the processor has to be removed.

However, this was the stated goal...

I was hoping for a way to use one of my Uno's as an ISP to upload my code to it.