ESP8266: микросхема Wi-Fi Печать
Добавил(а) microsin   

ESP8266 это высокоинтегрированный чип (так называемая "система на кристалле", System-on-Chip, сокращенно SoC) разработанная с учетом возросших потребностей в сетевых коммуникациях. Чип предоставляет полное, универсальное и недорогое решение для организации сетевого узла Wi-Fi, которое может взять на себя обработку всех сетевых функций по обмену данными во встраиваемых приложениях. У ESP8266 есть мощные встроенные возможности для обработки и хранения данных и порты ввода-вывода (GPIO), которые позволяют объединить его с различными датчиками и другими специальными устройствами, нуждающимися в сетевом обмене данными. Для ESP8266 требуется немного внешних компонентов для подключения, в результате блок Wi-Fi может занимать совсем мало места на печатной плате.

Основные параметры ESP8266:

Параметр Значение
Нормальное напряжение питания 3V
Потребляемый ток 10mkA .. 170mA
Макс. размер внешней памяти FLASH 16 мегабайт
Марка ядра процессора Tensilica L106 32 bit
Количество портов с функцией GPIO (они мультиплексированы с другими функциями микросхемы) 17
АЦП, разрешение 10 бит 1 канал
Поддержка Wi-Fi стандартов 802.11 b/g/n/d/e/i/k/r
Макс. количество одновременных соединений TCP 5

В ESP8266 встроены следующие узлы и возможности:

• 802.11 b/g/n, выходная мощность +19.5dBm, в идеальных условиях дальность связи до 100 метров
• WIFI 2.4 GHz, с поддержкой протоколов безопасности WPA / WPA2, WiFi Direct (P2P), soft-AP
• STBC, 1x1 MIMO, 2x1 MIMO
• Экономичный 32-разрядный CPU (архитектура RISC), который может использоваться под прикладные приложения (т. е. для него можно писать программы), RISC-процессор, встроенная память и интерфейсы подключения внешней памяти
• SDIO 1.1/2.0, SPI, UART
• STBC, 1x1 MIMO, 2x1 MIMO
• Агрегация фреймов A-MPDU и A-MSDU с защитным интервалом 0.4 мс
• Время пробуждения, соединения и готовности к передаче пакета < 2 мс
• Потребление энергии в режиме приостановки (standby) < 1.0 mW (DTIM3)
• Рабочий диапазон температур -40 .. +125 oC.
• 32-выводный корпус QFN
• Интегрированный радиочастотный свич, симметрирующее устройство, малошумящий усилитель, усилитель мощности 24dBm, DCXO (digitally controlled crystal oscillator, цифровой управляемый кварцевый генератор), блок управления энергопотреблением (power management unit, PMU), полная поддержка антенны
• Поддержка службы управления полосой пропускания разных видов трафика (Quality of Service, QoS)
• Интерфейс I2S для приложений высококачественной передачи звука
• Встроенные линейные регуляторы с малым падением напряжения на регулирующем элементе для всех потребителей энергии
• Встроенная система PLL (генерация частоты с использованием фазовой автоподстройки, ФАПЧ), проприетарная архитектура высококачественной генерации тактового сигнала (патентованный алгоритм подавления шума для применения в приложениях SoC)
• Встроенные подсистемы WEP (Wired Equivalent Privacy, протокол шифрования данных в беспроводных сетях), TKIP (Temporal Key Integrity Protocol, протокол поддержки системы безопасности беспроводных сетей, который должен был заменить WEP), AES (Advanced Encryption Standard, протокол шифрования данных), и WAPI (WLAN Authentication and Privacy Infrastructure, еще один протокол для безопасной передачи данных поверх WiFi), поддержка стека TCP/IP
• Поддержка APSD (Automatic Power Save Delivery, или Asynchronous Power Save Delivery, автоматическая система экономии энергопотребления), оптимизированная для приложений передачи голоса через сетевое соединение (VoIP)
• Поддержка интерфейса с Bluetooth
• Самокалибрующаяся радиосистема, гарантирующая оптимальную производительность для всех рабочих условий эксплуатации
• Отсутствие настроек на заводе
• Отсутствие внешних радиочастотных компонентов

Номинальное напряжение питания 3V, допустимые диапазоны питания 1.7V..3.6V, минимальный ток потребления (в состоянии выключено) < 10 μA, максимальный ток потребления 215 mA, пиковый 240 mA (источник напряжения питания должен обеспечивать ток до 300 mA).

ESP8266EX pinout

