Знакомство с недорогим и функциональным микроконтроллером ESP8266: прошивка и пример использования
Авторизуйтесь
Знакомство с недорогим и функциональным микроконтроллером ESP8266: прошивка и пример использования
ESP8266 — китайский микроконтроллер (далее МК) от производителя Espressif с поддержкой WiFi-интерфейса. Управлять всем этим можно не только с браузера, но и из приложений на Android/iOS/Desktop. Если МК будет применяться там, куда не достаёт WiFi-сеть, то ESP8266 может работать в режиме точки доступа.
Примечание В этой статье не будут рассмотрены практические примеры применения ESP8266. Речь пойдёт об основных преимуществах и возможностях этого МК.
Содержание:
Микроконтроллер ESP8266 работает с внешней flash-памятью по интерфейсу SPI. Её объём варьируется от 512 Кбайт до 4 Мбайт. При желании и умении микросхему памяти можно будет перепаять на версию до 32 Мбайт.
Разновидности МК серии ESP и их плат
Существует около полутора десятка версий МК серии ESP и огромное количество плат с ними. Рассмотрим самые популярные из них.
Микроконтроллеры ESP8266
ESP-01
ESP-03
ESP-07
ESP-12
Разные варианты микроконтроллера ESP-12. Источник
В свою очередь, существует несколько вариантов этой версии: ESP-12S, ESP-12F, ESP-12E. Вторая и третья версии имеют на торце дополнительно 6 разведённых контактов.
Платы
WeMos D1 mini
Плата WeMos D1 mini. Источник
NodeMCU v0.9/v1
Первое поколение плат серии NodeMCU. На ней распаяны все 11 GPIO-портов. Некоторые из них обладают дополнительными функциями (UART, I2C, SPI, PWM, ADC). Хотя на плате впаяны контакты, она занимает всю ширину беспаечной макетной платы, что затрудняет работу на ней. МК имеет 4 Мбайт flash-памяти. Также имеется мост CH340.
NodeMCU v3
Финальная версия платы этой серии. Существует и v2 «Amica», которая меньше по габаритам. v3 носит название «LoLin» и отличается от предыдущей версии только размерами и незначительными деталями (например дополнительной распайкой шины питания). Кроме традиционного моста CH340/CH341 на платы ставят чип CP2102, так что внимательней с выбором драйвера на них.
Характеристики
Все эти (и не только эти) платы выполнены на чипсете микроконтроллера ESP8266EX, а следовательно, характеристики у них одинаковые:
Как работать с микроконтроллером ESP8266?
Есть два способа работы с ним:
Прошивка
В большинстве случаев намного удобней прошивать МК и работать с ним со своей прошивкой. Однако тут тоже есть свои нюансы. Вот 3 варианта событий:
В чём прошивается?
Например NodeMCU Flasher (которая подходит не только для плат NodeMCU) или ESPTool (необходим Python).
Однако в этой статье работа с МК и процесс прошивки будут рассмотрены в Arduino IDE.
Изначально среда Arduino IDE не предназначена для работы с МК серии ESP. Чтобы это исправить, идём в Файл → Настройки и в поле Дополнительные ссылки для Менеджера плат вставляем эту ссылку:
Потом открываем Инструменты → Плата → Менеджер плат и в открывшемся списке в самом низу находим плату «esp8266 by ESP8266 Community» (если с этим возникли трудности — используем поиск вверху окна). Устанавливаем последнюю версию платы (около 150 Мбайт).
17–19 декабря, Онлайн, Беcплатно
После установки в списке плат появится немалое количество плат. Если не нашли свою плату или не знаете её названия — выбирайте Generic ESP8266 Module. Теперь можно выбрать свой МК в списке COM-портов.
У ESP8266 две скорости передачи: основная — её вы указываете при инициализации последовательного порта, и скорость, на которой передаётся отладочная информация. Она передаётся сразу после подачи питания на МК. Обычно это скорости 115200 бод и 74800 бод 0 соответственно.
Основы
Если вы не владеете базовыми знаниями работы с платформой Arduino, наверстать упущенное можно в нашей статье про основы использования Arduino.
После скачивания платы ESP8266 с помощью менеджера, в примерах появится большое количество скетчей. Рассмотрим один из них (Файл → Примеры → ESP8266WebServer → HelloServer):
Ознакомиться с API МК можно в их официальном репозитории.
Распределение памяти
Внешняя память распределена на следующие разделы:
Файловая система SPIFFS
Один из плюсов внешней flash-памяти — файловая система. В неё можно с лёгкостью записать файлы (веб-странички, медиа-файлы и прочее) на микроконтроллеры ESP8266. На аппаратном уровне это можно было бы реализовать подключив к МК модуль SD-карт. Однако это решение требует свободных портов.
Размер файловой системы (от 32 Кбайт до 15 Мбайт) зависит от самого объема flash-памяти и от конфигурации, выставленной в Инстурменты → Flash size. Например, конфигурация 4M (2M SPIFFS) предназначена для МК с общим объёмом flash-памяти 4 Мбайт, 2 Мбайт из которых будут выделены под файловую систему.
SPIFFS не работает с папками — она содержит только список файлов. Соответственно, если загрузить в неё папку style, в которой будет файл header.css, то в файловую систему систему запишется файл с именем /style/header.css. Об этом стоит помнить, потому что длина файлового имени не должна превышать 31 символ (читается 32, но символ с кодом 0 отведён под завершение строки).
Для загрузки файлов потребуется инструмент ESP8266FS, интегрирующийся в Arduino IDE. Инструкция по установке:
Как работать с SPIFFS и файлами в ней, можно узнать в этой статье.
Энергонезависимая память EEPROM
Работа с внешней памятью немного отличается от стандартной.
Прошивка «по воздуху» OTA-Update
Для этого вам потребуется установленный Python.
Прошиваем МК по проводу. В случае успешной загрузки в списке портов появится новый хост с именем «esp8266-xxxxxx», где esp8266 — указанное выше имя хоста, а xxxxxx — локальный IP-адрес МК. Выбираем его.
Теперь микроконтроллер ESP8266 можно прошивать «по воздуху».
ESP8266 с чего начать или первый опыт
В этой статье я хочу поделиться опытом того, что делать, когда в руки впервые попадают платки ESP8266. Сразу оговорюсь, что ковыряние в таких железках, равно как и программирование, это моё хобби за мои деньги и в свободное от основной деятельности время. Поэтому прошу отнестись с определенной скидкой к степени критики данного материала.
Итак, приступим!
Я заказал себе 3 варианта плат на известном китайском сайте:
Во всех инструкциях по запуску пишут, что если Вы подключили питание и появилась WiFi сеть «AI-THINKER xxxxxxx», значит устройство работает. С моими устройствами так и вышло — они все создали WiFi сеть, к которой можно было подключиться. Ура! Заработало! Обрадовался я, но рано.
Для начала решил экспериментировать с Жёлтой платой. У продавца с лучшим показателем цена-рейтинг в описании товара были только картинки. И ни слова описания. На русскоязычных ресурсах были упоминания это платы, но конкретики именно про неё не нашёл. У некоторых продавцов я видел такую инструкцию:
1. Android phone installation IOT.APK, IOS client be released later
2. shorting cap connected to the power to enter the programming mode, enter the normal operating state removed
3. Replace the battery, mobile search network «AI-THINKER» router
4. join the router (the router module form) password is: ai-thinker
5. after the success can be added directly to the control module of the mobile phone.
6. Enter the home router «SSID» and «Password» in the «Configure Device», then click on the icon at the top of the router, wait a few moments after the jump to join the router, connect the phone router WiFi, again «discovered device» to achieve control in the LAN.
Мой вольный перевод:
1. На устройство с Wi-Fi работающим на ОС Андроид (не работает на версии 5.0 и старше!) установите IOT.APK, Клиент для IOS будет выпущен позже
2. На плате необходимо снять пермычку, активирующую режим прошивки.
3. Перезагрузите модуль (отключить и подключить питание) и через минуту ищите на андроид устройстве Wi-Fi сеть «AI-THINKER»
4. Подключитесь к этой сети с паролем «ai-thinker»
5. После этого запустите установленной приложение IOT и нажмите на лупу. Плата должна автоматически определиться. После этого перемещайте ползунки, щелкайте выключателями и наблюдайте светодиоды на плате.
Нестыковка была в том, что моя сеть «AI-THINKER хххххххх» не спрашивала пароль, а сразу телефон к ней подключался. И приложение в упор не «видело» ESP после подключения. RGB светодиод горел синим с установленной перемычкой или зеленым без неё.
Я догадывался, что, возможно, китайцы спаять — спаяли, а прошить забыли (или криво прошили). Поэтому решил шить сам. Для прошивки я использовал ESP8266 Flasher. И тут вылез второй сюрприз: ни одна программа плату не распознавала, на команды не отвечала, прошивка не заливалась. Подключал через Ардуино и через UART-конвертер — ничего. Две другие платы уже успел перепрошить и помигать светодиодом, а тут глухо. Пока не догадался прозвонить контакты.
На этой плате отдельно выведены три контакты для прошивки: TX, RX, GND. Так вот оказалось, что TX разведен на RX самой ESP-12, соответственно RX — на TX. Т.е. просто надо было поменять местами два провода: к отдельно вынесенным трём контактам подключаем UART-конвертер по схеме:
TX-TX
RX-RX
GND-GND
Или Ардуино:
TX-RX
RX-TX
GND-GND
После такого открытия модуль ожил, была найдена оригинальная прошивка для мигания светодиодами (AI-THINKER-IOT-2014-10-17 165528.bin) и прошита все тем же ESP8266 Flasher. Появился пароль на точку доступа, и приложение сразу увидело Жёлтую плату. Единственный нюанс: для перепрошивки надо установить перемычку, для всех остальных случаев снять. И не забывать перезагружать устройство после перепрошивки.
ESP8266 ESP-07 вместе с Adapter Plate
Инструкция подключения ESP-07 (ESP-12) через UART-конвертер:
HomesSmart сразу ставить не хотелось и выбор пал на такой вот пример. Не буду перепечатывать схему и код — они практически такие же. Заработало не сразу, но с гуглом и бубном завелось и полетели данные на Народный мониторинг.
Загружал скрипт через ESplorer.


