Акции
Блог
О 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 — отдел продаж

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

    Адрес
    Москва, Павловская улица, 27с7
    м. Тульская
    Режим работы
    пн – пт 11:00—19:00
    8.05 – 11.05 не работаем
    3DIY
    3D принтеры
    Материалы для 3D печати
    Комплектующие 3D принтера
    Arduino и робототехника
    Комплектующие ЧПУ станка
    Инструменты
    Запчасти для 3D принтеров по брендам
    Товары снятые с продажи
    • 3D принтеры
      • Печать пластиком (FDM/FFF)
        Печать пластиком (FDM/FFF)
      • Печать фотополимером (SLA/DLP/LCD)
        Печать фотополимером (SLA/DLP/LCD)
      • Печать воском (MJP)
        Печать воском (MJP)
      • Для дома
        Для дома
      • Для бизнеса
        Для бизнеса
      • Для производства
        Для производства
      • Наборы для сборки
        Наборы для сборки
      • Промышленные
        Промышленные
      Phrozen
      FlyingBear
      QIDI
      CreatBot
      FlashForge
      Bambu Lab
      ERYONE
      Elegoo
      eSUN
      Creality
      BIGTREETECH
      Anycubic
    • Материалы для 3D печати
      • Пластики
        Пластики
        • ABS
        • PLA
        • PETG
        • HIPS
        • PVA
        • FLEX (TPU)
        • Nylon/PA (Нейлон)
        • PC (Поликарбонат)
        • PEEK
        • POM (Полиацеталь)
        • PP (Полипропилен)
        • Резина
        • Стеклонаполненные
        • Термочувствительные
        • Угленаполненные
        • SBS
        • Светящиеся
        • Металлические
        • Спец. пластик
        • Пластик для 3D ручек
      • Фотополимеры
        Фотополимеры
        • Стандартные
        • ABS-типа
        • Гибкие
        • Водосмываемые
        • Выжигаемые
        • Инженерные
        • Стоматологические
        • Для хобби
      Phrozen
      FlyingBear
      QIDI
      CreatBot
      FlashForge
      Bambu Lab
      ERYONE
      Elegoo
      eSUN
      Creality
      BIGTREETECH
      Anycubic
    • Комплектующие 3D принтера
      • Электроника
        Электроника
        • Платы управления
        • Шаговые двигатели (ШД)
        • Драйверы ШД 3D принтеров
        • Драйверы шаговых двигателей ЧПУ
        • Дисплеи
        • Датчики и модули
        • Блоки питания
        • Реле
        • Концевые выключатели
        • Вентиляторы      
          • Вентиляторы осевые
          • Вентиляторы радиальные (улитки)
          • Решетки и фильтры для вентиляторов
        • Провода, кабели и разъемы
      • Механика
        Механика
        • Зубчатые шкивы
        • Зубчатые ремни
        • Трапецеидальные винт-гайки
        • Шарико-винтовые передачи (ШВП)      
          • Гайки ШВП
          • Модули крепления гаек ШВП
          • Обратотанные ШВП
          • Опоры ШВП
        • Соединительные муфты
        • Ролики для зубчатых ремней
        • Цилиндрические направляющие
        • Рельсовые направляющие      
          • Профильные направляющие HIWIN
          • Профильные направляющие КИТАЙ
        • Держатели вала
        • Корпусные детали      
          • Корпуса
          • Апгрейды
          • Комплектующие для корпусов
        • Запчасти OpenBuilds
        • Подшипники качения
        • Пружины
      • Нагревательные столы и сопутствующие
        Нагревательные столы и сопутствующие
        • Нагревательные платформы
        • PEI пластины
        • Стекла и Зеркала
        • Теплоизоляция
        • Основания для столов
        • Силиконовые проставки (пружины)
        • Термисторы
        • Зажимы-фиксаторы
        • Пружины
      • Экструдеры
        Экструдеры
        • Экструдеры и механизмы подачи
        • Хотэнды
        • Сопла
        • Термобарьеры
        • Термисторы
        • Нагревательные блоки
        • Теплоизоляция нагревательных блоков
        • Тефлоновые трубки
        • Радиаторы
        • Нагревательные элементы
        • Шестерни
        • Фитинги
        • Сопутствующие товары
      • Сушилки для пластика
        Сушилки для пластика
      • УФ-камеры
        УФ-камеры
      • Мойки
        Мойки
      • Ультразвуковые ванны (мойки)
        Ультразвуковые ванны (мойки)
      • 3D ручки
        3D ручки
      • 3D-сканеры
        3D-сканеры
      • Расходные материалы для SLA / LCD
        Расходные материалы для SLA / LCD
      • Сопутствующие
        Сопутствующие
      • Наборы для мейкеров
        Наборы для мейкеров
      • Инструменты для 3D печатника
        Инструменты для 3D печатника
      • Постобработка
        Постобработка
      • Адгезивы
        Адгезивы
      Phrozen
      FlyingBear
      QIDI
      CreatBot
      FlashForge
      Bambu Lab
      ERYONE
      Elegoo
      eSUN
      Creality
      BIGTREETECH
      Anycubic
    • Arduino и робототехника
      • Arduino
        Arduino
      • Raspberry Pi
        Raspberry Pi
        • Микрокомпьютеры
        • Дисплеи      
          • TFT-LCD дисплеи Raspberry Pi
          • IPS-LCD дисплеи Raspberry Pi
          • AMOLED дисплеи Raspberry Pi
        • Корпуса
        • Шилды
        • Камеры
        • Питание
        • Охлаждение
      • Обучающие наборы
        Обучающие наборы
      • Orange Pi
        Orange Pi
      • Одноплатники
        Одноплатники
      • Модули
        Модули
        • Платы расширения
        • Беспроводные модули
        • Интерфейсы
        • Релейные модули
        • Преобразователи питания
        • Лазерные модули
        • Аудио
        • Видео
        • Клавиатура
        • Драйверы моторов
        • Измерительные
        • Другие
      • Датчики
        Датчики
        • Аудио
        • Газа
        • Инфракрасные
        • Климатические
        • Жидкостные
        • Механического воздействия
        • Положения (акселерометры/компасы/гироскопы)
        • Пространства
        • Света и цвета
        • Тактильные
        • Тока и напряжения
      • Дисплеи
        Дисплеи
        • TFT-LCD дисплеи
        • STN-LCD дисплеи
        • LED дисплеи
        • OLED дисплеи
        • Дисплеи DWIN
        • E-Paper дисплеи
      • Механика
        Механика
        • Колёса
        • Коллекторные двигатели
        • Сервоприводы
        • Шаговые двигатели
        • Другие
        • Линейные актуаторы (приводы)
      • Макетные платы
        Макетные платы
      • Светодиоды
        Светодиоды
        • Светодиодные кольца
        • Светодиодные матрицы
        • Сегментные индикаторы
        • Светодиоды круглые
        • Другие
      • Провода и кабели
        Провода и кабели
      • Источники питания
        Источники питания
      • Радиодетали
        Радиодетали
        • Кварц
        • Кнопки
        • Конденсаторы
        • Резисторы
        • Транзисторы
        • Другие
        • Стабилизаторы
      Phrozen
      FlyingBear
      QIDI
      CreatBot
      FlashForge
      Bambu Lab
      ERYONE
      Elegoo
      eSUN
      Creality
      BIGTREETECH
      Anycubic
    • Комплектующие ЧПУ станка
      • Шаговые двигатели и аксессуары
        Шаговые двигатели и аксессуары
        • NEMA 8
        • NEMA 11
        • NEMA 14
        • NEMA 17
        • NEMA 23
        • NEMA 34
        • NEMA 42
        • NEMA 52
        • Шаговые актуаторы
        • Шаговые двигатели с редуктором      
          • C планетарным редуктором
          • C цилиндрическим редуктором
        • Шаговые двигатели с тормозом
        • Круглые шаговые двигатели
        • Сопутствующие
      • Зубчатые ременные передачи
        Зубчатые ременные передачи
        • Зубчатые ремни      
          • Зубчатые ремни GT2
          • Зубчатые ремни HTD 3M
          • Зубчатые ремни HTD 5M
          • Зубчатые ремни T2.5
          • Зубчатые ремни T5
        • Зубчатые шкивы      
          • Зубчатые шкивы GT2
          • Зубчатые шкивы HTD 3M
        • Ролики
      • Шарико-винтовые передачи (ШВП)
        Шарико-винтовые передачи (ШВП)
        • Готовые ШВП, обработанные
        • Гайки ШВП
        • Опоры ШВП
        • Модули крепления гаек ШВП
        • Кронштейны-опоры ШВП
      • Трапецеидальные передачи винт-гайка
        Трапецеидальные передачи винт-гайка
        • Винты трапецеидальные
        • Гайки трапецеидальные
        • Муфты Oldham
        • Сопутствующие
      • Цилиндрические направляющие
        Цилиндрические направляющие
        • Полированные валы
        • Цилиндрические рельсы
        • Линейные подшипники
        • Модули с линейным подшипником
        • Втулки скольжения
        • Держатели вала
        • Пластиковые втулки скольжения
      • Профильные направляющие
        Профильные направляющие
        • Профильные направляющие HIWIN      
          • Каретки HIWIN
          • Рельсы HIWIN
        • Профильные направляющие      
          • Каретки
          • Рельсы
        • Роликовые направляющие
      • Муфты соединительные
        Муфты соединительные
        • Жесткие
        • Кулачковые
        • Спиральные
        • Мембрнные
        • Сильфонные
        • Пружинные
        • Гибкие
      • Электроника
        Электроника
        • Блоки питания
        • Вентиляторы электрические и аксессуары      
          • Вентиляторы осевые
          • Вентиляторы радиальные (улитки)
          • Решетки и фильтры для вентиляторов
        • Драйверы шаговых двигателей
        • Микропереключатели и концевики
        • Датчики касания инструмента
        • Кнопки и индикаторы
      • Фрезы
        Фрезы
        • Спиральные фрезы      
          • Стружка вверх
          • Стружка вниз
        • Компрессионные фрезы
        • Прямые фрезы
        • Конусные фрезы
        • Сферические фрезы
        • Фрезы рашпильные (кукуруза)
        • Цанги
        • Сопутствующие
      • Карбоновый профиль / трубки
        Карбоновый профиль / трубки
      • Пневматическое оборудование
        Пневматическое оборудование
        • Регуляторы давления, фильтры, лубрикаторы
      • Системы подачи смазки
        Системы подачи смазки
        • Автоматические смазочные насосы
        • Ручные смазочные насосы
        • Маслораспределительные аксессуары
      • Сопутствующие
        Сопутствующие
      • Шпиндели и сопутствующие
        Шпиндели и сопутствующие
        • Шпиндели воздушного охлаждения
        • Шпиндели жидкостного охлаждения
        • Частотные преобразователи
        • Крепления для шпинделей
        • Системы охлаждения шпинделей
        • Подведение СОЖ
        • Прижимы для шпинделей
        • Распылители масляного тумана
        • Щетка-насадка для шпинделя
        • Сопутствующие для шпинделей
      • Механика
        Механика
        • Кабель-каналы гибкие
        • Подшипники качения
        • Подшипниковые узлы
      • Конструкционный профиль
        Конструкционный профиль
        • Сухари пазовые
        • Т-болты
        • Т-гайки
        • Серия 15      
          • Анодированный
          • Без покрытия
        • Серия 20      
          • Анодированный
          • Без покрытия
        • Серия 20 (V-паз)      
          • Анодированный
          • Без покрытия
        • Серия 30      
          • Анодированный
          • Без покрытия
        • Серия 40      
          • Анодированный
          • Без покрытия
        • Серия 45      
          • Анодированный
          • Без покрытия
        • Серия 50      
          • Анодированный
          • Без покрытия
      • Комплектующие OpenBuilds
        Комплектующие OpenBuilds
        • Ролики OpenBuilds
      • Лазерные станки
        Лазерные станки
      • Лазерная резка и аксессуары
        Лазерная резка и аксессуары
        • Блоки розжига
        • Воздушные компрессоры
        • Датчики
        • Крепление лазерной трубки
        • Лазерные головки и держатели зеркал
        • Полупроводниковые лазерные модули
        • Системы охлаждения
        • Системы управления (Контроллеры)      
          • Контроллеры RuiDa
      Phrozen
      FlyingBear
      QIDI
      CreatBot
      FlashForge
      Bambu Lab
      ERYONE
      Elegoo
      eSUN
      Creality
      BIGTREETECH
      Anycubic
    • Инструменты
      • Зачистка и обрезка кабеля
        Зачистка и обрезка кабеля
      • Измерительный инструмент
        Измерительный инструмент
        • Мультиметры
      • Кабель и провода
        Кабель и провода
        • Акустический кабель
        • Высоковольтный кабель
      • Клеевые пистолеты (термопистолеты)
        Клеевые пистолеты (термопистолеты)
      • Напильники и надфили
        Напильники и надфили
      • Обжимной инструмент
        Обжимной инструмент
      • Отвертки
        Отвертки
      • Паяльное оборудование
        Паяльное оборудование
        • Наборы для паяльных работ
        • Отсосы припоя
        • Паяльные принадлежности
        • Паяльные станции
        • Припой
        • Электрические паяльники
      • Пинцеты
        Пинцеты
      • Расходные материалы
        Расходные материалы
        • Изолента
        • Клеевые стержни
      Phrozen
      FlyingBear
      QIDI
      CreatBot
      FlashForge
      Bambu Lab
      ERYONE
      Elegoo
      eSUN
      Creality
      BIGTREETECH
      Anycubic
    • Запчасти для 3D принтеров по брендам
      • 3DIY printers
        3DIY printers
        • Bizon 3
        • STRATEX 350
        • STRATEX 500
        • REX 6K Mono
        • P3 Steel 200 PRO
        • P3 Steel 300 PRO
        • P3 Steel 300 DUAL PRO
      • Bambu Lab
        Bambu Lab
        • Bambu Lab A1 mini
        • Bambu Lab A1
        • Bambu Lab P1 Series
        • Bambu Lab X1 Series
      • Creality
        Creality
        • Creality K1
        • Creality K1 MAX
        • Creality K1C
        • Creality K2 plus
      • Flashforge
        Flashforge
        • Adventurer 5M / 5M Pro
      • Qidi
        Qidi
        • Qidi Tech X-Plus 3
        • Qidi Tech X-Max 3
        • QIDI Plus 4
        • Qidi Q1 Pro
      Phrozen
      FlyingBear
      QIDI
      CreatBot
      FlashForge
      Bambu Lab
      ERYONE
      Elegoo
      eSUN
      Creality
      BIGTREETECH
      Anycubic
    • Товары снятые с продажи
        Phrozen
        FlyingBear
        QIDI
        CreatBot
        FlashForge
        Bambu Lab
        ERYONE
        Elegoo
        eSUN
        Creality
        BIGTREETECH
        Anycubic
      Войти
      0Избранное
      0Корзина
      3D принтерыПластик для 3D принтераФотополимерыКомплектующие 3DКомплектующие ЧПУРобототехникаЗапчасти 3D принтеров по брендам
      3DIY
      Войти
      0Избранное
      0Корзина
      3DIY
      Телефоны
      8 (800) 500-45-93отдел продаж Россия
      8 (495) 565-35-93отдел продаж Москва
      E-mail

      info@3d-diy.ru — отдел продаж

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

      Адрес
      Москва, Павловская улица, 27с7
      м. Тульская
      Режим работы
      пн – пт 11:00—19:00
      8.05 – 11.05 не работаем
      0
      0
      • Сиэтл
      • Кабинет
      • 0Избранное
      • 0Корзина
      • Бренды
      • Акции
      • Услуги
        • Услуги
        • 3D печать
          • 3D печать
          • 3D печать пластиком FDM/FFF
          • 3D печать фотополимером
      • Компания
        • Компания
        • О компании
        • Реквизиты
        • Партнеры
        • Клиенты
        • Вакансии
      • Блог
      • Информация
        • Информация
        • Гарантия на товар
        • Возврат товара
        • Политика конфиденциальности
        • Договор-оферта
        • FAQ
      • Контакты
        • Контакты
        • Как до нас добраться
      8 (800) 500-45-93отдел продаж Россия
      • Телефоны
      • 8 (800) 500-45-93 отдел продаж Россия
      • 8 (495) 565-35-93 отдел продаж Москва
      • info@3d-diy.ru — отдел продаж

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

      • Москва, Павловская улица, 27с7
        м. Тульская
      • пн – пт 11:00—19:00
        8.05 – 11.05 не работаем
      Главная
      Блог
      Модули
      RS-485, мультиклиентная проводная передача данных

      RS-485, мультиклиентная проводная передача данных

      RS-485, мультиклиентная проводная передача данных
      Модули 1 января 2024

      Содержание

      • Назначение и принцип работы
      • Технические характеристики и принцип работы
      • Подключение к Ардуино
      • Пример использования
      • Выводы
      • FAQ


      Назначение и принцип работы 

      UART (RS-232) старейший, простейший, универсальнейший и потому заслуженно любимый всеми интерфейс для обмена данными. Позволяет быстро, используя всего два проводка, связать контроллер с датчиком, модемом, другим контроллером и даже компьютером.

      Однако, как и все в этом мире, UART, а точнее его аппаратная реализация RS-232, не лишен недостатков. Первый: небольшое расстояние, на котором можно обеспечить уверенный прием и передачу. При крепко спаянном кабеле с солидным экранированием, длина его может достигать лишь несколько метров, далее с каждым метром надежность и скорость падают катастрофически быстро. Второй: работа по принципу точка-точка, то есть соединить можно только два устройства.

      Вот был бы способ передавать данные далеко и сразу нескольким! Такой способ есть, интерфейс носит название RS-485. Не будучи идеалом во всем, он предоставляет гораздо более широкие возможности для создания связей между разделенными расстояниями и задачами устройств. Узнать о некоторых возможностях на конкретном рабочем примере попробуем и мы в этой статье.


      Технические характеристики и принцип работы 

      Аппаратно, интерфейс RS-485 реализуется на наиболее распространенных микросхемах семейства MAX485. Разновидностей в семействе десятки, отличаются они по количеству максимально поддерживаемых устройств, максимальной скорости, расстоянию, порядку передачи дуплекс/полудуплекс и так далее. Рассмотрим самую известную микросхему из этого семейства, которая так и называется - MAX485.

      max485-smd-ic.jpg

      Основные характеристики:

      • напряжение питания - 5В,
      • ток потребления - 0,3 mA,
      • расстояние передачи данных - до 1200м,
      • скорость передачи данных сильно зависит от расстояния, от 62 кбит/с при 1200 м, до 10000 кбит/с при 10м,
      • количество трансиверов на шине до 32 (другие представители семейства поддерживают до 256),

      Пользоваться устройством крайне просто: микросхема одним концом присоединяется к аппаратному или программному порту UART контроллера, а другим к шине передачи данных, по которой информация передается в другой микросхеме. Таким образом, с точки зрения конечного устройства, передача данных ничем не отличается от привычной UART.  

      Соединение точка-точка:

      rs485-shema.jpg

      Соединение нескольких устройств:

      rs485-shema_multi.jpg

      Шина данных представляет собой два провода, присоединяемых к одноименным точкам трансивера А или В. Суть технологии в том, что на два этих провода сигналы подаются синхронно но с инверсией, то есть когда на одном 1, на другом 0 и наоборот. Таким нехитрым образом обеспечивается увеличение разности потенциалов и высокая устойчивость к синхфазным помехам, которые воздействуют на оба провода одновременно, при этом не меняя разность потенциалов. Чтобы помехи были как можно более одновременными, провода следует размещать максимально близко друг к другу, то есть свивать в жгут.

      Сама микросхема для работы требует несложной обвязки, состоящей из нескольких резисторов, кроме того, конечные трансмиттеры должны содержать гасящий отражения терминальный резистор 120 Ом, в народе известный также как “терминатор”. Для упрощения жизни DIY-мастеров китайские друзья заботливо придумали готовый модуль связи на базе MAX485, он уже содержит все необходимое и готов к работе как есть.

      IMG-20170815-WA0007.jpg max485-rs485-to-ttl-converter-module-1.jpg

      Именно такие модули мы будем использовать для нашего примера.


      Подключение к Ардуино 

      Со стороны устройства на модуле имеются следующие пины:

      ●     DI - передача данных, подключается к TX,

      ●     RO - прием данных, подключается к RX,

      ●     DE и RE - переключают направление передачи данных, на прием или на передачу, соединяются перемычкой и срабатывают одновременно, 1 - передача, 0 - прием.

      Со стороны шины данных:

      ●     GND - земля,

      ●     VCC - питание +5 В,

      ●     A и B, каналы на шину данных.

      Упрощенно, принцип организации работы можно описать так: каждое устройство в сети имеет свой уникальный номер, по которому оно определяется и идентифицируется. В сети одно устройство главное, оно же ведущее, остальные сателлиты, они же ведомые. Ведомые изначально молчат и “слушают” сеть. Ведущее, в зависимости от задачи, дает команду ведомым либо (периодически) по таймеру, либо по какому-либо событию. Команду ведущего на шине видят все устройства, но откликаются только те, к кому он обращается по уникальному адресу. Если требуется ответ, ведущее переключается на прослушку, а ведомое на отправку данных, после чего управление снова передается главному. Таким образом обеспечивается последовательная коммуникация со всеми устройствами в сети без пересечений и коллизий. Существуют более сложные технологии взаимоотношений, например, передача статуса ведомого от устройства к устройству, многоуровневые сети и так далее, на что хватит фантазии разработчиков. В этой статье мы рассмотрим пример классической простой сети, состоящей из одного ведущего и двух ведомых устройств с обратной связью.

      Рекомендации по разводке сети:

      • чем меньше расстояния, тем лучше,
      • топология сети, преимущественно, должна быть линейной,
      • в качестве проводов рекомендуются витые пары,
      • располагать шину, по возможности, подальше от источников электромагнитных помех в виде мощных потребителей, источников излучения и прочих.

      topo.jpg


      Пример использования

      Создадим простейшую рабочую сеть из трех элементов. Роль главного, на правах более внушительных размеров, достается UNO, роли остальных двух равноценных сателлитов исполнят NANO. У каждого из ведомых по одной кнопке и одному светодиоду, у главного две кнопки и два светодиода.

      Задача: нажимая на кнопки главного устройства мы должны дистанционно активировать включение светодиодов на соответствующих ведомых. Нажимая же кнопки на ведомых, зажигаем соответствующий светодиод на главном. Логические связи можно изобразить так:

      svasi.jpg

      Верхний ряд - светодиоды, нижний - кнопки.

      На физическом уровне связи между компонентами выглядят чуть запутаннее, но тоже очень логично.

      rs485_bb.jpg

      Три контроллера с тремя модулями RS-485, соединёнными в простейшую сеть.

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

      IMG_20201104_030401.jpg

      Заливаем программу в главный:

       byte BUT[2] = {9, 8}; // пины кнопок byte LED[2] = {13, 12}; // пины светодиодов #define IN_OUT 6 // переключатель прием-отправка byte MSG_IN[4]; byte MSG_OUT[4] = {0x10, 0, 0, 0x20}; // шаблон сообщения: 0 - начальный, 1 - адрес сателлита, 2 - команда, 3 - конечный void setup() { for (byte i = 0; i < 2; i++) { pinMode(BUT[i], INPUT_PULLUP); pinMode(LED[i], OUTPUT); } pinMode(IN_OUT, OUTPUT); digitalWrite(IN_OUT, LOW); Serial.begin(9600); } void loop() { post(); // периодическая отправка команд на ведомые if (Serial.available()) { // прием команд от ведомых // delay(1); for (byte i = 0; i < 3; i++) MSG_IN[i] = MSG_IN[i + 1]; MSG_IN[3] = Serial.read(); if (MSG_IN[0] == 0x10 && MSG_IN[3] == 0x20) { // пришло полное сообщение digitalWrite(LED[MSG_IN[1]], !MSG_IN[2]); // выполняем, передаем на светодиод соответствующий адресу состояние пришедшее в команде } } } void post() { static unsigned long timerT; static byte msg_num = 0; if (timerT > millis() - 100) return; // отправляем последовательно каждые 100 мс MSG_OUT[1] = msg_num; MSG_OUT[2] = digitalRead(BUT[msg_num]); msg_num = !msg_num; digitalWrite(IN_OUT, HIGH); // включаем отправку for (byte i = 0; i < 4; i++) { // отправляем 4 байта сообщения Serial.write(MSG_OUT[i]); } delay(5); // ожидаем пока уйдет команда до того, как переключить отправку на прием digitalWrite(IN_OUT, LOW); // переключаемся на прием timerT = millis(); } 

      Основные моменты работы программ описаны в комментариях. Сюжет описан выше, технические подробности построчно.

       byte BUT = 2; // пин кнопки byte LED = 13; // пин светодиода #define IN_OUT 6 // переключатель прием-отправка #define ADR 0 // адрес ведомого (для первого ведомого 0, для второго 1)! byte MSG_IN[4]; byte MSG_OUT[4] = {0x10, ADR, 0, 0x20}; // шаблон сообщения: 0 - начальный, 1 - адрес сателлита, 2 - команда, 3 - конечный void setup() { pinMode(BUT, INPUT_PULLUP); pinMode(LED, OUTPUT); pinMode(IN_OUT, OUTPUT); digitalWrite(IN_OUT, LOW); Serial.begin(9600); } void loop() { if (Serial.available()) { // delay(1); for (byte i = 0; i < 3; i++) MSG_IN[i] = MSG_IN[i + 1]; MSG_IN[3] = Serial.read(); if (MSG_IN[0] == 0x10 && MSG_IN[1] == ADR && MSG_IN[3] == 0x20) { // пришло полное сообщение именно нам! digitalWrite(LED, !MSG_IN[2]); // выполняем, устанавливаем в светодиод состояние пришедшее почтой MSG_OUT[2] = digitalRead(BUT); delay(5); // ждем пока главный переключится на прием digitalWrite(IN_OUT, HIGH); // включаем передачу for (byte i = 0; i < 4; i++) { // передаем Serial.write(MSG_OUT[i]); } delay(5); // ждем пока уйдет сообщение digitalWrite(IN_OUT, LOW); // переключаем на прием } } } 

      Заливаем на второй ведомый:

       byte BUT = 2; // пин кнопки byte LED = 13; // пин светодиода #define IN_OUT 6 // переключатель прием-отправка #define ADR 1 // адрес ведомого (для первого ведомого 0, для второго 1)! byte MSG_IN[4]; byte MSG_OUT[4] = {0x10, ADR, 0, 0x20}; // шаблон сообщения: 0 - начальный, 1 - адрес сателлита, 2 - команда, 3 - конечный void setup() { pinMode(BUT, INPUT_PULLUP); pinMode(LED, OUTPUT); pinMode(IN_OUT, OUTPUT); digitalWrite(IN_OUT, LOW); Serial.begin(9600); } void loop() { if (Serial.available()) { // delay(1); for (byte i = 0; i < 3; i++) MSG_IN[i] = MSG_IN[i + 1]; MSG_IN[3] = Serial.read(); if (MSG_IN[0] == 0x10 && MSG_IN[1] == ADR && MSG_IN[3] == 0x20) { // пришло полное сообщение именно нам! digitalWrite(LED, !MSG_IN[2]); // выполняем, устанавливаем в светодиод состояние пришедшее почтой MSG_OUT[2] = digitalRead(BUT); delay(5); // ждем пока главный переключится на прием digitalWrite(IN_OUT, HIGH); // включаем передачу for (byte i = 0; i < 4; i++) { // передаем Serial.write(MSG_OUT[i]); } delay(5); // ждем пока уйдет сообщение digitalWrite(IN_OUT, LOW); // переключаем на прием } } } 

      Примечание: на время заливки программ следует отключить сеть RS-485, иначе одна программа зальется одновременно на все три устройства, так как аппаратный UART у них теперь объединен в единое целое.

      Внимательный читатель заметит, что разница между программами сателлитов в одной единственной цифре. А именно - адресе устройства, остальное абсолютно идентично. У главного устройства адреса нет, потому что в данном случае он и не требуется.

      Включаем, смотрим результат.

      video.gif

      Замечательно, как и задумывалось! Посмотрим как выглядит сигнал со стороны UNO.

      graf2.jpg

      Верхняя линия - отправка данных с ведущего, вторая - ответ ведомых, нижняя - переключатель направления. Приблизим и расшифруем один сеанс обмена данными.

      graf1.jpg

      Если не обращать внимания на огрызки, принимаемые дешифратором за ошибки, которые ни на что не влияют, видно, что оба сообщения в точности соответствуют тому, что прописано в программе. От ведущего: 0x10 - стартовый байт, 0x00 - адрес обращения, первый ведомый, 0x01 - команда, в данном случае “погасить светодиод”, 0x20 - стоповый байт. Ответ от ведомого: 0x10 - старт, 0x00 - ответ от первого ведомого (теоретически это избыточная информация, т.к. ответ следует сразу после запроса, а запрос мы знаем для кого, но практически это значительно уменьшает вероятность ошибок), 0x00 - зажечь светодиод, 0x20 - стоп. Подобным же образом выглядит следующий за этим обмен со вторым ведомым.

      Система работает правильно, но нам всегда есть к чему придраться и куда совершенствоваться. Во-первых, следует избавиться от delay(), даже от таких коротких. Для этого стоит перебрать функцию отправки данных, разбив ее на две части: собственно отправка, запуск таймера на переключение и переключение на прием. Во-вторых, для надежности в пакет данных можно добавить контрольную сумму, еще один байт, величина которого вычисляется из комбинации остальных, а потом сравнивается принимающей стороной. Для данного примера это несущественно, но если требуется доставка команды с гарантией, например на запуск ядерной ракеты, то лучше контрольную сумму добавить. В-третьих, в примере считывание данных о состоянии кнопок происходит прямо в момент отправки данных. В реальных же изделиях такое подходит не всегда, события должны отслеживаться сами по себе, а отправка-прием сообщений сами по себе. Принятая команда тоже не обязана выполняться моментально при приеме, а вдруг это длительная процедура и пока она длится, вся сеть будет висеть в ожидании. Для решения этих задач создается два буфера, один на прием, другой на передачу, данные из которых используются разными частями программы по мере необходимости.


      Выводы

      Связать несколько устройств в одну сеть для совместной работы не такая уж сложная задача, как может показаться на первый взгляд. Для этого смело пользуйтесь RS-485 удобным, простым, надежным и недорогим аппаратным дополнением к UART. Протокол несложно создать самому под конкретную задачу, а можно использовать готовый, например Modbus, если так привычнее или производится связь со стандартным устройством. RS-485 - еще одна хорошая возможность расширить границы собственного творчества!


      FAQ

      1. Можно ли использовать RS-485 для связи на расстояние более 1200м?

        Одним сегментом нельзя, но можно создать ретрансляторы (устройства, дублирующие сигналы с одной сети в другую и наоборот). Таким образом можно удлинять сеть почти бесконечно.

        2. Как быть, если потребуется связать более 32 устройств?

          Вариантов несколько. Можно воспользоваться другими микросхемами из семейства, например MAX1487 (поддерживает до 128 устройств) или MAX1486 (до 256 устройств). Второй вариант - создать многоуровневую сеть, то есть разбить ее на сегменты, связанные в некоторых точках. Трудно сказать, что проще и что выбрать, вопрос решается в каждом случае индивидуально.

          3. Какую максимальную скорость передачи данных можно устанавливать в сети RS-485?

            Стандартные рекомендации таковы:

            • 62,5 кбит/с 1200 м (одна витая пара),
            • 375 кбит/с 500 м (одна витая пара),
            • 500 кбит/с 300 м,
            • 1000 кбит/с 200 м,
            • 2400 кбит/с 100 м (две витых пары),
            • 10 000 кбит/с 10 м.

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

            4. Аппаратный или программный UART предпочтительней использовать?

              Аппаратный использовать предпочтительней всегда, но если такой возможности нет, подключайте к программному. Но помните, что у него есть ограничения по максимальной скорости.

              5. “Голая” микросхема MAX485 или модуль на ее основе?

                Для быстрого прототипирования удобнее и проще использовать готовый модуль, для более серьезных изделий, особенно с большим количеством устройств, лучше разработать схему на MAX. Обратите внимание, “терминатор” нужен только на концевых точках сети, а при использовании модуля он везде, что повышает нагрузку и снижает разность потенциалов с каждым дополнительным устройством.

                6. Можно ли “перепрошивать” контроллер при помощи RS-485?

                  Да, при правильной разводке, наличии на борту правильного бутоадера и предусмотренной в программе команды на перезагрузку. Таким образом можно осуществлять легкую смену прошивки в устройствах к которым трудно физически подобраться.

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

                  Драйвер шагового двигателя 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
                  • Комментарии
                  Загрузка комментариев...
                  Назад к списку
                  • Все публикации248
                    • 3D принтеры38
                    • 3D печать57
                    • ЧПУ10
                    • Датчики27
                    • Модули38
                    • 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 — отдел продаж

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

                  Адрес
                  Москва, Павловская улица, 27с7
                  м. Тульская
                  Режим работы
                  пн – пт 11:00—19:00
                  8.05 – 11.05 не работаем

                  info@3d-diy.ru — отдел продаж

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

                  Москва, Павловская улица, 27с7
                  м. Тульская
                  Магазин
                  Бренды
                  Акции
                  Каталог
                  Услуги
                  Компания
                  О компании
                  Реквизиты
                  Партнеры
                  Клиенты
                  Вакансии
                  Информация
                  Гарантия на товар
                  Возврат товара
                  Политика конфиденциальности
                  Договор-оферта
                  FAQ
                  Помощь
                  Условия оплаты
                  Условия доставки
                  Товары под заказ
                  Гос. закупки
                  Как сделать заказ
                  Вопрос-ответ
                  2013 - 2025 © 3DiY (Тридиай) - интернет-магазин комплектующих для 3D принтеров, ЧПУ станков и робототехники
                  Конфиденциальность
                  Оферта
                  ГлавнаяКаталог0Корзина0ИзбранныеКабинет
                  Уважаемые клиенты
                  8-9 мая - выходные
                  С праздником!