Модуль Wi-Fi ESP8266 (ESP-01): подключение, прошивка и распиновка
Модуль ESP-01 с чипом ESP8266 предназначен для связи устройства с беспроводными сетями по WiFi.
Видеообзор
Общие сведения
ESP-01 — плата-модуль WiFi на базе популярного чипсета ESP8266EX . На борту платы находится микросхема Flash-памяти объёмом 2 МБ, чип ESP8266EX, кварцевый резонатор, два индикаторных светодиода и миниатюрная антенна из дорожки на верхнем слое печатной платы в виде змейки. Flash-память необходима для хранения программного обеспечения. При каждом включении питания, ПО автоматически загружается в чип ESP8266EX.
По умолчанию модуль настроен на работу через «AT-команды». Управляющая плата посылает команды — Wi-Fi модуль выполняет соответствующую операцию.
Но внутри чипа ESP8266 прячется целый микроконтроллер, который является самодостаточным устройством. Прошивать модуль можно на разных языках программирования. Но обо всё по порядку.
Работа с AT командами
Подключение и настройка
В стандартной прошивке Wi-Fi модуль общается с управляющей платой через «AT-команды» по протоколу UART.
На всех платах Iskra и Arduino присутствует хотя бы один аппаратный UART — HardwareSerial. Если же по каким то причинам он занят другим устройством, можно воспользоваться программным UART — SoftwareSerial.
HardwareSerial
На управляющей плате Iskra JS и платах Arduino с микроконтроллером ATmega32U4 / ATSAMD21G18 данные по USB и общение через пины 0 и 1 осуществляется через два раздельных UART . Это даёт возможность подключить Wi-Fi модуль к аппаратному UART на пинах 0 и 1 .
Список поддерживаемых плат:
Для примера подключим модуль Wi-Fi к платформе Iskra Neo.
Прошейте управляющую платформу кодом ниже.
Код прошивки
SoftwareSerial
Некоторые платы Arduino, например Uno, прошиваются через пины 0 и 1 . Это означает невозможность использовать одновременно прошивку/отладку по USB и общение с Wi-Fi модулем. Решение проблемы — программный UART . Подключите пины TX и RX ESP-модуля к другим контактам управляющей платы и используйте библиотеку SoftwareSerial.
Для примера подключим управляющие пины Wi-Fi модуля TX и RX — на 8 и 9 контакты управляющей платы. Прошейте управляющую платформу кодом ниже.
Код прошивки
HardwareSerial Mega
На платах форм-фактора Arduino Mega 2560 аппаратный UART, который отвечает за передачу данных через пины 1 и 0 , отвечает также за передачу по USB. Это означает невозможность использовать одновременно UART для коммуникации с Wi-Fi модулем и отладки по USB.
Но на платах такого форм-фактора есть ещё дополнительно три аппаратных UART:
Список поддерживаемых плат:
Подключите Wi-Fi модуль к объекту Serial1 на пины 18 и 19 на примере платы Mega 2560 Прошейте управляющую платформу кодом ниже.
Код прошивки
Примеры работы
Рассмотрим несколько примеров по работе с «AT-командами»
Тестовая команда «AT»
Откройте монитор порта. Настройте скорость соединения — 9600 бод. Конец строки — NL & CR . Введите команду AT и нажмите «Отправить». Это — базовая команда для проверки работы Wi-Fi модуля. В ответ получим «OK»:
Если ответа нет или появляются непонятные символы — проверьте правильность подключения и настройки скорости обмена данными.
Настройка режима работы
Wi-Fi модуль умеет работать в трёх режимах:
Переведём чип в смешанный режим командой:
После установки модуль должен ответить «OK»:
В отличии от аппаратного UART (HardwareSerial), за работу программного UART (SoftwareSerial) отвечает микроконтроллер, который назначает другие пины в режим работы RX и TX , соответственно и данные которые приходят от Wi-Fi модуля обрабатывает сам микроконтроллер во время программы. По умолчанию скорость общения Troyka Wi-Fi равна 115200 , что значительно выше чем позволяет библиотека SoftwareSerial. В итоге часть информации которая приходит с Wi-Fi модуля будет утеряна. Если вы используете плату с HardwareSerial подключением модуля можете пропустить пункт настройки скорости и сразу перейти к дальнейшей работе с модулем.
AT установка скорости общения
Для корректной работы с большими объемами необходимо понизить скорость соединения модуля и микроконтроллера. Для этого используйте «AT-команду»:
После проделанной операции, измените скорость программного UART в скетче программы и прошейте плату.
По итогу программный UART успеет обработать каждый пришедший байт с Wi-Fi модуля.
AT сканирование WI-FI сетей
Откройте Serial-порт и отправьте на модуль «AT-команду» для сканирования всех доступных Wi-Fi сетей:
При наличии доступных WI-FI сетей в ответ получим сообщение:
Для продолжение работы используйте перечень «AT-команд»
Wi-Fi модуль как самостоятельный контроллер
ESP-01 (ESP8266) — очень умный модуль. Внутри чипа прячется целый микроконтроллер, который можно программировать на языке C++ через Arduino IDE и JavaScript через Espruino Web IDE .
Настройка железа
Ввиду отсутствия у платформы ESP-01 собственного USB-порта, понижающего преобразователя и отсутствия толерантности к 5 вольтам, подключите её к компьютеру, используя один из перечисленных способов:
Схема через Arduino Uno
Для сборки программатора понадобится:
Необходимо каждый раз выполнять перед прошивкой модуля.
Схема через USB-Serial адаптер
Для сборки программатора понадобится:
Необходимо каждый раз выполнять перед прошивкой модуля.
Программирование на C++
После выполненных действий модуль ESP-01 готов к программированию через Arduino IDE.
Подробности о функциях и методах работы ESP-01 (ESP8266) на языке C++ читайте на ESP8266 Arduino Cores.
Программирование на JavaScript
После выполненных действий модуль ESP-01 готов к программированию через Espruino Web IDE.
Подробнее о функциях и методах работы ESP8266 на языке JavaScript читайте на Espruino.
Восстановление стандартной АТ-прошивки
После программирования платформы в режиме самостоятельного контроллера может понадобиться восстановить на модуле стандартную AT-прошивку. Для этого необходимо воспользоваться утилитой Flash Download Tool.
Элементы платы
Чип ESP8266EX
Чип ESP8266 — выполнен по технологии SoC (англ. System-on-a-Chip — система на кристалле). В основе кристалла входит процессор семейства Xtensa — 32-х битный Tensilica L106 с частой 80 МГц с ультранизким энергопотреблением, радиочастотный трансивер с физическим уровнем WiFi IEEE 802.11 b/g/ и блоки памяти SRAM. Мощности процессорного ядра хватает для работы сложных пользовательских приложений и цифровой сигнальной обработки.
Программное приложение пользователя должно храниться на внешней микросхеме Flash-памяти и загружаться в ESP8266EX через один из доступных интерфейсов (SPI, UART, SDIO и др.) каждый раз в момент включения питания системы.
Чип ESP8266 не содержит в себе Flash-память и многих других компонентов для пользовательского старта. Микросхема является основой на базе которой выпускаются модули с необходимой периферией, например ESP-01.
Светодиодная индикация
Имя светодиода | Назначение |
---|---|
LED | Индикаторный светодиод подключённый к цифровому пину 1 |
POWER | Индикатор питание на модуле |
Распиновка
Пины питания
Пины ввода/вывода
В отличии от большинства плат Arduino, родным напряжением платформы ESP-01 является 3,3 В, а не 5 В. Выходы для логической единицы выдают 3,3 В, а в режиме входа ожидают принимать не более 3,3 В. Большее напряжение может повредить модуль!
Будьте внимательны при подключении периферии: убедитесь, что она может корректно функционировать в этом диапазоне напряжений.
Обзор модуля ESP-01 на чипе ESP8266
Автор: Сергей · Опубликовано 04.05.2017 · Обновлено 13.04.2020
Китайская компания Espressif в 2014 году, начала продавать Wi-Fi модули, на чипах ESP8266. который сразу завоевал большую популярность у радиолюбителей из-за своей дешевизны и большими возможностями. На сегодняшний день существует большое количество различных модулей основанных на чипе ESP8266, в этой статье расскажу о ESP-01.
Технические параметры
► Напряжение питания: 3 В
3.6 В
► Максимальный рабочий ток: 220 мА
► Поддержка беспроводного стандарта: 802.11 b / g / n
► Рабочая частота: 2.4 ГГц
► Режимы: P2P (клиент), soft-AP (точка доступа)
► Количество GPIO: 2.
► Flash память: 1024 кб.
► Выходная мощность в режиме 802.11b: +19.5dBm
► Поддержка беспроводного стандарта: 802.11 b / g / n
► Габариты: 24.8мм х 14.3мм х 8мм
Общие сведения о ESP-01
По сути, чип ESP8266 представляет собой миниатюрный микроконтроллер с Wi-Fi передатчиком, который может функционировать в условиях полной автономии, без дополнительной платы Arduino. С помощью модуля ESP-01 можно передавать данные о температуре, влажности, включать реле и так далее. Для удобства использования чипа ESP8266, производитель изготовил серию модулей от ESP-01 по ESP-14. Первый в этой серии, это модуль ESP-01 (существует еще ESP-01S, о нем чуть позже), являющийся одним из известным, из-за свой цены и небольшими размерами, всего 14,3 мм на 24,8 мм. Но в нем, есть два недостатка, это ограниченное количество программированных выводов GPIO и их неудобное расположение (неудобно макетировать).
Модуль ESP-01 представляет собой небольшую плату, черного цвета, на которой расположены два основных чипа, это микроконтроллером ESP8266 и flash память на 1 Мб. Рядом расположен кварцитовый резонатор и напечатанная антенна. На плате установлены два светодиода, красный и голубой. Красный светодиод, светится когда на модуле есть питание, а синий мигает при выполнении команд (в NSP-01S удален красный светодиод, из-за постоянного потребления электроэнергии). Для подключения модуля ESP-01, предусмотрено восемь выводов (два ряда по четыре вывода, шагом 2.54 мм), два из готовых являются цифровым входами-выходом, поддерживающие широтно импульсную модуляцию. Хотя модуль имеет по умолчанию два вывода GPIO, можно использовать другие доступные контакты, если у вас есть необходимый инструмент для пайки.
Назначение выводов
► GND: «-» питание модуля
► GPIO2: (Digital I / O программируемый)
► GPIO0: (Digital I / O программируемый, также используется для режимов загрузки)
► RX: UART прием
► TX: UART передача
► CH_PD: (включение / отключение питания, должны быть выведены на 3.3 В непосредственно или через резистор)
► RST: сброс, необходимо потянуть к 3.3В
► VCC: «3.3В» питание модуля
Подключение модуля
Для работы модуля ESP-01, необходим источник питания постоянного тока, который должен выдавать 3.3 В и током не менее 250 мА. К сожалению, штатный стабилизатор установленный на Arduino не способен выдать необходимой ток для работы ESP-01 (если решите все равно подключить ESP-01, ждите нестабильную работу и постоянную перезагрузку). Кроме того, логические сигнал, данного модуля, рассчитан на 3.3 В, то есть на вывод RX необходимо подавать напряжение 3.3В, а с вывода TX будет напряжение равное 3.3 В (так же и для других выводов). Если необходимо подключить модуль к Arduino или другим контроллерам, которые выдают на логический вывод 5 В, необходимо использовать резисторы или модуль логических уровней, если подключать напрямую, модуль выйдет из строя.
Внимание! ESP-01 очень капризные к питанию, необходимо использовать внешний стабилизатор напряжения на 3.3В, в качестве первого примера буду использовать адаптер USB
С таблице выше, видно, что модуль ESP-01 может работать в нескольких режимах сна, с минимальным потреблением тока, вызываются они программном путем, кроме последнего «Power Off», чтобы задействовать данный режим, необходимо установить перемычку, между GPIO16 и RST, позже приведу пример.
Модуль ESP-01(esp8266) или WiFi для начинающих.
Рано или поздно все мы приходить к тому что нам не хватает подключения к Сети в наших проектах на платформе Ардуино. Действительно как же в 21 веке без статуса Онлайн )) И тут нам на выручку приходит WiFI чип ESP8266 и готовые модули на его основе. У меня в руках самый простой модуль (для новичков) ESP-01 :
Модуль устроен достаточно просто и имеет минимальный набор выводов :
- ESP8266EX — сердце всего модуля.
- P25Q80H (или другой чип) — Flash Memory на 1 Мбайт.
- Кварц и обвязка со свето диодиками.
ESP8266EX
Китайский производитель Espressif сделал дешевый чип с интерфейсом Wi-Fi и возможностью исполнять программы из внешней флеш-памяти с интерфейсом SPI. По сути это микроконтроллер и радио модуль для Wi-Fi в одном корпусе :
- 80 MHz 32-bit процессор Tensilica.
- IEEE 802.11 b/g/n Wi-Fi. Поддерживается WEP и WPA/WPA2.
- 14 портов ввода-вывода(из них возможно использовать 11), SPI, I²C, I²S, UART, 10-bit АЦП. В нашем случае мы можем использовать только ограниченные выводы чипа.
- Питание 2,2…3,6 В. Логика и питание чипа 3.3 В, будьте внимательны !
- Интегрированный стек TCP/IP. HTML
Выводы, подключение :
Возможности чипа очень большие, будем разбираться постепенно.
Выводы модуля :
- VCC — плюс питания 3.3 В
- GND — минус питания 3.3 В
- TX — аппаратный UART.
- RX — аппаратный UART.
- RST — кратковременно подав на неё низкий логический уровень, модуль перезагрузиться. Лучше прижать ее через резистор 10 кОм к плюсу питания.
- CH_PD(или по-другому EN) — служит для перевода модуля в энергосберегающий режим, в котором он потребляет очень маленький ток. Ну и снова — не будет лишним «прижать» эту ногу резистором на 10 кОм к плюсу питания.
По умолчанию во флешь-память ужа записана заводская прошивка с поддержкой АТ команд для управления чипом. Конечно можно залить и другие прошивки, но в этой статье мы будем работать именно в таком режиме с модулем. Суть проста по UART передаем команду, получаем ответ от модуля. Для этого нам потребуется USB-to-Serial TTL конвертор что бы подключить модуль к компу. Так как у меня под рукой его нету то я буду использовать Arduino Nano в его качестве.
Питание модуля отдельный вопрос. Пиковое потребление чипа может достигать 250 мА ( в datasheet указано 170 мА при использование Tx802.11b). Внимание! Этот модуль основан на 3.3 В логике, так что придется его питать от своего источника питания. Или через резисторный делитель(1 кОм и 2 кОм) с вывода +5 Ардуино. Выводы RX и TX надо тоже подключить через делитель или через logic converter (например CD4050B).
Что бы Ардуино превратить в USB-to-Serial TTL конвертор зальем в контролер пустой скетч :
Далее Arduino нужно замкнуть RESET на GND . Это изолирует процессор от I/O пинов. Альтернатива этому удаление микросхемы из «кроватки». При этом выводы TX, RX устройства нужно подключить без перекрещивания. т.е. :
esp TX → ard TX
esp RX → ard RX
Подключаем все , открываем монитор портов в Arduino IDE и поехали.
Для простоты вы можете купить USB адаптер у наших Китайских партнеров.
AT-Команды.
Для на чало мы проверим что все работает и отправим в терминале:
Для подключения Wi-Fi выберем режим модуля: доступны следующие режимы: 1 — STA, 2 — AP, 3 — Station+AP
Смотрим список точек доступа командой:
В скобках указывается: SECURITY, SSID, RSSI, BSSID, CHANNEL
SECURITY может принимать значения:
0 — OPEN, 1 — WEP, 2 — WPA-PSK, 3 — WPA2-PSK, 4 — MIXED (WPA-WPA2-PSK)
Подключаемся к нашей точке:
Посмотреть какой ip получил наш модуль:
Все настройки запоминаются во флешь память, сбросить настройки на заводские можно командой:
AT+RESTORE
Задать скорость UART :
Команды делятся условно на три части : системные, Wi-Fi,TCP. Полный список команд можно посмотреть в datasheep. Ну а мы перейдем к командам режима TCP-сервера. На плате ESP-01 можно запустить TCP-сервер для приема-отправки данных или она может выступать TCP-клиентом для приема-отправки данных на сервер.
Для запуска TCP-сервера выполним следующие команды:
0 — not data mode (сервер может отправлять данные клиенту и может принимать данные от клиента).
1 — data mode (сервер не может отправлять данные клиенту, но может принимать данные от клиента).
Устанавливаем возможность множественных соединений:
0 — single connection.
1 — multiple connection.
Запускаем сервер на порту 80:
0 — to close server
1 — to open server
Теперь можно подключиться к ESP-01 и отправить-принять какие-нибудь данные. На потребуется telnet клиент, я использую PuTTY. При подключение модуль нам сообщает что подключился клиент и показывает нам id клиента.
Посмотреть список активных подключений к ESP-01 можно командой AT+CIPSTATUS
Пример:
Закрыть активное соединение можно командой
AT+CIPCLOSE=id или все соединения AT+CIPCLOSE без параметров.
Отправляем данные с ESP-01 на ПК. Для режима Single connectio n отправка идет так :AT+CIPSEND=length, для режима Multiple connection отправка идет так: AT+CIPSEND=id,length.
Ошибка в тексте? Выделите её и нажмите «Ctrl + Enter»