Arduino Mega, RS - 232, 485. Help

Тема в разделе "Arduino & Shields", создана пользователем Egress, 13 фев 2015.

  1. Egress

    Egress Нуб

    Доброго времени суток.
    Задача состоит в обмене данными с двумя устройствами по RS-232, одним по RS-485 и необходимо подключение gsm модуля.

    Полный ноль в электронике, что когда и почему сгорает мне неизвестно. Никогда не имел дел с подобными вещами и назрел вопрос.
    Выдержка с оф. сайта (оставил на английском. Прощу прощения):

    Serial
    Used for communication between the Arduino board and a computer or other devices. All Arduino boards have at least one serial port (also known as a UART or USART): Serial. It communicates on digital pins 0 (RX) and 1 (TX) as well as with the computer via USB. Thus, if you use these functions, you cannot also use pins 0 and 1 for digital input or output.


    Значит ли это, что используя USB я уже не смогу использовать pins 0 & 1 ?
    (Это просто кажется странным не знаю почему, либо я в языке слаб.)

    The Arduino Mega has three additional serial ports: Serial1 on pins 19 (RX) and 18 (TX), Serial2 on pins 17 (RX) and 16 (TX), Serial3 on pins 15 (RX) and 14 (TX). To use these pins to communicate with your personal computer, you will need an additional USB-to-serial adaptor, as they are not connected to the Mega's USB-to-serial adaptor. To use them to communicate with an external TTL serial device, connect the TX pin to your device's RX pin, the RX to your device's TX pin, and the ground of your Mega to your device's ground. (Don't connect these pins directly to an RS232 serial port; they operate at +/- 12V and can damage your Arduino board.)

    Для чего USB-to-serial ?
    У внешнего устройства нет USB; как положено -3..-12 В = 1, +3..+12В = 0.
    Почему не пустить 3 провода GND-GND, TxD1-RxD, RxD1-TxD и для Serial2 так же если это UART и он должен работать с этими стандартными напряжениями, как я понимаю?
    Возможна ли вообще реализация этого на Mega и какие компоненты понадобятся?

    Спасибо. Всем. За всё.
     
  2. ANV

    ANV Гуру

    serial используется в Ардуино для заливки прошивки и отладки - очень удобно отладочные или уже готовые данные отослать в serial и в терминале на компьютере сразу все увидеть

    Вам надо всего 4 serial порта, два на 232, один на 485 и один на GSM модуль.
    Как раз 4 порта есть у Меги.
    Serial, который используется для USB можно использовать у себя в проекте, тк между микросхемой USB-serial и 2560 стоят резисторы 1 килоом, а на разъем для шилда контакты от serial от 2560 выходят напрямую. Это означает, что шилд может "перетянуть" логические уровни, USB-serial микросхемы и нормально работать. Для перепрошивки надо либо вынимать шилд, либо отключать на нем TX
     
    Egress нравится это.
  3. Egress

    Egress Нуб

    Спасибо за ответ. Трудно задать вопрос, когда не очень понимаешь, но я стараюсь:

    1) USB-Serial есть только на Serial (0) как я понял. Для того чтобы если подключить устройство по USB оно работало с 2560 через Serial, абстрагируя контроллер от того, чем является устройство и он одинаково работал со всеми. Там и преобразование уровней напряжения тогда происходит. Так ли это?

    2) Что у нас с Serial 1 2 3? Я не понял, что делает резистор 1k, но от Tx(1,2,3) Rx(1,2,3) до 2560 его не встречается на сколько смог понять. Могу ли я пользоваться ими просто соединив контакты Tx-Rx Rx-Tx с внешним устройством и не увидеть как всё задымилось или нужно ... что-то нужно?
    Что означает "перетянуть" логические уровни и usb-serial микросхемы. Чем это опасно?

    Спасибо. Если я где-то несу несуразицу - простите. И поясните, если возможно ;)
     
  4. ANV

    ANV Гуру

    1. Да, USB-serial мост подключен только к serial0 порту, на других его нет.
    Не будем говорить, что мост USB-serial только преобразует логические уровни, это не так, т.к. USB непростой протокол, со своим протокольным стеком. Но смысл верный - в компьютере виртуальный СОМ-порт, а в 2560 просто serial.

    2. Serial 2,3,4 идет напрямую на пины расширения. Если ваши драйверы 5 вольтовые или толерантные к 5 вольтам, то можно напрямую подключать.
    Про перетянуть: благодаря этим резисторам на serial0 до 2560 доходит, не знаю как по-русски, "слабый ноль" и "слабая единица", тк резисторы ограничивают ток до 5мА. Если на контакты serial0 подключить драйвер, который дает 20мА, то это будет "сильная единица" или "сильный ноль". При этом мост USB-serial не сгорит от того что он выдает ноль, а драйвер единицу (или наоборот), а 2560 будет "видеть" только драйвер, а не мост
     
    Egress нравится это.
  5. Egress

    Egress Нуб

    1) Отлично

    2) Таким образом если устройства управляются не 5В , а 12В то необходимо предусмотреть на Arduino прербразователь из 12 в 5 на Rx - Gnd и из 5 в 12 на Tx - Gnd?
     
  6. ANV

    ANV Гуру

    А где вы нашли 12 вольт?
     
  7. Egress

    Egress Нуб

    Счетчик
     
  8. ANV

    ANV Гуру

    Тут речь не про напряжение питание устройства, а напряжение питания микросхемы, которая подключена к Ардуино
     
    Egress нравится это.
  9. 9xA59kK

    9xA59kK Гик

    Какая микросхема, обычно питание у многих микросхем в широком диапазоне, смотри даташит на микросхему. Уровень 5v у многих микросхем в пределах питания её смой, поэтому просто надо подать питание на неё 5v/
     
    Egress нравится это.