Жду компактный модуль питания 220AC — 3,3DC чтобы оптимизировать количество проводов.
LoLin V3 NodeMcu (Лолин)
Эту плату советовали сразу прошить прошивкой NodeMcu, что и было сделано через программу NodeMcu flasher. Сама прошивка собирается конструктором, что позволяет включить только самое необходимое.
Далее предполагалось подключение и управление 2-хканальным реле и управлять двумя бра в спальне. Тут хочу остановиться на одном ньансе. У китайского варианта такого реле есть перемычка JD-VCC — VCC — GND. По умолчанию она установлена на контакты JD-VCC — VCC.
Так вот, пермычку никогда нельзя устанавливать на VCC — GND — устроите КЗ! Эти три контакта используются для дополнительного питания реле, в случаях, когда управляющее может быть недостаточным для срабатывания реле. Присутсвие перемычки обозначает, что питание идет от «управляющих» контактов.
Скрипт был использован такой:
Я не смог повторно найти ссылку на первоисточник. Но схема проста: К Лолин подключаем на выходы D3 и D4 реле 1 и реле 2 (led1 = 3 led2 = 4). Дальше заходим на выданный нашим роутером IP адресс и видим страничку:
К моему огромному сожалению, я пока не разобрался как наводить красоту, например подключить файл CSS-стиля. Вопрос именно в задействовании отдельных файлов при выводе странички, а не в задании стиля.
Очень надеюсь что эта информация пригодиться хотябы одному человеку. И не судите строго за первую статью.
ESP8266
Описание, подключение, настройка и работа.
Что такое ESP8266
ESP8266 — это высокоинтегрированный, микроконтроллер с интерфейсами WiFi, SPI, UART и GPIO, производства китайской компании Espressif.


