• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Драйвер для матриц на MAX7219 на esp8266

sharky

New member
Делаю первые шаги в сях и программировании этого замечательного модуля, набросал небольшую библиотечку чтоб без MCU дополнительного рулить лед-матрицами. Пока малость коряво, но планирую довести до ума.

Готовую либу не нашел поэтому запилил по образу и подобию ардуиновских.

Исходники: https://github.com/ploys/esp8266/tree/master/max72xx

Нормально живет в проекте на esphttpd можно с мобилы или компа рисовать, позже, как до ума доведу, выложу клиентскую часть рисовалку.
Фоточки: https://github.com/ploys/esp8266/issues/1
 

sharky

New member
Так как в сях новичек, интересно было бы услышать мнение спецов по бест практикам.

1. Нормально ли гонять структуру с конфигом параметром в каждую функцию, или может есть более удобный вариант эмуляции объектов в чистых сях?
2. В каких случаях ICACHE_FLASH_ATTR в объявлениях функций не нужен, я так понял он юзается, чтобы ф-я загружалась с флэша в рам при необходимости и рама меньше расходовалась, тогда почему бы такое поведение не сделать умолчательным?
3. Возможно ли как-то просто сделать инициализацию пина по номеру или системной какой константе аля как в ардуине, чтоб не приходилось в юзерском модуле писать подобное:
PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U, FUNC_GPIO2);
PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO4_U, FUNC_GPIO4);

Спасибо.
 

JustACat

Moderator
Команда форума
тогда почему бы такое поведение не сделать умолчательным?
Так сделали уже http://esp8266.ru/forum/threads/smi...abotki-proshivok-esp8266.167/page-3#post-3518 - это например...

И к вашему 3 вопросу:
Вообще у нас есть тут интересные проекты, в которых и Си++11 и работа Arduino-style (Sming) и даже компилирование в ArduinoIDE есть :)
Было бы неплохо на самом деле и вашу либу прикрутить к Sming.

PS: хотел лично вам сказать спасибо - очень мало людей вот так чтобы пришли на форум, и тут же что-то выдали, причем безвозмездно!
 

sharky

New member
Так сделали уже http://esp8266.ru/forum/threads/smi...abotki-proshivok-esp8266.167/page-3#post-3518 - это например...

И к вашему 3 вопросу:
Вообще у нас есть тут интересные проекты, в которых и Си++11 и работа Arduino-style (Sming) и даже компилирование в ArduinoIDE есть :)
Было бы неплохо на самом деле и вашу либу прикрутить к Sming.

PS: хотел лично вам сказать спасибо - очень мало людей вот так чтобы пришли на форум, и тут же что-то выдали, причем безвозмездно!
Надо было Вашу ссылку прочитать перед тем как писать, нашел ответ на 2й вопрос: код нельзя класть в ROM (тот что может быть вызван из прерываний, системный и т.д.) и ФТП как оказалось есть и мнения по ардуиноИДЕ схожие :)

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

По смингу, arduino IDE для esp и идеям новых либ тут напишу, может потом перенесу в тему с хотелками если одобрите:
1. ИМХО ардуиновская IDE канает для мелких стартовых скетчей, но что-то серьезное на ней делать анрил ввиду отсутствия подсказок, рефактора и прочих штук полноценных ИДЕ, эклипс в данном случае намного удобнее, не IntelliJ IDEA конечно (CLion они еще до ума не довели), но съедобно. Мне например, было бы очень удобно юзать что-то одно для всех платформ (avr, arm, esp итп), ардуиновский плагин на луну натянул, но еще не пробовал, и выглядит он как-то стремно :)
ESPшный тулчейн работает отлично под виндой с мингв благодаря топикстартеру UnofficialDevKit получилось быстро поставить, настроить вникнуть, спасибо ему, как доразберусь в написании плагинов к эклипсу может запилю селектор ком порта, чтоб постоянно в мэйкфайл не лазить :).

2. Sming попробую погонять сегодня, как вникну могу попробовать перегнать либу для OpenEEG протокола и MPU-6050/9150 игрался с ним на ардуинке, камерой и объектом в 3д сцене рулил.
Правда не уверен пока в производительности, но это уже на практике надо смотреть сколько максимум выжать по скорости можно.

