Охотник на воров
- 1 year ago
- 0
- 0
ESP8266 — микроконтроллер китайского производителя с интерфейсом Wi-Fi . Помимо Wi-Fi, микроконтроллер отличается отсутствием флеш-памяти в SoC , программы пользователя исполняются из внешней флеш-памяти с интерфейсом SPI .
Микроконтроллер привлёк внимание в 2014 году в связи с выходом первых продуктов на его базе по необыкновенно низкой цене.
Весной 2016 года началось производство ESP8285, совмещающей ESP8266 и флеш-память на 1 МБайт. Осенью 2015 года Espressif Systems представила развитие линейки — микросхему ESP32 и модули на её основе .
Микроконтроллер не имеет на кристалле пользовательской энергонезависимой памяти.
Исполнение программы
ведётся из внешней SPI ПЗУ путём динамической подгрузки требуемых участков программы в кеш инструкций. Подгрузка идёт аппаратно, прозрачно для программиста. Поддерживается до 16 МБ внешней памяти программ. Возможен Standard, Dual или Quad SPI интерфейс.
Производитель не предоставляет документации на внутреннюю периферию микроконтроллера. Вместо этого он даёт набор библиотек, через API которых программист получает доступ к периферии. Поскольку эти библиотеки интенсивно используют ОЗУ контроллера, то производитель в документах не указывает точное количество ОЗУ на кристалле, а только приблизительную оценку того количества ОЗУ, что останется пользователю после сборки всех библиотек — порядка 50 кБ. По результатам исследования библиотеки ESP8266, предположительно он содержит 32 кБ кэша инструкций и 80 кБ ОЗУ данных.
Электрические параметры, цоколёвки, схемы включения можно найти в документах «0A-ESP8266EX__Datasheet» и «0B-ESP8266__System_Description» из Espressif SDK .
Источник исполняемой программы ESP8266 задаётся состоянием портов GPIO0, GPIO2 и GPIO15 в момент окончания сигнала Reset (то есть подачи питания). Наиболее интересны 2 режима:
Весной 2016 года Espressif Systems запустила массовое производство микросхемы ESP8285. Теперь в одной микросхеме находится как SoC ESP8266, так и 1 МБайт флеш-памяти . Документацию на микросхему можно найти в документе «0A-ESP8285__Datasheet».
Осенью 2015 года Espressif Systems представила развитие линейки — микросхему ESP32. В начале 2016 года инженерные образцы нового кристалла стали доступны партнерам компании для тестирования, в сентябре 2016 года ESP32 стал доступен как полноценный продукт .
Программные средства разработки состоят из:
Espressif Systems свободно распространяет свой комплект разработчика. В этот комплект входит компилятор GCC, библиотеки Espressif и загрузочная утилита XTCOM. Библиотеки поставляются в виде скомпилированных библиотек, без исходных текстов. Espressif поддерживает две версии SDK: одна на основе RTOS , другая на основе обратных вызовов (callback) .
Помимо официальной SDK существует ряд проектов альтернативных SDK . Эти SDK используют библиотеки Espressif Systems или предлагают собственный эквивалент библиотек Espressif Systems, полученный методами реверсинжиниринга.
Чтобы упростить использование микроконтроллера в типовых проектах возможно использование готовых бинарных файлов, пригодных к прямой заливке в ПЗУ модулей (так называемых прошивок ). Готовые прошивки можно разделить на несколько групп согласно концепции их использования:
Источник исполняемой программы ESP8266 задаётся состоянием портов GPIO0, GPIO2 и GPIO15 в момент окончания сигнала Reset (то есть подачи питания). Наиболее интересны два режима: исполнение кода из UART (GPIO0 = 0, GPIO2 = 1, GPIO15 = 0) и из внешней ПЗУ (GPIO0 = 1, GPIO2 = 1, GPIO15 = 0). Режим исполнения кода из UART используется для перепрошивки флеш-памяти, а второй режим штатный рабочий.
Для управления процессом обновления прошивки имеется множество утилит:
Внешняя SPI flash должна иметь определённый заголовок для корректного исполнения кода. Структура заголовка указана в документации к утилите XTCOM. На русском есть . Загрузочные утилиты обычно умеют добавлять его к прошивке.
Предусмотрена возможность обновить прошивку работающего устройства через Wi-Fi. Для этого разделяют флеш-память программ на несколько частей. Одна отводится менеджеру прошивок, две другие под пользовательскую программу. Когда хотят обновить прошивку, новый образ загружают в свободную часть флеш-памяти. После тщательной проверки целостности вновь загруженного образа менеджер прошивок переключает флажок, после чего участок памяти со старой прошивкой освобождается, а исполнение кода идёт из нового участка. Соответственно в следующий раз обновление будет загружаться в свободный участок памяти. Подробности в документе «99C-ESP8266__OTA_Upgrade» из Espressif SDK .
Типовое применение ESP8266 как аппаратной основы Internet of Things чаще всего подразумевает установку в домах или офисах. При этом сетевое подключение осуществляется к домашней/офисной локальной сети с выходом в интернет через роутер . Пользователь устройства может контролировать его с помощью планшета или компьютера через свою локальную сеть либо удалённо, через Интернет.
ESP8266 может работать как в роли точки доступа , так и оконечной станции. При нормальной работе в локальной сети ESP8266 конфигурируется в режим оконечной станции. Для этого устройству необходимо задать SSID Wi-Fi сети и, в закрытых сетях, пароль доступа. Для первоначального конфигурирования этих параметров удобен режим точки доступа. В режиме точки доступа устройство видно при стандартном поиске сетей в планшетах и компьютерах. Остаётся подключиться к устройству, открыть HTML-страничку конфигурирования и задать сетевые параметры, после чего устройство штатно подключится к локальной сети в режиме оконечной станции.
В случае исключительно местного использования возможно всегда оставлять устройство в режиме точки доступа, что снижает необходимые усилия пользователя по его настройке.
После подключения к Wi-Fi сети устройство должно получить IP-параметры локальной сети. Эти параметры можно задать вручную вместе с параметрами Wi-Fi либо активизировать какие-либо сервисы автоматического конфигурирования IP-параметров (например, DHCP ).
После настройки IP параметров обращение к серверу устройства в локальной сети обычно осуществляется по его IP-адресу, сетевому имени (в случае, если имена поддержаны какой-либо технологией, например, NBNS ) или сервису (в случае, если поддержан автоматический поиск сервисов , например, через протокол SSDP ).
Зачастую доступ к устройству требуется из Интернета. Например пользователь с мобильного телефона удалённо проверяет состояние своего « умного дома », обращаясь напрямую к устройству. В этом случае устройство работает в режиме сервера, к которому обращается внешний клиент.
Как правило, устройство на основе ESP8266 находится в локальной сети офиса или дома. Выход в Интернет обеспечивает роутер , подключённый с одной стороны к локальной сети, а с другой - к сети провайдера интернета. Провайдер назначает роутеру свой статический или динамический IP-адрес и роутер осуществляет трансляцию адресов локальной сети в сеть провайдера. По умолчанию правила этой трансляции обеспечивают свободную видимость интернет-адресов из локальной сети, но не позволяют обратиться к локальным адресам со стороны Интернета. Есть несколько способов обойти это ограничение.
Большинство современных роутеров позволяет задать дополнительные правила трансляции сетевых адресов между локальной и глобальной сетями. Как правило, для этого используются технологии или DMZ . Обе технологии позволяют обратиться к серверу в локальной сети из глобальной сети, зная лишь IP-адрес, выданный роутеру провайдером. В случае статического IP-адреса роутера это зачастую может быть удовлетворительным решением для ограниченного круга пользователей системы. Однако такой подход не всегда удобен: необходимо вручную конфигурировать роутер и выяснять IP-адрес роутера, который может регулярно меняться. Относительно легко решить проблему неизвестного IP-адреса можно с помощью механизма DDNS .
Чтобы обратиться к серверу устройства, конечный пользователь должен знать IP-адрес, по которому находится устройство. Однако получить у провайдера Интернета для устройства статический IP-адрес не всегда возможно, да и пользоваться таким адресом неудобно. Для решения этой проблемы были созданы специальные интернет-сервисы под общим наименованием динамический DNS . Эти сервисы работают как специальные серверы с фиксированными именами в интернете. Разработчик заводит на таком сервисе свой аккаунт с уникальным именем. Параметры этого аккаунта он прописывает в устройстве. Устройство в режиме клиента периодически обращается к серверу сервиса, сообщая ему имя своего аккаунта и свой текущий IP-адрес. Конечный пользователь в интернете обращается к этому же сервису и получает от него текущие IP-параметры устройства. В таком случае устройство в сети видно с доменным именем третьего уровня, например esp8266.ddns.org.
Основная проблема DDNS-сервисов - это гарантии существования конкретного сервиса. Как правило, гарантируется только коммерческий сервис, когда за его использование взимается плата.
Чтобы облегчить проблему доступности устройства в Интернете и сделать инсталляцию устройства лёгкой для пользователя, был разработан ряд решений. Механизм этих решений базируется на существовании в Интернете специального сервера, к которому может подключиться как IoT-устройство, так и планшет/компьютер пользователя. При этом устройство работает в режиме клиента, никаких специальных настроек роутера или особых навыков от инсталлятора и пользователя устройства не требуется. Обмен данными с устройством осуществляется при посредничестве этого специального сервиса, параметры которого в устройство должен заложить разработчик. Распространение использования таких сервисов сдерживается необходимостью длительно поддерживать свой сервис в Интернете или пользоваться чужими сервисами с непонятными перспективами длительного существования бесплатных возможностей или регулярной оплатой коммерческих вариантов.
Основное применение ESP8266 находит в управлении разнообразными бытовыми приборами через беспроводные сети. Концепцию такого управления часто называют « Internet of Things » (IoT, «интернет вещей»). Верхний уровень IoT представлен разнообразными приложениями под популярные платформы (Android, iOS, Windows, …). Эти приложения позволяют разработчику прибора адаптировать приложение под управление его прибором и передать пользователю готовое решение. Существует несколько популярных реализаций концепции IoT в плане обмена данными по сети:
Интересные проекты ПО верхнего уровня с решениями на базе ESP8266:
Первыми и наиболее популярными встраиваемыми модулями на базе ESP8266 были изделия китайской компании AI-Thinker . Как правило, эти модули поступают в продажу с прошивками, поддерживающими AT-команды . Однако у компании есть своя прошивка под IoT приложение, некоторые модули могут поставляться с ней. К сожалению, компания поддерживает только китайский язык, что затрудняет использование ее IoT прошивок и Андроид-приложений для любительской автоматизации.
Первоначально модули поставлялись с Flash памятью объёмом 512 кБ. Позже официальные прошивки подросли и перестали помещаться в полмегабайта. Поэтому сегодня большинство модулей поставляется с Flash памятью объёмом 4 МБ.
Название | Доступные порты | Шаг выводов, мм | Разъем | Индикация | Антенна | Экран | Размеры, мм | Примечания |
---|---|---|---|---|---|---|---|---|
ESP-01 | 6 | 2,54 | 2×4 DIL | Да | PCB trace | Нет | 14.3 × 24.8 | GPIO15 (RTS) закорочен на общий, нельзя конфигурировать на выход или Flow control. |
ESP-02 | 6 | 2,54 | 2×4 castellated | Нет | U-FL connector | Нет | 14.2 × 14.2 | |
ESP-03 | 10 | 2,0 | 2×7 castellated | Нет | Ceramic | Нет | 17.3 × 12.1 | |
ESP-04 | 10 | 2,0 | 2×4 castellated | Нет | None | Нет | 14.7 × 12.1 | |
ESP-05 | 3 | 2,54 | 1×5 SIL | Нет | U-FL connector | Нет | 14.2 × 14.2 | |
ESP-06 | 11 | - | 4×3 dice | Нет | None | Да | 14.2 × 14.7 | Not FCC approved |
ESP-07 | 14 | 2,0 | 2×8 castellated | Да | Ceramic + U-FL connector | Да | 20.0 × 16.0 | Not FCC approved |
ESP-08 | 10 | 2,0 | 2×7 castellated | Нет | None | Да | 17.0 × 16.0 | Not FCC approved |
ESP-09 | 10 | - | 4×3 dice | Нет | None | Нет | 10.0 × 10.0 | |
ESP-10 | 3 | 2,54 | 1×5 castellated | Нет | None | Нет | 14.2 × 10.0 | |
ESP-11 | 6 | 1,27 | 1×8 castellated | Нет | Ceramic | Нет | 17.3 × 12.1 | |
ESP-12 | 14 | 2,0 | 2×8 castellated | Да | PCB trace | Да | 24.0 × 16.0 | FCC and CE approved |
ESP-12-E | 20 | 2,0 | 2×8 castellated | Да | PCB trace | Да | 24.0 × 16.0 | |
ESP-12-F | 20 | 2,0 | 2×8 castellated | Да | PCB trace | Да | 24.0 × 16.0 | FCC and CE approved. Improved antenna performance. 4MB Flash |
ESP-13 | 16 | 0,8 | 2×9 castellated | Нет | PCB trace | Да | W18.0 x L20.0 | Marked as ″FCC″. Shielded module is placed sideways, as compared to the ESP-12 modules. |
В таблице SIL и DIL обозначает смонтированные штыревые линейки. Castellated — металлизация по краю платы под поверхностный монтаж модуля. Dice — контактные площадки под модулем, монтаж в стиле BGA корпусов.
Название | Доступные порты | Шаг выводов, мм | Разъем | Индикация | Антенна | Экран | Размеры, мм | Примечания |
---|---|---|---|---|---|---|---|---|
Olimex MOD-WIFI-ESP8266 | 2 | 2,54 | UEXT module | Да | PCB trace | Нет | Неизвестно | |
Olimex MOD-WIFI-ESP8266-DEV | 20 | 2,54 | 2×11 DIL + castellated | Да | PCB trace | Нет | Неизвестно | |
Espressif WROOM-02 | 18 | 2,54 | 2×9 DIL | Нет | PCB trace | Да | 18 × 29 | FCC approved |
ESP8266 Thing WRL-13231 | 12 | 2,54 | 2×10 DIL | Да | PCB trace + socket | Нет | 58 x 26 | USB, Li-ion battery charger |
ESP-ADC | 18 | 2,54 | 2x9 DIL | Нет | U.FL socket | Нет | 22.9 x 14.9 | ESP8266EX |
Практически синхронно с ESP8266 появилась целая линейка аналогичных решений других производителей. Все они используют двухкристальную архитектуру с памятью программ в SPI Flash.
Энтузиасты сделали на интерфейсе I2S микросхемы ESP8266 с модулятором для третьего телевизионного канала . Это не потребовало никакой дополнительной аппаратной обвязки кроме передающей антенны. При этом полностью сохранена Wi-Fi функциональность.