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
    19.06.2017 14:53
    +1

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


    1. smart_alex
      19.06.2017 14:55
      +1

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


  1. Iqorek
    19.06.2017 14:56

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


    1. smart_alex
      19.06.2017 15:27

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


    1. sintech
      19.06.2017 16:48

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


  1. r00tGER
    19.06.2017 15:45
    +2

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

    в интернете


    1. smart_alex
      19.06.2017 15:57

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


      1. Spunreal
        19.06.2017 16:57

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


      1. r00tGER
        19.06.2017 16:58

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


        1. smart_alex
          19.06.2017 17:14

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


          1. iig
            19.06.2017 18:45
            +4

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


          1. artyums
            19.06.2017 19:54

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


          1. Lackermann
            19.06.2017 21:20

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

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

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

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

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


            1. smart_alex
              19.06.2017 21:23
              -2

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


            1. diaskzn
              20.06.2017 09:15

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


              1. Lackermann
                21.06.2017 00:58

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

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

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

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


                1. smart_alex
                  21.06.2017 05:56

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


                  1. V1RuS
                    21.06.2017 09:42

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


                  1. Lackermann
                    21.06.2017 16:58

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


  1. PKav
    19.06.2017 15:51
    -2

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


    1. Iqorek
      19.06.2017 16:10

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


      1. PKav
        19.06.2017 16:12

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


        1. Iqorek
          19.06.2017 16:25

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

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


        1. sintech
          19.06.2017 16:37

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


        1. LynXzp
          21.06.2017 00:09

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


    1. sintech
      19.06.2017 16:21
      +4

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


    1. webself
      20.06.2017 04:26

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


  1. sintech
    19.06.2017 16:34

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


    1. smart_alex
      19.06.2017 16:45
      +1

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


  1. astudent
    19.06.2017 17:42

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


    1. smart_alex
      19.06.2017 17:50
      +2

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


  1. mm7
    19.06.2017 17:59

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

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


    1. smart_alex
      19.06.2017 18:07

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


      1. mrigi
        19.06.2017 19:58

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


        1. smart_alex
          19.06.2017 20:25
          +1

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


          1. mm7
            19.06.2017 20:50

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


            1. smart_alex
              19.06.2017 21:03

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


          1. boojum
            19.06.2017 20:50

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

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


            1. smart_alex
              19.06.2017 20:56
              +1

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


              1. boojum
                20.06.2017 06:02

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


                1. smart_alex
                  20.06.2017 06:32

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


                  1. boojum
                    20.06.2017 06:52

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


              1. aram_pakhchanian
                20.06.2017 06:46

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


                1. smart_alex
                  20.06.2017 06:56

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


          1. mrigi
            19.06.2017 21:08

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


            1. smart_alex
              19.06.2017 21:13

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


  1. serafims
    19.06.2017 22:33

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


    1. SolarW
      19.06.2017 22:58
      +1

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


    1. arheops
      20.06.2017 00:23

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


  1. Daniyar94
    20.06.2017 03:04

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


    1. mm7
      20.06.2017 16:27
      +1

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


  1. madf
    20.06.2017 15:58
    -1

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


  1. Mak2k2
    20.06.2017 16:28

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


  1. acid30M
    21.06.2017 05:57

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


  1. hxcd
    21.06.2017 05:58

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


    1. smart_alex
      21.06.2017 06:03

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


      1. Sleuthhound
        21.06.2017 06:55

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

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


        1. smart_alex
          21.06.2017 07:14

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


          1. Sleuthhound
            21.06.2017 08:51

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

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


        1. Viknet
          22.06.2017 15:25
          +1

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


          1. Sleuthhound
            25.06.2017 19:28

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


  1. vyacheslavteplyakov
    21.06.2017 17:04

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


    1. smart_alex
      21.06.2017 17:14

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


  1. smallghost
    21.06.2017 17:09

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


    1. smart_alex
      21.06.2017 19:03

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


  1. Movimento5Litri
    22.06.2017 13:26

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


    1. smart_alex
      22.06.2017 14:58

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


      1. Movimento5Litri
        22.06.2017 15:20

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

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


        1. smart_alex
          22.06.2017 15:28

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


          1. Movimento5Litri
            22.06.2017 17:09

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

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

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

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

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


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

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


            1. smart_alex
              22.06.2017 17:24

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


              1. Movimento5Litri
                22.06.2017 18:14

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


                1. smart_alex
                  22.06.2017 18:22

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


                  1. Movimento5Litri
                    22.06.2017 19:17

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

                    Я в курсе.

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

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


                    1. smart_alex
                      22.06.2017 19:21

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


  1. simon273
    22.06.2017 14:59

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


  1. Lvenok
    23.06.2017 05:42

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


    1. smart_alex
      23.06.2017 05:52

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


      1. Lvenok
        23.06.2017 10:01

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