3. Из хотелок: было бы прикольно иметь легковесный FTP + ФС на сдкарточке на модуле, пины свободные по идее еще останутся для управления например mp3 плэеромкоторый с этой же карточки играть будет. Хочу ребенку говорящего медведя сбацать, чтоб можно было заливать с мобилы фразы/песни итп. По поводу ФС в том же Sming написано про SPIFF а вот FTP сервера реализации не нашел легкого.

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

pvvx

Активный участник сообщества
1. Тут как кому нравится :)
2. По тому, что по умолчанию код идет в Iram.
3.
Код:
#define _IO_MUX_GPIO ((uint64)0x3210BA9876FE4D5Cull) // обратный порядок: ((uint64)0xC5D4EF6789AB0123) // таблица по 4 бита на номер пина,  адресов IO_MUX в соответствии с номерами GPIOn
#define PERIPHS_IO_MUX_GPIO_ADDR(PIN_NUM) (PERIPHS_IO_MUX + 0x04 + (uint32)(((_IO_MUX_GPIO>>(PIN_NUM<<2)) & 0x0F)<<2)) // получить адрес IO_MUX в соответствии с номером GPIOn
Такое сложное описание для того, чтобы не было таблиц в ram. (т.е. чтобы не тратило ни бита и так малого ОЗУ)
Полное описание с примерами в Web_Base3\app\include\driver\io_pin_func.h
Как итог - если надо назначить к примеру пин GPIO12 на I/O то PIN_FUNC_IOPORT(12), а назначить функцию пина GPIO12 обратно, по умолчанию, принятому в SDK = PIN_FUNC_DEFAULT(12);

Решение с таблицами размещенными в rodata (общей ОЗУ данных) найдете в Lua клонах.
 
Последнее редактирование:

JustACat

Moderator
Команда форума
sharky, вы, главное - не забрасывайте :) Судя по вашим словам у вас есть и желание, и возможности привнести в наше сообщество много полезного!
По модификации makefile'ов и eclipse - очень плюсую, и это можно обсудить с @CHERTS (автором UDK).
По библиотекам для Sming - любым, плюсую многократно. Ибо это упростит жизнь многим новичкам. А в итоге (мечтательно) может и действительно что-то около Arduino выйдет (и я имею ввиду не саму IDE, хотя для новичков лучше и не найти: простое окно, и кнопки "Проверить код" и "Загрузить в ESP", ну может еще Terminal, но я больше говорю именно за инфраструктуру, когда есть множество библиотек, которые можно подключить быстро и что-то проверить). Так вот, по библиотекам и Sming - это к @anakod.
Ну a ArduinoIDE у нас пилит @Sermus. И все, на сколько я знаю, открыты для предложений, и тем более - для помощи.
Такие дела :)
 

whiteud

New member
А реально сделать матрицу сантиметров так на 90 из таких модулей для использовании в авто? Можно было бы с айфонца по wi-fi передавать заготовленный текст :) и можно ли обойтись без max7219?
 

JustACat

Moderator
Команда форума
whiteud, в принципе - почему нет? Только не дороговато выйдет на 90 см?
Я бы, думаю, брал что-то на WS2811 / WS2812. Они есть разные:
В виде лент http://aliexpress.com/item/1-4-5-ip65/32243894576.html http://aliexpress.com/item/DC-5V-WS...D-30-Pixel-M-Waterproof-IP67/32230036355.html
Отдельных пикселей http://aliexpress.com/item/1000-pcs...12b-heatsink-1pcs-as-1-pixel/32241930349.html
Готовых полотен http://aliexpress.com/item/25x50CM-...sable-Dispaly-Screen-Panel-5V/1660698961.html http://aliexpress.com/item/25x50CM-...sable-Dispaly-Screen-Panel-5V/1660739522.html
Гирлянд http://ru.aliexpress.com/item/HK-Po...9mm-LED-Module-Pixels-String/32241147346.html
Не реклама. И это я лоты вставил от балды (не самые дешевые и/или качественные, просто чтобы показать, что оно есть).
Хотя вопрос конечно в дистанции, с которой оно должно читаться.
Еще у адафрута есть прикольные штуки: http://www.adafruit.com/products/420 (там под самим товаром много примеров реализации)
Ну и вот: http://www.ebay.com/itm/331456943362 - такую я пользовал, работает, там все на сдвиговых + дешифраторах, простое, как дрова. Можно их объединять в большие модули.
 

