ESP32 и Ардуино +34

- такой же как Forbes, только лучше.

image

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

Работает ли это вообще? Что там с поддержкой этих модулей в Arduino IDE? Стоит ли платить больше или лучше ограничиться ставшим уже привычным ESP8266? Мы постараемся вместе ответить на все эти вопросы, а в конце статьи я дам ссылку на реальное воплощение работы ESP32 с Ардуино — дистрибутив бесплатной версии Arduino Mega Server для платформы ESP32.

Спецификации


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

Оставим это профессионалам (или тем, кто считает себя таковым) и сосредоточимся на практической стороне вопроса, понятной и доступной простому смертному.

Цена вопроса


Начнём с цены. На данный момент модуль ESP32 в китайских интернет-магазинах стоит 350 рублей и 500 в варианте платы с обвязкой и USB интерфейсом. Это против 100 и 160 рублей для модуля ESP8266, соответственно. Как видим, разница в три с лишним раза, хотя абсолютные значения невелики, каждый, при желании, может позволить себе потратить 350 — 500 рублей на микроконтроллер. Для сравнения, Arduino Mega 2560 в том же Китае стоит 600 рублей, а в России около 1000 (плюс ещё стоимость Ethernet Shield).

Осталось только выяснить, стоит ли платить в три раза больше, чем за ESP8266 и что мы за это получим. (Забегая вперёд скажу, что на мой взгляд, безусловно стоит.)

Поддержка в Arduino IDE


Для того, чтобы что-то сделать с модулем, нужно сначала иметь его поддержку в Arduino IDE. На данный момент поддержка ESP32 в Arduino IDE находится хоть и на начальном, но вполне приличном и работоспособном уровне. Те, кто боится встретить тут непреодолимые трудности, может не беспокоиться — основные функции работают нормально и вы, скорее всего, не заметите никакой разницы по сравнению с работой на других контроллерах.

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

Добавление поддержки ESP32 в Arduino IDE


Теперь немного практической информации об инсталляции поддержки ESP32 в Arduino IDE. Интернет полон инструкциями на эту тему, вы их также можете в изобилии найти в нём. Замечу только, что все инструкции делятся на «старые», там, где упоминается Python и «новые», где упоминается GIT. Вам, естественно, нужно руководствоваться новыми.

Из множества инструкций лучшей можно назвать (как это ни странно) официальную инструкцию от производителя модуля.

github.com/espressif/arduino-esp32

Которой я и рекомендую пользоваться. Единственное замечание: GIT использовать необязательно, можно просто скачать дистрибутив и распаковать его в нужную директорию.

Примечание. Все нижеизложенное касается инсталляции под Windows 7 64-bit, поскольку все эксперименты я производил именно на ней, в других операционных системах пути могут отличаться от указанных.

Файлы дистрибутива должны находиться в папке

C:\Users\User\Documents\Arduino\hardware\espressif\esp32

где C: — это имя вашего диска с Windows, а User — это имя пользователя в операционной системе (и то и другое у вас может отличаться от указанных).

Неочевидные моменты инсталляции ESP32


Многие пользователи жалуются, что у них ничего не работает и не появляется поддержка ESP32 в Arduino IDE. Тут дело вот в чём: поскольку драйвера ESP32 только разрабатываются, то несколько изменён порядок расположения системных директорий. В качестве папки для расположения скетчей в настройках Arduino IDE должна быть указана папка

C:\Users\User\Documents\Arduino

(с теми же поправками на диск и имя пользователя), а файлы дистрибутива должны располагаться внутри этой папки так, как рекомендует производитель. Если не будет учтён этот момент, то поддержка ESP32 в Arduino IDE не появится и ничего работать не будет.

Версии Arduino IDE


Часто приходится слышать, что поддержка ESP32 есть только в последних версиях Arduino IDE, это не так — ESP32 прекрасно работает в более ранних версиях, например, дистрибутив Arduino Mega Server для ESP32 разрабатывался в версии 1.6.5 r2.