В данное время на этом чипе реализовано несколько модификаций плат (ESP01 — ESP12) различающихся только формой, количеством выведенных GPIO и вариантами антенн.
ESP-01 — самый распространённый, выведены два GPIO, дальность действия — до 400м на открытом пространстве.
ESP-02 — тоже самое, только с возможностью подключения внешней антенны.
ESP-03 — керамическая антенна, выведены все GPIO.
ESP-04 — без внешней антенны, выведены все GPIO.
ESP-05 — выведены только VCC, GND, TX, RX, RST и внешняя антенна.
ESP-06 — контакты расположены снизу, сверху металлический экран.
ESP-07 — керамическая антенна + разъем для внешней антенны, металлический экран.
ESP-08 — тоже самое, но без антенн.
ESP-09 — крохотный модуль — 10х10мм, контакты расположены снизу.
ESP-10 — тоже маленький модуль, выведены только два GPIO.
ESP-11 — с керамической антенной.
ESP-12 — с flash-памятью 512 кбайт.


Что может модуль ESP
Описание будет вестись на основе популярной модели ESP-01.
Всё написанное ниже, за исключением номеров GPIO, применительно к любой модификаций.
С базовой прошивкой модуль ESP используется в виде моста UART WIFI.
ESP подключается к ардуине (UART UART) и взаимодействует с ней при помощи AT-команд, а по каналу WIFI соединяется с любым wifi-устройством (планшет, роутер) при этом может работать в разных режимах — клиента, точки доступа, одновременно оба режима.
ESP подключается к ПК через конвертер usb-uart. Можно с ПК посылать АТ-команды модулю, а модуль в свою очередь будет пересылать их какому-то wifi-устройству.
С альтернативными прошивками, ESP может работать автономно. То есть использовать свои пины для управления чем-либо, например светом в комнате, а управляется по каналу WIFI, выступая в роли сервера.
Подключение
Модуль потребляет довольно-таки большой ток (до 300мА), и если подключить модуль к пину 3,3v на ардуине, то он будет постоянно перегружаться (красный и синий диоды будут моргать).
Чтобы всё хорошо работало потребуется DC-DC преобразователь (5v > 3,3v), что-то типа этого:
Схема подключения:
Подключите питание — загорится красный диод.
Подключите пин CH_PD на 3,3v — мигнёт синий диод. Это пин включения/отключения модуля (chip power-down).
В списке сетей wifi на Вашем телефоне/планшете, появится новое устройство с именем «AI-THINKER. ».
Можно подключится к нему, но толку от этого пока никакого не будет.
Кратковременное замыкание пина RST на GND перезагрузит модуль.
Свободные GPIO (0, 2) подключать не надо.
Примечание. В дальнейшем, для повышения стабильности работы, нужно пин CH_PD подключать к 3,3v через резистор 10 кОм., RESET, GPIO (0, 2) тоже подтянуть к 3,3v резисторами 10 кОм., по питанию поставить электролит на 100-220 мкФ и керамику 0.1 мкФ.
И таки да, модуль сильно греется, так что можно какой-нибудь теплоотвод организовать.
Теперь надо подключить ESP-модуль к компьютеру посредством UARTа (RX, TX), выяснить скорость порта (может различаться для разных прошивок) и пообщаться с модулем АТ-командами.
Для этого подойдёт любой преобразователь USB-UART, можно воспользоваться например вот таким:
Нужно соединить RX и TX модуля с TX и RX преобразователя.
Уровни напряжения на пинах TX RX можно не согласовывать, как показывает практика, всё отлично работает и так.
Если это покажется неубедительным, то можно организовать простой резистивный делитель:

