Невозможно сразу записать последовательный порт с ПК на Arduino nano через преобразователь USB в TTL pl2303.

Цель:

Я пытаюсь отправить некоторые символы в Arduino через последовательный порт с ПК через преобразователь USB в TTL Prolific PL2303 (китайский клон).

Я написал простой скетч (прикреплен ниже), который должен зажигать светодиод, если найден «n», или выключать светодиод, если в последовательном интерфейсе найден «f».

Что происходит:

Я открыл последовательный монитор. Отправьте символ (скажите «n», при котором должен загореться светодиод). Но ничего не произошло, хотя светодиоды RX/TX мигали. Затем я снова открыл последовательный монитор. И сразу после повторного открытия светодиод последовательного монитора загорается! Каждый раз, когда я выдаю символ из последовательного монитора, ничего не происходит. Но сразу после повторного открытия отправляется символ монитора.

Аппаратное соединение:

  • Arduino Vin -> положительная шина LiPo (+11 В)
  • Arduino GND -> отрицательная шина LiPo (GND)
  • Заземление -> Arduino GND
  • Prolific RX -> Arduino TX
  • Prolific TX -> Arduino RX

Скетч Arduino:

int led = 13;

void setup() {
  // put your setup code here, to run once:
  pinMode(led, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  if(Serial.available() > 0){
    char bytesReceived = Serial.read();
    Serial.println(bytesReceived);

    if(bytesReceived == 'n'){
      digitalWrite(led, HIGH);  
    }
    else if(bytesReceived == 'f'){
      digitalWrite(led, LOW);  
    }
  }
}

Дополнительные примечания:

  • Платформа Windows 10
  • Установлен драйвер Prolific PL2303 с сайта здесь
  • Этот код работает с использованием USB-кабеля, входящего в комплект поставки Arduino. (Мне нужен более длинный кабель)

Не могу понять, почему происходит эта странная вещь. Любая помощь будет оценена по достоинству.

Спасибо!

, 👍0

Обсуждение

Когда я запускаю сценарий в первый раз.... что это значит? ....опишите подробно, какие действия необходимо выполнить для запуска скрипта "первый раз", @jsotola

почему вы используете скрипт Python во время тестирования? .... откройте окно последовательного монитора и нажмите клавиши на клавиатуре, @jsotola

Это означает, что мне нужно запустить сценарий дважды, чтобы произошла последовательная передача: $ python testscript.py $ python testscript.py, @Ashfaqur Rahman

Также протестировано с последовательным монитором Arduino. Демонстрация такого же поведения. Если я открою последовательный монитор и отправлю «n», ничего не произойдет (светодиод должен загореться). Но после повторного открытия загорается светодиод последовательного монитора (символ отправляется). На самом деле я делаю проект pyqt, поэтому тестирую скрипт Python. @jsotola, @Ashfaqur Rahman

Это похоже на проблему с клоном Prolific. Я знаю, что компания Prolific боролась с клонами своих чипов, внося изменения в драйверы, так что, возможно, ваш чип Prolific не настоящий и не будет работать должным образом. Попробуйте другой адаптер, например FT232, или согните Arduino без основного MCU (или основного MCU, находящегося в состоянии RESET), чтобы использовать его для тестирования., @Majenko


1 ответ


1

Я сталкивался с подобным поведением с чипами-клонами. Что мне помогло, так это использование USB-кабелей с ферритовым дросселем, похожих на эти; Как вы также упомянули, я заметил, что проблема возникает либо с более длинным кабелем, либо с кабелями без ферритовых дросселей. Возможно, это связано с тем, что печатная плата или дешевые микросхемы подвержены электромагнитным помехам.

,

Я купил удлинитель USB длиной 5 м. Все работает нормально., @Ashfaqur Rahman