Можно ли использовать контакт RX в качестве TX?

  1. Титульный вопрос. Мне не нужны никакие контакты связи приема, только передача.

На самом деле мне нужно как можно больше контактов передачи на любом Arduino, кроме Mega2560 (для перезаписи EEPROM подчиненных устройств). Mega2560 имеет 23 пары контактов TX/RX.

Может быть, я неправильно понимаю последовательную связь. И, может быть, какая-то мультиплексирующая сделка может работать как Однопроводные датчики температуры...например, softwareSerials[x].write()...


SoftwareSerial serialOne(2, 3); // Программное обеспечение Serial ONE
SoftwareSerial serialTwo(8, 9); // Программное обеспечение Serial TWO
                     // RX, TX
  1. Есть ли способ сделать все контакты с помощью SoftwareSerial TX? Или половина должна быть RX?

- Просто возьми микроконтроллер получше, и все. - user1829200

  1. Какой готовый микроконтроллер предназначен для последовательной связи?

, 👍1

Обсуждение

что вы пытаетесь построить?, @jsotola

@jsotola От двух до 20 моторных модулей, управляемых подчиненными устройствами Arduino (такими как Nanos), выполняющими простые уравнения, передаются переменные с главного устройства (такого как ESP32)., @Adamelli

"Знаете ли вы, что Arduino (Uno, Mega2560) не допускает более одного экземпляра SoftwareSerial?" вы уверены, потому что [один из двух примеров sketches](https://github.com/arduino/ArduinoCore-avr/blob/master/libraries/SoftwareSerial/examples/TwoPortReceive/TwoPortReceive.ino) использует два экземпляра SoftwareSerial. Одновременно может приниматься только один экземпляр. Может быть, это то, что вы имели в виду, но OP нужен только TX., @Gerben

Насколько я вижу, вы можете использовать один и тот же вывод RX на всех экземплярах SoftwareSerial. Вам придется "пожертвовать" только одним контактом., @Gerben

Вы также можете иметь одно последовательное соединение, которое является общим для всех наносистем, и добавить идентификатор к каждому сообщению. Например, "включите двигатель 3", где только третий Нано будет действовать по этому сообщению., @Gerben

Ах да, спасибо, Гербен. (Подход ID-это то, что я имел в виду под аналогией с Одним проводом.), @Adamelli

Возможно, вам захочется поискать в Google последовательную библиотеку программного обеспечения только для передачи. Это также уменьшит размер кода, так как код приема не будет включен., @chrisl


2 ответа


0

Вы должны быть (хотя я этого не тестировал) в состоянии установить контакт RX на неиспользуемый контакт, например 255. Тогда контакт RX ничего не сделает.

#include <SoftwareSerial.h>

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

"Не может быть более одного экземпляра" связано с приемом. Вы не можете одновременно получать более одного экземпляра SoftwareSerial, но это вас не волнует, поскольку прием не используется.

,

1

Одним из способов связи Arduino с устройством Arduino является UART (и последовательный программный код для дополнительных контактов). Для ESP32, похоже, это позволяет использовать 28 контактов TX, используя метод Майенко (в их ответе). Другими словами, ведомые 28 устройств.

После дальнейших исследований разве I2C не является ясным путем?

  • Чем больше подчиненных устройств тем меньше раз в секунду можно поговорить с ними со всеми
  • Приложение должно иметь все подчиненные устройства, выполняющие команды синхронно:
    • По крайней мере, подчиненные устройства должны начать функционировать одновременно.

  • Сколько ведомых Uno/Nano можно подключить к ESP32?

Каждое устройство в сети i2c имеет 7-битный адрес, поэтому одна сеть теоретически поддерживает до 128 подчиненных устройств. Однако на практике этот предел гораздо ниже. ведомые микросхемы i2c часто поддерживают только 8 различных адресов шины, не более 8 из которых могут быть подключены к одной и той же сети i2c.

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

Неясный ответ:

  • https://forum.arduino.cc/index.php?topic=159860.0
  • https://forum.arduino.cc/index.php?topic=367961.0
,