TX TX
RX RX
GND GND
Терминал
Далее нам потребуется программа-терминал, можно использовать бесплатную программу CoolTerm. (Lin & Win)
Скачать, установить и запустить:
Нажать Options
Выбрать порт и скорость.
Нажать слева Terminal
Terminal Mode: Line Mode. Нажать ОК.
Нажать Connect
В нижнем поле ввести AT и Enter
Либо воспользоваться Serial Monitor из IDE Arduino.
Открываем Serial Monitor, выбираем Both NL & CR (последняя строчка), устанавливаем скорость 115200 и отправляем команду проверки связи — AT:
Вводите команды без пустых символов.
Модуль должен ответить ОК. Если ответа нет, то попробуйте другие скорости (9600, 57600), если ответа попрежнему нет, то проверьте правильность подключения (rx-tx).
Когда модуль начнёт откликаться, дайте команду перезагрузки — AT+RST
Модуль расскажет о себе.
Теперь нужно проверить версию «заводской» прошивки командой — AT+GMR
В «заводских» прошивках, от версии к версии, меняется функционал и могут не работать некоторые команды. Поэтому прежде чем продолжать знакомство с модулем, нужно залить в него свежую прошивку. Делается это очень просто…
Прошивка
Сейчас речь пойдёт о «заводской» прошивке, альтернативные будут рассмотрены позже.
Скачиваем прошивку, я брал её здесь.
И скачиваем утилиту XTCOM для прошивки ESP.
Пользователи Linux, для работы с XTCOM, могут воспользоваться виртуальной машиной с установленой Windows. (В wine я не пробовал запускать.)
Запускаем XTCOM_UTIL.exe, переходим в Tools ⇨ Config Device:
Выбираем COM-порт к которому подключена плата, ставим скорость порта 57600, это скорость заливки прошивки, к дальнейшей работе модуля не имеет отношения.
Нажимаем Open

