RobotDyn Mega + ESP8266
Что делает разработчик в редкие часы досуга? Правильно, просматривает прайсы железячных магазинов. Выдалась свободная минутка и я решил полистать странички популярных интернет-магазинов — скукота, ничего интересного, всё это мы уже видели… и тут неожиданно мой взгляд падает на очередную Mega. Ба! да это не простая Мега, а совмещённая со всеми любимым ESP8266, да ещё заботливо снабжённая переключателями для совместной работы двух контроллеров — проводного (при помощи Ethernet Shield) со множеством GPIO и Wi-Fi для беспроводной связи.

Неплохо! Подумал я и вспомнил про AMS — туда же можно установить два сервера — проводной и беспроводной и связать их в одну систему — ESP8266 получит 54 цифровых и 16 аналоговых пинов, а Mega получит беспроводное управление по Wi-Fi и все плюшки ESP8266. Давненько мне не попадалась такая интересная плата.

— Здравствуйте! У вас есть плата Mega + ESP8266?
— Есть, но у нас только одна осталась.
— Почему только одна?
— Остальные разобрали.
— Зарезервируйте её, пожалуйста, для меня.

Пара слов о компании


Компания RobotDyn мне понравилась двумя вещами: первая — своими технологическими решениями. Тут не нужно далеко ходить, отличным примером является рассматриваемая плата Mega + ESP8266. Что-то ничего подобного я не встречал в наших (и не наших, но тут особо не искал) интернет-магазинах. И это не единственный пример, есть ещё вариант Uno + ESP8266 и на этом компания явно не собирается останавливаться, судя по всему нас ждёт ещё много интересных устройств.

И вторая — это её ценовая политика. Не буду здесь подробно останавливаться на этом вопросе, но скажу, что цены меня приятно удивили — девиз компании «Цены как на Aliexpress».

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

Сама плата


В общем-то обычная плата, мало чем отличающаяся от множества ей подобных, если бы не одна небольшая деталь, а именно, интегрированный в плату чип ESP8266EX. Это сразу переводит плату в разряд неординарных решений. Хочу обратить ваше внимание ещё на одну деталь — в плату интегрирован не стандартный модуль типа ESP-12, а именно чип и вся разводка сделана на самой плате, что прозрачно намекает на уровень разработчиков. Также хочу отметить, что на плате присутствует как напечатанная антенна, так и разъём для подключения внешней антенны, что во многих случаях может быть очень полезно.
RobotDyn Mega + ESP8266
На плате присутствуют штырьковые разъёмы для подключения к выводам ESP8266 и несколько переключателей о которых стоит сказать немного подробнее. Основная идея использования платы заключается в том, что при помощи переключателей можно по-разному сконфигурировать взаимодействие трёх её компонентов: чипа Atmega2560, чипа ESP8266EX и USB-TTL конвертера CH340G. Возможны как одиночные, так сложные соединения, которые позволяют организовать множество вариантов взаимодействия всех частей платы. Это открывает большие возможности по построению различных устройств, но подробнее об этом чуть позже.

ESP8266 pins

Ещё хочется отметить приличную нагрузочную способность платы. Судя по надписям на ней, она способна обеспечить ток нагрузки 1,6 А по 5-вольтовому каналу и 1 А по 3,3-вольтовому. Что очень неплохо, особенно в совокупности.

Больше о плате сказать нечего, переходим к установке софта и её тестированию.

Тестирование платы


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

Забегая немного вперёд скажу, что несмотря на мои опасения, всё работает стабильно и так как и ожидалось. Подключаем переключателями на плате Atmega2560 к USB — получаем Arduino Mega, подключаем ESP8266EX к USB — получаем ESP8266, переключаем в режим соединения Atmega2560 с ESP8266EX получаем связь между чипами по последовательному интерфейсу. Всё работает ровно так, как описано в документации и именно так, как это интуитивно ожидается.

Огромный плюс этого решения в том, что разработчики позаботились о согласовании логических уровней сигналов всех компонентов системы. Тот, кто вручную пытался сконфигурировать модуль ESP8266 и корректно подключить все подтягивающие резисторы, меня поймёт. Здесь таких проблем нет, вся ваша работа сводится к щёлканью переключателями на плате в соответствии с инструкцией от производителя.

Нагрузочное тестирование


