Клон Arduino Nano на СР340g + Ubuntu

Drenadan
Offline
Зарегистрирован: 31.01.2016

Добрый день,

Мучаюсь с клоном nano на CH340g.

К примеру на ней крутится тестовый простой сткетч который просто возвращает что пришло в Serial

int incomingByte = 0;
 
void setup() {
        Serial.begin(9600);
                              
}
 
void loop() {
 
        if (Serial.available() > 0) {

                incomingByte = Serial.read() - '0';
 
           
                Serial.print("I received: ");
                Serial.println(incomingByte, DEC);
        }
}

Проблемма в том что на ubuntu при отправке  через echo DATA > /dev/ttyUSB0 прибаляется какой то мусор, например:

К примеру отплавлять через python;

import serial

ser = serial.Serial('/dev/ttyUSB0', 9600)

ser.write("3")
ser.close()

Мусорапри этом нет, НО не работает до тех пор пока не выполнить tail -f /dev/ttyUSB и прервать CTRL+C. После этого все работает ок (до перезакрузки).

C дистрибутивом не связанно, проверяля еще на 2х 14.04 одна из которых была специально для теста .

Может у кого нибудь есть идеи ?

PS. Пробовал разную скорость для serial и разные параметры в stty -не помогло.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

идея есть: поставь винду

Клапауций 322
Offline
Зарегистрирован: 31.12.2015

jeka_tm пишет:

идея есть: поставь винду

винда - зло

свободные люди должны одеться в рубище и утсановить себе линукс на комп.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да пожалуйста. на каких костылях работать каждый сам выбирает

Drenadan
Offline
Зарегистрирован: 31.01.2016

Еще пример вывода: 

duinor
Offline
Зарегистрирован: 16.01.2016

А в Ubuntu какая скорость порта при инициализации?

Drenadan
Offline
Зарегистрирован: 31.01.2016

Пробовал разную: 4800, 9600, 19200, 38400 на ардуине в скетче аналогично - разницы ноль.Результат один

Клапауций 322
Offline
Зарегистрирован: 31.12.2015

Drenadan пишет:

Еще пример вывода: 

хм. это какой код у тебя это выводит?

duinor
Offline
Зарегистрирован: 16.01.2016

Drenadan пишет:

Пробовал разную: 4800, 9600, 19200, 38400 на ардуине в скетче аналогично - разницы ноль.Результат один

А каким образом инициализируешь порт?

Drenadan
Offline
Зарегистрирован: 31.01.2016

Вот так - stty -F /dev/ttyUSB0 cs8 115200 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts

duinor
Offline
Зарегистрирован: 16.01.2016

Так у Вас 115200, а не 9600

Drenadan
Offline
Зарегистрирован: 31.01.2016

это я отправил последнюю пробу, в стандарте я и спользую 9600 и на ардуине так же.

duinor
Offline
Зарегистрирован: 16.01.2016

При обращении к порту какие светодиоды на ардуине моргают?

Возможно что проблема с сигналом DTR, он при каждом обращении ребутит ардуину

Drenadan
Offline
Зарегистрирован: 31.01.2016

Спасибо! проблемма идентичная.

 То что описанно там не проверял еще, но думаю поможет.

Еще раз спасибо за правильное направление

Drenadan
Offline
Зарегистрирован: 31.01.2016

Вообщем вот так, может кому пригодится:

Когда Nano подключена либо к компьютеру с Mac OS X или Linux, она перезапускается каждый раз, когда состоится подключение к ней из программы (через USB). В последующие полсекунды (примерно) на плате запускается загрузчик. Когда она запрограммирована на игнорирование данных (например, на всё кроме загрузки нового кода), она перехватит несколько первых байтов данных, отправленных плате после открытия соединения. Если программа на плате получает данные на лету или другие данные когда она запускается, удостоверьтесь, что ПО, которое передаёт данные, делает паузу в одну секунду после открытия подключения перед отправкой данных.

Поэтому когда tail держит порт - все работает.

duinor
Offline
Зарегистрирован: 16.01.2016

Drenadan пишет:

Поэтому когда tail держит порт - все работает.

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