Акции
Блог
О 3DiY
  • О компании
  • Реквизиты
  • Партнеры
  • Клиенты
  • Вакансии
Оплата
Доставка
Гос. закупки
Товары под заказ
ВК Видео
Отзывы
Услуги
  • 3D печать
    • 3D печать пластиком FDM/FFF
    • 3D печать фотополимером
Контакты
  • Как до нас добраться
    8 (800) 500-45-93
    8 (800) 500-45-93отдел продаж Россия
    8 (495) 565-35-93отдел продаж Москва
    E-mail
    info@3d-diy.ru — отдел продаж

    print@3d-diy.ru — 3D печать на заказ

    support@3d-diy.ru — тех. поддержка

    buh@3d-diy.ru — Бухгалтерия
    Адрес
    Москва, Павелецкая набережная, 2с1
    Как до нас добраться, см. тут
    Режим работы
    пн - пт 09:00—18:00
    3DIY
    Войти
    0Сравнение
    0Избранное
    0Корзина
    3D принтеры3D сканерыПластик для 3D принтераФотополимерыКомплектующие 3DКомплектующие ЧПУЗапчасти 3D принтеров по брендам3D печать на заказ
    3DIY
    Войти
    0Сравнение
    0Избранное
    0Корзина
    3DIY
    Телефоны
    8 (800) 500-45-93отдел продаж Россия
    8 (495) 565-35-93отдел продаж Москва
    E-mail
    info@3d-diy.ru — отдел продаж

    print@3d-diy.ru — 3D печать на заказ

    support@3d-diy.ru — тех. поддержка

    buh@3d-diy.ru — Бухгалтерия
    Адрес
    Москва, Павелецкая набережная, 2с1
    Как до нас добраться, см. тут
    Режим работы
    пн - пт 09:00—18:00
    0
    0
    0
    • Кабинет
    • 0Сравнение
    • 0Избранное
    • 0Корзина
    • Бренды
    • Акции
    • Услуги
      • Услуги
      • 3D печать
        • 3D печать
        • 3D печать пластиком FDM/FFF
        • 3D печать фотополимером
    • Компания
      • Компания
      • О компании
      • Реквизиты
      • Партнеры
      • Клиенты
      • Вакансии
    • Блог
    • Информация
      • Информация
      • Гарантия на товар
      • Возврат товара
      • Положение о персональных данных
      • Политика конфиденциальности
      • Согласие на получение рекламы
      • Пользовательское соглашение
      • Согласие на обработку персональных данных
      • Использование cookie-файлов
      • Договор-оферта
    • Контакты
      • Контакты
      • Как до нас добраться
    8 (800) 500-45-93отдел продаж Россия
    • Телефоны
    • 8 (800) 500-45-93 отдел продаж Россия
    • 8 (495) 565-35-93 отдел продаж Москва
    • info@3d-diy.ru — отдел продаж

      print@3d-diy.ru — 3D печать на заказ

      support@3d-diy.ru — тех. поддержка

      buh@3d-diy.ru — Бухгалтерия
    • Москва, Павелецкая набережная, 2с1
      Как до нас добраться, см. тут
    • пн - пт 09:00—18:00
    Главная
    Блог
    Модули
    Модуль преобразователя интерфейсов UART TTL – RS-485

    Модуль преобразователя интерфейсов UART TTL – RS-485

    Модуль преобразователя интерфейсов UART TTL – RS-485
    Модули 1 января 2024

    Содержание


    • Обзор
    • Технические характеристики
    • Подключение к Arduino
    • Подключение Arduino к компьютеру по RS485
    • Соединение двух плат Arduino по RS485
    • Часто задаваемые вопросы

    Обзор интерфейса связи RS485

    RS485 – это стандарт проводной связи, обычно переменяется для соединение в сеть различного промышленного оборудования. Для передачи и приёма данных используется одна витая пара проводов. Стандарт RS485 позволяет соединять устройства на расстоянии до 1,2км и подключать до 32 устройств к одной шине. При этом в системе одно устройство является ведущим (master), а остальные устройства ведомые (slave).

    Существует большое количество различных типов приемопередатчиков (драйверов) RS-485. Приемопередатчики на основе микросхемы MAX485 (рисунок 1) преобразует сигналы TTL в стандарт RS485 и обратно и используются для подключения устройств на основе Arduino к шине RS485. 

    RS485-01.jpg

    Рисунок 1. Модуль TTL – RS485 для Arduino.


    Технические характеристики

    • Напряжение питания – 5 В;
    • Ток потребления – 10 мА;
    • Ток потребления в режиме ожидания – 5 мА;
    • Скорость передачи данных – до 2,5 Мбит/с;
    • Рабочая температура – 0-70 °С;
    • Размер – 44x14x20 мм.

    Назначение контактов 

    • Vcc – питание модуля (+ 5В);
    • GND – земля;
    • DI – вход передатчика;
    • RO – выход приёмника;
    • DE – разрешение работы передатчика;
    • RE – разрешение работы приёмника;
    • A – линия передачи;
    • B – линия передачи. 

    Выводы модуля A и B, являются выводами линии передачи данных, при этом все модули на линии соединяются одноименными выводами.


    Подключение модуля к плате Arduino 

    Схема подключения модуля к плате Arduino показана на рисунке 2.

    RS485-02.jpg

    Рисунок 2. Подключение модуля TTL – RS485 к плате Arduino. 

    Если соединить вход DE со входом RE и подключить их к цифровому выводу Arduino, то подав на него сигнал HIGH модуль будет работать только на передачу, а подав сигнал LOW, только на приём. Для связи Arduino с модулем TTL – RS485 будем использовать программный Serial на контактах 3 и 2.


    Подключение Arduino к компьютеру по RS485

    Соединим наше устройство (Arduino + модуль TTL – RS485) к компьютеру по шине RS485. Для этого со стороны компьютера потребуется адаптер USB - RS485 (рисунок 3), компьютер видит его как COM-порт.

    RS485-03.jpg

    Рисунок 3. Модуль USB – RS485.

    Arduino будем использовать как slave-устройство. При получении команды от компьютера, если первый байт (адрес) равен символу "1", Arduino переходит в режим передачи и отправляет ответ – "OK". Затем Arduino переходит в режим приема.

    Arduino-скетч получения данных с компьютера показан в листинге 1.

    Листинг 1

    // подключение библиотеки

    #include <SoftwareSerial.h>

    // создание экземпляра

    // на RX-3, TX-2

    SoftwareSerial RS485Serial(3, 2);

    // пин подключения выводов RE и DE

    // конвертирующего модуля (выбор передача/получение)

    const int PIN_DIR = 6;

    unsigned long millis1,millis2;

    // получаемые данные

    String inputData0 = "";    

    // признак конца передачи

    boolean dataComplete0 = false;

     

    void setup(){

    pinMode(PIN_DIR,OUTPUT);   

    // в режим приемника

    digitalWrite(PIN_DIR, LOW);   

    // запуск последовательного порта

    Serial.begin(9600);

    // запуск SoftwareSerial

    RS485Serial.begin(9600);

    }

    void loop() {

    dataRS485Event0();

    if (dataComplete0) {

        Serial.print(0);   

        if(inputData0.charAt(0) == '1' ) {

           // в режим передачи данных

           digitalWrite(PIN_DIR, HIGH);   

           delay(10);

           RS485Serial.print("OK");

           delay(10);

           // в режим получения данных

           digitalWrite(PIN_DIR, LOW);   

        }

        inputData0 = "";

        dataComplete0 = false;

       }   

    }

    // получение данных

    void dataRS485Event0() {

    if (RS485Serial.available() > 0) {

        // получить байт

        char c = (char)RS485Serial.read();

        // добавить в строку

        inputData0 += c;

        // конец передачи

        if (с == '*') {

          dataComplete0 = true;

       }

    }

    }

    Установим на компьютеру программу терминал com-порта, например ComPortToolkit и попробуем отправлять команды на Arduino. Если первый байт (адрес) – "1", arduino посылает ответ "OK" (см. рис. 4).

    RS485-04.jpg

    Рисунок 4. Отправка-получение данных между компьютером и Arduino по RS485.

    RS485-05.jpg

    Рисунок 5. Схема в сборе.


    Соединение двух плат Arduino по RS485

    Теперь соединим 2 платы Arduino по RS485. Первая плата Arduino по нажатии кнопки отправляет данные для переключения состояния светодиода, подключенного ко второй плате Arduino.

    Нам потребуются следующие компоненты:

    • Плата Arduino Uno – 2;
    • Плата прототипирования – 1;
    • Модуль TTL – RS485 – 2;
    • Светодиод – 1;
    • Кнопка – 1;
    • Резистор 10 кОм – 1;
    • Резистор 220 Ом – 1;
    • Провода.

    Схема соединения представлена на рисунке 6. Соединение приемопередатчиков обязательно по витой паре. 

    RS485-06.jpg

    Рисунок 6. Схема соединений двух плат Arduino по протоколу RS485.

    Скетч для первой платы представлен в листинге 2.

    Листинг 2

    // подключение библиотеки SoftwareSerial

    #include <SoftwareSerial.h>

    // создание экземпляра SoftwareSerial

    // на RX-7, TX-6

    SoftwareSerial RS485Serial(7, 6);

    // пин Arduino, к которому подключены выводы RE и DE

    // конвертирующего модуля (выбор передача/получение)

    const int PIN_DIR = 10;

    // Контакт 2 для подключения кнопки

    const int BTN=12;             

    // предыдущее состояние кнопки

    boolean prevBTN = 0;       

    // текущее состояние кнопки

    boolean curBTN = 0;    

    // состояние светодиода

    boolean ledOn = false;    

        

    void setup(){

    pinMode(PIN_DIR,OUTPUT);   

    // в режим передатчика

    digitalWrite(PIN_TX_RX, HIGH);   

    // запуск последовательного порта

    Serial.begin(9600);

    // запуск SoftwareSerial

    RS485Serial.begin(9600);

    }


    void loop() {

    curBTN = debounce(prevBTN);

    if (prevBTN == LOW && curBTN == HIGH) // при нажатии

        {

        // изменить значение состояния светодиода

        ledOn = !ledOn;  

        if(ledOn)

           RS485Serial.println("1=1");

        else

           RS485Serial.println("1=0");

        }

        }

    prevBTN = curBTN;

    }

    // сглаживание дребезга

    boolean debounce(boolean prev) {

    boolean cur = digitalRead(BTN);  

    if (prev != cur)                    

        {// ждем 5мс

        delay(5);                             

        cur = digitalRead(BTN);        

        return cur;                       

        }

    }

    Вторая плата Arduino получает строку данных, анализирует их и устанавливает состояние светодиода. Скетч для второй платы представлен в листинге 3.

    Листинг 3.


    // подключение библиотеки SoftwareSerial

    #include <SoftwareSerial.h>

    // создание экземпляра SoftwareSerial

    // на RX-7, TX-6

    SoftwareSerial RS485Serial(7, 6);

    // пин Arduino, к которому подключены выводы RE и DE

    // конвертирующего модуля (выбор передача/получение)

    const int PIN_DIR = 10;

    unsigned long millis1,millis2;

    // получаемые данные

    String inputData0 = "";    

    // признак конца передачи

    boolean dataComplete0 = false;

    // Контакт подключения светодиода

    const int LED=12;             

    // статус светодиода

    int stLed=0;

     

    void setup(){

    pinMode(PIN_DIR,OUTPUT);   

    // в режим получения данных

    digitalWrite(PIN_DIR, LOW);   

    // запуск последовательного порта

    Serial.begin(9600);

    // запуск SoftwareSerial

    RS485Serial.begin(9600);

    }


    void loop() {

    dataRS485Event0();

    if (dataComplete0) {

        Serial.print(inputData0);   

        if(inputData0.charAt(0) == '1' && inputData0.charAt(1) == '=') {

          if(inputData0.charAt(2) == '0')

            stLed=0;

        else

            stLed=1;

          digitalWrite(LED,stLled);

        }

        inputData0 = "";

        dataComplete0 = false;

       }   

    }

     

    // получение данных

    void dataRS485Event0() {

    if (RS485Serial.available() > 0) {

        // получить байт

        char c = (char)RS485Serial.read();

        // добавить в строку

        inputData0 += c;

        // конец передачи

        if (с == '*') {

          dataComplete0 = true;

        }

    }

    }

    Загружаем скетчи на платы и проверяем работоспособность.

    RS485-07.jpg

    Рисунок 7. Схема в сборе.


    Часто задаваемые вопросы

    1. Нет связи между платами Arduino.

    • Проверьте питание плат Arduino и модулей TTL – RS485.
    • Проверьте правильность подключения плат Arduino и модулей TTL – RS485.
    • Проверьте, чтобы соединение приемопередатчиков было обязательно по витой паре.
    • Проверьте, что одно из устройств на шине RS485 должно быть master, остальные – slave.

     

    Документы

    Listing_01
    1 Кб
    Listing_02
    936 байт
    Listing_03
    981 байт

    Это интересно

    Драйвер шагового двигателя A4988
    Модули
    Драйвер шагового двигателя A4988
    1 января 2024
    RFID-модуль RC522
    Модули
    RFID-модуль RC522
    1 января 2024
    Реле электромеханическое 10А 5В
    Модули
    Реле электромеханическое 10А 5В
    1 января 2024
    Драйвер двигателя L9110S
    Модули
    Драйвер двигателя L9110S
    1 января 2024
    Nodemcu Lua Wi-Fi на Esp8266
    Модули
    Nodemcu Lua Wi-Fi на Esp8266
    1 января 2024
    Wi-Fi модуль ESP-01
    Модули
    Wi-Fi модуль ESP-01
    1 января 2024
    • Комментарии
    Загрузка комментариев...
    Назад к списку
    • Все публикации277
      • 3D принтеры59
      • 3D печать64
      • ЧПУ10
      • Датчики27
      • Модули38
      • 3D сканеры1
      • Arduino механика6
      • Arduino платы8
      • Дисплеи6
      • Кейсы1
      • Компоненты13
      • Мировые новости35
      • Проекты7
      • Сопутствующие2
    Связаться с нами
    8 (800) 500-45-93
    8 (800) 500-45-93отдел продаж Россия
    8 (495) 565-35-93отдел продаж Москва
    E-mail
    info@3d-diy.ru — отдел продаж

    print@3d-diy.ru — 3D печать на заказ

    support@3d-diy.ru — тех. поддержка

    buh@3d-diy.ru — Бухгалтерия
    Адрес
    Москва, Павелецкая набережная, 2с1
    Как до нас добраться, см. тут
    Режим работы
    пн - пт 09:00—18:00
    info@3d-diy.ru — отдел продаж

    print@3d-diy.ru — 3D печать на заказ

    support@3d-diy.ru — тех. поддержка

    buh@3d-diy.ru — Бухгалтерия
    Москва, Павелецкая набережная, 2с1
    Как до нас добраться, см. тут
    Магазин
    Бренды
    Акции
    Каталог
    Услуги
    Компания
    О компании
    Реквизиты
    Партнеры
    Клиенты
    Вакансии
    Информация
    Гарантия на товар
    Возврат товара
    Положение о персональных данных
    Политика конфиденциальности
    Согласие на получение рекламы
    Пользовательское соглашение
    Согласие на обработку персональных данных
    Использование cookie-файлов
    Договор-оферта
    Помощь
    Условия оплаты
    Условия доставки
    Товары под заказ
    Гос. закупки
    Как сделать заказ
    Вопрос-ответ
    2013 - 2026 © 3DiY (Тридиай) - интернет-магазин комплектующих для 3D принтеров, ЧПУ станков и робототехники
    Конфиденциальность
    Оферта
    ГлавнаяКаталог0Корзина0ИзбранныеКабинет0Сравнение
    d =
    Наш сайт использует куки. Продолжая им пользоваться, вы соглашаетесь на обработку персональных данных в соответствии с политикой конфиденциальности.
    Согласен