Как оттестировать плату? Можно загрузить какой-нибудь стандартный скетч, но это будет тест ни о чём. Такой вариант может нормально работать, а в боевых условиях система будет давать сбои. Поэтому в качестве жёсткого нагрузочного теста была выбрана работа обоих частей под управлением соответствующих версий Arduino Mega Server. Для Mega — Arduino Mega Server for Mega и для ESP8266 — Arduino Mega Server for ESP8266 в варианте M1.

Дистрибутив M1 был выбран в связи с тем, что на плате установлен всего 1 МБ флеш-памяти для ESP8266. Это, на мой взгляд, чуть ли не единственная промашка разработчиков — в будущих ревизиях платы я бы порекомендовал им ставить чипы памяти на 4 МБ. Разница в цене невелика, а возможностей при использовании версии с 4 МБ гораздо больше. Но поскольку есть версия AMS для систем с 1 МБ, то я не обратил особого внимания на этот момент и продолжил тестирование.

Что сказать? Включаем плату, заливаем софт и получаем два независимых сервера. Один проводной через Ethernet Shield и один беспроводной через Wi-Fi. Красота!

Отдельно хочется отметить, что даже добавление Ethernet Shield с картридером к этой и без того навороченной системе не вызвало никаких конфликтов и сбоев — всё просто заработало так, как и должно работать. И в некоторых случаях даже лучше, чем обычно — это первая плата на которой прошивка по воздуху ESP8266 проходила успешно в 100% случаев, на всех прочих платах и модулях время от времени наблюдаются сбои при такой перепрошивке.

И вот крутятся два сервера, нагружают плату, выполняют свои обязанности и… всё. Всё просто работает, даже сказать нечего, но это наверное самая лучшая похвала для любой технической системы.

Самое интересное


То, что я здесь описал интересно с чисто академической точки зрения: интересная плата, интересное техническое решение, но нас интересует конечно же её практическое применение. В чём же её практическая и прикладная изюминка?

В том, что одним переключением на плате можно соединить две её части (Mega и ESP) в одно целое и тем самым, во-первых, получить новое качество системы и, во-вторых, скомпенсировать врождённые недостатки каждой из отдельных её частей.

Начнем с ESP8266. Главным недостатком этого, в целом отличного, решения является катастрофическая нехватка выводов GPIO. Как говориться, раз, два и обчёлся. О чём думали разработчики этого чипа сказать трудно, но до выпуска ESP32 у них было немного больше времени подумать и в новом чипе они этот недостаток исправили. Но мы имеем дело именно с 8266.

Данная плата позволяет сделать ход конём и задействовать всю мощь Mega, а это, кроме всего прочего, 54 цифровых и 16 аналоговых выводов в ESP8266. То есть наш рахитичный ESP вдруг получает просто богатырские возможности по работе с датчиками, актуаторами и прочей периферией. Получается, так сказать, малыш ESP на стероидах.

Это только один из возможных вариантов использования платы, лежащий на поверхности.

Теперь посмотрим на Mega. Ей совсем не помешает беспроводной интерфейс и возможность взаимодействовать с Wi-Fi устройствами, что и может ей обеспечить интеграция с ESP частью системы. И при этом остаётся возможность параллельной работы по проводному Ethernet интерфейсу.

И это тоже только один из возможных вариантов применения этой платы, лежащий на поверхности.

Ну и различные варианты мостов: Ethernet – Wi-Fi, nRF24 – Ethernet, nRF24 – Wi-Fi, nRF24 (1) – nRF24 (2), nooLite – Wi-Fi, nooLite – Ethernet, nooLite (1) – nooLite (2) и т. д. и т. п. до бесконечности. Можно маршрутизировать сигналы с десятков подсистем с которыми работает Arduino Mega Server между двумя частями платы и интерфейсами, подключёнными к ним.

Даже не знаю, что сказать. Очень круто.

Технические подробности


Теперь немного о технических подробностях. Вы видите таблицу в которой представлены все возможные режимы работы платы и показаны все возможные положения переключателей на ней. Рассмотрим кратко каждый режим.

Таблица режимов работы платы RobotDyn

Arduino Mega 2560


Самый простой режим работы платы, в таблице он обозначен как режим 3. Если установить переключатели 3 и 4 в положение ON, а остальные в положение OFF, то мы получим обычную Arduino Mega 2560. Ничего интересного, ради этого не стоило покупать эту плату, можно было купить обычную Мега.

