Была идея собрать часы на 8x8 led матрицах, чтоб температуру\влажность показывали. Вот что получается.
Решил написать обзор, правда постфактум, так что процесса сборки нет.
Модуль матрицы — MAX7219 dot matrix -3 шт.
Arduino как мозг Pro Mini atmega328
Датчик температуры и влажности DHT22/AM2302
Модуль RTC DS3231, кстати в нем есть термодатчик и температуру можно с него брать
Все компоненты годные, лично я качеством доволен.
На просторах интернета наткнулся на страничку, она стала отправной точкой, скетч для ардуины в последствии сильно переработан под свои желания (убраны ненужные режимы часов, используется 3 сместо 4 матриц, шрифт переделан и теперь высота символов 8 точек, а не 7, добавлены метео возможности) Оставлена сама идея и реализация перелистывания символов.
Соединение матриц
Процесс отладки
Собрано на макетке
Примеры отображения (на матрицы наклеена тонировка)
На этапе отладки
Еще одно видео (обзор возможностей часов)
Файлы для загрузки библиотеки и сам скетч (добавлен скетч с отображением информации по центру)
Схема для сборки (нарисовал как смог)
Так выглядит готовый вариант (из того что под руку попалось)
Дополнение
Чтобы залить скетч вам может понадобится:
Arduino SDK (среда разработки) тут
USB-UART-конвертер что-то типа такого (проверял, работает отлично)
схема подключения
Если у вас нет UART конвертера, но есть Arduino UNO (как в моем случае до получения конвертера), тогда скетч на «Pro Mini» можно залить через UNO. Для этого:
1. Из UNO аккуратно вынимаем ATmega328 (желательно запомнить как она была расположена)
2. Подключаем «Pro Mini»(слева) к UNO(справа) следующим образом
GND-->GND
VCC-->3.3v
Rx-->Rx
Tx-->Tx
GRN-->Reset
3. В «Arduino SDK» выбираем «Сервис->Плата->Arduino Pro Mini»
4. Заливаем скетч.
Возможно есть еще способы.
Планирую купить+69Добавить в избранноеОбзор понравился+57
+108
То, что символы не центрованы а выводятся сразу с первой колонки — допиливается или «неизбежность»? Когда время симметрично — симпатично, когда температура/прочее слева — немного не комильфо… Это решаемо?
Кстати, "+" за DIY.
С этим модулем идут отлично, там встроенная коррекция по температуре и кварц как я понял в самой микрухе, до этого пробовал ds1302… вот там убегал прилично. Больше месяца нормально идут
Дык ардуина и позволит отрисовать что угодно. Аппаратно все устроино по одной схеме, а отрисовывать можно хоть мультик «ну погоди», хватило бы ресурсов…
Собрал часы. Идууууут. Спасибо автору.
Предложу такой допилинг:
— отображать температуру и влажность в автоматическом режиме
— разделительные точки часы: минуты
— перевести на четыре матрицы. Тут неплохой вариант уже собранного экрана на цельном текстолите.
Теперь у меня есть повод изучить ардуинку:)
1. Про авто отображение тоже думал (временной интервал или датчик движения), но как показала практика, мне оно не надо.
2. Разделительные точки на трех матрицах не поместятся, между часами и минутами свободно всего 2 пикселя, для симметрии надо хотябы 3, да и опять же дело привычки, сейчас я не вижу необходимости в раделителе.
3. Как было указано в начале обзора, статья которая была взята за основу, так там все готово под 4 матрицы, плюс куча режимов отображения, только что цыфры 5*7 и термометра нет. Часы уже собраны и четвертую матрицу добавлять не стану. Кому надо — может как угодно допилить, исходник есть, разобраться не сложно да и интересно. По поводу четырех матриц на цельном текстолите, по фото похоже что он не цельной, это те же модули соединенные джамперами, только что паять не надо.
Единственное что еще хочется попробовать, так это развести все на одной плате типа DIY набор для самостоятельной сборки, но пока только мысли.
Всем удачи.
Я и говорю, что зацепился. Теперь буду изучать арду.
Матрицу по ссылке я получил. Она действительно на цельном текстолите, а не как на фото.
Собрал на ней часы. А отпиливать одну матрицу жалко.
Буду код переделывать.
Хочу добавить изменение яркости по датчику или по времени.
Интересный проект, можно развивать.
Мне так кажется, на 4 матрицах надо делать, по-любому. Здесь не показано, но когда будут отображаться рядом две широкие цифры (не единицы), то они будут «прилипать» друг к другу — некрасиво будет.
между цифрами один пиксель, посередине два, ничего не прилипает, ширина цифр 5 пикселей, у единички 3 и 2 пустых по краям, но это все равно 5. 5+1+5+2+5+1+5=24 пикселя
Видимо что-то не так, кто-то уже писал, что все заработало. Версия sdk может влиять, я сперва пользовался старой, потом обновил и тоже были ошибки, но их я правил уже под свежую.
Очень интересная реализация. Давно ищу для повторения что-то достойное с большим дисплеем, так чтобы видно было с кровати ночью время. Автор, спасибо вам! Единственный пока вопрос: обязательно это все делать на mini arduino или на UNO пойдет тоже?
Форм-фактор LED-панелей явно другой, изображение придется поворачивать, раз нет возможности повернуть сами панельки. Плюс что-то мне припоминается было подобное когда я заливал скетч для 4-х панелей, но использовал три (кажется изображение шло не по порядку, у вас похоже) Надо искать и править!
переменная «numDevices» — количество LED панелек
в функции «printhello» поправить размерность экрана при тесте (у меня от нуля до 23, в конкретном случая от нуля до 5*8-1=39)
в функции «plot» добавить пару «if» по аналогии
возможно где-то еще
Согласен. Но «прилипать» только ко второй по счету цифре 2 и 4. К тому же если точка постоянно будет мигать, это выделит ее на общем фоне и не даст слиться с общей картинкой. Без мигающей точки как-то грустно :)
Собрал 3 матрицы. Решил проверить. Подключил к УНО. Матрицы почему-то получились зеркальными. Т.е. первые буквы слов в правой (3_й) матрице, затем во второй и последнии в левой (1-й). Как можно поправить?
Прошу подскажите. Проблема при отображении. Все делал так как в статье, те же матрицы, те же платы, ардуино уно только пока что, но при отображении любого скетча, хоть вашего, хоть демок от библиотеки LED показывает квадраты из 4- светодиодов и изредка мигают разные светодиоды. Собирал матрицы последовательно, паял, вроде все припаяно правильно. Не понимаю почему не отображается нифига :( Беда какая-то… Для отображения демок в коде изменял количество матриц.
Да, вот. Матрицы все LD-1088AS покупал с контроллерами вместе. Спаял вроде все четко, нигде нет замыкания о чем свидетельствует обильная канифоль.
Скетч ваш использовал, убирал даже кусочек кода где идет подключение к термодатчику. При загрузке скетча нет никаких ошибок, все гладко. Пробовал даже имитировать кнопки, подключал проводки и замыкал на землю, все равно эти квадраты кажет.
Что еще я сделал. Я отключил все остальные матрицы, оставил одну. Загрузил на ардуинку демку что шла в библиотеке модуля, для одной матрицы, и вроде как оно должно писать слово arduino на матрице, но у меня получается опять та же фигня.
Что странно, да. Я пробовал брать другие проводки и другую матрицу одну, подключал прикладывая пальцами, возникают те же квадраты. Уж не знаю что делать. Одну матрицу разворотил уже, осталось две :( Неужели брак какой? Попробую заказать модуль из 4х матриц еще.
Подскажите пожалуйста полную конфигурацию модулей… у вас MP3 модуль WTV020SD...? или MP3-TF-16P ..?? кстати в ваше архиве библиотека очень понравилась тестовая для MAX7219… рабочая… спасибо…
Модули
10 матриц на mx7219;
модуль ds3231;
модуль dht22 или 11;
модуль BMP180;
модуль df-player;
модуль sd карты;
arduino nano v3 mega328 16mhg 5V;
3 кнопки, 3 резистора на 10кОм и один на 1кОм;
динамик на 4 ома пол вата
блок питания 5В 1А или больше.
Написано в Atmel studio 6.2 если сможешь переписать сам команды для работы с DS1302, то никаких проблем. А DS3231 понравилась тем что была. На дополнительной СД карте записаны события на год.
Кнопка на 10кОм, почему так получилось....? (3 кнопки, 3 резистора на 10кОм и один на 1кОм;)
я думаю вы и так отлино потрудились, создав такой шедевр… пробовал работать с FLProg… полуилось время на DS1302 установить… далее чет пока не могу «скубатурить» как например к Атмеге индикатор приделать… в свойства 1602 выбираю I2C, на «Атмеге выод аналоговый А4 и А5, линии схемы не „тянутся“ и далее чет не пойму
Кнопки обычные, выводы ардуинки надо подключить через 10ком на +5, тоесть подтянуть к плюсу.
Резистор на 1 ком для плеера, подключить его вход через него.
Мой код написан в атмел студио 6.2
изчиняюсь… может малек ступил… но меня проблема-не могу найти где скачать Атмел Студио 6.2… вчера находил, либо платную версию от Амтел, либо всяку хрень, хотел скачать торрентом в ночное время т.к. трафик не лимитируется… но чет не получилось… на замануху нарвался… сегодня опять искать буду… а вы где взяли Амтел Студию...?
Я может и ошибаюсь, но эти буржуине хотят моих денег за DVD с софтом… а ссылку на скачивание не видно… хотя может быть и нет… надо было просто по знаку DVD щелкнуть… www.atmel.com/images/icon_exe.gif да все правильно… теперь шесть гигов свободного места на диске нужно освободить…
Скачал я Атмел Студию 7 версию… очень долго устанавливалась заняла более шести Гигов… это серьезная программа… фотошоп и «рядом не стоял» в ней вообще очень тяжело что то понять… FLprog конечно доступней для понимания будет… зачем эта Студия нужна, если как и ID ардуино, коды С++ используют...? чтоб достигнуть результата, нужно коды знать… да и примеров в Студии, что то я не нашеь…
Студия хороша (помимо более удобного редактора чем в Arduino) в первую очередь возможностями отладки программы, как в софтовом симуляторе, так и в самом микроконтроллере через спец адаптер. Значения переменных и регистров МК в реальном времени, точки останова, пошаговое исполнение.
Если все это не нужно, то писать можно хоть в Блокноте, а компилировать из командной строки (и Студия и Arduino используют один и тот же консольный компилятор AVR GCC).
А я например Студию 4.19 пользую для программирования поделок — возможностей больше чем у Ардуины, а размер еще не монструозный (200МБ).
По моему в студии код меньше весит. Ну и есть стимул изучить что-то новенькое. Готовые библиотеки конечно хорошо, но в большинстве они избыточны, много ненужных функций. Ну и редактор конечно лучше. Попробуйте написать код бегущей строки в FLprog и поймёте разницу. Кстати пример есть на сайте FLprog. А так это дело вкуса в чём делать. Мне IDE пришлось на меге часы делать в 328 не влез. А в атмел почти тоже самое уместилось. И если ещё подумать то ужать и упростить наверняка можно.
а в 4.19 версии от Амтела, тоже примеры есть..? и еще вопрос… приобрел модуль STM8S103F3P6… что на нем можно сделать...? есть у вас такой опыт применения..? а по части написания кода, я еще делаю только робкие шаги и все шишки у меня еще впереди и жду меня… все когда нибудь, начинают… буду и я конечно пробовать Амтеь студию, но пока FLprog кажется доступней и проще для понимания… по крайней мере, помигать светодиодиком для меня проще в FLprog, чем в ID arduino… а Амтел вообще очень навороченная вешь, как например «Офис» против «Блокнота»…
В Студии нет кучи встроенных примеров как в Ардуине. Ардуина все же обучающий конструктор, а Студия (как и все родные среды от производителей микроконтроллеров) — серьезный инструмент для тех кто знает чего хочет.
Хотя и по студии существует масса книжек, учебных курсов easyelectronics.ru/category/avr-uchebnyj-kurs/page/5
всяческих библиотек avr-libc.narod.ru/index.html www.procyonengineering.com/embedded/avr/avrlib/docs/html/main.html
но освоение безусловно сложнее чем Ардуино.
Но дает гораздо большие возможностей по быстродействию, объему кода, хитрому использованию периферии.
Так что имеет смысл переползать на Студию, когда научитесь нормально программировать и ардуинская среда покажется откровенно тесной. Ну или захочется профессионально программировать или просто получать удовольствие от решения задачи максимально эффективным способом.
Некоторым, впрочем, всего этого и не надо. Накидал кучу кода из примеров, как то работает — и ладно.
Может и не совсем в тему… но FLprog хороший «костыль» для начинаюших… Вчера часики придумал за вечер на DS1302, дисплее 1602 и датчике DNT22… теперь вот проблема… строк не хватает… не могу понять, как заставить строку с датой прокручивать, чтоб бежала… я позже выдожу, что у меня получилось…
Может и не совсем в тему… но FLprog хороший «костыль» для начинаюших… Вчера часики придумал за вечер на DS1302, дисплее 1602 и датчике DNT22… теперь вот проблема… строк не хватает… не могу понять, как заставить строку с датой прокручивать, чтоб бежала… я позже выложу, что у меня получилось… За ссылочки отдельное Спасибо… позже попробую испрользовать библиотеки… Перед мной открывается целый мир… будет чем заняться…
могу поделиться скетчем часиков, поддерживающих кучу экранов, настраиваемых через веб морду, могущих отображать температуру давление влажность — взамен хочу чертеж печатки для них с матричным экранчиком (4 матрицы 3 мм драйвер мах7219)
ПЫСЫ. мах7219 часики пока не поддерживают (но это «пока»)
Оставлю тут, может кому пригодится.
Приехала плата с 4 матрицами и MAX7219 (покупал тут).
Китайцы спаяли гирлянду в обратном порядке и при использовании большинства библиотек оказываются перепутаны разряды.
В некоторых библиотеках для MAX7219 есть настройки поворота и переключения порядка разрядов, но в LedControl, использованной автором обзора, таких настроек нет.
Для отображения разрядов в нормальном порядке надо в файле LedControl.cpp в начало функции LedControl::spiTransfer (строка 195) вставить строчку:
addr = maxDevices-addr-1;
Подскажите пожалуйста! Собрал, часы 1307 правда, матрица 4 штуки на одной плате. Первую матрицу отключил. первые цифры слились, постоянно переключаясь, последние две показывают минуты. Матрицы кривые?
Уважаемый автор, повторил Вашу конструкцию, но столкнулся со странностью. После подачи питания происходит очень медленный выход в режим часов.Так текст slade висит на экране около 10 секунд, перед сменой текста slade на текст clock происходит резкое увеличение яркости и cloсk тоже висит 10 секунд. Дальше всё происходит штатно, время индицируется нормально. Подскажите куда копать.
Кстати, "+" за DIY.
а матрицы сами вместе с драйвером на странице товара обзора?
8-( )
перламутровыми пуговицамиразмером побольше? А лучше с RGB.Людям же захочется повторить.
залиты в один день
Вот та версия ардуины, она без USB, я правильно понимаю? К компу подключается или через COM, или через USB-COM — кабель?
Предложу такой допилинг:
— отображать температуру и влажность в автоматическом режиме
— разделительные точки часы: минуты
— перевести на четыре матрицы. Тут неплохой вариант уже собранного экрана на цельном текстолите.
Теперь у меня есть повод изучить ардуинку:)
2. Разделительные точки на трех матрицах не поместятся, между часами и минутами свободно всего 2 пикселя, для симметрии надо хотябы 3, да и опять же дело привычки, сейчас я не вижу необходимости в раделителе.
3. Как было указано в начале обзора, статья которая была взята за основу, так там все готово под 4 матрицы, плюс куча режимов отображения, только что цыфры 5*7 и термометра нет. Часы уже собраны и четвертую матрицу добавлять не стану. Кому надо — может как угодно допилить, исходник есть, разобраться не сложно да и интересно. По поводу четырех матриц на цельном текстолите, по фото похоже что он не цельной, это те же модули соединенные джамперами, только что паять не надо.
Единственное что еще хочется попробовать, так это развести все на одной плате типа DIY набор для самостоятельной сборки, но пока только мысли.
Всем удачи.
Матрицу по ссылке я получил. Она действительно на цельном текстолите, а не как на фото.
Собрал на ней часы. А отпиливать одну матрицу жалко.
Буду код переделывать.
Хочу добавить изменение яркости по датчику или по времени.
Интересный проект, можно развивать.
в функции «printhello» поправить размерность экрана при тесте (у меня от нуля до 23, в конкретном случая от нуля до 5*8-1=39)
в функции «plot» добавить пару «if» по аналогии
возможно где-то еще
Скетч ваш использовал, убирал даже кусочек кода где идет подключение к термодатчику. При загрузке скетча нет никаких ошибок, все гладко. Пробовал даже имитировать кнопки, подключал проводки и замыкал на землю, все равно эти квадраты кажет.
yadi.sk/d/sbf-IVdvrSCQN
Уже думаю над корпусом, идея рамки от фото тоже нравится.
У меня вот что получилось
корпусок взял от старого роутера.
нашел недавно вот такие матрицы теперь думаю, не попробовать ли?
Вот другая версия
www.youtube.com/watch?v=8hO3k_zQ6k4
Модули
10 матриц на mx7219;
модуль ds3231;
модуль dht22 или 11;
модуль BMP180;
модуль df-player;
модуль sd карты;
arduino nano v3 mega328 16mhg 5V;
3 кнопки, 3 резистора на 10кОм и один на 1кОм;
динамик на 4 ома пол вата
блок питания 5В 1А или больше.
я думаю вы и так отлино потрудились, создав такой шедевр… пробовал работать с FLProg… полуилось время на DS1302 установить… далее чет пока не могу «скубатурить» как например к Атмеге индикатор приделать… в свойства 1602 выбираю I2C, на «Атмеге выод аналоговый А4 и А5, линии схемы не „тянутся“ и далее чет не пойму
Резистор на 1 ком для плеера, подключить его вход через него.
Мой код написан в атмел студио 6.2
Архивы есть под видио.
www.youtube.com/watch?v=3qtwAkyRgLk
www.youtube.com/watch?v=8hO3k_zQ6k4&t=198s
Одна программа в ардуино ид, другая в атмел студио.
Вобщем посмотри на моем канале в ютуб.
www.atmel.com/ru/ru/tools/studioarchive.aspx
Если все это не нужно, то писать можно хоть в Блокноте, а компилировать из командной строки (и Студия и Arduino используют один и тот же консольный компилятор AVR GCC).
А я например Студию 4.19 пользую для программирования поделок — возможностей больше чем у Ардуины, а размер еще не монструозный (200МБ).
Хотя и по студии существует масса книжек, учебных курсов
easyelectronics.ru/category/avr-uchebnyj-kurs/page/5
всяческих библиотек
avr-libc.narod.ru/index.html
www.procyonengineering.com/embedded/avr/avrlib/docs/html/main.html
но освоение безусловно сложнее чем Ардуино.
Но дает гораздо большие возможностей по быстродействию, объему кода, хитрому использованию периферии.
Так что имеет смысл переползать на Студию, когда научитесь нормально программировать и ардуинская среда покажется откровенно тесной. Ну или захочется профессионально программировать или просто получать удовольствие от решения задачи максимально эффективным способом.
Некоторым, впрочем, всего этого и не надо. Накидал кучу кода из примеров, как то работает — и ладно.
как это реализовать?
ПЫСЫ. мах7219 часики пока не поддерживают (но это «пока»)
Приехала плата с 4 матрицами и MAX7219 (покупал тут).
Китайцы спаяли гирлянду в обратном порядке и при использовании большинства библиотек оказываются перепутаны разряды.
В некоторых библиотеках для MAX7219 есть настройки поворота и переключения порядка разрядов, но в LedControl, использованной автором обзора, таких настроек нет.
Для отображения разрядов в нормальном порядке надо в файле LedControl.cpp в начало функции LedControl::spiTransfer (строка 195) вставить строчку:
addr = maxDevices-addr-1;
в 243 строке char new_char[3]
Поправь, у меня заработало.