OK.
Нажимаем Connect

Программа должна сказать Connect with target OK!
Если не коннектится, то закройте программу, отключите/включите питание модуля и повторите.
Жмём ОК, закрываем окно настроек, переходим в меню API TEST и выбираем Flash Image Download.
Указываем путь к скаченому файлу v0.9.5.2 AT Firmware.bin, адрес оставляем 0x00000, жмем DownLoad.
Готово…
Если что-то пошло не так, то отключаем/включаем питание и проделываем процедуру заново.
Отключаем питание платы, отключаем GPIO0, включаем питание, запускаем терминал (115200), проверяем готовность платы командой AT и версию прошивки командой AT+GMR.
АТ-команды
Список АТ-команд работающих с данной прошивкой и их применение.
AT — проверка работы, ответ ОК.
ATE0 — отключение эхо (повторение команды).
ATE1 — включение эхо.
AT+RST — перезагрузка модуля.
AT+RESTORE — сброс модуля к заводским настройкам.
Полезная команда на случай если Вы донастраивались до потери работоспособности модуля ))).
AT+GMR — версия прошивки.
AT+GSLP=3000 — переход в режим пониженного энергопотребления. (3 сек)
Время задаётся в мс.
Для выхода из режима необходимо замкнуть выводы XPD_DCDC и EXT_RSTB (см. распиновка чипа) либо откл/вкл питание.
AT+CIOBAUD=115200 — установить скорость UART. (9600-921600)
После изменения переключите терминал.
AT+UART=115200,8,1,0,0 — специфичная настройка UART.
AT+CSYSWDTENABLE — активировать Watchdog.
AT+CSYSWDTDISABLE — деактивировать.
AT+CWMODE=1 — клиент, подключается к другим точкам доступа.
AT+CWMODE=2 — точка доступа, к модулю подключаются клиенты.
AT+CWMODE=3 — оба режима одновременно, модуль подключается к существующим точкам (например к роутеру) и сам является точкой доступа. (смешанный режим)
AT+CWMODE? — узнать текущий режим.
AT+CWMODE=? — узнать возможные режимы.
AT+CIFSR — узнать ip-адрес и мас-адрес. В зависимости от режимов (AT+CWMODE) показывает один или два ip-адреса.
AT+CIPSTA? — посмотреть ip-адрес для режима «клиент» (AT+CWMODE=1)
AT+CIPSTA=«192.168.3.20» — установить ip-адрес для режима «клиент» (AT+CWMODE=1)
Необходимо исправить кавычки, вот так:
AT+CIPSTAMAC? — посмотреть мас-адрес для режима «клиент» (AT+CWMODE=1)
AT+CIPSTAMAC=«1a:fe:34:fe:55:55» — установить мас-адрес для режима «клиент» (AT+CWMODE=1). Требуется перезагрузка (AT+RST).
AT+CIPAP? — посмотреть ip-адрес для режима «точка доступа» (AT+CWMODE=2)
AT+CIPAP=«192.168.3.35» — установить ip-адрес для режима «точка доступа» (AT+CWMODE=2)
AT+CIPAPMAC? — посмотреть мас-адрес для режима «точка доступа» (AT+CWMODE=2)
AT+CIPAPMAC=«1a:fe:34:fe:33:33» — установить мас-адрес для режима «точка доступа» (AT+CWMODE=2). Требуется перезагрузка (AT+RST).
AT+CWDHCP= — включает/выключает DHCP сервер.
Пример: AT+CWDHCP=0,0 — DHCP включён для режима «точка доступа».
Первый параметр — режимы: 0 — для точки доступа, 1 — для клиента, 2 — для смешаного режима.
То есть можно для каждого режима (в отдельности) включать/отключать DHCP сервер, либо если модуль работает в «смешаном режиме» (AT+CWMODE=3), то можно.
Второй параметр — вкл/откл: 0 — включить, 1 — отключить.
AT+CWLIF — показать ip-адреса подключенных клиентов (только для режимов AT+CWMODE=2 и AT+CWMODE=3).
AT+CWLAP — посмотреть доступные wifi-сети. (работает в режимах AT+CWMODE=1 и AT+CWMODE=3)
Значения в скобках — тип шифрования, имя точки, уровень сигнала, мас-адрес, канал.
Типы шифрования: 0 — без шифрования, 1 — WEP, 2 — WPA-PSK, 3 — WPA2-PSK, 4 — MIXED (WPA-WPA2-PSK).
На всякий случай перегрузите модуль — AT+RST
AT+CWJAP=«nameap»,«parolparol» — подключение к роутеру (имя точки, пароль). (кавычки необходимо исправить)
Подключение длится 5-6 секунд.
AT+CWJAP? — узнать подключён или нет, и к какой точке.
AT+CWQAP — отключиться от точки доступа (роутера).
На всякий случай перегрузите модуль — AT+RST
Предварительно нужно отключиться от каких-либо точек доступа (например от роутера) — AT+CWQAP и установить режим — AT+CWMODE=2 или AT+CWMODE=3.
AT+CWSAP=«myAP»,«parolmyap»,9,4 — где первое значение — имя будущей точки, второе — пароль, третье — канал и четвёртое — тип шифрования (0 — без шифрования, 1 — WEP, 2 — WPA-PSK, 3 — WPA2-PSK, 4 — MIXED (WPA-WPA2-PSK)).
Посмотреть какой адрес у нашей точки — AT+CIFSR
Подключите Ваш «гаджет» к созданой точке и посмотрите какой он получил адрес — AT+CWLIF
Ниже описаны команды относящиеся к настройке TCP-сервера или TCP-клиента.
AT+CIPMODE= — устанавливается режим передачи данных для TCP-сервера или TCP-клиента.
В режиме TCP-сервера:
AT+CIPMODE=0 — TCP-сервер может отправлять данные клиенту и может принимать данные от клиента.
AT+CIPMODE=1 — TCP-сервер НЕ может отправлять данные клиенту, но может принимать данные от клиента.
В режиме TCP-клиента:
AT+CIPMODE=0 — TCP-клиент может отправлять данные серверу и может принимать данные от сервера.
AT+CIPMODE=1 — TCP-клиент НЕ может отправлять данные серверу, но может принимать данные от сервера.
AT+CIPMODE? — узнать режим.
AT+CIPMUX= — выбор режима одиночного или множественного соединения.
Зависит от AT+CIPMODE.
AT+CIPMUX=0 — с ESP, может соединится только один клиент. (single connection)
Если в этот момент другой клиент запросит соединение, то получит таймаут.
AT+CIPMUX=1 — с ESP, могут одновременно соединяться несколько клиентов (до четырёх). (multiple connection)
AT+CIPMUX? — узнать режим.
AT+CIPSTO=180 — таймаут 180 секунд. (от 0 до 7200)
AT+CIPSTO? — узнать таймаут.
Запуск TCP-сервера:
Предварительно нужно:
На всякий случай делать ресет — AT+RST, или сброс (если Вы что-то там на настраивали) к заводским настройкам AT+RESTORE
Установим «смешанный режим» — AT+CWMODE=3
Установить сквозной режим передачи данных — AT+CIPMODE=0
Установить режим подключения — AT+CIPMUX=1 (multiple connection)
И запустить сервер:
AT+CIPSERVER=1,88 — сервер будет запущен на 88-ом порту.
Чтобы изменить номер порта, нужно остановить сервер — AT+CIPSERVER=0 и запустить с новыми параметрами.
Теперь можно посмотреть как работает сервер, для этого…
Узнаем адрес — AT+CIFSR
Далее подключаемся к ESP по Wifi с какого-нибудь гаджета, открываем браузер и заходим по адресу — 192.168.4.1:88
На странице конечно ничего не отобразится, но в терминале появятся строки запроса:
Активные соединения можно посмотреть командой — AT+CIPSTATUS
Принудительно закрыть соединение — AT+CIPCLOSE=0
Если соединений несколько, то указываем его id — AT+CIPCLOSE=1
Если модуль работает в режиме — AT+CIPMUX=0 (single connection), то команда закрытия соединения даётся без параметров — AT+CIPCLOSE
Это ещё не всё, хотелось бы увидеть полноценный обмен данными с нашим сервером. В этом поможет бесплатная программа (для Linux и Win) — SocketTest, скачайте её.
Далее нужно соединить компьютер и ESP по каналу wifi. У меня компьютер подключён к роутеру, поэтому ESP тоже подключается к этому роутеру.
Подключаем: (на всякий случай, подробности описаны выше)
Смотрим какой адрес получил модуль ESP — AT+CIFSR