ESP8266


Тоже не очень интересный режим работы. В таблице он разделён на два подрежима, обозначенные как 1 (загрузка скетча в ESP) и 2 (режим соединения ESP с USB). Это все функционал стандартной ESP8266 и ради такого использования тоже не стоило покупать эту плату, можно было обойтись обычным модулем ESP.

Все независимы


Этот вариант под номером 6 мы тоже не рассматриваем, поскольку в нём все связи между частями платы разорваны и нам он точно ни для чего не может пригодиться.

Связь между Mega и ESP


В этом режиме, обозначенным как 5, связь установлена между Mega и ESP по последовательному интерфейсу, а связи с конвертером USB-TTL нет. На ESP задействован стандартный Serial, а на Mega не менее стандартный Serial3. Связь устойчиво и беспроблемно работает на скорости 115200. Это довольно специфичный режим работы, когда ни у одного контроллера нет связи по USB. И поэтому он нам тоже не очень интересен.

Связь между Mega и ESP и одновременно Mega и USB


А вот это то, что называется козырной режим. Мы получаем всё и сразу — связь Mega по USB и возможность заливать скетчи в Мегу и контролировать её работу по тому же USB, возможность связи между Mega и ESP и возможность при этом загружать скетчи в ESP8266 и контролировать её работу в USB интерфейсе… Меги! То есть полный фарш, прямо не отходя от кассы.

Это и есть единственный правильный режим работы из всех перечисленных в таблице. Запомните его выигрышный номер который равен четырём. В конфигурации переключателей на плате он также выглядит красиво — 1, 2, 3, 4 находятся в положении ON, остальные — OFF.

Внимательный читатель спросит: как это мы можем загружать скетчи в ESP8266, если USB порт занят подключением к Mega-части системы? И это правильный вопрос, ответ — никак. А почему же тогда вы пишите, что мы в этой конфигурации можем загружать скетчи в ESP8266? Потому, что Arduino Mega Server имеет возможность загружать скетчи по воздуху прямо из Arduino IDE нажатием пары кнопок, так что всё правильно — мы имеем полный фарш, работает всё и сразу.

Как же быть тем, кто хочет использовать плату без Arduino Mega Server? Вариантов всего два: либо постоянно щёлкать переключателями, либо добавлять в свои разработки возможность загрузки скетчей по воздуху. Мне лично больше нравится второй вариант.

Настройки Arduino IDE


Настройки Arduino IDE для Меги не вызывают каких-либо вопросов, там всё стандартно, а для ESP8266 приведу скриншот меню с установками под конкретную реализацию ESP-части на плате RobotDyn. У себя вы должны установить те же параметры, за исключением номера порта — в вашей системе он скорее всего будет иметь другое значение.

Настройки ESP8266 в Arduino IDE

Arduino Mega Server для RobotDyn Mega + ESP8266


Для этой платы выпущена специальная двойная версия Arduino Mega Server, которая содержит сразу два сервера, оптимизированных специально под эту плату. Это внешняя сторона вопроса, оба эти сервера содержат стандартный функционал и могут использоваться для любых ваших проектов.

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

В первой сборке Arduino Mega Server для платы RobotDyn Mega + ESP8266 находится тестовый пример взаимодействия двух контроллеров по Serial интерфейсу. Это демонстрация возможностей технологии на основе которой вы можете разрабатывать ваши собственные решения.

Теперь немного подробнее о разработке протокола взаимодействия двух контроллеров по Serial интерфейсу вообще и на этой плате в частности.

Разработка протокола


Что нам стоит дом построить? Нужно разработать протокол взаимодействия между двумя частями системы по Serial интерфейсу? — разработаем, тут главное чётко и правильно поставить задачу. Для демонстрации тандемной работы системы выведем индикаторы работы «партнёра» в приборную (dash) панель каждого сервера.

Немного о терминологии. Для Меги «партнёром» является ESP8266, для ESP8266, соответственно, Мега.

Когда партнёр работает — индикатор будет светиться зеленоватым цветом, когда не работает — красным и серым, когда состояние неопределённо. Это очень удобно — при работе будет сразу видно в каком состоянии находится альтер эго вашей системы.

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

?параметр=значение

или