Жирным шрифтом обозначены сигналы, выведенные на 8-контактный разъем китайского модуля на ESP8266EX.

Имя Тип GPIO Функция Интерфейсы
1 VDDA P   Аналоговое питание 3.0V..3.6V  
2 LNA IO   Подключение антенны, выходное волновое сопротивление 50Ω.  
3 VDD3P3 P   Питание усилителя 3.0V..3.6V  
4 VDD3P3 P    
5 VDD_RTC P   Питание для часов? NC (1.1V)  
6 TOUT I   Вывод АЦП  
7 CHIP_EN I   Разрешение работы кристалла. 1: включение, нормальная работа чипа. 0: отключение от источника питания, минимальное энергопотребление.  
8 XPD_DCDC IO GPIO16 Пробуждение из глубокого сна, внешний сброс. 0: сброс, 1: нормальный рабочий режим.  
9 MTMS IO GPIO14 HSPICLK, приемник IR I2C SCL
10 MTDI IO GPIO12 HSPIQ, светодиод отображения состояния обмена. (Light)PWM red LED control. JTAG
11 VDDPST P   Цифровое питание/питание портов ввода-вывода (1.8V..3.3V).  
12 MTCK IO GPIO13 HSPID, кнопка RST. (Light)PWM blue LED control. JTAG
13 MTDO IO GPIO15 HSPICS, (Light)PWM green LED control; (Plug) relay control, H/L TTL JTAG, 3-битный SDIO
14 GPIO2 IO GPIO2 UART Tx при программировании flash (?); должна быть в лог. 1 при загрузке, по умолчанию устанавливается в лог. 1. 3-битный SDIO, UART1 для вывода системной информации (TX), I2C SDA
15 GPIO0 IO GPIO0 SPICS2, светодиод состояния (WiFi) 3-битный SDIO
16 GPIO4 IO GPIO4    
17 VDDPST P   Цифровое питание/питание портов ввода-вывода (1.8V..3.3V).  
18 SDIO_DATA2 IO   SD_D2 (последовательно с резистором 200Ω); SPIHD; HSPIHD  
19 SDIO_DATA3 IO   SD_D3 (последовательно с резистором 200Ω); SPIWP; HSPIWP  
20 SDIO_CMD IO   SD_CMD (последовательно с резистором 200Ω); SPICS0  
21 SDIO_CLK IO   SD_CLK (последовательно с резистором 200Ω); SPICLK  
22 SDIO_DATA0 IO   SD_D0 (последовательно с резистором 200Ω); SPIQ  
23 SDIO_DATA1 IO   SD_D1 (последовательно с резистором 200Ω); SPID  
24 GPIO5 P GPIO5    
25 U0RXD IO GPIO3 UART Rx во время программирования flash (?) UART0 для пользователя
26 U0TXD IO GPIO1 SPICS1 (?) UART0 для пользователя, не позволять подавать 0 при загрузке
27 XTAL_OUT IO   Выход встроенного генератора, подключение к кварцевому резонатору, может использоваться для предоставления входа тактовой частоты BT  
28 XTAL_IN IO   Вход встроенного генератора, подключение к кварцевому резонатору  
29 VDDD P   Аналоговое питание 3.0V..3.6V  
30 VDDA P   Аналоговое питание 3.0V..3.6V  
31 RES12K I   Подключение на GND внешнего резистора 12кΩ.  
32 EXT_RSTB I   Внешний сигнал сброса (активный уровень лог. 0)  

Вывод 33 GND подключен к массивной контактной площадке на донышке корпуса QFN32.

Покупать можно в интернет-магазинах Aliexpress, Ebay и Dealextreme. ИМХО, лучше всего покупать модули на Aliexpress: самые низкие цены, больше всего предложений и самая удобная система поиска и выбора. Запустите браузер chrome, и в адресной строке введите "магическую" строку:

ESP8266 site:aliexpress.com

Этот запрос выдаст результаты поиска Google, но можно воспользоваться системой поиска и на aliexpress.com. Среди предложений выберите подходящее по цене и стоимости доставки (лучше всего выбирать бесплатную доставку, Free shipping). Чаще всего в продаже попадаются модули с объемом памяти на борту 512 килобайт, однако постарайтесь по описанию предложения выбрать модули с EEPROM размером 1 мегабайт или более - это поможет Вам в будущем использовать продвинутые прошивки для модуля ESP8266.

Ниже приведена информация по самым популярным модулям. Указаны цены на aliexpress.com по состоянию на 20 сентября 2015 года.

