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

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

Внимание! Статья была отредактированна в сентябре 2023 года. Были исправлены битые ссылки, логи и опции утилиты esptool.py были приведены к современному виду. Было сделано множество уточнений и дополнений, добавлена информация про прошивку модулей ESP8266/ESP32 Микропитоном(MicroPython), а также по установке прошивки "умной розетки" Sonoff Tasmota. Старую версию статьи можно найти по следующему адресу: "перейти по ссылке".

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

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

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

В 2020 году фирма "Espressif Systems" анонсировала чипы "ESP32-S2" - одноядерную версию ESP32, но с большим количеством GPIO, а также чип "ESP32-C3" на новой архитектуре RISC-V. В 2021 был представлен двухядерный чип ESP32-S3 с BLE 5 и векторными инструкциями для ускорения AI-функций. И не так давно, "Espressif Systems" презентовала чипы ESP32-C6 на RISC-V архитектуре с радиомодулями WiFi 6.0, BLE 5.0 и 802.15.4 субгигагерцевого (sub-1GHz) диапазона - ZigBee и Thread и ESP32-C2 с поддержкой нового протокола Matter.

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

В статье разбирается подключение, прошивка, и работа с 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. Xtensa Instruction Set Architecture (ISA)
  11. Статья: "ESP8266 - подключение и обновление прошивки – esp8266"
  12. Статья на хабре: "Reverse Engineering ESP8266 — часть 1"
  13. Статья на хабре: "Reverse Engineering ESP8266 — часть 2"
  14. ESP8266 быстрый старт
  15. ESP8266 продолжение. Модуль ESP-12
  16. Статья на хабре: "Новые ревизии модулей на базе ESP8266 не умеют писать в SPI Flash"
  17. Книга Дэвида Тейнсли "Linux и UNIX: программирование в shell. Руководство разработчика", глава 29 "Сценарии cgi".

Содержание:

    I. Описание ESP8266
  1. Распиновка и подключение модулей ESP12
  2. Формат загрузочного лога, режимы работы SPI флеш-памяти
  3. Баг в Linux драйвере USB-UART преобразователя CP2102
    II. Прошивка ESP8266
  1. Использование esptool
  2. Первый способ прошивки
  3. Второй способ прошивки
  4. Третий способ прошивки
  5. Установка прошивки AT-интерпретатора 1.7.5 (SDK 3.0)
  6. Установка прошивки MicroPython
  7. Установка прошивки Sonoff Tasmota через веб-интерфейс
    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"
    VII. Плата NodeMCU с модулем ESP-WROOM-32
  1. Прошивка ESP32 в интерпретатор AT-команд
  2. Установка на ESP32 прошивки MicroPython
    VIII. Работа с прошивкой MicroPython
  1. ESP8266 + Micropython + VSCode: основы работы

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