ESP8266: подключение, прошивка и работа с AT-командами

разделы: Интернет вещей, дата: 21 ноября 2018г.

Появившись четыре года назад, модули на базе чипа ESP8266 наделали много шума, прежде всего своей ценой. Производителем чипов была на тот момент никому неизвестная китайская фирма "Espressif Systems", зарегистрированная в Шанхае. Спустя некоторое время, многие фирмы представили на рынок аналогичные модули собственного изготовления, но по цене они были (и есть) в два - пять раз дороже модулей на ESP8266.

В 2016-ом году, фирма "Espressif Systems" представила на рынок ESP32, который существенно превосходил по своим возможностям ESP8266, и интерес к ESP8266 начал сходить на нет.

ESP32 это двухядерный микроконтроллер, или SOC если угодно, работающий на частоте 240MHz и снабженный радио-интерфейсами: WIFI стандарта 802.11 n (2.4 GHz), с пропускной способностью до 150 Mbps, и Bluetooth Low Energy стандарта 4.2, который был принят четыре года назад. ЦПУ имеет архитектуру Xtensa, есть аппаратная поддержка чисел с плавающей запятой, 7-уровневый конвейер, 520 кБ(!) ОЗУ, и многое другое (см. документацию: ESP32 Datasheet).

Если конкурентов ESP8266 изготавливают все кому не лень, то у ESP32 конкурентов с сопоставимой ценой фактически нет.

Модули на ESP8266 послужили основой для огромного количества "умных розеток" и им подобных устройств. Если говорить о ESP12 модулях, то здесь имеется около 50 Кбайт ОЗУ, 4 Мбайт флеш-памяти, частота ЦПУ 80МГц, встроенный WiFi контроллер. При этом цена за все это добро - около двух долларов. К сожалению, фирма производитель не предоставляет документацию на чип. Модули поставляются как готовые устройства с AT-интерфейсом и с возможностью программирования через Arduino IDE, используя для этого официальный SDK. Поэтому все изыскания относительно устройства аппаратной части ESP8266 являются результатом исследования энтузиастов.

В статье разбирается подключение, прошивка, и работа с AT командами ESP8266. Изначально статья была целиком посвящена только ESP8266, но впоследствии я решил добавить главу о перепрошивке модуля с ESP32. AT команды в ESP32 практически все те же, что и в ESP8266, так что, все сказанное относительно работы с AT-командам ESP8266 можно отнести и к ESP32.

Большая часть материала статьи посвящена режиму работы ESP8266, когда он работает в режиме WIFI модема с AT-интерфейсом. Разбираются типовые вопросы: как настроить, что-то скачать, переслать свои данные на сервер, и т.д. Предполагается, что уровень знаний читателя о сетях нулевой. Поэтому я постарался расписать всё максимально доходчиво. Для наглядности, показана работа с программами tcpdump и Wireshark для анализа трафика ESP8266. В качестве вспомогательного оборудования используется WiFi роутер с прошивкой OpenWRT, но вместо него можно использовать любой компьютер с Linux.

    Список используемой документации:
  1. ESP8266 Overview | Espressif Systems Страница продукта на сайте производителя.
  2. ESP8266EX Resources | Espressif Systems Страница с материалами на сайте производителя.
  3. ESP8266 SDK Getting Started Guide
  4. ESP8266 Technical Reference
  5. ESP-01/07/12 Series Modules User's Manual
  6. ESP8266 AT Instruction Set
  7. ESP8266 AT Command Examples
  8. ESP32 AT Instruction Set and Examples
  9. Netcat Cheat Sheet
  10. Статья: "ESP8266 - подключение и обновление прошивки – esp8266"
  11. Статья на хабре: "Reverse Engineering ESP8266 — часть 1"
  12. Статья на хабре: "Reverse Engineering ESP8266 — часть 2"
  13. Книга Дэвида Тейнсли "Linux и UNIX: программирование в shell. Руководство разработчика", глава 29 "Сценарии cgi".

Содержание:

    I. Описание ESP8266
  1. Распиновка и подключение модулей ESP12
  2. Формат загрузочного лога, режимы работы SPI флеш-памяти
  3. Баг в Linux драйвере USB-UART преобразователя CP2102
    II. Прошивка ESP8266
  1. Использование esptool
  2. Первый способ прошивки
  3. Второй способ прошивки
  4. Третий способ прошивки
  5. Прошивка модуля ESP12E AT-интерпретатором версии 1.7.0 (август 2018г)
    III. Использование связки ESP8266 + OpenWRT
  1. Связка OpenWRT + ESP8266, использование сниффера tcpdump и анализатора траффика Wireshark для иследования трафика ESP8266
  2. Получение даты и времени через сеть, используя NTP
    IV. Связь ESP8266 с Web сервером на OpenWRT
  1. Связь ESP8266 с Web сервером на OpenWrt: настройка OpenWRT
  2. АТ-команды для установки TCP/UDP соединения
  3. Получение web-страницы от сервера на OpenWRT
  4. Получение лога погоды от сервера на OpenWRT
    V. Связь ESP8266 с Web сервером на OpenWRT посредством CGI скриптов
  1. Управление OpenWRT через ESP8266 посредством CGI интерфейса
  2. Отправка данных от ESP8266 на web-сервер OpenWRT через GET запрос
  3. Отправка данных от ESP8266 на web-сервер OpenWRT через POST запрос
    VI. Прозрачный режим соединения (UART-WiFi passthrough)
  1. Управление Linux/OpenWRT используя режим "UART-WiFi passthrough"
    VI. Плата NodeMCU с модулем ESP-WROOM-32
  1. Прошивка ESP32 в интерпретатор AT-команд

Читать дальше