ESP-01. Самый недорогой модуль ($1.84). Объем памяти обычно 512 килобайт. Удобен этот модуль тем, что у него малые размеры, низкая цена, и шаг выводов его коннектора 2.54 мм. Недостаток в малом объеме памяти и в том, что мало количество портов GPIO.

ESP-12E. Усовершенствованная версия модуля ESP-12. Цена $2.06. Объем памяти обычно 2 (?) мегабайта. Большое количество GPIO - 11 выводов, есть 1 вход АЦП, можно подключить JTAG. Вся электронная начинка модуля, за исключением индикационного светодиода и антенны, помещена в экран. Шаг выводов 2 мм, поэтому для установки модуля в плату макетирования нужен специальный переходник, либо придется припаивать к плате провода с подключенным коннектором.

[Китайский модуль ESP-01 на микросхеме ESP8266]

ESP8266 module PCB top ESP8266 module PCB bottom
Вид сверху, со стороны деталей Вид снизу, со стороны коннектора

ESP8266 module SCH

Для модуля ESP8266 существует множество готовых решений (прошивок), позволяющих писать для модуля программы на языках высокого уровня BASIC, Java и Python. Но в этой статье будут даны инструкции несколько другого плана - как проще адаптировать ESP8266 для использования вместе с Вашим любимым микроконтроллером (например AVR или любым другим).

Если коротко охарактеризовать модуль ESP8266, то это устройство, позволяющее через сигналы низковольтного UART (RXD и TXT как у обычного модема, но с уровнями 0..3.3V) обеспечить беспроводную связь с локальной сетью и даже Интернет - с помощью соединение Wi-Fi. Почти все микроконтроллеры могут довольно просто организовать обмен данными через свой встроенный UART (существует большое количество примеров кода для этой цели), так что подключить микроконтроллер к модулю ESP8266 не составит особого труда.

[Питание и запуск]

Модуль ESP8266 для своего питания требует напряжения 3V (можно и 3.3V, предельный максимум 3.6V). Получить такой источник питания можно с помощью 2 пальчиковых батареек, или от маломощного стабилизатора, собранного на линейном регуляторе наподобие LM7833 [2]. На вход стабилизатора можно подать напряжение от настенного адаптера постоянного тока напряжением 5..9V, либо можно даже воспользоваться портом USB компьютера. Ниже на рисунках показаны варианты подачи питания на модуль ESP8266.

ESP8266 power via alkaline batteries ESP8266 power via LM1117 ESP8266 power via NPN transistor

Для того, чтобы модуль запустился и заработал (т. е. загрузилась программа, записанная во внешнюю память), нужно соединить сигнал CHIP_EN с VDD (+3V, лог. 1), и подать питание (+3V относительно GND).

[Подключение модуля ESP8266 к FT232RL]

ESP8266 connection FT232RL

[Подключение модуля ESP8266 к микроконтроллеру]

Я подключил свой модуль ESP8266 с помощью набора перемычек к макетной плате AVR-USB-MEGA16, и прямо с неё взял питание +5V, чтобы подать на вход стабилизатора 3.3V. Выход стабилизатора подключил к шине питания модуля ESP8266.

ESP8266 connection AVR USB MEGA16

Внимание: некоторые микросхемы стабилизаторов наподобие LP2950 дают недостаточный ток. Для усиления можно на выходе стабилизатора подключить транзистор:

ESP8266 power via LP2950 and 2N44401

Сигналы RXD и TXD. Поскольку у модуля ESP8266 уровни сигналов 3V, то для подключения к микроконтроллеру AVR его выходы с уровнями сигналов 5V нужно согласовать со входами модуля ESP8266. Для этой цели последовательно с сигналом TXD микроконтроллера я поставил делитель напряжения из двух резисторов.

После подачи питания (или импульса сброса в виде короткого лог. 0 на выводе EXT_RSTB) модуль ESP8266 выведет через TXD приглашение (при этом пару раз мигнет синий светодиод TXD):

ESP8266 greeting

После этого среди доступных сетей Wi-Fi обнаружится новая точка доступа ESP8266:

ESP8266 Wi Fi access point

Чтобы можно было подключаться к этой точке доступа, необходимо настроить для неё пароль (см. описание AT-команд [4]).

[Ссылки]

1. Using the ESP8266 module site:instructables.com.
2. LM7833 site:aliexpress.com.
3Модуль Wifi на базе чипа ESP8266 site:mysku.ru.
4. ESP8266: справочник по командам AT.
5. ESP8266: пример тестирования команд AT.