wi-fi модуль esp8266

Думаю, что для многих не новость, что недавно появились на рынке сверх дешевые чипы esp8266 и модули на их основе. Ещё одним большим плюсом этих чипов, по мимо цены, является большая интеграция чипа, следствие чего самодостаточность, а точнее очень малое количество компонентов обвязки.

Чип esp8266 и модули на его основе

Чип esp8266 и модули на его основе

Единственным большим минусом этих модулей является секретность их ней документации. Конечно что-то уже давно просочилось в сеть, но основные документы и SDK находятся под NDA грифом. Почему так, не мне судить, но неприятно. Но в некотором скором времени производитель собирается перевести документы на свободно распространяемую лицензию.

Начнём с самого вкусного — цены модуля и чипа. Цена модуля в интернет магазинах составляет порядка 200-300р, на taobao 160р. Цена чипа в интернет магазинах и на taobao 90р, у производителя 1,5$. Цены на конец сентября 2014 года, зеленый стоит 40р.

Хоть основная документация по модулю и закрыта, но из имеющихся источников можно получить дефолтные схемы разводки модуля, краткую спецификацию и список AT команд для работе с модулем по UART (когда чип настроен на этот режим работы, родной у него, кажется, SPI). Данной документации уже будет достаточно для поверхностного ознакомления с данным модулем и построения любительских конструкций на его базе.

Краткая спецификация модуля


Частота Wi-Fi 2412-2484МГц
Стандарт 802.11 b / g / n
Мощность + 20dBm
Максимальное расстояние 100м (при идеальных условиях)
Безопасность WPA / WPA2
Встроенный TCP/IP стек
Интерфейс UART 115200
Напряжение питания 3.3В
Потребление тока 70мА (240мА пик)
Температурный режим -40 +70С

Подключение модуля ESP-01

Подключение модуля ESP-01


GND GPIO2 GPIO0 Rx
Tx CH_PD (enable) RST Vdd (3,3В)

Если обратить внимание на количество компонентов, то их всего 6 — пассивных, SPI память и PCB антенна (два светодиода с обвязкой и разъём не посчитал), что очень приятно в плане занимаемым местом, количеством паяемой обвязки и следствием трудозатрат и стоимости применения данного модуля.

В своих экспериментах подключал модуль к cp2102 через небольшую платку со стабилизатором на 3.3В и 2-мя гасящими резисторами.

Испытательный стенд для модуля esp8266

Испытательный стенд для модуля esp8266

Для работы подаём на модуль питание 3,3В, подключаем UART и подтягиваем к плюсу питания Enable (CH_PD). Напомню: скорость UART 115200, стандартные настройки 8N1.

Список AT команд

Синтаксис:
<command> — выполнит команду
<command>? — запросить статус какого-либо параметра
<command>=<parametr> — задать параметры


Синтаксис
Пример
Описание
AT AT
OK
Тест
AT+RST AT+RST Перезагрузит модуль
AT+GMR AT+GMR
00160901
OK
Версия прошивки
AT+CWMODE=<mode> AT+CWMODE=1

OK

Режим работы модуля
<mode>:
1-клиент
2-точка доступа
3-совмещенный
AT+CWJAP = <SSID>,<PWD> AT+CWJAP="HOME","password"
OK
Присоединиться к точке доступа
<SSID> — имя точки доступа
<PWD> — ключ
AT+CWLAP AT+CWLAP
+CWLAP:(0,"",0)
+CWLAP:(4,"Sosed",-77)
+CWLAP:(1,"HOME",-54)
OK
Получить список видимых точек доступа
Первый параметр — шифрование:
0 — open
1 — WEP
2 — WPA_PSK
3 — WPA2_PSK
4 — WPA_WPA2_PSK
Второй параметр — SSID
Третий параметр — чувствительность
AT+CWQAP AT+CWQAP
OK
Отключиться от точки доступа
AT+CWSAP=<ssid>,<pwd>,<chl>, <ecn> AT+CWSAP="TEST","12345678",5,0
OK
Установить точку доступа
<ssid> — имя точки доступа
<psd> — ключ
<chl> — канал
<ecn> — шифрование, см AT+CWLAP
AT+CWLIF AT+CWLIF Список присоединённых устройств
AT+CIPSTATUS AT+CIPSTATUS
STATUS:3
+CIPSTATUS:0,"TCP","46.38.56.236",80,0

OK

Статус TCP соединения
Возвращаемый параметр — статус соединения
3 — соединение установлено
4 — нет соединения
Первый параметер — сессия
Второй параметр — соединение: TCP или UDP
Третий параметр — IP
Четвёртый параметр — порт
Пятый параметр — неизвестен
AT+CIPMUX=<mode> AT+CIPMUX=0
OK
Количество соединений
0 — одно соединение
1 — мультисоединение (до 4-х)
AT+CIPMODE=<mode> AT+CIPMODE?
+CIPMODE:0
Режим передачи данных
<mode> — неизвестно
Для одного соединения (+CIPMUX=0):
AT+CIPSTART=<type>,<adr>,<port>
Для мульти соединения (+CIPMUX=1):
AT+CIPSTART=<id>,<type>,<adr>,<port>
AT+CIPSTART="TCP","alex-exe.ru",80

