At the moment of writing we are using the hardware depicted in the following picture to implement the Nmea3Wifi multiplexer. As you know we have 3 versions of the multiplexer: SMD, TH and KIT. Actually we have 2 versions as the TH and KIT are the same. And as you know the software is the same for all the versions. In this picture we show a possible variation of the hardware for the TH version. It uses 3 transistors (called here the 3Q version) instead of the HCPL2731 dual channel optocoupler.
One of the reasons we offer the TH version is that it is very easy to replace a component, in particular if the component is mounted in a socket. In the case of the SMD unit we need special tools to replace a component. The reason we are using the HCPL2731 instead of the 3Q is that we could not find a suitable socket to accept the transistors. In addition the HCPL2731 offers opto-isolation. We did not not test very strongly the 3Q but we know it shows very sharp waveforms in relation to the HCPL2731. Yet we have used the HCPL2731 with baud rates up to 38400 and we rarely had problems with switching speed. As SeaTalk1 works at an equivalent baud of 4800 the HCPL2731 is perfectly adequate on this respect.
We were very carefully with the SMD version with regard to user mishandling of the connecting wires. Namely we were very worried that an accidental short circuit could happen between the 12V and the DATA line. That made us include resistor R19 of 220R. If Q1 saturates 12V will across 220R will produce a current of about 60mA. Both Q1 and R19 can support such an high current. A drawback is that the DATA line does not comes exactly to 0.2 V when DATA is LOW but at about 1V depending on the loads that exist in the SeaTalk1 bus.
We could had a similar resistor in series with pin6 of the HCPL2731 IC. We did not by several reasons. On one hand it is very easy to replace the IC in case it permanently fails due to a short circuit between 12V and DATA. On another hand the collector in pin6 is capable of supporting an average of 60mA. And, finally, pin6 is an open circuit when the multiplexer is not operating. The transistor that has pin6 as its collector only conducts when GPIO17 from the ESP32 chip is HIGH. The only way that GPIO17 goes HIGH is when the multiplexer starts transmission on the SeaTalk1 bus.
We do not exclude the possibility that, in future, we will add a small resistance (as R19) in series with pin6. And in the case of the 3Q circuit, if by any reason we choose to offer a version based on it, we will possible include such a resistor as well, because if the transistor fails we would need to de-solder and solder a new transistor.