1
  1. Title question. I do not need any receive communication pins, only transmission.

Actually, I need as many transmission pins as possible on any Arduino besides a Mega2560 (to re/write the EEPROM of slave devices). A Mega2560 has 23 TX/RX pin pairs.

Maybe I'm misunderstanding serial communication. And maybe some sort of multiplexing deal can work like One-Wire temperature sensors...such as softwareSerials[x].write()...


SoftwareSerial serialOne(2, 3); // Software Serial ONE
SoftwareSerial serialTwo(8, 9); // Software Serial TWO
                     // RX, TX
  1. Is there a way to make all the pins using SoftwareSerial TX? Or do half need to be RX?

"Just take a better microcontroller, and that is all." - user1829200

  1. What off-the-shelf microcontroller is geared for serial communication?
7
  • what are you trying to build?
    – jsotola
    Dec 28 '20 at 16:44
  • @jsotola Two to 20 motor modules controlled by Arduino slave devices (such as Nanos) running simple equations are sent variables from a master device (such as an ESP32).
    – Adamelli
    Dec 28 '20 at 16:48
  • Are you aware that the Arduino (Uno, Mega2560) do not allow more than one instance of SoftwareSerial? are you sure, because one of the two example sketches uses two SoftwareSerial instances. Only one instance can receive at a time. Maybe that's what you were referring to, but OP only needs TX.
    – Gerben
    Dec 28 '20 at 16:48
  • As far as I can see, you can use the same RX pin on all your SoftwareSerial instances. You'd only have to "sacrifice" one pin.
    – Gerben
    Dec 28 '20 at 16:55
  • 2
    You could also have single serial connecting that's shared with all the Nanos, and add an id to each message. For example, "turn motor 3 on", where only the third Nano would take action on that message.
    – Gerben
    Dec 28 '20 at 16:55
1

One way to communicate Arduino to Arduino device is UART (and Software Serial for additional pins). For the ESP32, it seems this allows 28 TX pins using Majenko's method (in their answer). In other words, slave 28 devices.

After further research, isn't I2C the clear route to go?

enter image description here

  • With more slave devices the less times per second to talk to them all
  • The application needs to have all the slave devices execute commands synchronously:
    • At least, the slave devices need to start functioning at the same time.

  • How many slave Uno's/Nano's can be connected to an ESP32?

Each device on an i2c network has a 7-bit address, so a single network theoretically supports up to 128 slave devices. In practice though, the limit is much lower. i2c slave chips often support only 8 different bus addresses, no more than 8 of that chip can be attached to the same i2c network.

https://mindbleach.com/words/2012/10/23/i2c-and-device-limits

Unclear answer:

0

You should be (though I haven't tested it) be able to set the RX pin to an unused pin number, such as 255. Then the RX pin will do nothing.

#include <SoftwareSerial.h>

SoftwareSerial s0(255, 2);
SoftwareSerial s1(255, 3);
SoftwareSerial s2(255, 4);
SoftwareSerial s3(255, 5);
SoftwareSerial s4(255, 6);
// ... etc ...

The "can't have more than one instance" thing is to do with reception. You can't have more than one SoftwareSerial instance receiving at once - but you don't care about that, since reception is not being used.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.