Не приходят данные с компа в ардуинку

Студент
Offline
Зарегистрирован: 15.10.2018

данные передаются в обе стороны, питание 9в

 

обе ардуинки работают как конвертер, данные передаются в обе стороны 

 

С ардуинки данные на комп приходят, с компа в ардуинку нет. Почему так, что неправильно в соединении?

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Купите USB TTL два конвертера и соедените их вместе - проще будет

Студент
Offline
Зарегистрирован: 15.10.2018

мне нужно чтобы было как в последней схеме: комп->>конвертер(или ардуино)-->ttl-->>ардуино

проблема в том что с конвертером ситуация такая же связь в одну сторону только

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

На последней картинке неправильное соединение, должно быть НЕ перевернутое, то есть Tx-Tx  Rx-Rx. Плз, сделай не вступая в полемику. ;)

nik182
Offline
Зарегистрирован: 04.05.2015

Тх ноги должны быть развязаны резисторами 1кОм, особенно на последней картинке.

sadman41
Offline
Зарегистрирован: 19.10.2016

На RX/TX по рефренсному дизайну килоомные уже должны быть установлены, по-моему.

Студент
Offline
Зарегистрирован: 15.10.2018

Завтра попробую tx-tx rx-rx

Студент
Offline
Зарегистрирован: 15.10.2018

Куда нужно воткнуть резисторы? )) Не работает как нужно как раз последняя картинка, от ардуино в комп данные идут, а от компа в ардуину нет.

b707
Offline
Зарегистрирован: 26.05.2017

Студент пишет:

Куда нужно воткнуть резисторы? )) Не работает как нужно как раз последняя картинка, от ардуино в комп данные идут, а от компа в ардуину нет.

может они приходят, но вы их не принимаете? Скетч покажите?

Студент
Offline
Зарегистрирован: 15.10.2018
#include <Wire.h>              всё без прерываний
#include <EEPROM.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
LiquidCrystal_I2C lcd();

const byte offset = 61; // смещение записей в в памяти
const byte kolZap = 7; // количество копий записи
byte error, address;
int nDevices;  //Кол-во найденных устройств
String s = "";
char key = NO_KEY; // что ввели с клавиатуры
const byte ROWS = 4; //4 строки
const byte COLS = 3; //3 колонки

char keys[ROWS][COLS] = {
  {'1', '2', '3'},
  {'4', '5', '6'},
  {'7', '8', '9'},
  {'*', '0', '#'}
}; // какие кнопки вводить с клавиатуры
byte rowPins[ROWS] = {7, 2, 3, 5}; // соединение контактов строк клавиатуры (2,7,6,4 - номера контактов)
byte colPins[COLS] = {6, 8, 4}; //соединение контактов колонок клавиатуры (3,1,5 - номера контактов)

Keypad mykeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );// подключение клавиатуры

void setup() {
  Wire.begin();
  EEPROM_byte_write(60, 0);
  Serial.begin(9600); // подключим блютус или сеть
}

void loop() {
  for (address = 1; address < 127; address++ )  {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0)    {
      LiquidCrystal_I2C lcd(address, 16, 2); // set the LCD address to 0x27 for a 16 chars and 2 line display
      lcd.init(); // инициализирует экран
      lcd.backlight(); // включаем подсветку
      lcd.setCursor(0, 0); // устанавливаем курсор
      lcd.print(address, HEX);
      Serial.print(address, HEX);
      lcd.setCursor(0, 1); // устанавливаем курсор
      while (true) {
        key = mykeypad.getKey();
        if (key != NO_KEY) { // если нажата какая нибудь кнопка
          lcd.print(key);
          Serial.print(key);
        } else {
          if (Serial.available()) {// если пришло чтото
            key = Serial.read();
            lcd.print(key);
          };
        }
      }
      break;
    }
  }
}

 

 
думаю что не в этом дело, между двумя ардуинками (рисунок 1) всё отлично в обе стороны
b707
Offline
Зарегистрирован: 26.05.2017

Студент, во-первых - вставьте код в сообщение как положено, чтобы были номера строк, иначе невозможно обсуждать.

Во-вторых - даже уже по этому листингу видно, что код совершенно бредовый...

nik182
Offline
Зарегистрирован: 04.05.2015

Студент пишет:

Куда нужно воткнуть резисторы? )) Не работает как нужно как раз последняя картинка, от ардуино в комп данные идут, а от компа в ардуину нет.

Если объединяете Тх то их можно соединять только через 1к резисторы, иначе они как выходы тянут друг друга. Соединение резисторов уже соединять к Rx.

От Тх компьютера идти могут на несколько Rx прямо и без проблем. 

Студент
Offline
Зарегистрирован: 15.10.2018

b707 пишет:

Студент, во-первых - вставьте код в сообщение как положено, чтобы были номера строк, иначе невозможно обсуждать.

Во-вторых - даже уже по этому листингу видно, что код совершенно бредовый...

Согласен что бредовый, не работала передача данных, быстро скопировал суть приёма-передачи чтобы тестировать. После while как раз бесконечный цикл чтения, между ардуинами всё работает. Не думаю что дело в скетче, хотя конешно можно написать было по другому, тут скорее вопрос неправильного соединения.

b707
Offline
Зарегистрирован: 26.05.2017

Студент, вот смотрите - значение keу, прочитанное с клавиатуры (строки 46-49) вы отправляете в Сериал на комп, а key, пришелшее с Сериала - только на дисплей (строки 51-53). а на комп ничего не шлете. Во-первых, непонятно, зачем это делать по разному, ну а во-вторых - если вы не нажимаете кнопок, у вас ничего в комп и не должно отсылаться.

Я. бы. для уверенности, сделал отсылку key в обоих случаях и в Сериал, и на дисплей - тогда вы сможете по одному выводу контролировать другой

Студент
Offline
Зарегистрирован: 15.10.2018

nik182 пишет:

Студент пишет:

Куда нужно воткнуть резисторы? )) Не работает как нужно как раз последняя картинка, от ардуино в комп данные идут, а от компа в ардуину нет.

Если объединяете Тх то их можно соединять только через 1к резисторы, иначе они как выходы тянут друг друга. Соединение резисторов уже соединять к Rx.

От Тх компьютера идти могут на несколько Rx прямо и без проблем. 

Так нужно соединить?

Студент
Offline
Зарегистрирован: 15.10.2018

b707 пишет:

Студент, вот смотрите - значение keу, прочитанное с клавиатуры (строки 46-49) вы отправляете в Сериал на комп, а key, пришелшее с Сериала - только на дисплей (строки 51-53). а на комп ничего не шлете. Во-первых, непонятно, зачем это делать по разному, ну а во-вторых - если вы не нажимаете кнопок, у вас ничего в комп и не должно отсылаться.

Я. бы. для уверенности, сделал отсылку key в обоих случаях и в Сериал, и на дисплей - тогда вы сможете по одному выводу контролировать другой

Так с ардуины в комп всё идёт, а с компа только на экран и нужно, хотя я с вами согласен, можно и на комп для надёжности.

b707
Offline
Зарегистрирован: 26.05.2017

Студент пишет:

Так с ардуины в комп всё идёт, а с компа только на экран и нужно

как "нужно" - это вы в готовом коде будете делать. А пока сделайте туда и туда - для тестирования

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Студент, дорогой! Последняя попытка.

Тут коллеги околесицу несут, не имеющую отношения к делу. Я поясню, про последнюю картинку:

На плате Нано два устройства CH340 и AtMega328. На плату нанесены обозначения Tx Rx - контактов AtMega, когда ты замкнул ресет ты используешь только CH340.

Как, по твоему, на плате Нано, соединены TxRx CH340 и TxRx AtMega? Какой контакт CH340 на плате помечен как Rx?????????

Дошло наконец? Когда ты замкнул Ресет на землю, забудь уже про ардуино, ты имеешь просто USBUART на CH340 и обозначения нужно читать с его стороны, а его Rx это Tx платы и наоборот.

