Матричные часы на ардуино

Автор: | 12.03.2024

3e4ce4s 100 Домострой

96b87b6s 960 Домострой

Проект еще не доделан, но основная часть закончена. Делается для дачи, но возможно применение и в автомобиле.
Собственно надоело ходить к градуснику, что бы узнать зима за окном или лето. Да и часов в кухне-столовой, где проводится основная часть времени, не было. Под закрылиной валялись остатки от бегущей строки еще советского производства, в которой оставалось 3 светодиодных матрицы 16х7. Решил их и использовать, но для начала откатать все на маленьких матрицах 8х8.
Полазив по интернету нашел отправную точку на импортном ресурсе, где человек делал часы на матрицах с анимацией смены цифр. Скетч перелопатил под себя. Что имеем:
— 4 матрицы 8х8 управляемые МАХ7219. Это и есть наш экран.
— Модуль часов DS3231. С него получаем данные о времени и температуре.
— Датчик влажности и температуры DTH11. Для данных о влажности.
— Датчик температуры DS18B20. Для данных о температуре "за бортом".
— Фоторезистор для управления яркостью дисплея.
— Плата ARDUINO

Что умеет:
— Естественно показывает время с анимацией смены числа.
— Показ дня недели (в буквенном виде), даты (в числовом) и месяца (в буквенном).
— Показ температуры и влажности в помещении (или на улице).
— Показ температуры на улице (или в помещении).
— Уменьшение яркости в темноте
— Запоминает настройки яркости и чувствительности при отключении питания.

Настройки:
— Естественно время и дата
— Яркость дисплея на свету
— Яркость дисплея в темноте
— Чувствительность датчика освещенности.

Читайте также  Лампа галогенная 50вт gu10

Проект оптимизирован под 4 матрицы, но будет переделан под 6, т.к. хочется чтобы на экране помещались слова типа "Понедельник" полностью, но дополнительные МАХ7219 пока до меня не доехали, так что пока под 4, а уменьшать размер символов я не хочу из-за их неприглядности. На данный момент все режимы крутятся по кругу, но можно переделать на выбор режима кнопкой изменением одной строки. Я же буду делать управление от хлопка в ладоши. Часы будут висеть над дверью и хлопком будет включаться режим показа даты и температур. В плане расширения можно прикрутить датчик атмосферного давления, исполнительные механизмы при смене режима освещения и т.д. и т.п. Так же не оптимизирована чувствительность датчика яркости, надо по месту подгонять.
Часть строк с комментариями, но замучился писать и бросил. Скетч конечно не оптимизирован и можно найти косяки, но вполне рабочий. Пока все на макетке, но пост будет изменен при изменении состояния проекта. Собственно фоткать тут нечего, лучше видео работы:

Сам скетч с используемыми библиотеками тут yadi.sk/d/Ie5zUhb2sr8jz

Советы и пожелания приветствуются. Главный вопрос на данный момент, чем реализовать переключение на режим термометра, если не с кнопки и не от хлопка? Использовать пульт не хочу, вечно будет лежать не под рукой, а от хлопка может и жена проснуться в соседней комнате.

По схеме, в Fritzing нет модулей матриц на MAX7219, так что использовал картинку какой-то матрицы. Поэтому обращаем внимание на подключение DataIn pin — Arduino 6, CLK pin — Arduino 5, LOAD pin — Arduino 4. По резисторам, на фоторезистор и на DTH11 10 кОм. Если используется готовый модуль датчика DTH11, то возможно резистор уже установлен, смотрите внимательно.

Добавил скетч для 6 матриц. Но мне не понравилось, т.к. полностью слова все равно не влезают, а размер получается внушительный. Хотя кому-нибудь может и понравится.

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

arduino elektron chasi Домострой

Однако существует простой и доступный способ собрать электронные часы своими руками в домашних условиях: использовать платформу Arduino. Она представляет собой программно-аппаратный комплекс, специально предназначенный для обучения основам программирования и электроники. C помощью Arduino любой человек, даже без специальной предварительной подготовки, сможет построить электронные часы своими руками: схемы принципиальные, инженерные программы и даже паяльник не понадобятся!