?команда

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

Конкретно в нашей системе команды будут выглядеть следующим образом:

?mega=1 — Мега посылает данные о своей работоспособности. Параметр «mega», значение «1».

?esp=1 — ESP8266 посылает данные о своей работоспособности. Параметр «esp», значение «1».

Итак, для примера рассмотрим реализацию протокола для Мега-части системы.

Стандартным образом инициализируем модуль AMS и хардверный Serial3 Меги на скорости 115200.

void robotdynInit() {
  Serial3.begin(115200);
  modulRobotdyn = MODUL_ENABLE;
  started("RobotDyn", true);
} 

Проверяем состояние порта Serial3 и в случае прихода данных от партнёра формируем строковую переменную serialReq, содержащую пришедшие данные или команды.

void checkSerial() {
  while (Serial3.available() > 0) {
    if (sFlag) {
      serialReq = "";
      sFlag = false;
    }
    char c = Serial3.read();
    if (c == 10) {
      sFlag = true;
      parseSerialStr();
    }
    else if (c == 13) {
      // skip
    }
    else {
      if (serialReq.length() < MAX_SERIAL_REQ) {
        serialReq += c;
      }
    } // if
  } // while (Serial3.available() > 0)
} // checkSerial()

Парсим команды и данные и в случае прихода информации о состоянии партнёра принимаем меры в виде изменения состояния переменной esp.

void parseSerialCmd() {
  String command, parameter;
  
  if (serialReq.indexOf(F("?")) >= 0) {
    int pBegin = serialReq.indexOf(F("?")) + 1;
    if (serialReq.indexOf(F("=")) >= 0) {
       int pParam = serialReq.indexOf(F("="));
       command   = serialReq.substring(pBegin, pParam);              
       parameter = serialReq.substring(pParam + 1);              
    } else {
        command = serialReq.substring(pBegin);              
        parameter = "";
      }

    if (command != F("esp")) {
      Serial.print(F("command/parameter: "));
      Serial.print(command);
      Serial.print(F("/"));
      Serial.println(parameter);
    }

    if (command == F("esp")) {
      if (parameter == F("1")) {
        esp = 1;
        espTimer = millis();
      } else {
          esp = 0;
        }
    }
  } // if (request.indexOf(F("?")) >= 0)
} // parseSerialCmd()