OK
Linked

Unlink

Соединение TCP/UDP
<id> — идентификатор соединения
<type> — тип соединения: TCP или UDP
<adr> — адрес IP или URL
<port> — порт
Для одного соединения (+CIPMUX=0):
AT+CIPSEND=<length>
Для мульти соединения (+CIPMUX=1):
AT+CIPSTART=<id>,<length>
AT+CIPSEND=53
> GET /links/links.html HTTP/1.0
Host: alex-exe.ru
busy

SEND OK

+IPD,233:HTTP/1.1 200 OK
… обрезано …
OK

Отправить данные
<id> — идентификатор соединения
<length> — количество отправляемых данных
Передаваемые данные отправляются после приглашения > , после ввода команды.е
+IPD,1024:<html>
<head>
<title>Alex_EXE — Сайты</title>
… обрезано …
OK
Приём данных
Первый параметр <id> — идентификатор соединения (для +CIPMUX=1).
Возвращает количество прочитанных байт, после двоеточия возвращает принятые данные.
Принимает по 1024 байта, разделяя.
Для +CIPMUX=0:
AT+CIPCLOSE
Для +CIPMUX=1:
AT+CIPCLOSE=<id>
AT+CIPCLOSE
OK
Unlink
Закрыть соединение
Единственный параметр <id> для мультипоточного режима — идентификатор соединения
AT+CIFSR AT+CIFSR
192.168.1.208
Получить IP адрес модуля
AT+CIPSERVER=<mode>,<port> AT+CIPSERVER=1,8888
OK
Поднять сервер
<mode> — режим скрытности
0 — скрыт
1 — открытый
<port> — порт
AT+CIPSTO=<time> AT+CIPSTO=180
OK
Установить время одной сессии на сервере
<time> — время сессии в секундах, от 0 до 28800.



Такой перечень команд на данный момент удалось найти. Скудновато, но для минимального функционала хватит.

Пример установки точки доступа и поднятие TCP сервер на 8888 порту:

AT+CWMODE=2

OK
AT+RST

OK
...  перезагрузка   ...
AT+CWSAP="TEST","12345678",5,0

OK
AT+CIPMUX=1

OK
AT+CIPSERVER=1, 8888

OK
AT+CIFSR
192.168.4.1
Link

+IPD,0,17:Test alex-exe.ru

OK
Unlink

После поднятия сервера зашёл на него через терминал (Link — момент подсоединения) и отправил короткое тестовое сообщение, после чего отсоединился (Unlink — момент отключения).

Пример установки клиента с выполнением «ручного» GET HTTP запроса:

AT+CWMODE=1

OK
AT+RST

OK
...  перезагрузка   ...
AT+CWLAP
+CWLAP:(0,"",0)
+CWLAP:(4,"Sosed",-77)
+CWLAP:(1,"HOME",-54)
OK 
AT+CWJAP="HOME","password"

OK
AT+CIPMUX=0

OK
AT+CIPSTART="TCP","alex-exe.ru",80

OK
Linked
AT+CIPSEND=53
> GET /links/links.html HTTP/1.0
Host: alex-exe.ru
busy

SEND OK

+IPD,233:HTTP/1.1 200 OK
Server: nginx/1.6.0
Date: Tue, 14 Oct 2014 21:41:06 GMT
Content-Type: text/html
Content-Length: 1647
...   обрезано   ...

OK

+IPD,1024:<html>
<head>
 <title>Alex_EXE - Сайты</title>
...   обрезано   ...
     
 
OK

+IPD,623:    <tr>
       <td valign=top colspan=2>
         <b><p align=center><a HREF = "computer.html">Компьютер</a></p></b>		
...   обрезано   ...

</td></tr></head></html>
OK

OK
Unlink

Если в будущем смогу раздобыть больше информации и описания по модулю и чипу, причём не из засекреченных источников, — то будет продолжение.

Источники, с которых собирал информацию:
ESP8266: Революция в мире интернета вещей
nurdspace.nl/ESP8266
www.electrodragon.com/w/Wi07c
даташит Espressif AT Instruction (на Китайском)

22 комментария »

Alex_EXE | 15.10.2014 | Связь | 15 616 просмотров

22 комментария на « wi-fi модуль esp8266»

  1. M9cO пишет 10.02.2016 в 17:20 #

    начал получать ответ «ОК» после обращения браузера. Пришлось прошить старую «Прошивка AT v0.20 SDK v0.9.3 28.11.2014» но тут нельзя менять скорость соединения, команды нет такой. Видимо в новых прошивках, просто убрали этот ответ =\

  2. M9cO пишет 10.02.2016 в 19:17 #

    пардон, можно менять, только в официальном руководстве AT v.20 об этом ни слова. Меняется командой «AT+IPR=»

Комментарии RSS

Оставьте отзыв