Соединение всех электронных компонентов проводится на специальной контактной («беспаячной») макетной плате, что исключает риск получения ожогов, порезов и других травм — поэтому заниматься с конструктором Arduino можно и вместе с детьми. А наглядный способ представления принципиальной схемы поможет не ошибиться при сборке устройства.

Шаг 1. Список компонентов

Чтобы собрать простые часы на светодиодных матрицах вам потребуется всего несколько дешёвых компонентов:

  • платформа Arduino. Подойдут самые простые модели — Arduino Nano или Micro;
  • контактная макетная плата;
  • соединительные провода для макетной платы;
  • модуль часов реального времени Adafruit DS3231;
  • светодиодный матричный модуль 32×8 MAX7219;
  • две кнопки.

Также понадобится персональный компьютер и USB—mini-USB кабель для загрузки программы управления в память Arduino IDE. Вот и всё — паяльник, щипцы для снятия изоляции, монтажные ножи и прочие профессиональные инструменты не нужны: все операции выполняются руками. Разве что в некоторых случаях удобнее использовать пинцет, но можно обойтись и без него.

chasi detali Домострой Детали для сборки электронных часов на Arduino

Шаг 2. Сборка электронной схемы

Схема электронных часов с индикацией на светодиодах с применением Arduino даже для неопытных радиолюбителей покажется довольно простой. Для сборки требуется всего несколько проводников. Таблица подключений:

Модуль Arduino → светодиодная матрица 32×8 MAX7219

Модуль Arduino → часы реального времени Adafruit DS3231

Модуль Arduino → кнопки

Второй вывод кнопок соединяется с землёй GND.

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

arduino chasi 2 ДомостройСхема электрических подключений макетной платы

Два ряда (1 и 4) с обеих сторон замкнуты горизонтально — обычно они используются как линия питания +5V и земля GND. Все внутренние контакты (2 и 3) замкнуты вертикально. При этом монтажная плата как вертикально, так и горизонтально разделена на две независимые друг от друга симметричные части. Это позволяет, например, собрать два разных устройства на одной плате.

Схема электронных часов с индикацией на светодиодах, а также расположение элементов на монтажной плате представлена на иллюстрации:

arduino chasi 3 Домострой

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

arduino chasi 4 Домострой Внешний вид собранного устройства

Шаг 3. Прошивка Arduino

После того как сборка и проверка схемы завершена, можно приступать к загрузке управляющей программы (или «прошивки») в память Arduino.

arduino chasi 5 ДомостройИнтерфейс среды разработки Arduino IDE