Вы можете с лёгкостью добавить обработку любых других команд, изменив и дополнив соответствующий участок кода.

    if (command == F("esp")) {
      if (parameter == F("1")) {
        esp = 1;
        espTimer = millis();
      } else {
          esp = 0;
        }

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

Осталось только рассмотреть стандартную функцию модуля AMS, отвечающую за его работу. Сначала проверяется состояние порта, затем каждые четыре секунды посылается команда партнёру о том, что Мега жива и работает и проверяется время, прошедшее с момента прихода последних данных от партнёра и если оно превышает 8 секунд, то делается вывод, что партнёр не работает.

void robotdynWork() {
  checkSerial();
  if (cycle4s) {
    Serial3.println(F("?mega=1"));
    if (millis() - espTimer > 8000) {
      esp = 0;
    }
  }
}

Вот и вся магия. Правда, ничего сложного?

Полный код модуля, отвечающего за межсистемные коммуникации между Mega 2560 и ESP8266
/*
  Modul RobotDyn
  part of Arduino Mega Server project
*/

#ifdef ROBOTDYN_FEATURE

bool sFlag = true;
unsigned long espTimer = millis();

// Serial request
#define MAX_SERIAL_REQ  32
String serialReq = "";

void robotdynInit() {
  Serial3.begin(115200);
  modulRobotdyn = MODUL_ENABLE;
  started("RobotDyn", true);
}

void printSerialStr() {
  Serial.print("[");
  Serial.print(serialReq);
  Serial.println("]");
}

void parseSerialCmd() {
  String command, parameter;
  
  if (serialReq.indexOf(F("?")) >= 0) {
    int pBegin = serialReq.indexOf(F("?")) + 1;
    if (serialReq.indexOf(F("=")) >= 0) {
       int pParam = serialReq.indexOf(F("="));
       command   = serialReq.substring(pBegin, pParam);              
       parameter = serialReq.substring(pParam + 1);              
    } else {
        command = serialReq.substring(pBegin);              
        parameter = "";
      }

   // if (command != F("esp")) {
      Serial.print(F("command/parameter: "));
      Serial.print(command);
      Serial.print(F("/"));
      Serial.println(parameter);
    //}

    if (command == F("esp")) {
      if (parameter == F("1")) {
        esp = 1;
        espTimer = millis();
      } else {
          esp = 0;
        }
    }
  } // if (request.indexOf(F("?")) >= 0)
} // parseSerialCmd()

void parseSerialStr() {
  if (serialReq[0] == '?') {
    parseSerialCmd();
  } else {
      printSerialStr();
    }
}

void checkSerial() {
  while (Serial3.available() > 0) {
    if (sFlag) {
      serialReq = "";
      sFlag = false;
    }
    char c = Serial3.read();
    if (c == 10) {
      sFlag = true;
      parseSerialStr();
    }
    else if (c == 13) {
      // skip
    }
    else {
      if (serialReq.length() < MAX_SERIAL_REQ) {
        serialReq += c;
      }
    } // if
  } // while (Serial3.available() > 0)
} // checkSerial()

void robotdynWork() {
  checkSerial();
  if (cycle4s) {
    Serial3.println(F("?mega=1"));
    if (millis() - espTimer > 8000) {
      esp = 0;
    }
  }
}

#endif // ROBOTDYN_FEATURE


Как выглядит вывод в Serial мониторе


В Serial мониторе Mega 2560 вывод, данные и команды c ESP-части системы выглядят совершенно также, как и его собственные. Для того, чтобы отличать вывод партнёра от вывода Меги, его данные заключаются в квадратные кавычки. В данном случае вы можете видеть перезагрузку ESP8266 и лог загрузки AMS в Serial мониторе Меги.

Вывод ESP8266 в сериал мониторе Mega 2560

И лог работы собственно обмена командами между двумя частями системы по Serial интерфейсу. Вы видите вывод ESP8266 с информацией о декодировании данных о состоянии Меги в Serial интерфейсе самой Меги, заключённый в квадратные кавычки.

Вывод ESP8266 о декодировании команд Mega

Красота в интерфейсе


Теперь немного о том, как всё это выглядит в интерфейсе Arduino Mega Server. Для начала приведу скриншоты обеих частей системы в работе.

Arduino Mega Server для RobotDyn Mega + ESP8266

Эллипсами обведены надписи, идентифицирующие контроллер и ту часть системы с которой вы работаете в данный момент. Кружками обведены индикаторы, которые показывают состояние партнёра. В данный момент всё в порядке, обе части системы нормально работают и нормально взаимодействуют между собой по внутреннему интерфейсу. Если что-то пойдёт не так, то вы узнаете об этом максимум через 8 секунд.

Что-то пошло не так

Что-то пошло не так. ESP8266 получила по воздуху апдейт прошивки и Мега-часть системы зафиксировала момент её перезагрузки. Через несколько секунд работа ESP-части системы возобновится и индикатор перестанет гореть красным цветом.

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

Подсказка в интерфейсе AMS

Идеи для проектов


Теперь немного о том, что можно из всего этого сделать, обладая толикой фантазии. Обычная плата, совершенно неброская на первый взгляд, позволяет делать множество совершенно необычных и интересных вещей. Особенно это касается сочетания с Arduino Mega Server.

Итак, первое, что приходит в голову:

Проброс данных с датчиков между контроллерами. В обе стороны и в неограниченном количестве. Это одна система, обладающая достоинствами обеих своих частей, причём возможности не просто складываются, а наблюдается то, что называется синергетическим эффектом.

Мост между интерфейсами. Arduino Mega Server может работать со множеством интерфейсов и эта система позволяет как угодно маршрутизировать данные и команды между любыми подключёнными проводными и беспроводными интерфейсами.

Работа в одной сети, когда Мега посредством Ethernet Shield, а ESP8266 через Wi-Fi взаимодействуют с проводными и беспроводными устройствами в одной сети.

Работа в разных сетях, когда Мега подключена к проводной Ethernet, а ESP8266 через Wi-Fi к другой сети и система маршрутизирует команды и данные из одной сети в другую.

Вывод одной части системы в интерфейсе другой. Через Ethernet стандартными веб-приёмами или через внутреннее Serial соединение.

Отладка. Одна часть системы может выступать отладчиком и тестером другой части системы по вашей программе.

Сторожевой таймер. Каждый контроллер может выступать неким подобием сторожевого таймера (Watchdog) по отношению к другому.

Логирование сбоев. Каждый контроллер может вести логи работы своего партнёра, составлять статистику и докладывать о тревожных ситуациях.

База данных для ESP8266. При помощи этой системы можно организовать что-то вроде SQL базы данных на Меге для ESP8266. ESP занимается своей работой, а Мега выступает в качестве системы хранения данных (до 32 ГБ).

Перепрошивка друг друга. Контроллеры могут динамически перепрошивать друг друга в соответствии с заложенной логикой или по приходу внешней управляющей команды.

Подключение модулей. Контроллеры могут подключать различную периферию у которой есть проблемы с подключением к какой-нибудь одной части системы.

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

Заключение


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

Скачать дистрибутив Arduino Mega Server для RobotDyn Mega + ESP8266 и лично убедиться в справедливости всего, что здесь написано, вы можете на официальном сайте проекта Arduino Mega Server в разделе загрузок.
Поделиться с друзьями
-->

Комментарии (45)


  1. qwertyhp
    21.03.2017 12:33

    Приходилось читать, что на Arduino-совместимых платах (если не ошибаюсь, тогда конкретно шла речь о «WeMos D1» — платах на чипе ESP8266) не вполне корректно (в сравнении с «классическими Arduino) работает ШИМ.
    Как обстоят дела с этим на ESP8266-платах от RobotDun?
    Использую их Arduino Nano — действительно здорово.
    А вот ценообразование у них раньше было привлекательнее…


    1. smart_alex
      21.03.2017 13:12

      С ШИМ-ом я не разбирался, но плата Mega + ESP8266 мне понравилась своей безглючностью (за всё время работы с ней я не выявил ни одной проблемы, это тем более удивительно если учесть сколько всего там наворочено) и тем, что это единственная плата из всех, с которыми я встречался, где прошивка ESP8266 по воздуху работает корректно в 100% случаев.


  1. geisha
    21.03.2017 13:09
    +2

    Даже не знаю, что сказать. Очень круто.

    Я тоже не знаю что сказать. В секции "Самое интересное" вы вообще не привели ничего интересного. Да, у ESP немного пинов, но штук пять можно использовать. Для того, чтобы добавить WiFi к датчику/гирлянде/лампочке — более чем достаточно. Фактически, вы напираете на тот факт, что делать нужно непременно хаб с десятью датчиками и веб-сервером. Тогда у меня для вас плохие новости: Raspberry Pi справляется с этим куда лучше при сравнительном энергопотреблении. По крайней мере, вам не нужно заботиться о том, что у вас два микроконтроллера и один из них, мягко говоря, может быть непредсказуем.


    1. molnij
      21.03.2017 13:18

      Малинка не может выступать заменой ардуинам. По крайней мере на линуксе. Если вам шедулер ядра никогда не портил тайминги при работе — вы просто счастливчик


      1. geisha
        21.03.2017 13:30
        +1

        Недавно статья была об RPi с ардуинкой на одной плате — специально для вас. Остальные довольствуются serial, i2c, интерфейсами для тачскрина (!) и камеры (!!) и просто морганием светодиодами. Благо найти i2c датчики — не очень большая проблема.


  1. renat85
    21.03.2017 13:15

    Повелся на рекламу, решил заказать. Цены и в правду почти как на Али. Только вот в наличии нет ничего, хотя на сайте красочно «В наличии». Один плюс есть, деньги быстро возвращают за оплаченный заказ.


    1. smart_alex
      21.03.2017 13:15

      Мне удалось взять последнюю (на тот момент) Mega + ESP8266 :)


      1. renat85
        21.03.2017 13:27

        В том то и дело, что заказывал простейшие Uno и Mega + пару сенсоров простейших. Так даже их нет в наличии.


        1. smart_alex
          21.03.2017 13:35

          Я не могу отвечать за компанию, но у меня складывается такое впечатление, что всё это проблемы роста. Но поживём — увидим.


          1. vconst
            21.03.2017 14:48

            Немного не в тему, а рассыпуха в этой компании продается? Кроме макетных плат — проводки пучками, резисторы, светодиоды и тп.


            1. nox
              22.03.2017 05:18

              продается, но не много LED\LCD экраны светодиоды, позже будут наборы и разные провода резисторы и т.д.


  1. Igor_34_rus
    21.03.2017 13:22
    +1

    Есть и бюджетные версии у них.
    Вообще я даже не любитель, а просто как конструктор купил Контроллер Arduino на чипе WiFi ESP8266, CH340G, c 32mb памяти этой компании, рублей за 150.

    Хорошо, что есть инструкция, плохо что в нет нет переадресации с pin-gpio, для меня это была настоящая проблема.

    В целом всё понятно, но очень полезен был бы простой пример с выводом секунд от запуска + вкл/выкл диода на плате через подключение по WI-FI к «сайту».


    1. smart_alex
      21.03.2017 13:22

      Согласен, что такой пример не помешал бы, но статья итак получилась очень объёмной. Можно написать продолжение с разбором примеров. :)


    1. Solexid
      21.03.2017 15:43

      Хорошо, что есть инструкция, плохо что в нет нет переадресации с pin-gpio, для меня это была настоящая проблема.

      А вы пробывали просто писать D1 D2 D3 итд? Я хорошо помню что это работает.


      1. Igor_34_rus
        21.03.2017 15:54

        Я такого объявления не видел, всегда указывают только цифры.

        int ledPin = 13;

        Можете пример рабочего скетча скинуть с таким объявлением?


        1. Solexid
          21.03.2017 16:01

          Ну вот например банальное мигание GPIO16(светодиод на есп), отмеченым в виде D0 на плате.

          void setup() {
            pinMode(D0, OUTPUT);
          }
          
          void loop() {
            digitalWrite(D0, HIGH);   
            delay(1000);           
            digitalWrite(D0, LOW);    
            delay(1000);              
          }
          


          1. Igor_34_rus
            21.03.2017 16:07

            У меня выдаёт

            In function 'void setup()':
            2:11: error: 'D0' was not declared in this scope
            In function 'void loop()':
            6:16: error: 'D0' was not declared in this scope


        1. qwertyhp
          21.03.2017 21:05

          Такое (с буквами) объявление относится именно к модулям на чипах ESP8266. Для обычных Arduino — достаточно чисел.


  1. edgi
    21.03.2017 13:25

    А возможно задействовать (если понадобиться) SOC в самом чипе esp8266 или он используется исключительно как wifi модуль и все?


    1. smart_alex
      21.03.2017 13:25

      Он используется в полном объёме как одиночная система или в тандеме с Mega. Что и как будет запрашивать и получать Мега определяется протоколом взаимодействия и кодом на стороне ESP8266, который будет обрабатывать запросы.


  1. nikkbelov
    21.03.2017 13:30

    А смогу ли я реализовать два типа мостов:
    Rs232 — WIFI — Rs232?
    Rs485 — WIFI — Rs485?


    1. smart_alex
      21.03.2017 13:30

      Не очень понял вопрос, но я не вижу никаких проблем с тем, чтобы получить данные по RS232 или RS485 и отправить их по Wi-Fi и наоборот, получить по Wi-Fi и отправить по RS232 или RS485.

      Только кода для этого конкретного случая в дистрибутиве нет — его нужно написать, что должно быть не очень сложно.


      1. nikkbelov
        21.03.2017 13:49

        У меня есть два устройства с интерфейсами Rs485 которые надо между собой соединить через WIFI. Вот и думаю, это можно применить?


        1. 029ah
          21.03.2017 14:44

          Для этого достаточно двух обычных ESP8266


  1. melchermax
    21.03.2017 13:44

    У меня вопрос: а можно ли без танцев с бубном установить прошивку 3д принтера на эту мегу, а потом наладить общение меги с компьютером по беспроводному интерфейсу?


    1. 029ah
      21.03.2017 14:54

      Есть прошивка ESP3D для ESP8266: https://github.com/luc-github/ESP3D
      Соединив serial-порты ESP и платы принтера можно получить и web-интерфейс для управления, и tcp-порт для подключения к принтеру из, например, pronterface.
      К своему принтеру я подключил wifi-модуль по такой схеме: http://www.geeetech.com/wiki/index.php/Melzi_V2.0#Extensible_Applications

      В случае с данной платой — похоже достаточно загрузить прошивку принтера в атмегу, esp3d в wifi-модуль и установить переключатели в нужное положение.


      1. melchermax
        21.03.2017 16:56

        Спасибо за наводку, буду копать. Неужели оно таки наступило, то самое прекрасное далёко без USB? :)


    1. nox
      22.03.2017 05:21

      http://3dtoday.ru/blogs/nox/mega-wifi-or-connect-the-printer-to-your-home-network/

      вот я так делал) работает


      1. melchermax
        22.03.2017 05:39

        Спасибо!


  1. Jmann
    21.03.2017 15:20

    Зашел, а тут Ардуино =). Интерфейс Arduino Mega Server понравился. Неплохо смотрится.


  1. poweruser
    21.03.2017 15:32

    А про ESP32 есть какие-то новости?


    1. smart_alex
      21.03.2017 15:32

      Там ситуация какая-то непонятная — вроде бы принимают заказы и даже что-то кому-то высылают, но мне еще никто не сказал, что лично получил заказ ESP32.


      1. vvzvlad
        21.03.2017 16:38

        Я получил. Но это не заказ был, а дев-кит от expressif.


      1. AndyKorg
        21.03.2017 16:42

        семплы рассылают esp32, вот жду на днях.


  1. reticular
    21.03.2017 16:23
    +1

    на али дешевле https://ru.aliexpress.com/store/product/Mega-WiFi-R3-ATmega2560-ESP8266-8Mb-memory-USB-TTL-CH340G-Compatible-for-Arduino-Mega-NodeMCU-WeMos/1950989_32740014666.html?spm=2114.12010612.0.0.UeNuqB


    1. vconst
      21.03.2017 17:01

      Естественно там дешевле. И каждый решает для себя сам — переплатить 200 рублей и получить плату сейчас, или сэкономить их и ждать месяц.


    1. lopatoid
      21.03.2017 17:08

      Всего на 10% дешевле (если учитывать платную доставку с Али, ведь бесплатной больше нет). По-моему они вообще альтруисты, в остальным магазинах минимум раза в 2 дороже, чем в Китае.


      1. smart_alex
        21.03.2017 19:04

        Они не альтруисты, а дальновидные бизнесмены. Такие цены и разработки стали возможны благодаря грамотному руководству, собственному производству в Китае и команде инженеров в России и Китае. И судя по всему это только начало.

        А на месте остальных российских Ардуино-магазинов я бы уже начинал потихоньку беспокоиться. В условиях открытого информационного общества невозможно конкурировать с ценами в 2 — 3 раза ниже ваших.

        Я уже не пойду покупать Pro Mini за 390р. и не пойду покупать её за 240р., если в RobotDyn её можно купить за 125р. Значит либо RobotDyn поднимет цены, либо их опустят все остальные. :) Это только вопрос времени.


        1. vconst
          21.03.2017 20:58

          Хорошую рекламу сделали магазину, у них уже и макетки закончились))


          1. smart_alex
            21.03.2017 21:03

            Они всё сделали сами своими ценами, я только немного ускорил это процесс.


            1. vconst
              21.03.2017 22:11

              Я не в претензии, сам у них сегодня заказ сделал, спасибо за наводку.


  1. RandomRufio
    22.03.2017 07:38
    +1

    У RobotDyn хорошая цена, сопоставимая с ценой их же марки на Али.
    Вот только над доставкой в регионы им бы поработать… а то 200-300р…
    Ради одной-двух Нано или Уно нет смысла, можно купить в два раза дороже на месте.
    И скорость удручающая. Крайний раз неделю вместо 3х дней через Боксберри.

    По качеству: очень даже хорошо.
    Промыто, нормальная шелкография, прилично разведено.
    Есть ряд «авторских» уникальных плат и шилдов.


    1. smart_alex
      22.03.2017 07:46

      У них чип ESP8266EX и вся ВЧ часть разведена прямо на плате, плюс Mega, конвертер, плюс Ethernet Shield с картридером — и всё работает как часы. Это говорит об уровне разработчиков и производства и потенциальных возможностях по выпуску плат любой сложности.


  1. GarryC
    22.03.2017 13:36
    +1

    Так, все таки, производство в КНР, а у нас разработка? А то цены действительно удивляют, ну не получится в РФ за такие деньги сделать, или я чего то не знаю.


    1. nox
      23.03.2017 04:39
      +1

      разработка и производство КНР