Наш немецкий коллега Филип Гатов (Philipp Ghatow) сделал аналог Roco Z21 на базе Arduino http://pgahtow.de/wiki/index.php?title=Zentrale
Но данная реализация требует навыков работы с паяльником. Да и не всегда есть необходимость во всех интерфейсах, порой достаточно только DCC выхода.
Наш коллега с форма ModelldepO Александр (BR95009) доработал скетч Филипа, который позволяет собрать облегченную версию без пайки, с использованием готовых шилдов.
Все, что для этого нужно:
Motor Shield R3 (нужен именно R3, другие варианты не подойдут)
Состыковав эти модули, и загрузив скетч получаем рабочую командную станцию. Теперь, подключив ее к Ethernet можно управлять локомотивами и аксессуарными декодерами из JMRI или Rocrail. При наличии WiFi сети, также можно управлять с планшета или смартфона используя программное обеспечение для Roco Z21
Кроме того, Филип предусмотрел в своей разработке встроенный модуль WiFi на базе ESP8266
Наличие встроенного WiFi позволяет отказаться от использования внешнего роутера и подключаться планшету или смартфону непосредственно к самой командной станции. Кроме того, встроенный WiFi модуль может подключаться и к внешнему роутеру, что позволяет обойтись без проводов и Ethernet Shield.
Единственная проблема - данный модуль требует пайки, но есть одно замечательное решение. Плата Arduino Mega + WiFi
Вот на этом варианте мы и остановимся. Если вы хотите собрать станцию без WiFi на базе обычной Arduino Mega, просто пропустите описание процесса загрузки скетча для ESP8266. В остальном, все аналогично.
Для загрузки скетчей нужна среда разработки Arduino IDE. Скачать ее можно на официальном сайте https://www.arduino.cc/en/Main/Software
Дальше понадобиться поставить драйвер для usb на CH340. Процесс установки драйвера описан тут http://arduino-project.net/driver-ch340g/. Ссылка на архив с драйвером расположена внизу этой страницы (ch340ser_win.zip). Если вы используете плату без WiFi, то драйвера устанавливать не нужно, они установятся автоматически.
Дальше, запускаем Arduino IDE и добавляем библиотеки для работы с WiFi на ESP8266
Выбираем File->Preferences
В появившемся окне в строке Additional Boards Manager URLs (отмечено красным) вставим ссылку http://arduino.esp8266.com/stable/package_esp8266com_index.json и нажимаем OK
Переходим в Tools->Board->Boards Manager
Прокручиваем список вниз к скриптам esp8266 by ESP8266 Community и кликаем.
В правом нижнем углу появится возможность выбора версии ПО, выбираем самую новую версию и жмем кнопку Install
После установки закрываем окно и переходим Tools->Board и видим список доступных для программирования устройств на чипе ESP8266
Скачиваем необходимые библиотеки (a21libraries.zip)
Распаковываем архив в любую папку.
Запускаем Arduino IDE (если вы ее закрыли)
Далее идем Sketch->Include Library->Add .ZIP Library...
Переходим в папку куда мы распаковали архив и по очереди добавляем все четыре файла
Скачиваем и распаковываем архивы со скетчами для Arduino и ESP
A21_WiFi_DCC_Zentrale_v465_MSH.zip
A21_ESPArduinoUDP_v26.zip
Открываем сначала скетч для Arduino (Z21_WiFi_DCC_Zentrale_v465_MSH.ino)
На Arduino включаем 3-й и 4-й DIP переключатели (остальные должны быть выключены, второй переключатель RX0/RX3 - не имеет значения)
Для версии на обычной Arduino Mega, этот пункт пропускаем.
Подключаем по USB плату Arduino (Motor Shield ставить не надо)
В меню выбираем Tools->Board...->Arduino/Genuino Mega or Mega 2560
Дальше Tools->Port... - ваш COM порт к которому подключена плата
Если вы планируете использовать Ethernet Shield то в 209 строке скетча нужно поменять IP адрес (IPAddress ip(192, 168, 0, 111); //Werkseinstellung ist: 192.168.0.111) на IP из диапазона вашей домашней сети.
Далее, выбираем Sketch->Upload
Если все прошло как надо, то в строке состояния должна появиться надпись "Upload complete"
Выключаем 3-й и 4-й DIP переключатели и включаем 5-й, 6-й и 7-й
Открываем скетч Z21_ESPArduinoUDP_v26.ino
В меню Tools->Board...->Generic ESP8266 Module
Для версии на обычной Arduino Mega, этот пункт пропускаем.
Далее, выбираем Sketch->Upload
Если все удачно, должны увидеть вот такое окно
Для версии на обычной Arduino Mega, этот пункт пропускаем.
Выключаем 5-й, 6-й и 7-й DIP переключатели, включаем 1-й, 2-й, 3-й и 4-й. Переключатель TX0/RX0 - TX3/RX3 должен стоять в положении TX3/RX3
В меню выбираем Tools->Board...->Arduino/Genuino Mega or Mega 2560
затем Tools->Serial Monitor
В открывшемся окне должны увидеть
Если так - то у нас все получилось Можно ставить Motor Shield и использовать получившуюся КС для управления при помощи приложения Z21 mobile
В случае использования обычной Arduino Mega, сначала устанавливаем на нее Ethernet Shield, а в него уже Motor Shield
ВНИМАНИЕ!!!
Если для питания Motor Shield используется отдельный источник питания, ОБЯЗАТЕЛЬНО перерезать перемычку Vin Connect снизу платы
В случае использования источника питания на 4А, необходимо дополнительно установить перемычки, как показано на рисунке ниже. При использовании источника питания 2А, перемычки можно не ставить и рельсы подключать только к мосту A.
Переходим к настройкам WiFi
Открываем на смартфоне настройки WiFi и ищем в списке сеть Z21_ESP
выбираем и подключаемся к ней
вводим пароль 12345678
ждем пока подключится
Запускаем браузер и набираем в адресной строке 172.16.0.111
На открывшейся странице настроек можно поменять имя сети, пароль и канал.
Также можно настроить ESP на работу в качестве клиента. Для этого нужно указать в полях раздела WiFi client имя сети и пароль на доступ к ней. Но настоятельно рекомендую стереть все, что в этих полях написано и сохранить настройки. По умолчанию там полная ерунда из-за того, что EEPROM не заполнен и при запуске сначала пытается найти сеть с этим нечитабельным именем.
Если вы подключаетесь к домашнему роутеру, то после сохранения логина и пароля сверху будет IP выданный ESP. По этому IP можно будет управлять станцией при подключении телефона/планшета к домашнему роутеру, а не напрямую к ESP. Как вариант, для того, чтобы на телефоне/планшете не пропадал интернет.
запускаем приложение Roco Z21
Выбираем SETTINGS
Далее выбираем App Settings и меняем IP на 172.16.0.111 если предполагается работа напрямую через ESP или IP выданный домашним роутером, если будем работать через него.
Нажимаем на смартфоне кнопку "назад" и выбираем Locomotive Settings
Нажимаем крестик в правом верхнем углу
Выбираем Locomotive
Вводим нужные параметры
Name - чтобы вы понимали о чем речь
Loco address - адрес локомотивного декодера
Мах. Speed - утверждать не буду что это за единицы я ставлю 128
Decoder - отмечаем DCC
Speedlevel - шаг скоростей. Я отмечаю 128. На 28 у декодера срывает мозг. При задвигании движка в ноль, лок начинает носиться как угорелый. Возможно, чтото в декодере не то выставил, ковырять некогда пока. С КС нормально на 28 спидстеп работает.
Display - в каких единицах показывать текущую скорость... Похоже это както связано с Max.Speed и Speedlevel. Т.е. высчитывается от этих единиц. Если вам принципиально - можно "поиграть" с этим полем и полем Max.Speed и посмотреть на результат
Скролим дальше. Кликаем по Image если хотите добавить фото локомотива
Выбираем откуда взять фото. Camera у меня почему то не работает. Ну чтож, выбираю из галереи
далее, изменяя рамку (размер за края рамки, положение внутри выделения) определяем область картинки. нажимаем Save
Получаем
кликаем по Modify Functions
выбираем пустой слот
В поле Shortcut вводим понятное название функции (до 3-х символов), например HLT (Head LighT - головной свет)
Switch/Push-Button/Timer - определяет режим работы кнопки Переключатель/Кнопка/Таймер
Как работает таймер - не знаю, не пробовал. Режим Switch - раз нажали - включилось. второй раз нажали - выключилась. Например для головного света. Режим Push-Button - пока держим кнопку функция активирована, отпустили - выключилась. Полезна, например, для подачи коротких гудков.
В Function выбираем соответствующую функциональную кнопку
В Symbol выбираем подходящую иконку
Вот для примера головной свет. После выбора кнопкой Test можно проверить как работает
Для возврата к списку слотов нажимаем кнопку "Назад" на смартфоне.
И так далее добавляем нужные функции
После этого, кнопкой "Назад" смартфона выходим в основное меню
Для управления локомотивом выбираем CONTROLPANEL
В нижней строке видим добавленные локомотивы. Для выбора кликаем по нужному нам
Для запуска нажимаем сверху кнопку GO
В правом нижнем углу отображается выбранный локомотив. там же изменяется направление движения.
В дополнение небольшой "лайф хак" для iOS устройств, чтобы они быстрее подключались по WiFi к ESP
Суть - выставить IP для сети ESP статичным. Для этого давим на синий кружок с буковкой i возле имени сети
жмем на "Статический" и вводим IP 172.16.0.* (где звездочка любая цифра от 1 до 254 за исключением 111, например 172.16.0.112)
маска подсети 255.255.255.0
маршрутизатор 172.16.0.111
Все. Наслаждаемся коннектом за 2 секунды, вместо минуты.