Для этого нужно установить бесплатную официальную среду разработки — Arduino IDE [https://www.arduino.cc/en/Main/Software]. Также вам потребуется исходный код проекта, который вы можете скачать ниже в архиве со всеми библиотеками и скетчем, а если вам нужен просто скетч — его можно скопировать отдельно:

Теперь для завершения работы над устройством потребуется выполнить лишь ряд простых операций:

  1. подсоедините Arduino к USB-порту компьютера. Если модуль подключается впервые, то необходимо будет дождаться определения устройства операционной системой и установки драйвера;
  2. скопируйте содержимое папки libraries из архива в одноимённую папку в каталоге Arduino IDE;
  3. запустите средство разработки Arduino IDE;
  4. настройте тип Arduino в соответствии с имеющимся у вас модулем. Так, если вы используете Arduino Nano, в меню необходимо выбрать Tools -> Board: “Arduino Nano”. Также убедитесь в том, что модель процессора соответствует микроконтроллеру на вашей плате:

arduino chasi 6 ДомостройВыбор модели Arduino в среде Arduino IDE

  • откройте исходный код (файл clock_8x32.ino): File -> Open. Arduino IDE предложит вам автоматически создать отдельную директорию под проект — ответьте утвердительно;
  • загрузите программу в память Arduino: Sketch -> Upload.
  • Компиляция программного кода и дальнейшая загрузка в память микроконтроллера займёт некоторое время, обычно не более одной минуты. Об успешном завершении операции будет сообщено в консоли Arduino IDE. После чего остаётся лишь перезагрузить Arduino с помощью кнопки Reset на устройстве — простые часы на светодиодных матрицах готовы!

    arduino 7 Домострой

    Готовые часы на Arduino

    Настройка часов осуществляется с помощью двух кнопок. Устройство поддерживает 12- и 24-часовой формат вывода времени, показ даты и дня недели, отображение времени с секундами и без. Также имеется возможность менять яркость свечения светодиодов.

    arduino elektron chasi 1 ДомостройВариант корпуса для светодиодных часов

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

    mario 1 Домострой

    Проект “Bluetooth матрица”

    Проект “Гирлянда-дисплей”

    Проект “Тетрис”

    В этом гайде речь пойдёт о матрицах из адресных светодиодных лент. Если вы не в курсе про адресные ленты, то рекомендую изучить вот эту статейку. Фишка адресной ленты в том, что мы можем управлять любым из подключенных светодиодов. Если уложить ленту так, чтобы светодиоды образовывали ровную сетку, то мы получим матрицу, у которой можно зажечь любой “пиксель”, а зажечь можно одним из 16,7 миллионов цветов и оттенков! (светодиоды RGB, яркость каждого цвета имеет 256 градаций (8 бит), соответственно для трёх цветов у нас 256*256*256=16,7 лямов, что есть привычные 24 бита цветовой глубины). То есть по сути получаем полноценный 24 битный дисплей сверхнизкого разрешения! Зачем такое разрешение в 2к18 году? Спроси у своего папы, во что он играл в детстве =)

    Начнём с компонентов. Матрицу можно склеить самому, для этого понадобится адресная светодиодная лента, например самая популярная на чипах WS2812b. Да, сейчас есть уже более новая WS2813, но для наших целей она преимуществ не имеет. Целесообразно брать ленту с плотностью пикселей 60 светодиодов на метр для маленьких матриц (ячейка 1.7×1.7 см) и 30 светодиодов на метр для больших матриц (ячейка 3.3×3.3 см). Также есть светодиодные модули по типу “гирлянды”, их можно брать для ОЧЕНЬ БОЛЬШИХ матриц (ячейка 12×12 см). Рассмотрим матрицу 20×10 светодиодов: из ленты 60 LED на метр размер матрицы будет 34×17 см, из 30 LED на метр – 66×33 см, и из модулей – 240×120 см.

    Также хитрые китайцы уже продают готовые матрицы нескольких размеров, причём очень выгодно: матрица 16×16 стоит 1500р, она состоит из 256 диодов с плотностью 100 штук на метр. Лента такой же плотности стоит 1000р за метр (за 100 светодиодов). Для склейки матрицы размером 16×16 понадобится 2.5 метра ленты, то есть 2500р. А готовая матрица стоит на 1000р дешевле. Абсолютно то же самое касается матрицы 32×8 пикселей. Есть ещё готовая матрица 8×8, она стоит 300р. И вот она выходит уже не так выгодно =) Для питания матрицы нужен блок питания на 5V, по току расскажу дальше. Ссылок оставляю несколько, ищите выгодные предложения и скидки (P.S. Я закупаюсь в BTF-Lighting)

    ВАЖНО! Чем больше матрица, тем больше места занимает прошивка в памяти. Для прошивки GyverMatrixOS:

    В Arduino Nano/UNO/Pro Mini при использовании всех эффектов и режимов очень впритык вмещается матрица 16х16 (256 диодов), возможны зависания и перебои в работе;

    В Arduino Leonardo/Micro/Pro Micro вмещается около 400 светодиодов (матрица 20×20);

    В Arduino Mega вмещается около 1700 светодиодов (матрица 40×42)

    В ESP8266/NodeMCU/Wemos вмещается ГОРАЗДО больше светодиодов, но нужно понимать, что скорость обновления ленты зависит от количества светодиодов, и при 500 диодах будет 60 кадров в секунду (fps), при 1000 будет 30 fps, при 2000 будет 15 fps, т.е. ощутимые глюки в быстрых эффектах.

    Добавить комментарий

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