Started 19th February 2022
I had a phase of programming Arduino on Raspberry Pi, and whilst I am normally good about such things, I short circuited the 5 V power supply a few times. This had the effect of doing a Pi reset which was irritating. I wondered if an isolated USB connector would be the solution.
The one shown below is common, it is based around the Analog Devices ADUM 3160.
I found that Windows repeatedly did not want to know this item "USB Device not recognised" (The last USB device you connected to this computer malfunctioned, and Windows does not recognise it). To get it to work I had to select high speed mode with the switch (set to one) and without the Arduino connected plug it into the PC (blue LED lights up) and then insert the Arduino plug (later only getting the speed right seemed necessary).
There is a good technical explanation in this eevblog post which reveals that the components bridging the two sides are an opto-isolator to copy across the speed setting and an isolated power supply, the latter explaining why the red LED lights up despite nothing being connected to that side.
This device does allow programming via Arduino. Originally I did not expect it, but no separate power supply for the Arduino is needed. Turn on the Pi with Arduino connected and things just work. Once in a while the Pi fails to see the USB isolator, but that happens on Windows with a normal Arduino USB connection.
Another approach is to use an USB to serial converter (classic example being the FTDI chip) and then some sort of isolator on the serial lines.
This one uses the ADuM3200/ADuM3201 dual-channel, digital isolator based on the Analog Devices, iCoupler® technology. There appears to be the same sort of isolated power supply. On the far right there are three, three pin surface mount packages. The top one "662K" is a 3.3 V regulator, the ones marked A7 are dual diodes clamping the input/output. TXA is "transmit data available".
I do not expect this device to work with Arduino because usually the serial port DTR line is used to perform a reset as part of the programming process and this isolator only conveys serial port data signals.