Is there a currently accepted "standard" for software serial emulation?

Or a more pointed question: what incarnation of softwareserial would you recommend for my specific situation?

I have a "master" nano that connects to a raspberry pi over (hardware) serial. That nano needs to communicate with two other nanos, and it would be nice if I could use a simple serial interface to do so.

So my plan is that the master nano will be reading/writing (relatively sparse) messages across 3 serial instances (one hardware, two software), and each other nano will be reading/writing on a single software serial instance (each).

I currently set up some example sketches, with a child nano sending some messages to the master. It wasn't "working" (it should "turn on an LED when it receives a message"), so I hooked the software rx/tx pins to an oscilloscope. When I press the button, it does in fact trigger a message, but on the wrong pin! (That is, the rx pin on the child blips out a signal when it should be sending).

So I looked into finding some documentation, and what little I found ( https://www.arduino.cc/en/tutorial/SoftwareSerialExample ) shows an example declaring SoftwareSerial(RX,TX), which is the "correct" order I specified them in my example code...

Anyways, further searching has found piles on piles of different implementations of software serial each obsoleting the other for various reasons. So rather than dig into trying to find (apparently nonexistent) documentation for whatever version is being used by #include <SoftwareSerial.h> via the arduino makefile on a raspberry pi, I figured I should ask if there's some decent gold standard I should be looking to instead.

Thanks for any tips/info!

[edit: I did finally see the documentation was right in front of me- on the side of the page here: https://www.arduino.cc/en/Reference/SoftwareSerial , and so have explicitly confirmed that the order of arguments when initializing is (RX,TX). so, no new info, but at least I found confirmation!]

Gah. Hours of fiddling and I couldn't make any headway. Moved things around, set them up again, and tried again: now it works. No idea what I was doing wrong before. (I looked at the pins and the wires 100x).

Anyways, so my immediate problem is "solved"- but I'd still be curious if anyone has any recommendations for which softwareserial library they think would be ideal here.

so I hooked the software rx/tx pins to an oscilloscope. When I press the button, it does in fact trigger a message, but on the wrong pin! (That is, the rx pin on the child blips out a signal when it should be sending).

are you saying that the Software Serial software is transmitting on the pin specified as RX? (of course the TX pin on one board is connected to the RX pin on another)

have you considered using a single serial interface? RS-485 allows half-duplex communication between more than 2 endpoints. One approach is a master polls each slave for responses. The slave waits for a ping from master before enabling it's transmitter and transmitting. all devices normally disable their transmitters when not transmitting.

phildo:
I have a "master" nano that connects to a raspberry pi over (hardware) serial. That nano needs to communicate with two other nanos, and it would be nice if I could use a simple serial interface to do so.

Mega. There is even room for another Nano if you need to.

phildo:
Gah. Hours of fiddling

Assuming you are worth $10 an hour, the answer is a Mega. Paid for in less than two hours.

The accepted standard for software serial is avoidance, but I expect you already know that.

An aside: If you want fast and reliable communication between Arduinos and between an Arduino with Python, I suggest looking into SerialTransfer.h and pySerialTransfer. SerialTransfer.h can be installed via the Arduino IDE Libraries Manager and pySerialTransfer can be pip-installed.

Both libraries have examples and I'd be happy to answer any questions you might have on them.

Nick Pyner- ok I actually hadn't even realized a mega allowed for multiple hardware serial inputs/outputs. I will absolutely check that out- thanks!

phildo:
hadn't even realized a mega allowed for multiple hardware serial inputs/outputs.

If you don't need that many, the micro has 2.

I have a "master" nano that connects to a raspberry pi over (hardware) serial. That nano needs to communicate with two other nanos, and it would be nice if I could use a simple serial interface to do so.

For clarification, do you mean that you are considering 2 software serial interfaces as well as the hardware serial interface ?

phildo:
I have a "master" nano that connects to a raspberry pi over (hardware) serial. That nano needs to communicate with two other nanos,

Seems to be clear: one master, three serials