Преимущества ESP32


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

Пины


Ахиллесовой пятой его предшественника, модуля ESP8266, было (и есть) экстремально малое количество выводов. После работы с такими контроллерами как Arduino Mega и Arduino Due с их десятками цифровых и аналоговых пинов, работа с ESP8266 вызывает недоумение: счёт GPIO идёт буквально на единицы и это сильно ограничивает применение этого модуля в реальных проектах.

image

ESP32 если не полностью, то в значительной степени лишён этого недостатка. Количество доступных выводов значительно увеличено, появилось также множество аналоговых входов. Полностью свободными и доступными для использования можно назвать 13 выводов

GPIO 2, 4, 12, 14, 13, 15, 16, 17, 25, 25, 27, 32, 33

В случае необходимости к ним можно добавить ограниченно функциональные и работающие только на вход

GPIO 34, 35, 36, 39

Если пожертвовать некоторыми возможностями и не использовать в конкретных проектах Serial, SPI или I2C, то к этому числу можно добавить ещё 8 пинов

GPIO 1, 3, 5, 18, 19, 21, 22, 23

Ну и возможно удастся использовать ещё 6 выводов, которые предназначены для работы с внутренней флеш-памятью (например, если подключить внешнюю SD карту)

GPIO 6, 7, 8, 9, 10, 11

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

Скорость работы


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

image

Загрузка страницы с объёмным кодом CSS и JavaScript и обилием графики занимает всего одну с небольшим секунды — быстрее, чем на любом другом протестированном контроллере, включая проводные контроллеры с W5100 и W5500 Ethernet интерфейсом.

Применительно к Arduino Mega Server это снимает все ограничения на использование графики и любых JavaScript библиотек как по размеру, так и их количеству.

Прочие достоинства


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

Примеры работы с кодом


Энергонезависимая память


Это то, что применительно к Arduino Mega мы привыкли называть EEPROM. В ESP32 этой памяти нет как таковой, но у этого модуля есть её аналог и соответствующая библиотека для работы с ней. Называется эта память «NVS» (Non-volatile storage).

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

Пример использования. Подключаем библиотеку:

#include <Preferences.h>

Создаём объект prefs

Preferences prefs;

Инициализируем хранилище с идентификатором, например, «nvs»:

prefs.begin("nvs", false);

false относится в выбору режима чтение/запись, в данном случае и чтение и запись. Сохраняем байт под именем «addr»:

prefs.putUChar("addr", 65);

Читаем сохранённый байт:

byte b = prefs.getUChar("addr", 0);

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

prefs.remove("nvs");

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

AnalogWrite()


Ещё одно нововведение, которое может поставить в тупик начинающего пользователя — в ESP32 отсутствует привычная функция AnalogWrite(). В первый момент это очень непривычно, но на самом деле эта функция всего лишь заменена своим более функциональным аналогом.

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

...\Documents\Arduino\hardware\espressif\esp32\cores\esp32

В данном случае нас интересует файл работы с ШИМ и светодиодами, который мы подключаем следующей инструкцией:

#include "esp32-hal-ledc.h"

Далее нам нужно установить номер канала (0), частоту ШИМ (например, 50 Гц) и разрешение (8 бит).

ledcSetup(0, 50, 8);

Номера каналов могут устанавливаться в диапазоне от 0 до 15, а разрешение от 1 до 16 бит. При выборе разрешения 8 бит, диапазон данных, управляющих ШИМ, будет находиться в интервале от 0 до 255.

Далее нам нужно привязать наш канал (0) к какому-либо выводу GPIO, в данном случае к выводу 22:

ledcAttachPin(22, 0);

И нужно не забыть обычным образом настроить 22-й пин на выход.

pinMode(22, OUTPUT);

Всё, теперь мы можем управлять, например, яркостью свечения светодиода, просто указывая номер канала и значение ШИМ (яркости) из диапазона от 0 до 255.

ledcWrite(0, 50);

Прочие примеры кода на ESP32


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

Стабильность работы


