Xtcom util windows 10

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, выступая в роли сервера.

Подключение

В первую очередь надо обеспечить надёжное питание. Внимание! ESP работает от напряжения 3,3v .

Модуль потребляет довольно-таки большой ток (до 300мА), и если подключить модуль к пину 3,3v на ардуине, то он будет постоянно перегружаться (красный и синий диоды будут моргать).
Чтобы всё хорошо работало потребуется DC-DC преобразователь (5v > 3,3v), что-то типа этого:

Схема подключения:

Подключите питание — загорится красный диод.
Подключите пин CH_PD на 3,3v — мигнёт синий диод. Это пин включения/отключения модуля (chip power-down).

В списке сетей wifi на Вашем телефоне/планшете, появится новое устройство с именем «AI-THINKER. ».
Можно подключится к нему, но толку от этого пока никакого не будет.

Кратковременное замыкание пина RST на GND перезагрузит модуль.

Свободные GPIO (0, 2) подключать не надо.

Если у Вас модуль не ESP-01, то надо подключить GPIO15 к GND .

Примечание. В дальнейшем, для повышения стабильности работы, нужно пин 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 можно не согласовывать, как показывает практика, всё отлично работает и так.
Если это покажется неубедительным, то можно организовать простой резистивный делитель:

Если под рукой нет преобразователя (USB-UART), то его можно сделать из любой ардуины. Для этого надо соединить на ардуине RST и GND , а сигнальные линии соединить вот так:

Читайте также:  Проводник windows область просмотра


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 я не пробовал запускать.)

Отключаем питание платы, вывод GPIO0 соединяем с GND , включаем питание. Именно так.

Запускаем XTCOM_UTIL.exe, переходим в ToolsConfig 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)

Читайте также:  Что такое динамические диски windows

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, скачайте её.

Читайте также:  Как убрать файл с автозагрузки windows 10

Далее нужно соединить компьютер и 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,13id соединения, длина пакета.

В терминале появится символ ввода >

Введите и отправьте строку «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 через резисторы

1kOm и помигать.

Пример подключения:

Настраиваем работу модуля в режиме клиента, подключаемся к роутеру и запускаем 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 читайте в следующей части.

Оцените статью