Акции
Блог
О 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
      Flying Bear
      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
      Flying Bear
      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 печатника
      • Постобработка
        Постобработка
      • Адгезивы
        Адгезивы
      Мойка и УФ-камера Elegoo Mercury Plus 3.0
      Мойка и УФ-камера Elegoo Mercury Plus 3.0
      Phrozen
      Flying Bear
      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
      Flying Bear
      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
      Flying Bear
      QIDI
      CreatBot
      FlashForge
      Bambu Lab
      ERYONE
      Elegoo
      eSUN
      Creality
      BIGTREETECH
      Anycubic
    • Инструменты
      • Зачистка и обрезка кабеля
        Зачистка и обрезка кабеля
      • Измерительный инструмент
        Измерительный инструмент
        • Мультиметры
      • Кабель и провода
        Кабель и провода
        • Акустический кабель
        • Высоковольтный кабель
      • Клеевые пистолеты (термопистолеты)
        Клеевые пистолеты (термопистолеты)
      • Напильники и надфили
        Напильники и надфили
      • Обжимной инструмент
        Обжимной инструмент
      • Отвертки
        Отвертки
      • Паяльное оборудование
        Паяльное оборудование
        • Наборы для паяльных работ
        • Отсосы припоя
        • Паяльные принадлежности
        • Паяльные станции
        • Припой
        • Электрические паяльники
      • Пинцеты
        Пинцеты
      • Расходные материалы
        Расходные материалы
        • Изолента
        • Клеевые стержни
      Phrozen
      Flying Bear
      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
        • Bambu Lab H2D
      • Creality
        Creality
        • Creality K1
        • Creality K1 MAX
        • Creality K1C
        • Creality K2 plus
      • Flashforge
        Flashforge
        • Adventurer 5M / 5M Pro
      • Anycubic
        Anycubic
        • Anycubic Photon Mono 4/ 4 Ultra
        • Anycubic Photon Mono M5/ M5s/ M5s Pro
        • Anycubic Photon Mono M7
        • Anycubic Photon Mono M7 Max
        • Anycubic Photon Mono M7 Pro
      • Flying Bear
        Flying Bear
        • Flying Bear S1
        • Flying Bear Ghost 6
        • Flying Bear Reborn 3
        • Flying Bear Reborn 2
        • Flying Bear Aone 2
      • Qidi
        Qidi
        • Qidi Tech X-Plus 3
        • Qidi Tech X-Max 3
        • QIDI Plus 4
        • Qidi Q1 Pro
      Phrozen
      Flying Bear
      QIDI
      CreatBot
      FlashForge
      Bambu Lab
      ERYONE
      Elegoo
      eSUN
      Creality
      BIGTREETECH
      Anycubic
    • Товары снятые с продажи
        Phrozen
        Flying Bear
        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 не работаем
      Главная
      Блог
      Проекты
      Полноцветный телеграм-светильник на Arduino

      Полноцветный телеграм-светильник на Arduino

      Полноцветный телеграм-светильник на Arduino
      Проекты
      Содержание
      • Суть проекта,
      • Дизайн и комплектующие,
      • Контроллер,
      • Подключение и программа,
      • Вывод,
      • FAQ.

      Суть проекта

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

      Чем же нам отличиться от того, что уже существует? Использовать адресные светодиоды, способные попиксельно менять цвет и яркость? Этого уже много, и в виде готовых промышленных изделий, и в виде самодельных проектов. Светильник, управляемый на расстоянии? Причем на любом, не только с нескольких метров, как при помощи инфракрасного пульта, а чтобы прямо через Интернет, из любой точки земного шара. Такие тоже в природе есть, взять хоть ламы от так называемого “умного дома”, потому что многим очень важно иметь возможность включать в собственном туалете свет, находясь в другом городе, причем не абы как, а точно заданного оттенка.

      Чтобы выделиться, будем объединять обе эти идеи в одну, причем не жадничая, а предоставив возможность управления всем желающим. Для этого выберем самый наглядный и популярный в народе способ - общение через Telegram-бота. Будем отправлять ему команды и получать подтверждения о выполнении, вот так просто и наглядно.

      Идея хорошая, начнем воплощать ее в реальность.

      Дизайн и комплектующие

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


      WS2812B-kolca.jpg WS2812B.jpg

      Воображение, а за ним и рука на бумаге рисует такую картину.

      eskiz.jpg

      Если кто-то углядел в изображении мотив матрешки или снежной бабы, тот, пожалуй, прав. Выберем кольца: одно на 60 диодов, два на 24 и одно на 12. Уточняем размеры колец и рисуем в масштабе более твердой рукой в графическом редакторе.

      3d-modeling.jpg

      Так больше похоже на конечное изделие. Остается воплотить задуманное в пластике при помощи 3D-принтера.

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

      modeling.jpg

      В объеме картина получится примерно следующая.

      3d-model.png

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

      Потратив некоторое время на печать и сборку, получаем почти готовое изделие, которому останется лишь добавить “мозгов” и подключить к питанию.

      napechatali-3d-model.jpg

      Необходимы комплектующие для 3д принтера?

      Запчасти и расходники можно приобрести у нас в магазине по ссылке: https://3d-diy.ru/catalog/spare-parts-3d-printer/


      Контроллер

      Схема подключения адресной ленты, которой в нашем случае являются кольца, проста до невозможности: земля, питание 5В и команда от контроллера.

      Напомним, что WS2812B - довольно энергоемкое устройство. Один пиксель, включенный на полную мощность, потребляет до 60 мА, что при умножении на количество пикселей (124) даст нам немалые 7.4 А. Следует иметь эту цифру в виду, выбирая блок питания! Однако не рекомендуется включать светильник на максимальную яркость, возможен перегрев колец и проводов. Именно поэтому в программе мы ограничили максимальную яркость, уменьшив ее примерно вдвое.

      С лентой разобрались, осталось выбрать контроллер. Вариантов несколько, можно воспользоваться традиционной Ардуино, дополнив ее модулем Wi-Fi, а можно взять что-то более серьезное, например STM32. Изучив все варианты, мы остановились на оптимальном с нашей точки зрения ESP32 - отличной плате с огромными возможностями за минимальную цену.

      esp32.png

      О преимуществах (которых больше) и недостатках (которые тоже есть) ESP32 можно говорить очень долго, это тема на ряд отдельных статей. Перечислим главное, чем нас привлек именно этот контроллер. Бросается в глаза прежде всего огромная, по сравнению с “классическим” Ардуино, производительность. Тактовая частота ESP32 достигает 260 МГц против традиционных 16 МГц, два 32-битных ядра против одного 8-битного. Ядра контроллера действительно независимы и работают параллельно. Мы этим свойством обязательно воспользуемся в своем проекте. Несравнимы и предоставленные программе оперативная и флеш-память, разница в десятки и сотни раз, угадайте в чью пользу? И, что немаловажно, плата WEMOS LOLIN32 на базе ESP32, которую мы выбрали для нашего проекта, содержит на борту все необходимое для беспроводной связи, а именно блок Wi-Fi с антенной и Bluetooth, который в перспективе тоже может пригодиться. Контроллер здесь по своим характеристикам ближе к понятию “процессор”, а плата представляет собой микрокомпьютер, готовый к множеству применений без дополнительных модулей.

      Подключение и программа

      Схема подключения проста настолько, что нет смысла рисовать ее графически. От контроллера подается один-единственный сигнал на ленту, в нашем случае с GPIO 4, на этом по логическим связям всё. Лента запитывается от блока питания 5 В, мощностью не менее 3,5 А (для половинной яркости). Плата работает на 3.3 В, поэтому подавать пятивольтовое питание следует либо через порт USB, который есть на борту, либо через ножки VIN, которые связаны с понижающим преобразователем на плате. Вот, собственно, мы и подключились.

      Самое интересное находится в программе. Она, условно и физически, состоит из двух главных частей: первая - связь с Интернетом и поддержание протокола телеграм-бота, вторая - формирование и вывод на ленту заданного цвета и анимации перехода.

      В работе над первой частью нам поможет не самая безупречная, но довольно компактная в эксплуатации библиотека “UniversalTelegramBot”. Главным недостатком данного продукта является блокировка контроллера при сеансах связи, то есть он просто замирает на несколько секунд, останавливая все задачи в своем потоке. Частично бороться с этим можно, добавив новые потоки для других несложных задач, например опроса кнопок и тому подобного, чего в нашем проекте нет. Даже для самой простой задачи IDE Arduino генерирует код ESP32 с многозадачной операционной системой FreeRTOS, хоть этого и не видно невооруженным глазом. Грех этим не воспользоваться. Однако даже отдельный процесс для такой требовательной и чувствительной процедуры, как передача данных в ленту на частоте 800 КГц, будет подвержен негативному влиянию “тормозящего” соседа. Влияние будет выражаться в рывках, помехах и, как следствие, хаотичных артефактах [a]на ленте в виде пикселей случайного цвета. Поэтому воспользуемся “тяжелой артиллерией” и перенесем процедуру вывода информации на светодиоды не просто в отдельный поток, а на второе ядро контроллера. В этом случае пагубное соседство перестанет заметно присутствовать в таком важном и крайне нежном деле.

      Вторую часть программы передадим заслуживающей доверие библиотеке “Adafruit_NeoPixel”, которая одинаково стабильно работает и на восьмибитных AVR, и на современной ESP32. К ней нареканий нет, а программных наработок достаточно.

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

      Как завести бота, рассказывать подробно не будем, об этом есть много готовых пошаговых инструкций. Главное, что мы должны сделать - это присвоить ему имя и получить так называемый “токен”, что-то вроде уникального идентификатора в среде Telegram. Токен нам потребуется в программе, а имя для поиска бота в мессенджере на смартфоне. Кроме того, в программе следует указать имя Wi-Fi сети, к которой будем подключаться, и ее пароль. Вообще можно передавать эти данные и потом извне, например, при помощи второй встроенной беспроводной технологии - Bluetooth, но сейчас мы этого делать не будем, оставим материал для другой статьи.

      Краткие комментарии о том, что и где происходит в программе, сделаем прямо в коде.
       // ----------------- подключаем Wi-Fi и Telegram #ifdef ESP32 #include  #else #include  #endif #include  #include  // ------------------ активируем датчик температуры #ifdef __cplusplus extern "C" { #endif uint8_t temprature_sens_read(); #ifdef __cplusplus } #endif uint8_t temprature_sens_read(); // ------------------------------------- информация о Wi-Fi сети и боте const char* ssid = "HUAWEI-DrProg_2G"; const char* password = "2311197600"; #define BOTtoken "5274275654:AAGxY4UM7Y3H6hUCBEgOANGK-sZTU1Ks3Vk" // ------------------------------------- подключаем светодиодную ленту #include  #ifdef __AVR__ #include  // Required for 16 MHz Adafruit Trinket #endif #ifdef ESP8266 X509List cert(TELEGRAM_CERTIFICATE_ROOT); #endif // -------------------------------------- запускаем то и другое WiFiClientSecure client; UniversalTelegramBot bot(BOTtoken, client); #define PIN 4 // пин ленты #define NUMPIXELS 124 // количество пикселей в кольцах Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); //byte ledRej = 0; // режим работы void lenta( void *pvParameters ); // установка цвета на ленте byte newColor = 0; // флаг нового цвета byte rgb[3] = {0, 0, 10}; // новый цвет byte rgb_old[3] = {0, 0, 10}; // старый цвет // эадержки для разных видов анимации #define del 30 #define delsr 500 // ----------------- анимация переходов для функции cep() змейка и колесо в разные стороны byte zmey1[8][3] = { 0, 32, 0, 83, 74, 1, 84, 94, 0, 124, 107, 1, 94, 108, 0, 74, 59, 1, 32, 60, 0, 0, 0, 2 }; byte col1[5][3] = { 0, 60, 0, 60, 83, 0, 83, 107, 0, 106, 124, 0, 0, 0, 2 }; byte col2[5][3] = { 59, 0, 0, 83, 59, 0, 107, 82, 0, 123, 107, 0, 0, 0, 2 }; byte zmey2[8][3] = { 0, 32, 0, 83, 74, 1, 84, 94, 0, 124, 107, 1, 94, 108, 0, 74, 59, 1, 32, 60, 0, 0, 0, 2 }; void setup() { pixels.begin(); // запускаем и обнуляем ленту pixels.clear(); rnd(10, 0, 0); // устанавливаем красный цвет (ожидание связи) xTaskCreateUniversal(lenta, "lenta", 4096, NULL, 4, NULL, 1); // запускаем поток для ленты на ядре 1 (все остальное работает на ядре 0) #ifdef ESP8266 configTime(0, 0, "pool.ntp.org"); client.setTrustAnchors(&cert); #endif // ----------------------------- Соединяемся в Wi-Fi WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); #ifdef ESP32 client.setCACert(TELEGRAM_CERTIFICATE_ROOT); #endif while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi.."); } Serial.println(WiFi.localIP()); Serial.begin(9600); randomSeed(analogRead(0)); rnd(0, 10, 0); // есть соединение, выставляем зеленый цвет на ленте } void loop() { scan_msg(); // сканируем приходящие сообщения } void scan_msg() { // сканируем приходящие сообщения static unsigned long timer; if (millis() > timer + 1000) { // опрашиваем раз в секунду, чаще нет смысле int numNewMessages = bot.getUpdates(bot.last_message_received + 1); while (numNewMessages) { Serial.println("получено сообщение"); // есть сообщение handleNewMessages(numNewMessages); // отправляем его на обработку numNewMessages = bot.getUpdates(bot.last_message_received + 1); } timer = millis(); } } void handleNewMessages(int numNewMessages) { // Serial.println("handleNewMessages"); Serial.println(String(numNewMessages)); for (int i = 0; i < numNewMessages; i++) { String chat_id = String(bot.messages[i].chat_id); // запоминаем id собеседника для ответа String text = bot.messages[i].text; // извлекаем текст сообщения Serial.println(text); String from_name = bot.messages[i].from_name; // имя собеседника, для веливого обращения if (text == "/start") { // ответ на стандартную первую команду "/start", перечисляем доступные команды Serial.println("стартовое сообщение"); String welcome = "Привет, " + from_name + ".\n"; welcome += "Можно использовать следующие команды:\n\n"; welcome += "/n RRR,GGG,BBB чтобы установить новый цвет, где RGB цвета от 0 до 255 \n"; welcome += "/c чтобы узнать какой сейчас цвет\n"; welcome += "/t чтобы узнать температуру чипа \n"; bot.sendMessage(chat_id, welcome, ""); } String command = text.substring(0, 2); Serial.print("получена команда: "); Serial.println(command); if (command == "/c") { String col = "сейчас установлен цвет RGB: " + String(rgb[0]) + ", " + String(rgb[1]) + ", " + String(rgb[2]) + " \n"; bot.sendMessage(chat_id, col, ""); } if (command == "/n") { // если пришла команда сменить цвет, парсим строку выискивая три заданные цвета String acol; byte s[2]; s[0] = text.indexOf(","); s[1] = text.indexOf(",", s[0] + 1); acol = text.substring(2, s[0]); rgb[0] = constrain((acol.toInt() / 3), 0, 80); // делим значения на три, чтобы не перегрузить ленту acol = text.substring(s[0] + 1, s[1]); rgb[1] = constrain((acol.toInt() / 3), 0, 80); acol = text.substring(s[1] + 1, text.length()); rgb[2] = constrain((acol.toInt() / 3), 0, 80); bot.sendMessage(chat_id, "новый цвет установлен!", ""); // подтверждаем выполнение команды String col = "сейчас установлен цвет RGB: " + String(rgb[0]) + ", " + String(rgb[1]) + ", " + String(rgb[2]); newColor = 1; Serial.println(col); delay(4000); // минимальная задержка до следующей смены увета } if (text == "/t") { // отвечаем на запрос температуры чипа int t = (temprature_sens_read() - 32) / 1.8; String msg = "температура чипа: " + String((temprature_sens_read() - 32) / 1.8); bot.sendMessage(chat_id, msg, ""); } } } void lenta( void *pvParameters ) { byte effect; while (1) { if (newColor) { effect = random(9); // случайным образом выбираем один из девяти анимаций смены цвета и выполняем ее //effect = 8; Serial.print("эффект "); Serial.println(effect); switch (effect) { case 0: cep(rgb[0], rgb[1], rgb[2], zmey1, 0); break; case 1: cep(rgb[0], rgb[1], rgb[2], zmey2, 0); break; case 2: rnd(rgb[0], rgb[1], rgb[2]); break; case 3: cep(rgb[0], rgb[1], rgb[2], col1, 0); break; case 4: cep(rgb[0], rgb[1], rgb[2], col2, 0); break; case 5: cep(rgb[0], rgb[1], rgb[2], col1, 1); break; case 6: cep(rgb[0], rgb[1], rgb[2], col2, 1); break; case 7: theaterChase(rgb[0], rgb[1], rgb[2]); break; case 8: fade(); break; } for (byte i = 0; i < 3; i++) { rgb_old[i] = rgb[i]; } newColor = 0; } delay(1000); } } // ------------------ функции анимации смены цвета (можно дополнить) void rnd(byte r, byte g, byte b) { // колесо byte rndd[125]; for (byte i = 0; i < 125; i++) rndd[i] = 0; byte a; byte bb = 0; for (byte i = 0; i < 125; i++) { while (!bb) { a = random(125); if (!rndd[a]) { rndd[a] = 1; bb = 1; } } bb = 0; // Serial.println(a); pixels.setPixelColor(a, pixels.Color(r, g, b)); pixels.show(); delay(del); } } void cep(byte r, byte g, byte b, byte p[][3], byte sr) { // последовательная замена цвета пикселей, порядок устанавливается в массиве p[][] byte ii = 0; byte n; // Serial.println(p[3][1]); while (p[ii][2] < 2) { n = p[ii][0] > p[ii][1]; for (byte i = p[ii][0]; i != p[ii][1]; i = n ? i - 1 : i + 1) { //i = p[ii][2] ? i - 1 : i + 1) { pixels.setPixelColor(i, pixels.Color(r, g, b)); if (!sr) { pixels.show(); delay(del); } } if (sr) { pixels.show(); delay(delsr); } ii++; } } void theaterChase(byte r, byte g, byte b) { // вращение for (int j = 0; j < 20; j++) { for (int q = 0; q < 3; q++) { for (uint16_t i = 0; i < pixels.numPixels(); i = i + 3) { pixels.setPixelColor(i + q, pixels.Color(r, g, b)); } pixels.show(); delay(del * 2); for (uint16_t i = 0; i < pixels.numPixels(); i = i + 3) { pixels.setPixelColor(i + q, 0); } } } for (byte i = 0; i < 125; i++) pixels.setPixelColor(i, pixels.Color(r, g, b)); pixels.show(); } void fade() { // плавный переход из старого цвета в новый float diff[3]; float tempF[3]; byte temp[3]; for (byte ii = 0; ii < 3; ii++) { diff[ii] = float(rgb[ii] - rgb_old[ii]) / 50; tempF[ii] = float(rgb_old[ii]); } for (byte i = 0; i < 50; i++) { for (byte ii = 0; ii < 3; ii++ ) { tempF[ii] = tempF[ii] + diff[ii]; temp[ii] = byte(tempF[ii]); } for (byte iii = 0; iii < 125; iii++) { pixels.setPixelColor(iii, temp[0], temp[1], temp[2]); } pixels.show(); delay(50); } } 
      Зальем и посмотрим, что получится.

      Чтобы получить приветствие и список команд, отправим нашему боту первую команду, которая чаще всего предлагается автоматически - “/start” и, если все сделано верно, увидим на экране следующее сообщение:

      telegram-start.jpg

      После чего достаточно отправлять команды в правильном формате, например так:

      telegram.jpg

      И получим на светильнике примерно такую картину.

      primer-1.jpg

      Отправив “/n 100,0,0”, такую.

      primer-2.jpg

      И так далее. Обратите внимание на команду “/t”, с помощью ее можно узнать температуру чипа - невероятно, но у него есть встроенный термометр. Иногда полезно знать, перегревается он или нет, особенно если вы не обеспечили ему самые комфортные условия труда.


      Вывод

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

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

      В любом случае иметь в виду и в своем арсенале данный вид связи должен каждый DIY-мастер.

      FAQ

      Можно ли снабдить светильник обратной связью, чтобы он мог отправить мне сообщение по собственной инициативе?
      Разумеется, именно так работает охранная система. Для этого, правда, сам светильник не обязателен. Чтобы отправить сообщение своему хозяину, в программе должен быть прописан ID его телеграм-канала. Узнать его можно с помощью команды “/getid” отправленной системному боту IDBot. Благодаря ID вы также можете ограничить список пользователей, на которые ваш бот будет реагировать. Например, оставьте только себя и членов своей семьи, чужие команды будут игнорироваться.

      Как избавиться от “тормозов” в библиотеке бота?
      Использовать другую библиотеку, например AsyncTelegram2, она полностью прозрачна, не вызывает задержек и может использоваться в одном потоке со всей программой. Однако она немного сложнее в использовании, особенно в части создания кнопок.

      Можно ли запустить Telegram-бот на “классических ардуино?
      Скорее всего нет или с очень большим трудом. У обычных Ардуино ограничена скорость работы и невелика память, скорее всего не хватит ни того, ни другого. Да и зачем, если есть куда более мощная ESP32, со встроенной Wi-Fi (у Ардуино потребуется докупить ее отдельно), которая при этом дешевле в 2-3 раза?

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

      Можно ли заменить SSID и пароль вайфай бота без перепрошивки ?
      Можно несколькими способами, самый простой через Bluetooth, но для этого нужно написать программу на смартфон или воспользоваться готовыми системами, можно записать его на SD карту и считывать при запуске, можно набить с помощью кнопок/энкодера на экране и так далее. Аналог энергонезависимой EEPROM у ESP32 имеется.

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

      Документы

      telegramsvetilnik
      10,6 Кб
      led_tree v15
      798,8 Кб

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

      GSM-сигнализация на Arduino
      Проекты
      GSM-сигнализация на Arduino
      Система беспроводного доступа RFID
      Проекты
      Система беспроводного доступа RFID
      Электронная мишень
      Проекты
      Электронная мишень
      Часы из часов
      Проекты
      Часы из часов
      Бесконтактный температурный сенсор (GY-906 на базе MLX90614)
      Проекты
      Бесконтактный температурный сенсор (GY-906 на базе MLX90614)
      Беспроводные колонки с ферромагнитной жидкостью
      Проекты
      Беспроводные колонки с ферромагнитной жидкостью
      • Комментарии
      Загрузка комментариев...
      Назад к списку
      • Все публикации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ИзбранныеКабинет