Skip to content

Настройка скетча для вашего устройства

vvip-68 edited this page Oct 25, 2024 · 8 revisions

Настройка скетча для вашего устройства

Выбор варианта устройства

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

Откройте среду разработки Arduino IDE для редактирования скетча проекта. Перейдите на вкладку a_def_hard.h - все параметры, описывающие ваше устройство и поддерживаемый устройством функционал сосредоточен здесь.

Внимательно прочитайте комментарии в начале файла, там содержится важная информация!

Если для своего устройства вы выбрали плату на базе микроконтроллера ESP8266 - NodeMCU или Wemos d1 mini - в пункте меню "Инструменты" установите параметры как это указано на картинке:

ESP8266

Если же ваше устройство собрано на базе микроконтроллера ESP32 - в пункте меню "Инструменты" установите параметры как это указано на картинке:

ESP32

В обоих случаях значение параметра "Порт" выбирайте в соответствии с тем, какой порт получил подключенный к USB микроконтроллер в вашем компьютере.
Подробнее - здесь

После того, как вы выбрали настройки компиляции для вашей платы - изучите и отредактируйте настройки скетча, чтобы они соответствовали собранному устройству

Profile

HOST_NAME - строка задает то, под каким именем ваше устройство будет видно в вашей локальной сети.
LANG - задает язык, используемый в интерфейсе управления. Доступные языки - 'RUS' и 'ENG'. Как добавить свой язык.
A_DEF_DEVC - поставьте здесь 0. Все параметры вашего устройства описываются в этом файле ниже.
A_DEF_PASS - поставьте здесь 0. Все параметры ваших подключений описываются в файле a_def_soft.h.

Если вы планируете использовать сервис получения погоды с сервиса OpenWeatherMap - получите ключ API доступа к погодной информации на сервере. Если вы не собираетесь получать погоду - оставьте это поле не изменённым.

WEATHER_API_KEY - вставьте сюда ключ API получения погоды с OpenWeatherMap

INITIALIZE_TEXTS - если установлено значение 1, при первом запуске микроконтроллера тексты всех ячеек 0..35 бегущей строки будут заполнены значениями из примеров. Оставьте 0 если вы не планируете использовать бегущую строку вовсе или хотите написать тексты самостоятельно.

Для устройств, собранных на ESP8266 существует два варианта подключения компонент к микроконтроллеру

  1. Подключены ВСЕ доступные компоненты: DFPlayer, SD-Card, индикатор TM1637, реле или MOSFET управления питанием матрицы, кнопка (обычная или сенсорная)
  2. Используется только часть из доступных к подключению компонент, устройство собрано по одной из схем: схема 1, схема 2, схема 3, схема 4, схема 5 с возможным отсутствием одной из компонент.

Поскольку для варианта DEVICE_VARIANT 1 используется все доступные выводы платы микроконтроллера, назначение пинов отличается от назначения пинов варианта DEVICE_VARIANT 0. В зависимости от того, по какой схеме собрано ваше устройство поставьте в определение DEVICE_VARIANT значение 0 или 1.

Если ваш вариант DEVICE_VARIANT 0 - настраиваемые параметры определяются в строках 168-250 - переходите к редактированию этого блока
Если ваш вариант DEVICE_VARIANT 1 - настраиваемые параметры определяются в строках 252-320 - переходите к редактированию этого блока

Для устройств, собранных на базе микроконтроллера ESP32 блок настроек параметров скетча расположен в строках 322-397 - переходите к редактированию этого блока

Варианты устройств

Вариант ESP8266 'DEVICE_VARIANT 0'

DEVICE_VARIANT_0 DEVICE_VARIANT_0

Вариант ESP8266 'DEVICE_VARIANT 1'

DEVICE_VARIANT_1 DEVICE_VARIANT_1

Вариант ESP32

DEVICE_VARIANT_32 DEVICE_VARIANT_32

Параметры профиля устройства

Размеры и подключение матрицы

Профиль устройства содержит набор параметров, по значению одинаковый для всех трех вариантов. Рассмотрим назначение параметров подробнее.

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

  • Цельная матрица из одного сегмента (MATRIX_TYPE = 0 или MATRIX_TYPE = 1)
  • Сборная матрица из нескольких сегментов одного размера и типа подключения (MATRIX_TYPE = 0 или MATRIX_TYPE = 1)
  • Сборная матрица из нескольких сегментов разных размеров и типов подключения (MATRIX_TYPE = 2)

WIDTH

Параметр WIDTH - укажите ширину одного сегмента матрицы для MATRIX_TYPE = 0 или MATRIX_TYPE = 1 или всей сборной матицы для MATRIX_TYPE = 2

HEIGHT

Параметр HEIGHT - укажите высоту одного сегмента матрицы для MATRIX_TYPE = 0 или MATRIX_TYPE = 1 или всей сборной матицы для MATRIX_TYPE = 2

MATRIX_TYPE

Параметр MATRIX_TYPE определяет схему расположения "дорожек" светодиодов вашей матрицы
MATRIX_TYPE 0 - зигзаг
MATRIX_TYPE 1 - параллельная
MATRIX_TYPE 2 - сборная матрица из сегментов разного типа и размера

MATRIX_INDEX

Параметр MATRIX_INDEX определяет место хранения карты индексов светодиодов для сборной матрицы,
состоящей из сегментов разного размера и типа подключения (MATRIX_TYPE = 2)
MATRIX_INDEX 0 - в скетче
MATRIX_INDEX 1 - в файле

CONNECTION_ANGLE

Параметр CONNECTION_ANGLE определяет к какому углу матрицы подключен сигнальный провод, когда матрица расположена плоско прямо перед вами:
CONNECTION_ANGLE 0 - левый нижний
CONNECTION_ANGLE 1 - левый верхний
CONNECTION_ANGLE 2 - правый верхний
CONNECTION_ANGLE 3 - правый нижний

STRIP_DIRECTION

Параметр STRIP_DIRECTION определяет в каком направлении идет "дорожка" светодиодов из угла подключения:
STRIP_DIRECTION 0 - вправо
STRIP_DIRECTION 1 - вверх
STRIP_DIRECTION 2 - влево
STRIP_DIRECTION 3 - вниз

Схема, поясняющая тип матрицы, угол подключения и направление из угла:

MATRIX_TYPE

STRIP_DIRECTION

Параметры сборных матриц

Если ваша матрица состоит из нескольких сегментов одного размера и типа подключения (сборная матрица) требуется указать в каком порядке и как сориентированы сегменты сборной матрицы. Принцип описания соединения сегментов схож с принципом описания как расположены диоды в сегменте матрицы - угол подключения, направление из угла, параллельное соединение или змейка, только в качестве единицы блока берется не отдельный светодиод, а сегмент матрицы целиком. Объяснение принципа построения сборной матрицы этого типа можно прочитать здесь.

META_MATRIX_WIDTH

Параметр META_MATRIX_WIDTH - укажите ширину матрицы в сегментах - сколько сегментов состовляют полную ширину матрицы

META_MATRIX_HEIGHT

Параметр META_MATRIX_HEIGHT - укажите высоту матрицы в сегментах - сколько сегментов состовляют полную высоту матрицы

META_MATRIX_TYPE

Параметр MATRIX_TYPE определяет схему расположения сегментов вашей матрицы
META_MATRIX_TYPE 0 - зигзаг
META_MATRIX_TYPE 1 - параллельная

META_MATRIX_ANGLE

Параметр META_MATRIX_ANGLE определяет в какому углу сборной матрицы расположен первый сегмент:
META_MATRIX_ANGLE 0 - левый нижний
META_MATRIX_ANGLE 1 - левый верхний
META_MATRIX_ANGLE 2 - правый верхний
META_MATRIX_ANGLE 3 - правый нижний

META_MATRIX_DIRECTION

Параметр META_MATRIX_DIRECTION определяет направление следующих сегментов сборной матрицы из угла:
META_MATRIX_DIRECTION 0 - вправо
META_MATRIX_DIRECTION 1 - вверх
META_MATRIX_DIRECTION 2 - влево
META_MATRIX_DIRECTION 3 - вниз

Прочие параметры

Если ваша матрица состоит из нескольких сегментов одного размера и типа подключения (сборная матрица)

DEVICE_TYPE

Параметр DEVICE_TYPE определяет как собрана ваша матрица:
DEVICE_TYPE 0 - матрица свернута в трубу ("закольцована"), используется для устройств типа "лампа"
DEVICE_TYPE 1 - плоская матрица, используется для устройств типа "гирлянда", "панель", "часы" и т.д.

Значением этого параметра определяется поведение некоторых эффектов и часов. Например для DEVICE_TYPE 0 - отображение движущихся часов "закольцовывается", что создает эффект движения часов по поверхности трубы без разрыва. Для для DEVICE_TYPE 1 - смещение часов уходит за край матрицы слева и не показывается с правого края, пока весь видимый текст не скроется из виду.

USE_BUTTON и BUTTON_TYPE

Параметр USE_BUTTON определяет подключена ли к устройству кнопка
USE_BUTTON 0 - кнопка отсутствует
USE_BUTTON 1 - кнопка подключена

Параметр BUTTON_TYPE определяет тип подключенной кнопки:
BUTTON_TYPE 0 - сенсорная (touch button)
BUTTON_TYPE 1 - обычная физическая (тактовая) нормально-разомкнутая кнопка

Задействованные функции

В этом блоке определяются параметры, указывающие наличие подключенных к устройству компонент - DFPlayer, SD-card, TM1637, Реле или MOSFET для управления питанием матрицы. В зависимости от того подключено ли устройство, в прошивке включаются или отключаются соответствующие блоки кода, обслуживающие работу с этими устройствами, а также наличие или отсутствия соответствующих элементов управления в приложении на смартфоне.

USE_TM1637

Параметр USE_TM1637 определяет подключен ли к устройству индикатор TM1637
USE_TM1637 0 - TM1637 отсутствует
USE_TM1637 1 - TM1637 подключен

USE_POWER

Параметр USE_POWER определяет присутствует ли в устройстве блок управления питанием матрицы - реде или MOSFET
USE_POWER 0 - управление питанием матрицы отсутствует
USE_POWER 1 - управление питанием матрицы подключено

Управление питанием матрицы актуально для устройств, которые работают не круглосуточно (отключены какую-то часть времени) для экономии потребляемой электроэнергии. При программном отключении устройства "Soft Power Off" светодиоды матрицы не светятся, но микросхемы, расположенные внутри светодиодов продолжают потреблять электроэнергию. При значительном размере матриц ток потребления матрицы в целом может составлять значительную величину. Наличие блока управления позволяет физически убирать питание с матрицы при программном отключении устройства. Полее подробная информация питании здесь

USE_WEATHER

Параметр USE_WEATHER определяет будет ли устройство получать информацию о текущей погоде с одного из погодных серверов - Яндекс.Погода или OpenWeatherMap
USE_WEATHER 0 - получение информации о погоде отключено
USE_WEATHER 1 - получение информации о погоде включено

При наличии информации о погоде текущая температура может отображаться совместно с часами и в бегущей строке. Также доступны два дополнительных режима по времени - "Закат" и "Рассвет" - позволяют выполнять запрограммированное действие с наступлением заката и рассвета. Например, автоматическое включение устройства с наступлением сумерек и отключение на рассвете.

USE_E131

Параметр USE_E131 определяет будет ли устройство поддерживать работу в группе в качестве источника или приемника групповых сигналов от других устройств или программы управления типа Jinx!
USE_E131 0 - поддержка синхронизации устройств выключена
USE_E131 1 - поддержка синхронизации устройств включена

BIG_FONT

Параметр BIG_FONT определяет размер шрифта, который будет использоваться для отображения бегущей строки
BIG_FONT 0 - используется "мелкий" шрифт, размером 5x8 точек
BIG_FONT 1 - используется "крупный" шрифт, размером 10x16 точек
BIG_FONT 2 - используется "средний" шрифт, размером 8x13 точек

USE_SD

Параметр USE_SD определяет подключен ли к вашему устройству считыватель SD-карты
USE_SD 0 - считыватель SD-карт отсутствует
USE_SD 1 - считыватель SD-карт подключен

FS_AS_SD

Обычно SD-карта используется для хранения файлов большого размера - роликов эффектов, подготовленных в программе Jinx! для эффекта "SD-карта". Однако для матриц небольшого размера, например 16x16, размеры созданных файлов не такие уж и большие и несколько роликов вполне могут поместиться во внутренней файловой системе микроконтроллера.

Параметр FS_AS_SD включает эмуляцию SD-карты в файловой системе микроконтроллера. При установленном параметре FS_AS_SD = 1 микроконтроллер будет считать, что SD-карта подключена к устройству, в то время как на самом делее её нет.
FS_AS_SD 0 - эмуляция SD-карты выключена
FS_AS_SD 1 - эмуляция SD-карты включена

Не используйте FS_AS_SD = 1, если считыватель SD-карты физически подключен к устройству.

WAIT_PLAY_FINISHED

Параметр WAIT_PLAY_FINISHED определяет алгоритм воспроизведении ролика с SD-карты и условие перехода к следующему эффекту, когда время ролика больше чем время, установленное для эффекта
WAIT_PLAY_FINISHED 0 - прерывать показ файла с SD-карты по истечении времени эффекта
WAIT_PLAY_FINISHED 1 - переключаться на следующий эффект только когда весь файл полностью показан

REPEAT_PLAY

Параметр REPEAT_PLAY определяет алгоритм воспроизведении ролика с SD-карты и условие перехода к следующему эффекту, когда время ролика меньше чем время, установленное для эффекта
REPEAT_PLAY 0 - перейти к следующему эффекту по завершении проигрывания ролика, даже если время эффекта еще не вышло
REPEAT_PLAY 1 - выполнять повторное воспроизведение ролика до тех пор, пока время эффекта не выйдет

USE_MP3

Параметр USE_MP3 определяет подключен ли к устройству проигрыватель MP3- файлов DFPlayer
USE_MP3 0 - DFPlayer отсутствует
USE_MP3 1 - DFPlayer подключен

DFPLAYER_TYPE

Плата MP3 DFPlayer Mini изготавливается многими производителями с использованием нескольких разных чипов. Управление чипами плеера может несколько отличаться друг от друга.

Параметр DFPLAYER_TYPE определяет вариант исполнения DFPlayer - оригинальный или клон
DFPLAYER_TYPE 0 - DFPlayer по системе команд совместим с оригинальным плеером, собранном на чипе AS20HH5883-74
DFPLAYER_TYPE 1 - DFPlayer собран на чипе, отличном от оригинального, например на чипах MH2024K-24SS, MH2024K-16SS и других

GUARD_DELAY

Плата MP3 DFPlayer Mini изготавливается многими производителями с использованием нескольких разных чипов, которые могут иметь разную скорость обработки поступающих команд. Если подавать команды плееру чаще, чем он успевает их обработать - плеер может "зависнуть", перестать работать или даже привести к "краху" исполнения кода прошивки и перезагрузки микроконтроллера.

Параметр GUARD_DELAY определяет время задержки в миллисекундах, которая требуется перед отправкой следующей команды плееру.

Рекомендуется подбирать данное значение опытным путем. Начните со значения 25. Если плеер работает нормально - пробуйте уменьшать значение или оставьте это. Если плеер не работает - прошивка считает, что плеер не подключен, не находит звуковых файлов на SD-карте, вставленной в плеер при том, что они есть и лежать в правильных папках - пробуйте увеличивать это значение. Если плеер так и не заработал при значении 150, далее увеличивать уже не имеет смысла. Попробуйте проверить выполнены ли рекомендации, касающиеся питания устройства.

Подключение компонентов к пинам микроконтроллера (платы NodeMCU, Wemos d1 mini или ESP32).**

LED_PIN

Параметр LED_PIN указывает к какому пину платы микроконтроллера подключен управляющий вход матрицы.

PIN_BTN

Параметр PIN_BTN указывает к какому пину платы микроконтроллера подключена кнопка.
Обратите внимание, что в части схем для DEVICE_VARIANT 0 кнопка подключена к пину D4 либо к пину D6 - смотри схему по которой собрано устройство.

POWER_PIN

Параметр POWER_PIN указывает к какому пину платы микроконтроллера подключен сигнальный вход блока управления питанием матрицы - реле или MOSFET

SD_CS_PIN

Параметр SD_CS_PIN указывает пин "Chip Select (CS)" считывателя SD-карт. Также считыватель использует пины D5, D6 и D7 для ESP8266 или G18, G19 и G23 для ESP32 - эти пины аппаратно зависимы и используются протоколом SPI с которым работает считыватель.

SRX

Параметр SRX указывает пин, соответствующий функции RX (прием данных) от проигрывателя MP3-файлов DFPlayer - TX пин (3) модуля DFPlayer

STX

Параметр STX указывает пин, соответствующий функции TX (передача данных) в проигрыватель MP3-файлов DFPlayer - RX пин (2) модуля DFPlayer

DIO

Параметр DIO указывает пин приема/передачи данных в индикатор TM1637 по протоколу I2C

CLK

Параметр CLK указывает пин тактирования данных индикатора TM1637 по протоколу I2C

Внимание!!!
Считыватель SD-карты и индикатор TM1637 для DEVICE_VARIANT 0 используют одни и те же пины - D5 и D7 и по этому не могут работать в устройстве одновременно. Для этого варианта используйте либо считыватель SD-карт, либо индикатор TM1637. Если вам обязательно необходимы оба устройства одновременно - используйте вариант сборки схемы DEVICE_VARIANT 1.

Дополнительные параметры

DEBUG_SERIAL

Параметр DEBUG_SERIAL определяет будет ли выводиться отладочная информация и лог работы устройства в монитор порта - Serial
DEBUG_SERIAL 0 - отладочный вывод отключен
DEBUG_SERIAL 1 - отладочный вывод включен

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

Внимание!!!
Если вы собрали полнокомплектное устройство на микроконтроллере ESP8266 - вариант компиляции DEVICE_VARIANT 1 - установка параметра DEBUG_SERIAL 0 обязательна!!!. В противном случае устройство работать не будет, поскольку вывод информации отладки в Serial использует пины D9 и D10 (RX и TX), к которым уже подключены компоненты схемы. Вследствие возникающего конфликта микроконтроллер может даже вовсе не запуститься.

Также для DEVICE_VARIANT 1 с сенсорной кнопкой при прошивке устройства следует отключать пин D9 - иначе прошивка не будет загружена в устройство из за конфликта использования пинов.

Явки и пароли

Часть настроек, связанная с учетными записями размещается в файле a_def_soft.h

ACCOUNTS

NETWORK_SSID

Параметр NETWORK_SSID содержит имя вашей локальной сети (SSID)
Имя сети может быть впоследствии изменено в Web-интерфейсе на странице настроек сетевых подключений

NETWORK_PASS

Параметр NETWORK_PASS содержит пароль подключения к вашей локальной сети
Пароль подключения к сети может быть впоследствии изменен в Web-интерфейсе на странице настроек сетевых подключений

DEFAULT_IP

Параметр DEFAULT_IP определяет IP-адрес, которое устройство получит при подключении к сети
Проверьте в настройках вашего роутера, что никакое другое устройство в сети не заняло этот IP-адрес во избежание конфликта сетевых адресов локальной сети.
IP-адрес устройства может быть впоследствии изменен в Web-интерфейсе на странице настроек сетевых подключений

GTW

Параметр GTW содержит последнюю цифру IP-адреса роутера, управляющего вашей сетью. Встречаются модели роутеров, которые по умолчанию в сети имеют адреса 192.168.0.1, 192.168.1.100, 192.168.1.254. Указанное значение GTW используется прошивкой для настройки сетевого соединения, чтобы понимать как в сети адресуется роутер и кому направлять пакеты с данными.

Так, например, если вы задали значение GTW 100 и IP адрес устройства - 192.168.0.72 - прошивка поймет, что адрес роутера в сети - 192.168.0.100 и именно этот адрес будет использоваться как адрес шлюза, через который сетевые пакеты от устройства отправляются адресатам.

Обратите внимание, что для коммуникации и устройство и роутер должны находиться в одной и той же сети.

IDs

COLOR_ORDER

Параметр COLOR_ORDER указывает в какой последовательности лента светодиодов распознает цвета, отправляемые контроллером в ленту.
В большинстве случаев настройка по-умолчанию GRB, однако ленты некоторых производителей или ленты с типами светодиодов, отличными от WS2812 могут использовать другой порядок цветов. Если эффект "Матрица" отображается не зеленым цветом, а каким-то другим, например синим - меняйте последовательность цветов в этом параметре - RGB, BRG, BGR и так далее, перебирая все возможные комбинации.

BRIGHTNESS

Параметр BRIGHTNESS задает начальную яркость ленты при первом включении устройства
Текущая яркость устройства устанавливается ползунком "Яркость" в приложении

TIME_ZONE и TIME_ZONE_MIN

Параметры TIME_ZONE и TIME_ZONE_MIN задают смещение часового пояса от UTC в часах и минутах соответственно
При получении времени из Интернета сервер NTP передает текущее время в часовом поясе UTC+0. Для того, чтобы привести полученное время к вашему часовому поясу, требуется знать вашу локальную временную зону - на сколько часов и минут ваше локальное время отстает или опережает UTC. Обычно смещение временных зон - целое число часов, например +4 часа для московского времени или +7 для Новосибирска. Однако некоторые страны имеют смещение часового пояса не кратное целому часу. Например в Индии и Шри-Ланке часовой пояс UTC+5:30, в Непале - UTC+5:45 (до 1986 года часовой пояс был UTC+5:40).

Текущие настройки часового пояса могут быть изменены в Web-приложении на странице настройки Часов.

WEATHER_REGION_YDX

Параметр WEATHER_REGION_YDX задает код города для API получения текущей погоды с серверов Яндекс.Погода
Инструкция как узнать регион погоды для серверов Яндекс размещена тут.
Текущие настройки кода региона для серверов Яндекс могут быть изменены в Web-приложении на странице "Настройки", "Погода".
Если в вашей стране сервера Яндекс по какой-то причине недоступны (заблокированы) - используйте погодные сервера OpenWeatherMap

WEATHER_REGION_OWM

Параметр WEATHER_REGION_OWM задает код города для API получения текущей погоды с серверов OpenWeatherMap
Инструкция как узнать регион погоды для серверов OpenWeatherMap размещена тут.
Текущие настройки кода региона для серверов OpenWeatherMap могут быть изменены в Web-приложении на странице "Настройки", "Погода".

Завершение настройки

После того, как параметры прошивки сконфигурированы, скомпилируйте скетч и загрузите прошивку в микроконтроллер.

После успешной загрузки (смотрите сообщение в мониторе порта) ваше устройство либо подключится к локальной сети, если соответствующие параметры были указаны в скетче, либо создаст точку доступа с адресом 192.168.4.1

Для дальнейшей настройки параметров соединения с сетью и режимов работы устройства - подключите телефон к сети или созданной точке доступа и откройте в браузере Web-приложение управления устройством по IP-адресу, который получило ваше устройство (смотри в мониторе порта) и продолжите настройку устройства.

Clone this wiki locally