Теперь сервер будет работать на адресе — 192.168.1.87:88
Это адрес будем использовать в программе SocketTest.
На вкладке «Client» вводим адрес 192.168.1.87 и порт 88, нажимаем «Connect».

Пользователям Win наверно придётся отключить файрволы.
В терминале будет будет написано «CONNECT».
Отправим в ESP какой-нибудь текст. Нажмите «Connect», в поле «Message» введите «Hello» и нажмите «Send».
В терминале увидим наш запрос:
+IPD — это признак полученных данных, 0 — это id клиента, 7 — это длина пакета, ну и содержимое пакета.
Соединение будет длиться 180 сек, это таймаут сервера по умолчанию. По истечении времени, оно будет разорвано.
Изменить таймаут можно командой — AT+CIPSTO
Теперь отправим данные с ESP в SocketTest.
Нажмите «Connect» и в терминале введите команду:
AT+CIPSEND=0,13 — id соединения, длина пакета.
В терминале появится символ ввода >
Введите и отправьте строку «Hi Soket Test»:
В программе «SocketTest» появится наше сообщение.
С TCP-сервером разобрались, перейдём к TCP-клиенту.
Запуск TCP-клиента:
Сбросим все настройки — AT+RESTORE
AT+CWMODE=3
AT+CIPMODE=0
Подключаемся к Вашему роутеру:
В программе SocketTest открываем вкладку «Server», вписываем ip-адрес Вашего компьютера, порт 88 и нажимаем кнопку «Start Listening»:
Переходим в терминал, устанавливаем режим — AT+CIPMUX=0 (single connection) и запускаем клиента:
AT+CIPSTART=«TCP»,«192.168.1.49»,88 — для протокола TCP.
Параметры: протокол — может быть TCP или UDP, адрес сервера с которым будем соединятся, порт.
Отправим серверу данные:
Даём команду — AT+CIPSEND=12 (указывается только длина пакета)
Появится символ — >
Введите и отправьте — Hello Server
Чтоб послать серверу ещё одно сообщение, нужно заново ввести AT+CIPSEND=12 и т.д.
SocketTest получил наше сообщение.

