Невозможно заставить работать последовательный порт

Я купил модуль, который должен общаться через последовательный RX/TX. Модуль и код описаны здесь: https://www.dfrobot.com/wiki/index.php/Weather_Station_with_Anemometer/Wind_vane/Rain_bucket_SKU:SEN0186.

Я подключил все, как описано (используя Arduino Nano вместо Uno, но остальное то же самое) и теперь пытаюсь заставить все работать. Я не смог получить никакого приличного вывода. Поэтому я решил переключиться на минимальную программу для чтения данных из последовательного порта, чтобы посмотреть, что происходит. Я нашел следующий пример: https://gist.github.com/Protoneer/96db95bfb87c3befe46e и реализовал этот код (только этот).

Теперь я вижу следующее: - При подключении RX/TX неправильным образом, когда я сбрасываю nano, последовательный монитор показывает мне один экземпляр строки, которую я ищу (как описано в документации модуля). При правильном подключении текста там нет, но это ожидаемо, так как nano должен его получить (а не последовательный монитор). Однако это доказывает, что модуль действительно отправляет данные. - Serial.available, похоже, все время оценивается как 0, указывая на отсутствие данных для считывания с последовательной линии.

Так почему же Serial.available возвращает 0, хотя, кажется, что данные отправляются на последовательный порт, поскольку монитор показывает строку, которую я ищу, с перекрещенными контактами. Я также пробовал отключать линию RX на модуле, чтобы предотвратить отправку операторов по последовательному порту, которые могли бы помешать работе модуля. В документации не говорится о необходимости отправлять что-либо на модуль для запуска ответа. Фактически, если вы посмотрите на пример кода, первое взаимодействие с последовательным портом (после Serial.begin(9600)) — это Serial.available().

Есть ли что-то еще, что я могу сделать с точки зрения отладки? Как вы могли заметить, я не эксперт в этом деле.

, 👍0

Обсуждение

Первая мысль, платы Nano бывают 3 и 5 вольт. На метеостанции четко написано, что это 5-вольтовое устройство. Может быть, у вас не тот Nano?, @st2000

Напряжение не соответствует норме, подключено к 5 В на нано., @Jasper

Если последовательный терминал отображает данные, это означает, что контакты TX и RX подключены неправильно., @Majenko

@Majenko, вы правы, я перепутал результаты тестов. При правильном подключении кабелей (RX-TX, TX-RX) я на самом деле не получаю содержимое на последовательном мониторе. Но конечный результат остается прежним: Serial.available возвращает false и входящие данные отсутствуют, хотя при обратном подключении проводов данные, похоже, отправляются., @Jasper

available() возвращает количество доступных данных., @Juraj

Да, фактическая проверка — Serial.available() > 0 (что возвращает false)., @Jasper

Итак, вы копируете данные из последовательного порта в последовательный, передавая их на устройство в формате ASCII? Какова может быть реакция устройства?, @Juraj

Смотрите суть, пример кода берет то, что приходит, и печатает это, ничего больше. Но поскольку нет никакого входящего кода, нет и печати. Если я делаю Serial.println, это тоже отправляется на устройство? Понятия не имею, как оно на это отреагирует., @Jasper

подключен ли RX устройства к TX Nano? тогда последовательный выход Nano отправляется на устройство, @Juraj

Да, он подключен, я пробовал отключать TX от nano (чтобы был подключен только модуль TX => RX nano), но это дало тот же результат, доступно возвращение 0., @Jasper

@Jasper, есть поговорка, что протокол RS232 (не говоря уже о физической части) — это стандарт, который не является стандартом. Я бы рекомендовал вам открыть это самостоятельно, отказавшись от встроенного мира и подключив свою погодную «штуку» к компьютеру с настраиваемым приложением, таким как RealTerm. Как только вы разберетесь с правильной конфигурацией, вы сможете вернуться к встроенному миру., @st2000

извините за 2400 бод. это в другом вопросе о метеостанции, @Juraj

Итак, у вас есть модуль, подключенный к контактам Nano 1 и 2, и вы также пытаетесь связаться с ПК через объект Serial и последовательный монитор? На Nano есть чип USB/последовательного преобразователя, который, вероятно, конфликтует с вашим модулем. Вы можете попробовать SoftwareSerial, чтобы получить бит-банговый последовательный порт для связи с модулем на некоторых других контактах., @jose can u c

@josecanuc, если ты опубликуешь это в качестве ответа, я смогу дать тебе заслуженные баллы :), @Jasper

как SoftwareSerial помог, если вам нужен только RX для подключения к устройству и вы ничего не отправляете по USB на Uno, @Juraj

@Juraj, контакты 0 и 1 подключены к чипу usb-serial с резистором. Сигналы могут быть переопределены чем-то другим, но мы не знаем, насколько силен сигнал tx от модуля., @Jot

@Jot, если это работает в примере с производителями, то это должно быть достаточно прочно, @Juraj

Я тоже не уверен, в чем проблема. Может, это мой дешевый китайский nano вызывает проблемы. В любом случае, я точно знаю, что теперь, когда он подключен к другим контактам и использует SoftwareSerial, все работает так, как надо. У меня тоже есть "настоящий" uno, попробую и его., @Jasper


1 ответ


Лучший ответ:

1

Похоже, у вас модуль подключен к контактам Nano 0 и 1, а также вы пытаетесь связаться с ПК через объект Serial и последовательный монитор?

На Nano есть чип USB/последовательного преобразователя, который, вероятно, конфликтует с вашим модулем. Вы можете попробовать SoftwareSerial, чтобы получить бит-банговый последовательный порт для связи с модулем на некоторых других пинах.

,

Вы имеете в виду контакты 0 и 1 - RX и TX?, @Juraj

Исправленный ответ относится к контактам RX/TX 0/1., @jose can u c

Как это конфликтует? Устройство отправляет данные только на RX Nano. TX не подключен к устройству, поэтому Nano не отправляет данные на устройство, только на USB. Ничего не отправляется с компьютера на Nano, и это не остановит устройство., @Juraj

@Juraj, ну, даже если с компьютера ничего не отправляется, tx микросхемы usb-serial подключен (через резистор) к rx микросхемы atmega. josecanuc, для скорости 9600 бод я предпочитаю AltSoftSerial., @Jot

Это действительно исправило проблему, SoftwareSerial на контактах 10 и 11 работает как и ожидалось., @Jasper