Невозможно сразу записать последовательный порт с ПК на 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. (Мне нужен более длинный кабель)
Не могу понять, почему происходит эта странная вещь. Любая помощь будет оценена по достоинству.
Спасибо!
@Ashfaqur Rahman, 👍0
Обсуждение1 ответ
Я сталкивался с подобным поведением с чипами-клонами. Что мне помогло, так это использование USB-кабелей с ферритовым дросселем, похожих на эти; Как вы также упомянули, я заметил, что проблема возникает либо с более длинным кабелем, либо с кабелями без ферритовых дросселей. Возможно, это связано с тем, что печатная плата или дешевые микросхемы подвержены электромагнитным помехам.
Я купил удлинитель USB длиной 5 м. Все работает нормально., @Ashfaqur Rahman
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- В чем разница между библиотеками Software Serial? Какая из них совместима с Arduino Nano?
- Как отправить команду AT на sim800l с помощью SoftwareSerial
- Проблемы с последовательной связью от Arduino к Bluetooth HC-05
- Как Arduino может проверить, подключен ли он к ПК и включен ли компьютер?
- Как отправлять и получать беззнаковые целые (unsigned int) от одного arduino к другому arduino
- Использование последовательных контактов TX/ RX для связи по USB
- NRF24L01+ (библиотека TMRH20): Получатель получает пустые данные
Когда я запускаю сценарий в первый раз
.... что это значит? ....опишите подробно, какие действия необходимо выполнить для запуска скрипта "первый раз", @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