Arduino Mega Server для ESP8266 имеет подтверждённые аптаймы в несколько месяцев и демонстрирует абсолютно стабильную работу и у меня нет никаких причин думать, что у модуля ESP32 могут быть какие-то проблемы со стабильностью. По крайней мере за всё время создания дистрибутива AMS для ESP32 я не наблюдал ни единого сбоя или несанкционированной перезагрузки модуля. Всё работает очень чётко и предсказуемо.

Arduino Mega Server для ESP32


Это ещё один представитель экосистемы AMS, включающей в себя контроллеры и платы Arduino Mega, Due, 101, M0, AMS Home, ESP8266, Sonoff, ESP32, OLIMEX ESP32-EVB и т. д. Благодаря мощному процессору и быстрой сетевой работе модуля ESP32, интерфейс Arduino Mega Server содержит обилие графики и скриптов и это никак не сказывается на скорости его работы — страницы загружается почти мгновенно.

image

Всё работает стабильно и предсказуемо, никаких сбоев или неадекватного поведения системы или модуля не выявлено. Ниже приведён лог загрузки AMS, из которого можно узнать некоторые подробности о системе.

image

Температура модуля, измеряемая встроенным датчиком температуры колеблется от 50 градусов Цельсия при старте до 55 градусов в процессе работы. Во время работы ток потребления модуля составляет около 130 мА.

Перспективы


Не нужно быть особым экспертом, чтобы предсказать, что сейчас как грибы после дождя начнут появляться платы на ESP32 всевозможных форматов и с разнообразным функционалом. Вот одна из первых ласточек OLIMEX ESP32-EVB, очень интересная плата для которой в ближайшее время выйдет специализированный дистрибутив Arduino Mega Server.

image

Заключение


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

Скачать дистрибутив Arduino Mega Server для ESP32 вы можете на странице загрузки официального сайта, вскоре там появится и соответствующая документация, а пока вы можете воспользоваться краткой инструкцией из файла readme.txt, находящегося в дистрибутиве.