whiteud

New member
Да вроде не очень дорого, выходит 90 рублей за штуку, вот например: http://www.ebay.com/itm/Arduino-Con...87?pt=LH_DefaultDomain_15&hash=item1e9f9c5fe3

Получается 3.2смx3.2см, чтобы получить 90см это надо 28 модулей, если два ряда 56, выходит в 5тыс руб. Те что по ссылке неплохо между собой соединяются, монтаж детский. Вот тут есть пример как они соединяются, практически без швов. Корпус сделать тоже не сложно.

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

JustACat

Moderator
Команда форума
whiteud, ну, тут поприкидывать нужно.
Update: я первый раз слегка обсчитался, считал 1 строку (8 точек), а думал про две (16 точек). Чутка подправил расчеты: посчитал на две строки (16 точек), а длину на 900mm.

Адафрутовский модуль 16x32 - это 8 модулей 8x8 (2 ряда по 4 модуля).
Размер 192mm x 96mm.
900mm / 192mm ~ 4-5 модулей.
Это даже при их конской цене в $25 выходит ~ $100-125.
Из плюсов: цвета!
Из минусов: те модули, вроде как, тоже на регистрах и дешифраторах.

Ладно, берем модули, которые я покупал себе, они идут по $11 за 16x32.
Размер у них 151mm x 76mm (только что померил).
900mm / 151mm ~ 6 шт.
То есть за ваш размер выходит около $66 - это уже меньше вашей озвученной суммы.
Из плюсов: 2 (3) цвета вместо 1.
Из минусов: на регистрах и дешифраторах.

По лентам/модулям на WS28xx - надо отдельно считать, смотреть лоты дешевые. Те, что я привел, далеко не самые дешевые :)
Но по ним может выйти конечно и дороже. А может и нет.
Из плюсов: опять же - цвета! Вся радуга (грубо). Управление - по 1 проводу.
Из минусов: ммм, если только цена, наверное...

К слову сказать, светодиоды WS28xx можно и россыпью купить и самостоятельно напаять, так еще дешевле, но придется делать плату.

Про нагрев и питание - не понял, если честно... Питание везде в 5 вольт. Преобразователь из автомобильных в 5 вольт - вроде не проблема...
Нагрев, опять же, это же тоже светодиоды, как и у вас. Почему они должны греться больше или меньше? Все будет зависеть от яркости, цвета и времени свечения...

Ах да, забыл еще один плюс ленты/полотна, который иногда нужен - они гибкие, то есть их можно, например, на некую ткань или клеенку закрепить, и тогда такой экран можно сворачивать в трубочку :)
 
Последнее редактирование:

whiteud

New member
Про нагрев и питание поясню, к примеру на вашей же ленте, там указано 11.5Вт/м (для ленты 60 светодиодов на метр), 90см грубо метр, считаем что рядов будет 16 (аналогично варианту 8х8 матриц в два ряда), 11.5*16=184Вт, с запасом нужен БП на 200Вт, ну и собственно греться оно будет также. Ну да я конечно не учел что он же не постоянно будет светиться, да и для ленты можно подложку металлическую сделать. Но вот как питать 200Вт беду от автомобильной сети - тут я теряюсь.

Кстати 60 диодов на метр, эт не особо, надо брать 144 как минимум, а это уже другие цифры :(
 

JustACat

Moderator
Команда форума
whiteud, так-то оно так, но опять же условно, нужно мерить. Просто потому, что китайские ватты, они такие китайские :) И для лент светодиодных это тоже справедливо.
То есть заявленные ими ватты явно нужно на что-то поделить. Далее, это максимум, который, как вы сами сказали, будет (если будет) только если врубить все 3 цвета (RGB) во всех светодиодах ленты на постоянку.
Спрашивается - а зачем? Чтобы получить из этого экрана белый светильник размером 90 на x см? :)
Далее, я бы все таки в амперах считал, а то ватты. Но это так.
Ну и наконец - вы же тоже хотите светодиоды, в другом виде, но светодиоды. Потребление/нагрев у них будет при прочих равных (одном цвете, кол-ве светиков, яркости и т.п.) сходное же.
Я, например, когда запускал тот свой модуль 2-х цветный в режиме полного включения 1 строки - оно тоже грелось не хило особенно транзисторы там сзади. Потребление, правда, не замерял, но уверен, что в таком режиме оно сгорело бы быстро (рассчитано стопудово на динамическую индикацию).

