Микросхема MAX7219 — готовый драйвер для семисегментных и матричных светодиодных индикаторов. Как подключать маленькие и большие цифровые индикаторы я уже писал. Теперь решил попробовать собрать матричный дисплей.
Много DIY, печатных плат и программирования микроконтроллера под катом.
Заказал 8 матричных модулей 8x8 с ценой чуть больше доллара за штуку. Так как при количестве больше 1 шт получалась платная доставка, не поленился, сделал 8 заказов. Сейчас товар не доступен, но легко можно найти такой же, может чуть дороже.
Ехало все это богатство больше двух месяцев.
В комплекте платка с микросхемой, сам индикатор, разъемы для индикатора и для соединения каждой платы.
Размеры индикатора 3.2 см Х 3.2 см. Подключение к микроконтроллеру по SPI «в один конец» по трем проводам. Модули подключаются каскадно — DIN->DOUT. Все остальные выводы запаралелены.
Подключив один модуль к ардуинке (фоток не осталось) решил сразу собирать дисплей.
Из двух конфигураций 8x64 и 16x32 выбрал вторую, так как решил в конечном итоге делать часы.
Первая же это классическая «бегущая строка».
Чтобы меньше возиться с проводами, развел плату под дисплей (и чего бы на нее сразу контроллер не установить было?)
Готовый собранный экран подключил к ESP8266.
Для таких модулей обычно используется ардуиновская библиотека LedControl . Но мне больше приглянулся драйвер для модулей MAX7219 к графической библиотеке AdafruitGFX.
В отличие от LedControl, где с каждому модулю обращаются по номеру, Max72xxPanel позволяет работать со всеми модулями, как с едиными пиксельным дисплеем.
К ESP8266 подключение такое:
DIN -> GPIO13 (MOSI)
SCK -> GPIO14 (SCK)
CS -> GPIO16 (к любому свободному)
В конструкторе объекта матрицы определяем PinCS, а также количество модулей по вертикали и по горизонтали
int pinCS = 16; // Attach CS to this pin, DIN to MOSI and CLK to SCK (cf http://arduino.cc/en/Reference/SPI )
int numberOfHorizontalDisplays = 4;
int numberOfVerticalDisplays = 2;
Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);
В секции SETUP программы нужно сконфигурировать наш дисплей, то есть задать последовательность подключения модулей и орентацию каждого модуля.
Микросхема MAX7219 поддерживает 16 градаций яркости светодиодов. Ставим максимальную:
matrix.setIntensity(15);
Дисплей превращается в яркий красный фонарь
мощностью более 12Вт
К тому же довольно ощутимо нагревающийся
Собственно удивляться нечему — все написано в даташите на MAX7219, Максимальный ток на всех сегментах одного модуля — 330мА, что при умножении на 8 и дает 2.6А. Минимальный ток — 1/16 от этой цифры. В нашем случае около 160мА. При установке интенсивности ток будем меняться с шагом 1/16 от максимального.
При такой яркости дисплея не вижу смысла устанавливать значение интенсивности больше 7.
С током разобрались, перейдем к выводу информации на наш дисплей.
В примерах к библиотеке Max72xxPanel есть простенькая программа — вывод бегущей строки. По умолчанию, строка выдается стандартным шрифтом библиотеки GFX 5x7.
Русификация данной библиотеки подробно рассмотрена здесь.
Суть сводится к тому, что нужно скачать по ссылке архив, взять оттуда русский фонт и положить его в папку AdafruitGFX-master. Остальные файлы, это примеры, как перекодировать константы, введенные в среде Arduino в UTF-8 в кодировку фонта 1251.
Там есть для этого функция utf8rus
Небольшое отступление про кодировку русских букв в среде Ардуино
Тут должно быть много русского мата. Про всех родственников этого итальянца.
Сперва я долго возился с выводом русских слов, введенных в редакторе Arduino IDE на дисплей. Выяснил, что в функции utf8rus нужно смещать на 1 меньше. Как я радовался получив «Привет» на экран. Но в какой то момент времени вместо внятных слов опять получалась белиберда. Смещение в кодировки было то на 1, то на 2 символа. Причем, во вновь созданном скетче все было нормально. До поры, до времени.
Я уже было решил хранить русские константы в отдельном файле либо кодировать в виде '\234'. Пока не стал открывать программу в редакторе NotePad++. Тот определял кодировку UTF8, то UTF8 без BOM.
Путем натурального эксперимента было определено, что если брать файл, и преобразовывать его в UTF без BOM, то следующая сборка проходит нормально и русские константы нормально отображаются.
Документированный «баг» стал «фичей».
С отображением текста теперь все ясно. Но дисплей у на ГРАФИЧЕСКИЙ. Значит без отображения графики, хотя бы статической, никуда.
Чтобы подсунуть графику библиотеке GFX, нужно запихнуть ее в байтовый массив.
Для этого можно воспользоваться онлайн-сервисом
Рисуем картинку или иконку в любом редакторе, подсовываем ее этому сервису. Шаманим с параметрами, если нужно и получаем готовый массив
Теперь если скормить этот массив функции drawBitmap, то получаем ее на дисплее
Интересно смотреть в тепловизор, как нагреваются отдельные пикселы
С дисплеем все понятно. Теперь можно сделать из него что-нибудь полезное. В интернете ходит шутка, что бы вы не делали с ESP8266 — получается метеостанция. ))) Вот ее то мы и будем делать, только без датчиков. Погоду пусть контроллер берет из интернета, с бесплатного сервиса openweathermap.org и отображает попеременно со временем, которое получает по NTP. Погода получается в формате jSON. Пытался договориться с Яндексом на получение погоды, но служба поддержки меня послала объяснила, что бесплатный доступ к API погоды они дают только СМИ.
Под цифры полной высоты шрифт не подобрал, поэтому нарисовал 10 картинок
Значок подключения к WiFi
Полный скетч который запрашивает время и погоду и выводит на экран выложил на GITHUB
Осталось подобрать подходящий корпус
Вытравливаю плату с контроллером (и что бы ее с платой дисплея не совместить?)
Прошиваю ESP8266 на программаторе.
Паяю плату контроллера
Монтирую в корпусе
Закрываю прозрачным стеклом с красным светофильтром (хорошо подходят цветные файлы для бумаг )
Для крепление с ходу не придумалось ничего лучше стяжек
Питание — старый зарядник от телефона. При яркости 50% и не полном заполнении экрана ток потребления получается порядка 0.5А, так что зарядника вполне хватит. И часы в черновом варианте готовы.
Смотреть работу часов лучше на видео
Восторг кота слышен на заднем плане )))
Пора подводить итог.
Модули вполне годные, но работать мне с ними не понравилось. Слишком много возьни, избыточное количество микросхем, хотя лучше, чем на WS2812, где микросхема в каждом диоде.
Все же лучше применять готовые дисплеи. Например,P6 RGB гораздо большего размера обойдется в $11
В целом проект удачный, часы после небольшой доработки корпуса пойдут в подарок.
Доделаю выдачу даты, снижение яркости дисплея после захода солнца (сервис openweathermap.org lдает эту информацию) и прогноз погоды, а также отображения температуры в корпусе часов в комнате. Разъем для DS18B20 предусмотрен.
Всем хорошего дня и солнечных выходных. А то пока делал часы, больше 21С они не вещали. И это в июле!
Кот заставку одобрил
Планирую купить+72Добавить в избранноеОбзор понравился+108
+191
КМК тут подойдет корпус от старого фотографического красного фонаря, или лампы. Мне прям с нескольких ракурсов напомнил такой древний, с рассеивателем…
«Так как при количестве больше 1 шт получалась платная доставка, не поленился, сделал 8 заказов» — а прислали воскмь посылок или одну? Мне пару раз объединяли сами китайцы. Без моих просьб.
Ну если с Инет, то пора голосовые информаторы для дома делать. Чего уж тогда мелочится, какое то время и погоду.
Электричество не знаю, смарт придеться стационарно тогда запитать.
Что то, типа Окей Гугл и Дуси.
Какой нибудь смарт с раздолбаным экраном приспособить. Подвесить динамик помощней и голосовой пульт с микрофоном безпроводный. Когда нужно включил пульт и спросил что нужно.
Чтобы не подслушивали.
Лежишь на диване, включаешь этот пультик и спрашиваешь. Последние местные новости или еще что.
Например.
— А сейчас будет дискотека, включай группу Авария, песня такая то.
То есть и муз. центр подключить с хорошим звуком.
блин… почти умный дом получается.
Детишек убаюкивать.
— Влючай колыбельную или сказку.
Что то меня понесло. Органайзер, будильник, трансляция звуков природы, соловья там. шум прибоя и далее. Предлагайте?
И как еще китайцы до этого не додумались. Считай нужный удобный девайс. Который спросом будет пользоваться.
На котором из за новизны можно кучу денег срубить.
espшки с собственными динамиками можно по всему дому развесить(где нужен качественный звук с звуковухой), а звук на смарте(или сервере) завернуть в трансляцию по wifi, которую и подхватят espшки
Плюс однозначный.
Единственное — я бы скорость бегущей строки уменьшил, хорошо и с первого раза его прочитает только тот, кто уже знает, что там написано, имхо.
openweathermap.org какую то чепуху показывает вместо давления 1008 hpa по нашему 756 mm Hg, хотя по всему городу на народном мониторинге у всех пользователей чуть больше 740 mm Hg
осталось понять у кого расчетные значения, а у кого данные с датчиков. плюс всеми люьимый датчик давления выдает его на какой-то высоте, где он установлен, никто не приводит значение давления к высоте над уровнем моря, потому что сложно узнать высоту над уровнем моря того места где ты расположил датчик. А во-вторых, эти никто не заморачивается.
«Сырые» данные со всех метеостанций есть в свободном доступе. Обновление раз в час. Собственно, используя их и прогнозируют погоду, но тут уж кто как насчитает.
Заморачивался однажды на счёт давления, да, поправка на высоту нужна, ибо влияет очень сильно. Благо, в квартале от меня есть работающая метеостанция (думал, с советского времени умерла — нет, работает, имеет общемировой идентификатор и сливает данные ежечасно), к ней и привязывался для калибровки.
Парсер HTML или даже XML как на gismeteo в ESP сложнее реализовать. Хотя можно поизголяться.
Недавно яндекс опубликовал API к погоде. Но ключи только продает.
А у HTML самый большой недостаток кроме объема кода — после смены дизайна, его придется заново писпть
это можно реализовать с помощью регулярок, одной-двух (в зависимости от сложности) будет достаточно, правда есть ли под дуню движки рег.выражений — не знаю. или сделать парсинг на внешнем сервере, а к нему уже лезть с esp-шки.
Краткий конспект статьи:
— куплены готовые модули индикации
— куплены индикаторы
— самостоятельно сделана монтажная плата. Без процессора.
— самостоятельно сделан переходник под процессорный модуль. Модуль покупной.
— использованы готовые библиотеки работы с железом
— использован существующий сервис по переводу картинок в экранные примитивы
— сделан большой шрифт
— сделан корпус
Что-же автор сделал сам? Удаляем купленное-скачанное. Остается:
1. самостоятельно сделана монтажная плата. Без процессора.
2. самостоятельно сделан переходник под процессорный модуль. Модуль покупной.
3. сделан большой шрифт
4. сделан корпус
п1 — с недостатком. Модуль процессора не установлен. Недостаток спорный, но он есть.
п2 — хорошая вещь, низкие трудозатраты
п3 — шрифт жуткий. Цифры сливаются. Особенно неприятен контраст с «готовыми» шрифтами — они-то сделаны нормально.
п4 — задняя часть нормальная (IMHO), но что прилеплено спереди? Пленка от «файлов» не подходит, она имеет прямо противоположные свойства к тому, что надо — размазывает изображение и не обеспечивает должную степень фильтрации по цвету. И «это» вы собрались использовать в качестве подарка? Гм… вообще-то, внешний вид, это основное. Откровенный колхоз в подарке чаще всего приводит к прямо противоположному.
О чем статья? Как собрать часы?… да нее, скорее руководство по применению процессорного модуля. Автор отмечает, что «все» делают на нем именно метеостанции, в том или ином виде. Знаете, остается только чесать репу — в статье нет ни интересных идей, ни нормальных самостоятельных разработок. Фонт — жуткий, корпус — колхоз.
Что полезного можно взять из статьи? Только идею. Платы все равно надо переделывать, ставить модуль процессора.
P.S.
Общался с модулями MAX7219. На них НЕ ставят блокировочные конденсаторы по питанию. Поэтому, динамическая индикация и программная регулировка «яркости» приводят к сильным броскам тока. Причем, пиковый ток не зависит от «яркости» и всегда максимален. Это создает очень высокий уровень пульсаций по питанию. Это создает проблемы у БП, вплоть до скорой его смерти. В статье я не увидел акцента по данной проблеме, поэтому отметил особо.
Там основная цель сайт свой пиарить, на фотках видно.
Хотя лично мне он нравится.
Когда-то и mysku таким же способом же на бывшем ebay-forum «отмечался» :).
На самом деле не совсем так. Тем более, когда нужно было «попиарить» сайт, я вставлял прямую ссылку.
Главная цель общение, потому что здесь бывают дают очень много ценных советов.
Потом я дорабатываю поделку, чаще программу и пишу обновленную статью на своем сайте или гиктаймсе.
Такие модули можно купить уже объединенные по 4 штуки. Цена почти таже. За обзор спасибо. У меня в долгом проекте бегущая строка, информация очень пригодится.
Делал похожее. Только на wifi-iot и на четыре матрицы. Покупал матрицы не по отдельности, а ту, у которой на плате 4 штуки. По цене тоже самое. Проводочки в ЕСП-шку, и 15 минут на настройку. У меня температура и давление с народного монитора (с соседней улицы), прогноз на завтра с Гисметео, время синх. по NTP.
Подскажите по ардуино: хочу сделать дисплей для часов, но не на матрице а каждый светодиод должен быть отдельным светодиодом на отдельном проводе чтобы их можно было свободно размещать на плоскости (долго объяснять зачем :) ). Это примерно 80 светодиодов. Подскажите как это лучше реализовать?
Если управлять нужно не сегментом, а каждым светодиодом в отдельности — WS2812
И управлять 80-. светиками по 1-му проводу
Что-нибудь типа этого samopal.pro/ws28120-3/
Если в конструкции невозможно пользоваться сдвиговыми регистрами или промежуточными аппаратными буферами, а требуется именно прямое подключение «в лоб» светодиодов к пинам, то Ардуину-Мега можно заставить адресовать независимо 70 светодиодов. Причём, 14 из них можно будет сделать с переменной яркостью, остальные — только дискретное включение-выключение. 70 независимых линий на выход — это максимум, который можно выжать, если хотите штатно управлять ардуиной после этого.
Т.е. вся конструкция — это 70 светодиодов, как вы показали на картинке выше + 70 токоограничительных резисторов + сама Ардуина-мега. Всё.
Из пушки по воробьям. Тогда уж матричное включение 8x10.
Для подключения 80 диодов достаточно 18 ног.
Можно и 8-й мегой обойтись. А так как индикация динамическая, то с яркостью никаких проблем
Модуль не нужно, а брать две микросхемы MAX7219 в DIP корпусе.
Только нужно понимать, что всю логику с дисплеем (знакогенератор и пр) придется реализовывать самому, так как стандартные библиотеки работают либо с семисегментниками,, либо с матрицами. И микросхема по даташиту преднаначена для работы на это же.
Тут сперва нужно определиться в приорететах
— Приоритет цены
— Простоты аппаратной части
— Простоты программирования
Ну и саму констуркцию желательно обозначить
Иногда дешевле купить готовые индикаторы или тот же P6 дисплей за $11
чтобы ее прошить — надо притянуть 2 к земле и потом дернуть ресет?
что-то я забыл совсем
и зачем на ноде мцу сброс и гпио2 подключены через транзистор с усб мосту?
почему не напрямую?
Транзистор, чтобы с компа программно нажимать кнопки, для ленивых или когда нет доступа к плате(есть только усб выход), а выводить кнопки нежелательно.
Всё верно.Только здесь 30х100 см. и цена почти 3 доллара. Я брал 30х60см., по 1.10 долара. Ссылку не могу дать, у этого продавца уже нет. Куска 30х60 см. хватит шук на тридцать матриц. А то и больше. Кстати я и семисегментные индикаторы такой пленкой прикрываю.Получается очень даже неплохо.
Очень интересная тема у Вас. С удовольствием прочел обзор и подписался на новые обзоры. Сам собрал нечто похожее с DS3231 для аварийного летоисчисления)) только с одной строкой. Хочу повторить Ваш проект, только уже со своими плюшками… С нетерпением жду обзора на цветной вариант!
По-мне так и этот корпус выглядит замечательно: полоски стяжек по бокам сходят за дизайнерский эффект. Здорово, очень здорово. А возможность избавиться от настроек, за счёт использования Wi-Fi и получения времени и погоды из сети очень удобно. Я бы не поскупился на слово гениально, но наверное подобное кто-то уже делал.
Ваш обзор отличный стимул к изучению матчасти и распрямлению изогнутых конечностей в так называемые «прямые руки» )
А так здорово!
Электричество не знаю, смарт придеться стационарно тогда запитать.
Что то, типа Окей Гугл и Дуси.
Какой нибудь смарт с раздолбаным экраном приспособить. Подвесить динамик помощней и голосовой пульт с микрофоном безпроводный. Когда нужно включил пульт и спросил что нужно.
Чтобы не подслушивали.
Лежишь на диване, включаешь этот пультик и спрашиваешь. Последние местные новости или еще что.
Например.
— А сейчас будет дискотека, включай группу Авария, песня такая то.
То есть и муз. центр подключить с хорошим звуком.
блин… почти умный дом получается.
Детишек убаюкивать.
— Влючай колыбельную или сказку.
Что то меня понесло. Органайзер, будильник, трансляция звуков природы, соловья там. шум прибоя и далее. Предлагайте?
И как еще китайцы до этого не додумались. Считай нужный удобный девайс. Который спросом будет пользоваться.
На котором из за новизны можно кучу денег срубить.
ЗЫ: запрещено вроде только громатикэ обзора обсуждать.
vk.com/app3441822
Хотя есть и блютуз гарнитуры. Превратить в удобный брелок пульт.
Ну тогда полный комплект есть.
Осталось только реализовать, программно удобно.
По колонкам, не понял зачем wifi, есть опять же блютуз. По всей квартире достанет.
mysku.club/blog/usa-stores/53297.html
Единственное — я бы скорость бегущей строки уменьшил, хорошо и с первого раза его прочитает только тот, кто уже знает, что там написано, имхо.
А еще лучше, чтобы слова менялись полностью. Или сокращенно: Ясно +21
На ней 747 сегодня для Перми.
А вот у яндекса 752
Кому верить?
Заморачивался однажды на счёт давления, да, поправка на высоту нужна, ибо влияет очень сильно. Благо, в квартале от меня есть работающая метеостанция (думал, с советского времени умерла — нет, работает, имеет общемировой идентификатор и сливает данные ежечасно), к ней и привязывался для калибровки.
В помещении, даже у окна все плохо с сигналом GPS.
И высота, да и координаты как правило «прыгают»
Недавно яндекс опубликовал API к погоде. Но ключи только продает.
А у HTML самый большой недостаток кроме объема кода — после смены дизайна, его придется заново писпть
Как вы страницу в несколько десятков килобайт засунете в память?
— куплены готовые модули индикации
— куплены индикаторы
— самостоятельно сделана монтажная плата. Без процессора.
— самостоятельно сделан переходник под процессорный модуль. Модуль покупной.
— использованы готовые библиотеки работы с железом
— использован существующий сервис по переводу картинок в экранные примитивы
— сделан большой шрифт
— сделан корпус
Что-же автор сделал сам? Удаляем купленное-скачанное. Остается:
1. самостоятельно сделана монтажная плата. Без процессора.
2. самостоятельно сделан переходник под процессорный модуль. Модуль покупной.
3. сделан большой шрифт
4. сделан корпус
п1 — с недостатком. Модуль процессора не установлен. Недостаток спорный, но он есть.
п2 — хорошая вещь, низкие трудозатраты
п3 — шрифт жуткий. Цифры сливаются. Особенно неприятен контраст с «готовыми» шрифтами — они-то сделаны нормально.
п4 — задняя часть нормальная (IMHO), но что прилеплено спереди? Пленка от «файлов» не подходит, она имеет прямо противоположные свойства к тому, что надо — размазывает изображение и не обеспечивает должную степень фильтрации по цвету. И «это» вы собрались использовать в качестве подарка? Гм… вообще-то, внешний вид, это основное. Откровенный колхоз в подарке чаще всего приводит к прямо противоположному.
О чем статья? Как собрать часы?… да нее, скорее руководство по применению процессорного модуля. Автор отмечает, что «все» делают на нем именно метеостанции, в том или ином виде. Знаете, остается только чесать репу — в статье нет ни интересных идей, ни нормальных самостоятельных разработок. Фонт — жуткий, корпус — колхоз.
Что полезного можно взять из статьи? Только идею. Платы все равно надо переделывать, ставить модуль процессора.
P.S.
Общался с модулями MAX7219. На них НЕ ставят блокировочные конденсаторы по питанию. Поэтому, динамическая индикация и программная регулировка «яркости» приводят к сильным броскам тока. Причем, пиковый ток не зависит от «яркости» и всегда максимален. Это создает очень высокий уровень пульсаций по питанию. Это создает проблемы у БП, вплоть до скорой его смерти. В статье я не увидел акцента по данной проблеме, поэтому отметил особо.
Хотя лично мне он нравится.
Когда-то и mysku таким же способом же на бывшем ebay-forum «отмечался» :).
Главная цель общение, потому что здесь бывают дают очень много ценных советов.
Потом я дорабатываю поделку, чаще программу и пишу обновленную статью на своем сайте или гиктаймсе.
Мог бы сделать лучше, но не сделал.
P.S. Бросков питания при старте не наблюдаю, может потому что не поленился сам на плате кондер поставить?
И управлять 80-. светиками по 1-му проводу
Что-нибудь типа этого
samopal.pro/ws28120-3/
типа таких
Т.е. вся конструкция — это 70 светодиодов, как вы показали на картинке выше + 70 токоограничительных резисторов + сама Ардуина-мега. Всё.
Для подключения 80 диодов достаточно 18 ног.
Можно и 8-й мегой обойтись. А так как индикация динамическая, то с яркостью никаких проблем
Только вот 80 проводков это ад для монтажника. Как то бы на плате их развести
На Алиэкспресс я покупал 8-канальные там
и 16-канальные там
Только нужно понимать, что всю логику с дисплеем (знакогенератор и пр) придется реализовывать самому, так как стандартные библиотеки работают либо с семисегментниками,, либо с матрицами. И микросхема по даташиту преднаначена для работы на это же.
Тут сперва нужно определиться в приорететах
— Приоритет цены
— Простоты аппаратной части
— Простоты программирования
Ну и саму констуркцию желательно обозначить
Иногда дешевле купить готовые индикаторы или тот же P6 дисплей за $11
вот допустим у меня она работает и там у нее есть 2 вывода 0 и 2
img12.deviantart.net/4335/i/2015/337/e/2/esp8266_esp_01_module_pinout_diagram_cheat_sheet_by_adlerweb-d9iwm7a.png
как на картинке
чтобы ее прошить — надо притянуть 2 к земле и потом дернуть ресет?
что-то я забыл совсем
и зачем на ноде мцу сброс и гпио2 подключены через транзистор с усб мосту?
почему не напрямую?
вот правильная
почему так включены?
но люди разные бывают и иногда такие схемы или код наделают, что индусы отдыхают
mysku.club/blog/aliexpress/43668.html
работает норм
Ищется на Aliexpress по запросу «виниловая пленка для задних фонарей». Цена чуть больше доллара. Я брал черную. Получилось так:
Яркость на матрице 1. То есть на минимуме.
Нужно прицениться
Но ей ведь только плоскость можно обклеить?
То есть только стекло переднее
Скоро приедет, сделаю обзор
Ваш обзор отличный стимул к изучению матчасти и распрямлению изогнутых конечностей в так называемые «прямые руки» )
В тему yadi.sk/i/Ew0egvWq3Hg48u
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.