Комментарии (79):

  1. x893
    /#10139605 / +1

    Так и не понял — исходники открыты? И если открыты, то можно ссылку?

    • smart_alex
      /#10139607 / +1

      Ссылка на загрузку дистрибутива в последнем абзаце статьи.

  2. Iqorek
    /#10139613

    «Называется эта память «NVS» (Non-volatile storage).»
    Можно поподробней? В чем разница, какие особенности, например ограничение на количество циклов записи или максимальное время хранения без внешнего питания.

    • smart_alex
      /#10139725

      Я думаю, что какая-то технологическая разница есть (мне она неизвестна), но для нас, как пользователей, это всё та же «флеш-память» в отношении которой (особенно применительно к контроллерам) нужно соблюдать некоторые правила использования, например, не писать в одну и ту же ячейку (переменную) по нескольку раз в секунду. Безопасным считается изменение не чаще раза в час (по возможности), тогда проблем с ячейками не будет на протяжении многих лет.

    • sintech
      /#10139969

      NVS в esp32 это выделенный раздел на системной флешке куда можно читать писать данные используя высокоуровневые функции. При желании можно изменить размер этого раздела. Также есть API под названием wear levelling через который можно прямо на системной флешке создать FAT раздел и писать/читать оттуда стандартными функциями C. Этот апи учитывает износ ячеек flash памяти и оптимизирует циклы стирания/записи.

  3. r00tGER
    /#10139775 / +2

    … найдёте их в Интернет: ...

    в интернете

    • smart_alex
      /#10139821

      Спорный вопрос. По поводу того, склоняется ли слово «Интернет» и с какой буквы оно пишется сломано немало копий. Хотелось бы узнать пришли ли лингвисты к какму-нибудь окончательному решению.

      • Spunreal
        /#10139991

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

      • r00tGER
        /#10139993

        Ещё в 2000-м не был спорным — https://www.artlebedev.ru/kovodstvo/sections/55/

        • smart_alex
          /#10140045

          Похоже большинство присутствующих голосует за склонение и написание с маленькой буквы. У кого-нибудь есть альтернативное мнение на этот счёт?

          • iig
            /#10140279 / +4

            В интернетах!

          • artyums
            /#10140365

            Я привык говорить:
            об «интернете», как о различных сайтах, соцсетях, ютубах, прочей развлекаловке и не только
            и
            о «сети Интернет», как о сети с технической точки зрения (т.е. со всякой трансляцией адресов, доменами, серверами и т.д. и т.п.)

          • Lackermann
            /#10140465

            Во-первых, изначально «интернет» — это объединение нескольких локальных сетей — отсюда и «интер»+«нет». Хотя это понятие на практике уже не используется, но тем не менее.

            Во-вторых, по правилам русского языка уникальный и единственный в своём роде объект именуется с заглавной буквы — а сеть Интернет бесспорно уникальная и единственная в своём роде.

            В-третьих, на практике произошло объединение понятий — «сеть Интернет» и вид связи «интернет», что и вносит путаницу. Как в том анекдоте — «Интернет не работает! — Что весь не работает?»

            Поэтому — если имеется в виду именно глобальная сеть, то правильнее писать — «Интернет». Если имеется в виду вид связи — то «интернет». Граница размытая и условная, но есть.

            А вот решение Орфографической комиссии РАН — можно и так и так)

            • smart_alex
              /#10140467 / -2

              Таак… Мнения разделились. :) Тогда получается, что я правильно написал.

            • diaskzn
              /#10140897

              А если имеются в виду сайты, то писать «глобальная паутина»?
              Которая (WWW) является частью Интернета.

              • Lackermann
                /#10142655

                Да, действительно, есть и такое дополнительное значение. Вроде бы технически имеется в виду сеть Интернет, но уже настолько фразы типа «нашёл что-то в интернете» стали понятием относительным, что консистентным выглядит именно написание с маленькой буквы.

                То есть, дополняем нашу методичку:

                1. Исходя из терминологии компьютерных сетей, интернет — это 2 и более связанные локальные сети. Так что глобальная сеть Интернет — это самый большой интернет в мире. Это техническая основа. Далее уже устоявшиеся разговорные формы.
                2. Если акцент в обсуждении именно на сеть Интернет — явно или обсуждение технических подробностей — то с большой буквы. Так как Интернет — это уникальный объект.
                3. Если в разговорном языке имеется в виду вид связи — то с маленькой. «Передать что-то по интернету», «Я интернет не оплатил» и т. д. Это уже устоявшиеся формы.
                4. Если в разговорном языке имеются в виду «ресурсы в информационной среде» — «нашёл что-то в интернете» — то с маленькой. Однако в официальных текстах, письмах будет уместно написание с большой буквы — «сайт в сети Интернет».

                В сухом остатке — технически правильно писать именно «Интернет». Однако это понятие стало настолько общеупотребительным, что в разговорной речи уже стало относительным и пишется с маленькой буквы. Технически неправильно, но таковы законы языка)
                Можно и так и так — ошибки не будет.

                • smart_alex
                  /#10142751

                  Хорошо, тут конкретный вопрос: в статье напимано «найдёте их в Интернет», многие категорически считают, что это неправильно. Ваше мнение по этому конкретному случаю?

                  • V1RuS
                    /#10142957

                    Конечно неправильно, названия склоняются.
                    В магазине Ашан, в Ашане.
                    В сети Интернет, в Интернете.

                  • Lackermann
                    /#10143813

                    Как выше уже ответили, разумеется, и «Интернет» и «интернет» склоняются как обычно и одинаково.

  4. PKav
    /#10139799 / -2

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

    • Iqorek
      /#10139855

      Смотря для какого применения, для «умного дома» этот чип и его предок ESP8266 то, что надо.

      • PKav
        /#10139871

        Для некоммерческих самоделок — да. А для чего-то более серьёзного этот чип не подойдет, как не подходил ESP8266. У того так вообще прошивка в отдельной микросхеме хранилась.

        • Iqorek
          /#10139899

          У того так вообще прошивка в отдельной микросхеме хранилась.

          За 2 доллара? Пусть хоть на магнитных сердечниках хранит :)

        • sintech
          /#10139933

          Esp32 существует в нескольких версиях, те модули которые сейчас на рынке используют для хранения прошивки отдельную SPI флешку. Но уже появились esp32 чипы с встроенным 2mb flash.

        • LynXzp
          /#10142617

          Для коммерческих единичных продуктов на заказ — подходит.
          Для массового производства… мало кому, но может подойти.

    • sintech
      /#10139889 / +4

      В esp32 есть два механизма защиты: secure boot — вы можете подписать свою прошивку ключом который хранится внутри чипа, тогда esp32 не будут загружать неподписанный код. И flash encryption — позволяет зашифровать код алгоритмом aes а ключ сохранить также во внутреннем хранилище чипа (efuses) http://esp-idf.readthedocs.io/en/latest/security/flash-encryption.html

    • webself
      /#10140731

      У ESP32 есть средства для защиты от чтения — шифрование флеша. Описано в документации.

  5. sintech
    /#10139925

    Спасибо за статью! Но стоило бы отметить, что в настоящий момент основным фреймворком для разработки под esp32 является esp-idf, основанный на FreeRTOS. Именно под него выпущены все драйвера для переферийных модулей ESP32.
    Из плюсов нового esp еще стоит отметить возможность отладки через стандартный jtag и возможность расширения оперативной памяти до 4 мегабайт с помощью внешнего SPI PSRAM чипа производства espressif подключающегося параллельно SPI флешке с прошивкой. Правда модулей с этим чипом отдельно от более дорого комплекта разработки еще пока нет в свободной продаже, но как мы знаем, китайские станки работают быстро ;)

    • smart_alex
      /#10139959 / +1

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

  6. astudent
    /#10140131

    Чем этот модуль принципиально лучше какого-нибудь Raspberry / Orange Pi? Например, в сравнении с Orange Pi One? Цена с периферией сопоставима, если не выше, а на малинке / апельсине возможностей в разы больше, нет?

    • smart_alex
      /#10140153 / +2

      На мой взгляд это разные вещи, которые хороши каждая для своей области применения. Например, ESP32 имеет небольшие размеры, множество аналоговых пинов на борту, потребляет всего 130 мА, умеет засыпать и т.д и т. п.

  7. mm7
    /#10140183

    Из недостатков стоит отметить крайне высокое энергопотребление с вкюченным радио ВайФай и БлюТус БЛЕ(!). Можно «обжечся» об чип.
    Пока что в АПИ отсутствуют функции по неглубкому усыплению системы и БлюТуса с просыпанием по пррерыванию.
    Это ограничивет применение только системами с блоком питания. Для батареечных поделок пока не подходит.

    Почему-то не сказали про двухядерность. Вообще такая мощ за такие деньги впечатляет. Разобрабрались-бы с радио балуном и было бы классно.

    • smart_alex
      /#10140197

      Нас на уровне Ардуино и на данном этапе многоядерность не очень интересует. Мощь процессора такова, что индикатор загрузки в АМС всё время показывает загрузку «0», что бы мы не делали. Сейчас всё только начинается — скоро доделают драйвера и библиотеки и всё постепенно будет.

      • mrigi
        /#10140369

        Ну почти 2 секунды для загрузки страницы — это на самом деле крайне медленно по меркам веба. Хотя возможно проблема тут не в процессоре.

        • smart_alex
          /#10140385 / +1

          Дело в том, что веб обслуживается мощными серверами, а здесь речь идёт об устройсве размером с почтовую марку, которое потребляет 130 мА, поддерживает Wi-Fi соединение, делает кучу работы по обслуживанию сенсоров и актуаторов и при этом отдаёт страницу полную графики и скриптов за секунду с небольшим.

          • mm7
            /#10140413

            130мА это довольно много для того, чтобы обслуживать сенсоры и передавать данные.
            Хорошо если рядом есть розетка. А если это какая-нибудь метеостанция, которой батарейку меняют раз в несколько месяцев?
            Мне как-то не понятно почему другие BLE устройства (Nordic, TI, Mediatek и др...) расходуют 6-8мА для работы по BLE, а ESP в 20 раз больше?
            Интересно, это какой-то недочет на уровне железа или АПИ/прошивка? Т.е. есть-ли надежда, что исправят?

            • smart_alex
              /#10140441

              В экосистеме АМС Ethernet и Wi-Fi сервера занимаются межконтроллерным «станционным» взаимодействием и это предполагает наличие питания. Задачи типа батарейных долгоживущих сенсоров «метеостанций» выполняют «спящие» Pro Mini с nRF24 интерфейсом на короткие дистанции и Lora на длинные.

          • boojum
            /#10140415

            Причем тут «полную графики и скриптов»? Веб сервер ничего не знает про графику и клиентские скрипты.
            А секунда с небольшим — это _очень_ много, тем более для столь мощного контроллера, как ESP32.

            Вот здесь например, посмотрите веб-сервер на ESP8266 отдает страницы за миллисекунды, обслуживая одновременно сотни запросов.

            • smart_alex
              /#10140429 / +1

              Подождите секундочку, как это веб сервер ничего не знает про графику и клиентские скрипты? А кто их тогда передаёт?

              • boojum
                /#10140765

                Сервер отдает файлы. Он ничего не знает про их содержимое. Он не имеет никакого отношения к рендерингу графики и исполнению клиентских скриптов. Ему абсолютно без разницы, картинку он отдал по запросу клиента или текст или исполняемый файл.
                Единственное на что может отразиться содержимое, это на сжимаемость данных, если сервер на лету жмет отдаваемые файлы gzip'ом. Упомянутый мною сервер жмет. И при этом отдает файлы на 2-3 порядка быстрее вашего.
                Как вы это объясните?

                • smart_alex
                  /#10140771

                  Не, не, не, так дело не пойдёт. Существуют объективные показатели. Скриншот с замерами скорости в статье видите? Там видно, что файл размером 63 КБ передаётся около 350 мс (зелёная часть линии). На 3 порядка быстрее это 0,35 миллисекунды. Вы хотите сказать, что тот (уважаемый) сервер умудряется отдавать на ESP файлы в 63 КБ с флеша за 0,35 миллисекунды? Это невозможно физически и подобные заявления нужно сопровождать объективными замерами и скриншотами в студию.

                  • boojum
                    /#10140789

                    По приведенной мной ссылке есть и замеры и графики.

              • aram_pakhchanian
                /#10140783

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

                • smart_alex
                  /#10140795

                  Так в АМС и работает динамическая генерация страниц и называется эта технология AMS Matrix Engine. Сервер на лету собирает страницы из кусков на диске (аналог include), макросных вставок и динамической генерации кода прямо из скетча Ардуино. Это и позволяет как угодно манипулировать содержимым страниц и создавать сайты на контроллерах с различным содержимым, различным дизайном и различной топологией. В дистрибутиве таких сайтов аж 7 штук.

          • mrigi
            /#10140451

            Ну какая разница сколько оно делает работы, если вы говорите, что загрузка всегда 0%. Что-то тут не сходится. Так же есть 2-е ядро. Более того, если обработка запросов асинхронная, то нагрузка на процессор и должна быть околонулевая. Думается мне, что проблема в задержках/скорости чтения с флеша.

            • smart_alex
              /#10140455

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

  8. serafims
    /#10140565

    Эх, с такой мощью, интересно, хватит ли ему мощности кодировать/декодировать звук gsm 711 a/u кодек ом для sip телефонии? Можно было бы дешёвые sip -систему оповещения делать на коленке..

    • SolarW
      /#10140597 / +1

      Модуль интернет-радио появился недавно в прошивке wifi-iot.com для ESP32 — т.е. с половиной задачи вроде как справляется.
      Хотя почему с половиной — система оповещения штука односторонняя в отличии от интеркома.
      Так что похоже все шансы есть — осталось SIP-стек под ESP32 найти ;-)

    • arheops
      /#10140663

      А зачем? Используйте тот же twilio, вам каждое оповещение обойдется в пару центов и хоть с pica вызывайте.

  9. Daniyar94
    /#10140711

    Спасибо за статью. Сразу себе один заказал для своего кошачьего корм диспенсера :)

    • mm7
      /#10141875 / +1

      О, это интересно! Напишите пожалуйста про корм диспенсер. Более всего интересует механическая часть.

  10. madf
    /#10141817 / -1

    пока хотя бы nodeMCU не появится для это штуки — нафиг надо

  11. Mak2k2
    /#10141877

    Тоже повелся на рекламу и обжегся, в буквальном смысле.Греется жутко в закрытом корпусе использовать нереально, энергопотребление как у телефона на зарядке. Лучше бы я две ESP8266 взял за те же деньги.

  12. acid30M
    /#10142753

    Спасибо за статью. И все же причин платить в три раза больше не нашел. В той же esp8266 есть енерго-независимая память, а количество пинов — проблема которая решаеться подключением какого нить pcf8574 по I2C.

  13. hxcd
    /#10142757

    Сделал недавно очиститель воздуха из воздушного фильтра для газели и вентилятора. Теперь хочу управлять им по w-fi и расписание настроить. Как думаете стоит ли покупать ESP32 или обойтись 8266?

    • smart_alex
      /#10142765

      ESP8266 никто не снимал со счетов, если ТТХ этого модуля подходят для вашего конкретного проекта, то нет никаких причин не использовать его. ESP32 хорош для продвинутых проектов и как пособие для экспериментов и ознакомления с современными технологиями.

      • Sleuthhound
        /#10142795

        В ESP8266 сделан ряд грубых программных ошибок, в том числе архитектурных и исправлять их никто не будет, клепаются только заплатки на найденные ошибки. Поэтому ESP8266 никто их производителей не использует в серьезных проектах, наверно единственный массовый продукт на ESP8266 — это ITEAD Sonoff, больше я не видел, всякие китайские поделки с Али не в счет.

        Хочется верить, что с ESP32 такого не будет.

        • smart_alex
          /#10142809

          Модули Sonoff прекрасно работают. Как вы справедливо заметили, это массовый коммерческий продукт и он был бы невозможен, если бы модули «глючили». Если это работает у Sonoff, то почему это нельзя использовать в DIY? Мой личный опыт тестирования АМС на ESP8266 говорит о многомесячной беспроблемной работе, о том же говорят отзывы пользователей АМС и я не вижу никаких причин, чтобы не использовать ESP8266.

          • Sleuthhound
            /#10142901

            >>Если это работает у Sonoff, то почему это нельзя использовать в DIY

            Можно, почему же нельзя.
            Ниша ESP8266 — это как раз DIY, дальше этого он не ушел, я про это говорю.

        • Viknet
          /#10145927 / +1

          А можете рассказать про эти ошибки или показать где почитать?

          • Sleuthhound
            /#10151579

            Про эти ошибки очень много написано на форуме esp8266.ru, там есть пользователь pvvx, который собственно их и раскопал
            Многие недоработки конечно исправили, но исправили не путем переписывания неправильно организованной архитектуры, а путем написания заплаток.

  14. vyacheslavteplyakov
    /#10143833

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

    • smart_alex
      /#10143855

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

  15. smallghost
    /#10143843

    У ESP8266 есть ограничение режима DeepSleep до, примерно, 30 минут. Как дела обстоят у ESP32? Можно увеличить время сна до нескольких часов?

    • smart_alex
      /#10144147

      Я пока не разбирался с этим вопросом. Как я уже отмечал выше, в экосистеме АМС проводные и Wi-Fi контроллеры это что-то вроде информационных хабов, которые работают постоянно и требуют соответствующего питания. Все «спящие» и «батарейные» задачи выполняют Pro Mini с nRF24 или Lora интерфейсом и связываются они как раз с такими хабами, которые маршрутизируют данные и команды по распределённой сети до места назначения. Это очень гибкая архитектура, причём каждый хаб относительно недорогой, потребляет всего около 100 мА, имеет собственный веб-сервер и множество сайтов и может содержать до 32 ГБ информации, графики, скриптов, 3D моделей, визуализаций, баз данных и т. д. и т. п.

  16. Movimento5Litri
    /#10145553

    А вы как я погляжу весьма упорны в своём нежелании вести разработку на GitHub, уже 2 года держитесь однако.

    • smart_alex
      /#10145841

      Никто не «держится», GitHub это инструмент, а не религия и если мне будет удобнее использовать в работе GitHub — я буду его использовать.

      • Movimento5Litri
        /#10145917

        и если мне будет удобнее использовать в работе GitHub — я буду его использовать

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

        • smart_alex
          /#10145931

          Уважаемый Movimento5Litri, как вы справедливо заметили, я эти аргументы слышал большое количество раз. И всё это я прекрасно понимаю. Получается немного странная ситуация — у вас в профиле нет ни одного проекта и ни одной статьи и вы с упорством пытаетесь указать автору десятка дистрибутивов для десятка платформ как ему нужно работать. Может быть мы обсулим план вашей первой статьи? Или вы поделитесь задумками своего первого проекта?

          • Movimento5Litri
            /#10146111

            как ему нужно работать.

            Да работайте как угодно, хоть на Commodore код пишите, мне то что.

            И всё это я прекрасно понимаю

            То есть вы сознательно сильно ограничиваете количество пользователей и разработчиков своего проекта?
            Зачем?

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


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

            Просто ГитХаб это стандарт если вы хотите чтобы у проекта было больше 2 разработчиков.
            Так же ГитХаб значит большую видимость проекта для потенциальных пользователей и большее доверие к проекту с их стороны.

            • smart_alex
              /#10146137

              Сделать что-нибудь общественно-полезное кроме словоблудия не планируете?

              • Movimento5Litri
                /#10146253

                Планирую:
                Выложите проект на гитхаб.
                Это и было бы общественно-полезным

                • smart_alex
                  /#10146265

                  Проект выложен на Гитхабе два года назад энтузиастами — каждый желающий может развивать его или сделать свой форк и развивать как хочет.

                  • Movimento5Litri
                    /#10146379

                    Проект выложен на Гитхабе два года назад энтузиастами

                    Я в курсе.

                    каждый желающий может развивать его или сделать свой форк и развивать как хочет.

                    Итого несколько проектов повторяющих друг-друга.
                    В проекте X будет решён баг а в проекте Y будет добавлена фича, какой выбрать?
                    Энтропия — во.

                    • smart_alex
                      /#10146385

                      Меньше словоблудия, больше дела — выбирайте любой и переходите к обшественно-полезному делу, как планировали.

  17. simon273
    /#10145843

    Я попробовал ESP32 модуль. У меня возникла с ним проблема организации AP с WPA2 шифрованием. Не удалось корректно сконфигурировать. А поскольку все параметры зашиты глубоко в библиотеке, то для моих проектов ESP32 не годится.

  18. Lvenok
    /#10146831

    А вот чо-то типа такого https://mgbot.ru/catalog/kontrollery/kontroller-jotik-v10/ на ESP32 есть или только в виде бутерброда на Мегу?

    • smart_alex
      /#10146835

      Не совсем понятно про какой «бутерброд на Мегу» вы говорите, на ESP32 существует большой выбор плат (dev board) со всей обвязкой и встроенным USB – UART интефейсом, полностью готовых для работы и прототипирования. В Китае от 500 рублей, в России дороже.

      • Lvenok
        /#10147035

        Я имею ввиду совместимую по формфактору с Ардуино плату как на данном примере с ESP8266 (все в одном).