В этой заметке я расскажу, о контроллере Arduino Mega, совмещенным с контроллером ESP8266. Для тестирования функционала платы была использована контрафактная копия этой платы, заказанная в Китае, поэтому фотографии и протестированный функционал относятся к копии, нежели к оригиналу. Оригинал платы можно найти на сайте компании RobotDyn.
История покупки данной платы следующая. Для управления макетом железной дороги по протоколу DCC++ мне понадобилась плата семейства Arduino. Сначала я выбрал микроконтроллер Arduino UNO и управлял поездами через виртуальный COM-порт компьютера (USB порт), подключенного к микроконтроллеру. Но в начале 2017 года я нашел статью "Roco z21 на базе Arduino" в которой указывалось, что макетом можно управлять по WiFi, если применить плату Arduino Mega, совмещенную с контроллером ESP8266.
Итак, плата выполнена в размерах оригинального контроллера Arduino Mega. Контроллер ATmega2560 смещен в правую сторону, а в левой стороне расположен контроллер ESP8266. Над WiFi контроллером находится USB разъем, который заменен с обычного Type-B на Micro-B, а взаимодействие этого разъема с компонентами платы осуществляется через USB-TTL конвертер CH340G и DIP переключатель из 8 контактов. Фотография платы представлена ниже.
Переключатель режимов USB порта может находится в режимах, описанных в таблице ниже
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | RXD/TXD | |
USB изолирован | --- | --- | --- | --- | --- | --- | --- | --- | 0 |
USB <-> ATmega2560 |
--- | --- | ON | ON | --- | --- | --- | --- | 0 |
USB <-> ESP8266 (прошивка) |
--- | --- | --- | --- | ON | ON | ON | --- | 0 |
USB <-> ESP8266 (работа) |
--- | --- | --- | --- | ON | ON | --- | --- | 0 |
ATmega2560 <-> ESP8266 |
ON | ON | --- | --- | --- | --- | --- | --- | 0 |
USB <-> ATmega2560 <-> ESP8266 |
ON | ON | ON | ON | --- | --- | --- | --- | 3 |
Для проверки работоспособности платы необходимо протестировать работу каждого из контроллеров, а также взаимодействие контроллеров между собой. Для проверки потребуется:
- Сама плата Mega-WiFi.
- Компьютер с операционной системой Windows.
- Кабель USB-microUSB.
- Драйвер USB-TTL конвертера CH340.
- Программная среда Arduino IDE (старые сборки можно скачать из архива версий).
- Тестовые прошивки Arduino Mega and ESP8266.
- Канцелярская скрепка.
Сначала надо установить драйвер платы, а если быть точнее, то драйвер контроллера CH340. Для этого нужно подключить плату к компьютеру с помощью USB кабеля, открыть Диспетчер устройств, найти подключенное неизвестное USB-устройство и обновить ему драйвер, указав в качестве источника драйверов папку со скачанными и распакованными драйверами CH340.
После установки драйверов устройство отобразиться в диспетчере устройств как USB-SERIAL CH340 (COMx). Надо найти это устройство и выписать номер виртуального COM-порта, к которому подключена плата, например COM4.
После того, как плата стала видна, её можно отключить от компьютера, но надо запомнить, к какому USB порту было произведено подключение и включать плату только в этот порт - если включить в другой, то номер COM-порта может измениться.
Теперь можно заняться установкой и настройкой программной среды Arduino IDE. Скачав нужную версию программы, например 1.8.3, и установив на свой компьютер, необходимо её настроить. Для этого надо выполнить следующее:
- Создать папку для своих проектов, например C:\ArduinoProjects.
- Распаковать в папку проектов архив Arduino Mega and ESP8266.zip.
- Запустить программу Arduino IDE.
- Открыть Настройки через Файл --> Настройки.
- В поле Размещение папки скетчей указать C:\ArduinoProjects.
- В поле Дополнительные ссылки для менеджера плат вписать
http://arduino.esp8266.com/stable/package_esp8266com_index.json. - Сохранить настройки, нажав OK.
- Открыть Менеджер плат через Инструменты --> Плата --> Менеджер плат.
- Найти в списке esp8266 by ESP8266 Comunity и установить пакет нужной версии, например 2.3.0.
- Закрыть программу Arduino IDE.
Чтобы проверить работоспособность контроллера ATmega2560 необходимо проделать следующие операции:
- С помощью скрепки переключить ползунки DIP-переключателя в положения, указанные в таблице ниже.
1 2 3 4 5 6 7 8 RXD/TXD USB
<->
ATmega2560--- --- ON ON --- --- --- --- 0 - Подключить плату к компьютеру с помощью USB-кабеля.
- Запустить программу Arduino IDE.
- Выбрать плату Arduino/Genuino Mega or Mega 2560 через
Инструменты --> Плата --> Arduino/Genuino Mega or Mega 2560. - Выбрать COM-порт, который выписывали из Диспетчера устройств при установке драйвера платы, через
Инструменты --> Порт --> COM4. - Открыть тестовую программу TEST_MEGA через Файл --> Папка со скетчами --> TEST_MEGA.
- Загрузить прошивку в контроллер через Скетч --> Загрузка.
- После успешной загрузки прошивки в контроллер открыть Монитор порта через Инструменты --> Монитор порта.
- В Мониторе порта нужно выбрать скорость передачи в 115200 бод, после чего в окне монитора должно отобразиться меню тестовой программы.
- В поле ввода команд Монитора порта нужно ввести английскую букву "a" и нажать Отправить, в ответ на команду контроллер перейдет в режим мигания встроенным светодиодом в течении 20 секунд.
- В Монитор порта нужно отправить команду "b" - контроллер выдаст размер свободной памяти SRAM = 7873 и полный размер памяти EEPROM = 4096.
- В Монитор порта нужно отправить команду "c" - контроллер протестирует состояние выходов и выдаст таблицу с результатами. В таблице все выводы кроме 0, 1 и 13 должны быть в состоянии OK. На выводах 0, 1, 13 выявлены неисправности, так как 0 и 1 выводы заняты последовательным портом (UART), а на 13 выводе находится встроенный светодиод.
- Все проверки проведены - контроллер нужно отключить от USB порта компьютера.
Чтобы проверить работоспособность контроллера ESP8266 необходимо проделать следующие операции:
- С помощью скрепки переключить ползунки DIP-переключателя в положения, указанные в таблице ниже.
1 2 3 4 5 6 7 8 RXD/TXD USB
<->
ESP8266 (прошивка)--- --- --- --- ON ON ON --- 0 - Подключить плату к компьютеру с помощью USB-кабеля.
- В программе Arduino IDE выбрать плату WeMos D1 R2 & mini через Инструменты --> Плата --> WeMos D1 R2 & mini.
Примечание. Рекомендованный в документации тип платы Olimex MOD-WIFI-ESP8266(-DEV) не подходит.
- Проверить настройки контроллера в соответствии с рисунком.
- Открыть тестовую программу TEST_ESP8266 через Файл --> Папка со скетчами --> TEST_ESP8266.
- В строки 7 и 8 программы вместо многоточий нужно вставить имя домашней WiFi сети и её пароль.
- Загрузить прошивку в контроллер через Скетч --> Загрузка.
- После успешной загрузки отключить плату от компьютера.
- С помощью скрепки переключить ползунки DIP-переключателя в положения, указанные в таблице ниже.
1 2 3 4 5 6 7 8 RXD/TXD USB <->
ESP8266 (работа)--- --- --- --- ON ON --- --- 0 - Подключить плату к компьютеру с помощью USB-кабеля.
- С помощью Монитора порта посмотреть что выдает контроллер.
Значения Chip Real Size (реальный размер памяти) и Chip Flash Size (размер памяти, выставленный при прошивке) должны быть одинаковыми.
Необходимо выписать IP адрес, который получил контроллер от WiFi коммутатора - этот адрес понадобится в следующем тесте. - Проверка проведена - контроллер нужно отключить от USB порта компьютера.
Чтобы проверить взаимодействие контроллеров ATmega2560 и ESP8266 необходимо проделать следующие операции:
- С помощью скрепки переключить ползунки DIP-переключателя в положения, указанные в таблице ниже.
1 2 3 4 5 6 7 8 RXD/TXD USB
<->
ATmega2560
<->
ESP8266ON ON ON ON --- --- --- --- 3 - Подключить плату к компьютеру с помощью USB-кабеля.
- В программе Arduino IDE выбрать плату Arduino/Genuino Mega or Mega 2560 через
Инструменты --> Плата --> Arduino/Genuino Mega or Mega 2560. - Открыть тестовую программу TEST_MEGA-ESP через Файл --> Папка со скетчами --> TEST_MEGA-ESP.
- Загрузить прошивку в контроллер через Скетч --> Загрузка.
- После успешной загрузки прошивки в контроллер открыть Монитор порта через Инструменты --> Монитор порта.
- Контроллер Arduino Mega должен считать данные с порта обмена данных с контроллером ESP8266 и выдать их в окно Монитора порта.
- Открыть в браузере страницу по IP адресу, выданному в Мониторе порта.
- В отрытой странице поочередно нажимать на кнопки ON и OFF и следить за состоянием светодиода, встроенного на плату. Светодиод должен включаться командой ON и выключаться командой OFF.
- Проверка проведена - контроллер нужно отключить от USB порта компьютера.
Плату можно найти в интернет магазине RobotDyn, eBay или AliExpress по ключевым словам "ATmega2560 ESP8266 CH340G". Цена на плату колеблется от 10$ до 25$ в зависимости от качества исполнения и жадности продавца. Я покупал плату на AliExpress за 11$.
Еще один обзор платы можно прочитать по этой ссылке.