-------------

Я ж тебе вчера сказал - просто сделай. не думая, просто контакты переставь и всё. Я постоянно, только не Нану, а Мегу, как USBUART использую по привычке. ;)))) И, ты станешь смеятся, сперва включил вот так, как ты ... и долго думал: "А что это она, суко, не работает?!" ;))))

b707
Offline
Зарегистрирован: 26.05.2017

wdrakula пишет:

Я ж тебе вчера сказал - просто сделай. не думая, просто контакты переставь и всё.

Влад у него в одну сторону - работает. Именно так, как на картинке... То есть. типа линия RX подключена правильно, а TX -  нет? ну так же не бывает...

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Код твой прочел. Смешной. Но должен арбайт.

Ты только без посредника проверь свой LCD и Keypad отдельно.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

b707 пишет:

wdrakula пишет:

Я ж тебе вчера сказал - просто сделай. не думая, просто контакты переставь и всё.

Влад у него в одну сторону - работает. Именно так, как на картинке... То есть. типа линия RX подключена правильно, а TX -  нет? ну так же не бывает...

707ой! И что? работать не может, значит у него просто какой-то глюк, который не интересно ловить. Сначала нужно правильно подключить. Порт может ловить какие-то наводки в одну сторону. Зачем разбираться в глюках и наводках? Это сродни вопросам о том: "почему неподключенный аналоговый вход что-то показывает?".

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

2 Б707:

Добавлю: порт, даже если забыть указать OUTPUT, слегка моргает светодиодом, в полумраке - видно. Это важно для науки? ;))) Инфа мной проверена 100%. Так и тут. При неправльном подключении, кстаи, можно и порты пожечь, поскольку Tx-Tx получаются связаны.

А так - объяснить почему в одну сторону проходят данные? - да легко, входное сопротивления Rx на CH340, вероятно, сильно выше, чем на 328-ом, вот тебе и всё объяснение. Важно для науки? ;)))

=======================

И еще, Нано продаются без ножек, наш Студент, как ты видишь, весьма дремуч, кто ему ножки паял?

Во-от! А говоришь: "Зачем багор?". (с) День Радио. ;))))

Студент
Offline
Зарегистрирован: 15.10.2018

wdrakula пишет:

Код твой прочел. Смешной. Но должен арбайт.

Ты только без посредника проверь свой LCD и Keypad отдельно.

 

Отдельно всё работает, например если соединить 2 дуинки с такими клавиатурами и экранами всё работает. Соединил как вы сказали: с ардуинки в комп всё прекрасно идёт, обратно нет. Я вчера столько раз всё собирал и разбирал, что не заметил работает в одну сторону именно как вы сказали Tx-Tx Rx-Rx, а Tx-Rx Rx-Tx не работает.Получается соединено сейчас как сказали вы и связь в одну сторону.

Студент
Offline
Зарегистрирован: 15.10.2018

А код да смешной, просто быстро нужно было чтото залить чтоб проблему найти, а так этот код для проверки клавиатуры (что все кнопки работают) и одновременно определяет адрес экрана (i2c)? А то иногда разные бывают ))

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Сорри! Виноват, ввел в заблуждение!

Нано с CH340 НЕ УМЕЕТ работать в качестве USBUART ни при замыкании Ресета на землю, ни при остановке программы.

Это Нано FTDI так умеет, Мега умеет.

Поэтому, если у тебя нет отдельного USBUART или другой ардуины - пользуйся софтсериал. Вот пример:

(минут через 15 дополню ссылкой на видео, оно льётся на ютуб малой скоростью ;) с телефона)

#include <SoftwareSerial.h>

SoftwareSerial mySerial(8, 9); // RX, TX

void setup() {
  Serial.begin(57600);
  while (!Serial);
  mySerial.begin(57600);
}

void loop() { 
  if (mySerial.available()) {
    Serial.write(mySerial.read());
  }
  if (Serial.available()) {
    mySerial.write(Serial.read());
  }
}

 

