Зачем сопоставлять контакты ардуино 2 и 3 с Rx и Tx вместо того, чтобы использовать встроенные контакты Rx и Tx?
Во многих примерах я вижу следующее:
#include <SoftwareSerial.h>
const byte rxPin = 2;
const byte txPin = 3;
// настройка нового последовательного объекта
SoftwareSerial mySerial (rxPin, txPin);
в чем преимущество такого сопоставления контактов 2 и 3? Почему бы просто не использовать встроенные контакты RX (pin 0) и TX (pin 1)? Я использую стандартный Arduino Uno.
@Adrian M, 👍1
Обсуждение2 ответа
Лучший ответ:
SoftwareSerial позволяет добавить дополнительный последовательный порт, используя "битный стук" для чтения/записи в порт. Это позволяет подключить другое последовательное устройство (например, GPS, RFID-считыватель, MIDI-устройство, ЖК-дисплей) к этому дополнительному порту и по-прежнему использовать аппаратный последовательный интерфейс (контакты 0 и 1) через USB-порт для отправки сообщений и/или отладки на подключенный ПК.
Есть ли какая-либо специальная проводка, необходимая для отправки сообщений на подключенный компьютер? Или достаточно того, что они просто не будут использоваться?
Контакты 0 и 1 подключены к микросхеме USB - интерфейса ATmega16U2. Если он получит что-то похожее на серийные данные, он перешлет их на компьютер.
Есть ли какая-либо специальная проводка, необходимая для отправки сообщений на подключенный компьютер? Или достаточно того, что они просто не будут использоваться? В настоящее время я использую аппаратные порты для связи с модулем Wi-Fi ESP8266, и я все еще могу видеть вывод Serial.print() на моем последовательном мониторе., @Adrian M
@AdrianM, но esp8266 тоже получает ваши отладочные отпечатки. если у вас есть прошивка AT в esp8266, прошивка пытается их обработать. это нарушает предыдущую и/или следующую команду, @Juraj
См.Мой исправленный ответ. Однако я согласен с Юраем, что то, что вы отправляете через порты 0 и 1, также будет отправлено на все, что вы подключили к этим контактам **и** USB-интерфейсу., @Nick Gammon
Ник Гаммон указал, что контакты 0 (RX) и 1 (TX) уже подключены к микросхеме USB-Serial 16U2. Правильно. Хотя вывод передачи, вывод 1, может управлять несколькими устройствами / последовательными портами, вывод приема, вывод 0, управляется чипом 16U2. См.: https://www.arduino.cc/en/uploads/Main/arduino-uno-schematic.pdf Попытка использовать это приведет к связыванию двух выходов вместе (никогда не бывает хорошо, если выходы не настроены на открытый коллектор/открытый сток). Я видел много щитов, которые пытаются использовать контакты 2 и 3 для последовательного порта. (Не очень хорошая идея для последовательного периферийного устройства...)
Re “ _ приведет к связыванию двух выходов вместе”: между TX 16U2 и RX 328P есть резистор 1 Ком, который делает это безопасным., @Edgar Bonet
- AT-команда не отвечает на последовательный монитор
- Как отправить команду AT на sim800l с помощью SoftwareSerial
- Ардуино для чтения с преобразователя RS232 в последовательный модуль TTL
- Чтение SMS с помощью Arduino Uno и SIM800L и печать на LCD (16x2 буквенно-цифровых) с использованием последовательного соединения
- Как связаться с ESP8266 ESP01, отправив данные через программный сериал на Arduino Uno?
- myserial.available() возвращает нулевой байт
- Последовательная связь от Arduino до ESP8266 NodeMCU работает, но от NodeMCU до Arduino не работает
- SoftwareSerial данные недоступны
он позволяет иметь два последовательных порта ... затем его можно использовать для отладки, @jsotola
@jsotola Пожалуйста, не отвечайте на вопросы в комментариях - используйте для этого поле ответа. Комментарии здесь предназначены для получения более подробной информации о вопросе., @Nick Gammon