К слову, от автомобиля народ запитывает усилки на киловатт и более :) Ну, фанаты звука. Так что, думаю, сеть-то справится полюбому. Другой вопрос, что надо будет какой-то преобразователь мощный 12 -> 5. Это да...

В любом случае это все очень прикидочно конечно, и нельзя судить точно, пока не померишь в реальности. Точнее так: я не берусь судить точно, т.к. моих знаний мне на эти расчеты не хватит :)
А так, ну, я в итоге просто привел возможные варианты. Просто знаю, что на этих WS28xx экраны делают, в т.ч. и большие (на тюбике много их). Вот и предложил как вариант.
 
Последнее редактирование:

whiteud

New member
По мощности я базировался на ленте что делал освещение дома, там 5050 светодиоды, жрут как падлы, БП греется тоже будь здоров. А вот по модулям в шапке натыкался на такую готовую штуку, там на фотках ниже видно что используются 8x8 модули, у него она вообще на аккумуляторах :) по потреблению согласно даташиту как-то мало http://www.foryard-led.ru/pdf/fym-23881crgb_drgb.pdf

Спасибо за участие :)
 

JustACat

Moderator
Команда форума
по потреблению согласно даташиту как-то мало
Разве мало?
Написано: Forward Current 30 mA
30 mA * 8 * 8 ~ 1,92 A
И если в ватты переводить: Forward Voltage берем для нужного цвета:
- красный: 2,2V ~ 4.2 ватт
- синий: 2,8V ~ 5.4 ватт
Это еще если не брать, сколько на ограничительных резисторах рассеиваться будет.
На каждый модуль... Не сказал бы, что мало.
Но опять же - это если жечь на всю яркость постоянно все точки - а так их никто обычно не пользует, чаще всего динамическая индикация + анимация того, что выводится, и в итоге получается, что горит одновременно всего несколько светиков, и недолго.
А вы как раз пишете про замеры на освещении - вот там как раз случай реального максимума: освещение горит постоянно (пока включено) и на максимум обычно - там и потребление будет огого и нагрев будет конечно.
Я лично понимаю так... Если чего путаю - простите :)
 

Andy Korg

Moderator
Команда форума
Практически гораздо меньший ток у матриц. В часах про которые я тут всем уши прожужал не выше 400 мА выходит со всеми esp, nrF24, звуком и прочим.
 

pvvx

Активный участник сообщества
Последнее редактирование:

JustACat

Moderator
Команда форума
Практически гораздо меньший ток у матриц.
Вот и я о том. Точнее о том, что надо все проверять практически :)
А с нормальным LCD меньше не выйдет?
Для задачи whiteud'а не подойдет: LCD размера 900mm x 100 mm найти сложно, а другой на заднее стекло авто не поставить (весь обзор закроет). Ну и надо тогда какую-то матрицу по круче, не обычный TFT, а то на солнышке его будет не видно вообще.
 

pvvx

Активный участник сообщества
Для задачи whiteud'а не подойдет: LCD размера 900mm x 100 mm найти сложно, а другой на заднее стекло авто не поставить (весь обзор закроет). Ну и надо тогда какую-то матрицу по круче, не обычный TFT, а то на солнышке его будет не видно вообще.
 

Maunty

New member
Всем привет. Я новичок в этом деле. Решил начать с проекта esp8266 и max7219 собрать wifi метеостанцию. Так не могу понять что у меня не получается. При прошивке модуля работает только одна матрица из четырех. Проверил на Arduino nano, всё работает. Проверял на готовых примерах в Arduino. Начал думать может питание не хватает т.к. на Arduino питание от +5 ,а тут +3. Помогите пожалуйста разобраться.
 
Сверху Снизу