b707
Offline
Зарегистрирован: 26.05.2017

wdrakula пишет:

Сорри! Виноват, ввел в заблуждение!

Нано с CH340 НЕ УМЕЕТ работать в качестве USBUART ни при замыкании Ресета на землю, ни при остановке программы.

Влад, погоди, не спеши.

Прочитай заглавное сообщение ветки. Может какие-то Наны и не умеют работать в качестве USBUART, но ТС утверждает, что его Наны так работали (схема 2 )

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

1. Вот ссылка, видео наконец доползло с телефона.

2. 707ой! Зачем цитировал? Я из-за этого не смог отредактировать и туда сслылку на ютуб вставить.

3. 707ой! Ты снова слишком много внимания уделяешь тому, что пишут авторы топиков. Не работает - значит не работает, что там он собирал и как оно работало - ты не видел но веришь. Тебе не кажется это ...ну немного странным? ;)))

А про наны - умеют, с FTDI ты такие в продаже видел? Я вообще ни одной ардуинки с FTDI в руках не держал. Никогда :(

 

 

Студент
Offline
Зарегистрирован: 15.10.2018

С SoftwareSerial работает как нужно:

комп по usb соединён с ардуинкой с этим скетчем, вторая андуинка Tx--пин 8(на первой), Rx -- пин 9(на первой) данные проходят в оба направления.

Странно, если нано не умеет работать как usb uart, то как может работать вторая схема в шапке форума?

 

Всем большое спасибо за помощьБ в частности wdrakula ))

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Дополнение: я измерил совротивление от TxRx CH340G до пинов на Нано и на Меге. Чудес не бывает: на Нано 1000Ом, на Меге 20Ом. Поэтому Мега работает, как USBUART, а Нано нет.

Про схему №2 от Студента пока ничего не скажу, не проверял, но не должна, так как Нано не проходит проверку простым замыканием Tx на Rx.

Гриша
Offline
Зарегистрирован: 27.04.2014

могет быть я глупость напишу, но я не увидел ни на одной схеме объединенного общего провода - он по факту существует? GND-GND который :)

Студент
Offline
Зарегистрирован: 15.10.2018

Гриша пишет:

могет быть я глупость напишу, но я не увидел ни на одной схеме объединенного общего провода - он по факту существует? GND-GND который :)

Я не стал его рисовать, но само собой он есть, тем более питание разное, в одном usb, в другом +9в на пин питания

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Студент пишет:
Гриша пишет:

могет быть я глупость напишу, но я не увидел ни на одной схеме объединенного общего провода - он по факту существует? GND-GND который :)

Я не стал его рисовать, но само собой он есть, тем более питание разное, в одном usb, в другом +9в на пин питания

Само собой... Если хоть когда-то работает.

Но т.к. работает не всегда, есть подозрение, что "само собой" не очень правильное.

Гриша
Offline
Зарегистрирован: 27.04.2014

Студент пишет:
Гриша пишет:

могет быть я глупость напишу, но я не увидел ни на одной схеме объединенного общего провода - он по факту существует? GND-GND который :)

Я не стал его рисовать, но само собой он есть, тем более питание разное, в одном usb, в другом +9в на пин питания

тогда еще один вопрос, пайка или скрутка проводов? частенько проблема именно в скрутке.

ЗЫ было не очевидно т.к. мы с вами не знакомы и ваш уравень знаний и опыта мне не известен, а чудаков на этом сайте перебывала масса... была тема где выяснилось, что ТС "не знал", что необходимо объединить земли устройств в посте поле 20го. 

Студент
Offline
Зарегистрирован: 15.10.2018

ножки припаяны, провода к ним тоже. Я тему открыл, т. к. не мог понять почему первые 2 схемы работают,а 3я нет. Сейчас сделал на програмном порту, всё работает. Но всё же интересно, почему не работает схема 3. Опять таки, говорят что нано не может как usb UART, но если сделать 2 таких преобразователя, и соединить их как на схеме с двумя компами, то всё прекрасно передаётся.