В поле «Message» введите «Hello Client» и нажмите «Send».
ESP получил сообщение.
Теперь поменяем режим клиента с AT+CIPMUX=0 (single connection) на AT+CIPMUX=1 (multiple connection)
Нажимаем «Disconnect» в программе SocketTest (или в терминале командуем — AT+CIPCLOSE).
В терминале и даём команду AT+CIPMUX=1
AT+CIPSTART=0,«TCP»,«192.168.1.49»,88 — для протокола TCP. (добавился ещё один параметр — id соединения)
Параметры: id — от 0 до 4, протокол — может быть TCP или UDP, адрес сервера с которым будем соединятся, порт.
Отправляем данные серверу — AT+CIPSEND=0,12 (id соединения, длина пакета)
Появится символ — >
Введите и отправьте — Hello Server
Собственно всё то же самое, что и для «single connection», только появилась возможность нескольких соединений (до четырёх) одновременно.
Команды для управления GPIO
AT+CIOREAD=0 — читать ножку GPIO0
AT+CIOREAD=2 — читать ножку GPIO2
AT+CIOWRITE=0,1 — подать напряжение на GPIO0
AT+CIOWRITE=0,0 — снять напряжение с GPIO0
AT+CIOWRITE=2,1 — подать напряжение на GPIO2
AT+CIOWRITE=2,0 — снять напряжение с GPIO2
Можно подключить светодиоды к GPIO через резисторы
Пример подключения:
Настраиваем работу модуля в режиме клиента, подключаемся к роутеру и запускаем TCP-сервер.
AT+RESTORE — к заводским настройкам.
AT+CWMODE=1 — режим клиента.
AT+CWJAP=«nameap»,«parolparol» — подключение к роутеру.
AT+CIPMODE=0 — Установить сквозной режим передачи данных.
AT+CIPMUX=1 — Мultiple connection.
AT+CIPSERVER=1,88 — запустить сервер.
AT+CIPSTO=3 — таймаут сервера 3 секунды.
AT+CIFSR — смотрим адрес который получил ESP от роутера.
Сервер работает на 192.168.1.87:88
И таки да, модуль может зависать (прошивка пока ещё «сыровата»), помогает обесточивание.
Статья получилась большая, поэтому описание подключения Ардуины к ESP читайте в следующей части.











































































