THX. Actually a single line in the schematic would have done, but it is apparent that the modules you use are making the true good ground connection.
I have booked an appointment with the eye doctor. That is to say I looked again at your code.
What you are doing, I think, is "listening" to the stirrer. It may not say anything until poked.
I am with @wildbill, the easiest way to confirm that your device is there and reachable is to use a serial communication program on your PC.
I use CoolTerm, but the key will be any serial comms program with the ability to send any arbitrary characters. Most can, but you may need to send actual low ASCII characters, which a few make hard or cannot.
Your chart of commands doesn't say woh the "command codes" are formed. Perhaps more is said in the document. The commands might be single characters or larger formatted sequences with a command code embedded in them.
Use CoolTerm or another of your choice to send commands to the stirrer and examine its repsonse, if any.
Start with RTY, which looks like a good poke to give it so it talks.
The beauty of using CoolTerm is that you are not messing around with an Arduino program at the same time, less to wonder about. CoolTerm works.
And you can experiment with comms parameters all day long without a single recompile, upload and debug cycle.
Ffrom the docs so far, it doesn't look like you'll need extra handshaking. But keep it in mind. Most of the things I talk to with serial in the modern age (oxymoron alert!) are perfectly happy with three wires, TX, RX and GND. CoolTerm is or can be adjusted to use only these three lines, but it will also allow you to test any theories about extra control signals.
So… does the document go into any detail about the format and coding of command characters or sequences?
a7