Помогите разобраться с Rx, Tx на 0, 1

wbir
Offline
Зарегистрирован: 04.05.2012

 Здравтсвуйте. 

Не давно приобрел Arduino.  Написал в программе вывод текста в серийный порт. При открытии порта через виртуальный порт arduino текст в терминале читается. Но мне нужно управлять внешним устройством по RS 232. Для проверки подключил к выходам 0, 1, GRN   USB-RS232 адаптер и соответсвенно в USB порт компьтера, запускаю тот же вывод текста. В итоге в терминал сыплются непонятные символы и сам адаптер греется. Не могу понять, можно к пинам 0, 1 подключатся на прямую?

Спасибо.

maksim
Offline
Зарегистрирован: 12.02.2012

Не совсем понятно что и куда вы подключаете, но для управления внешним устройством через RS232 вам нужен преобразователь TTL-RS232 и да к пинам 0 (Rx) и 1 (Tx) можно подключаться. И что значит напрямую?

wbir
Offline
Зарегистрирован: 04.05.2012

На прямую этио имеется ввиду как раз без преобразователей. Просто к DB-9 подпаеваем провода а втыкаем в arduino. Теперь понятно что так не получится.

Спачибо.

maksim
Offline
Зарегистрирован: 12.02.2012

 Да нельзя у RS232 уровни напряжения от -12 до +12 вольт, а у дуины (TTL) от 0 до 5 вольт.

dzmitry
Offline
Зарегистрирован: 12.08.2012

Добрый день,

Вопрос в ту же тему: Будуд ли читаться сигналы UART с пинов Rx(0) и Tx(1) при подключении Arduino uno к компьютеру через usb?

maksim
Offline
Зарегистрирован: 12.02.2012

Чем читаться и куда читаться?

dzmitry
Offline
Зарегистрирован: 12.08.2012

 Виноват, сечас попробую все описать.

Правда ответ я уже нашел, но все же поучусь правильно формулировать мысли :)

Значит ситуация такая, у меня есть две отладочные платы (arduino uno и Launchpad oт TI). Захотелось мне попробовать поработать с UART, поставил себе задачу: при нажатии кнопки на одной плате зажигать светодиод на другой :) Подключил пина Rx и Tx плат друг к другу (накрест, конечно). Arduino выступает в качестве ведомого.

#include <SoftwareSerial.h>
//SoftwareSerial sSerial(2, 3);

int LED = 13;
char ch;
String command = "";

void setup() {
  Serial.begin(9600);
  //sSerial.begin(9600);
  pinMode(LED, OUTPUT);
}

void loop() {
  if (Serial.available() > 0) {
    ch = Serial.read();
    if (ch != '#') {
      command += ch;
    } else {
      if (command == "on") {
        ledOn();
      } else if (command == "off") {
        ledOff();
      }
      command = "";
    }
  }
}


void ledOn() {
  digitalWrite(LED, HIGH);
}

void ledOff() {
  digitalWrite(LED, LOW);
}

 Ну и собственно ничего не получилось. Т.е. arduino данные не получала. Воспользовался библиотекой SoftwareSerial (закаментировано) и все заработало на пинах 2 и 3. Вот меня и начали терзать смутные сомнения, что если arduino подключена к usb (у другого питания нету), то она не хочет работать с UART через пины 0 и 1.

leshak
Offline
Зарегистрирован: 29.09.2011

 Не должно мешать.

  1. Земли плат связали?
  2. Совпадение скоростей проверили?
  3. Качество контактов проверили?
  4. Сделайте Serial.write(ch) что-бы видеть в мониторе что именно она получает
  5. Упростите команды, откажитесь от строк. Попробуйте, для начала, посылать команды односимвольные. Например '0' и '1'. И проверять просто if(ch='1')....
dzmitry
Offline
Зарегистрирован: 12.08.2012

leshak пишет:

 Не должно мешать.

  1. Земли плат связали?
  2. Совпадение скоростей проверили?
  3. Качество контактов проверили?
  4. Сделайте Serial.write(ch) что-бы видеть в мониторе что именно она получает
  5. Упростите команды, откажитесь от строк. Попробуйте, для начала, посылать команды односимвольные. Например '0' и '1'. И проверять просто if(ch='1')....

Собственно все работает, похоже всему виной ночь, сонное состояние :)

Спасибо.

glob17
Offline
Зарегистрирован: 22.12.2016

Привет! А как ты подключал? Можно подробнее? Ты напрямую подключил порт RS 232 к ардуинке?

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

RS232 напрямую к ардуине нельзя. Т.к. в ардуине нет RS232, там UART. Это совсем другие логические уровни.