user85689: I'm currently working on a project where you essentially will have multiple Arduinos (1 Uno, multiple Nanos) daisy-chained, only connected through 2 digital pins and one wire for Serial communication (RX Pin -> TX Pin). (The first one is connected via USB to the PC.)
I figured the serial communication between the first Arduino and PC would also be forwarded through the RX and TX pins, but that doesn't seem to be the case.
As it's fairly tedious to update one at a time, is there a way of updating all of them at once, using only the one-way serial communication wire?
EDIT: Yeh so like imma just add a USB Port to every single component to the chain to update separately, and update every single one of them separately.

user65761: Try connecting only the RX and reset pins. Serial programming is done by the bootloader, but it needs to be switched into programming mode first, which is done by resetting the chip and then sending a special code to the RX pin within a certain time period. When you program through the serial port (as you are doing with the Uno) the FTDI chip drives this pin for you, but you'll need to cascade that reset signal through to the other chips as well. This still isn't guarenteed to work 100%, because it depends on a number of other factors as well, but at least you'll have a chance.
When I've done stuff like this commercially I've programmed via the ICSP connector instead and made programming rigs out of spring-loaded pin connectors that the target boards simply clip onto. If you're planning on doing this with any degree of frequency then I'd recommend investing a bit of time into doing this yourself.
UPDATE: ok, I can see now why this isn't working. The Nano's CH340 usb-to-serial chip is pulling RX low, preventing the data stream from being read. Would work fine with standalone chips, obviously doesn't on the Nano.
I think your best option is to use ICSP. It's an extra pin, but if you breadboard then it shouldn't make any difference. Plus there are a number of advantages to doing so, including faster programming, the ability to upload/replace the bootloader and the ability to change fuses (e.g. to protect your firmware or disable the bootloader altogether to give you app more Flash space etc).
If you don't already know how to do this then the layout is:

Connect Uno SCLK(D13)/MOSI(D11)/GND pins to all the corresponding Nano pins.
Connect Uno D10 to all the Nano's RESET pins.
Connect Uno MISO(D12) to only the first Nano's MISO pin.
Connect Uno VIN to all the Nano VINs (you don't want all the Nanos being driven from the Uno's regulator)

Should wind up looking something like this:

Prepare the Uno for programming:

Set your IDE board type to Uno
Set IDE programmer type to "AVR ISP"
Upload IDE ArduinoISP sketch to the Uno

And now you're ready to program the Nanos:

Set your IDE board type to Nano
Set IDE programmer type to "Arduino as ISP"
Upload your Nano sketch using "Upload Using Programmer"

Just tried it now with the two Nanos in the photo, worked fine.

85689: <p>I'm currently working on a project where you essentially will have multiple Arduinos (1 Uno, multiple Nanos) daisy-chained, only connected through 2 digital pins and one wire for Serial communication (RX Pin -&gt; TX Pin). (The first one is connected via USB to the PC.)</p>
<p>I figured the serial communication between the first Arduino and PC would also be forwarded through the RX and TX pins, but that doesn't seem to be the case.</p>
<p>As it's fairly tedious to update one at a time, is there a way of updating all of them at once, using only the one-way serial communication wire?</p>
<p>EDIT: Yeh so like imma just add a USB Port to every single component to the chain to update separately, and update every single one of them separately.</p>
 65761: <p>Try connecting only the RX and reset pins. Serial programming is done by the bootloader, but it needs to be switched into programming mode first, which is done by resetting the chip and then sending a special code to the RX pin within a certain time period. When you program through the serial port (as you are doing with the Uno) the FTDI chip drives this pin for you, but you'll need to cascade that reset signal through to the other chips as well. This still isn't guarenteed to work 100%, because it depends on a number of other factors as well, but at least you'll have a chance.</p>
<p>When I've done stuff like this commercially I've programmed via the ICSP connector instead and made programming rigs out of spring-loaded pin connectors that the target boards simply clip onto. If you're planning on doing this with any degree of frequency then I'd recommend investing a bit of time into doing this yourself.</p>
<p>UPDATE: ok, I can see now why this isn't working. The Nano's CH340 usb-to-serial chip is pulling RX low, preventing the data stream from being read. Would work fine with standalone chips, obviously doesn't on the Nano.</p>
<p>I think your best option is to use ICSP. It's an extra pin, but if you breadboard then it shouldn't make any difference. Plus there are a number of advantages to doing so, including faster programming, the ability to upload/replace the bootloader and the ability to change fuses (e.g. to protect your firmware or disable the bootloader altogether to give you app more Flash space etc).</p>
<p>If you don't already know how to do this then the layout is:</p>
<ul>
<li>Connect Uno SCLK(D13)/MOSI(D11)/GND pins to all the corresponding Nano pins.</li>
<li>Connect Uno D10 to all the Nano's RESET pins.</li>
<li>Connect Uno MISO(D12) to only the first Nano's MISO pin.</li>
<li>Connect Uno VIN to all the Nano VINs (you don't want all the Nanos being driven from the Uno's regulator)</li>
</ul>
<p>Should wind up looking something like this:</p>
<p><a href="https://i.stack.imgur.com/POpgJ.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/POpgJ.jpg" alt="enter image description here" /></a></p>
<p>Prepare the Uno for programming:</p>
<ul>
<li>Set your IDE board type to Uno</li>
<li>Set IDE programmer type to &quot;AVR ISP&quot;</li>
<li>Upload IDE ArduinoISP sketch to the Uno</li>
</ul>
<p>And now you're ready to program the Nanos:</p>
<ul>
<li>Set your IDE board type to Nano</li>
<li>Set IDE programmer type to &quot;Arduino as ISP&quot;</li>
<li>Upload your Nano sketch using &quot;Upload Using Programmer&quot;</li>
</ul>
<p>Just tried it now with the two Nanos in the photo, worked fine.</p>
