ESP8266 Урок 2. AT команды



Продолжаем знакомство с микроконтроллером ESP8266.

На данном занятии мы попробуем посредством AT-команд управлять данной микросхемой, а вернее модулем ESP-01, на которой она установлена.

Вот так вот выглядит модуль ESP-01

 

 

А это его вид снизу (со стороны контактов)

 

 

Управлять нашим модулем мы будем посредством интерфейса UART.

Прежде чем управлять данным модулем, или его прошивать, мы должны знать назначение его 8 контактов, или, другими словами, знать его распиновку.

Не смотря на то, что у микроконтроллера ESP8266 контактов очень много, наружу в модуле ESP-01 выведены только самые необходимые.

Вот их назначение

 

 

Соответсвенно, чтобы управлять модулем по UART, мы наш переходник USB-TTL должны подключить к модулю Rx к Tx и, наоборот, Tx к Rx. Также мы соединяем с общим проводом переходника общий провод модуля. Питать мы наш модуль будем от отдельного источника.

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

Вот такая вот получится нехитрая схема

 

 

Резисторы в разрыве передачи данных по UART служат для ограничения тока, чтобы немного скомпенсировать разницу напряжений на модуле и на переходнике. Пробовал и без них, также всё работает, но глюков при прошивке с ними стало гораздо меньше.

Кроме всего присутствующего в схеме советуют поставить между питанием модуля и общим проводом сглаживающий электролитический конденсатор где-то на 220 микрофарад, а также обычный биполярный конденсатор на 1 мкФ для сглаживания помех высокой частоты. Так как у меня неплохой регулируемый DC-DC преобразователь, которым я буду питать схему, в котором всё это уже есть, то данные конденсаторы я исключил.

Подключим нашу схему, подключим источник питания, а также подключим переходник USB-TTL к PC

 

 

Теперь запустим терминальную программу (сегодня воспользуемся CoolTerm), настроим параметры порта

 

 

В моём случае скорость 115200 kbps, в каждом конкретном случае может быть и другая в зависимости от версии прошитого ПО, так что скорость, возможно придётся подобрать. Раньше была меньше в более ранних версиях прошивок. Какая прошивка у меня, мы ещё увидим.

 

 

Настроим также отправку данных, чтобы команды в модуль отправлялись правильно

 

 

Соединимся с модулем по UART с помощью кнопки Connect в терминальной программе и попробуем ввести самую первую (проверочную) AT-команду

 

 

Нажмем кнопку Enter на клавиатуре и, если всё правильно, то модуль откликнется вот таким образом

 

 

Порой с первого раза модуль может не откликнуться, с помощью кнопки RESET, которую мы подключили в нашей схеме, следует перезагрузить модуль и заново с ним соединиться в терминальной программе.

Команд AT, поддерживаемых встроенным программным обеспечением контроллера ESP8266, огромное количество, все мы их не будем использовать, но с некоторыми познакомимся. Если есть желание познакомиться с другими командами, то на официальном сайте копмании Espressif есть соответствующая документация.

Отправим в модуль следующую команду AT+GMR , с помощью которой мы и узнаем версию встроенного программного обеспечения контроллера

 

 

Также испытаем команду для перезагрузки модуля

 

 

Соответственно, после перезагрузки следует подключиться к модулю в терминальной программе заново.

Также, если вдруг мы хотим, чтобы наш модуль забыл все настройки и вернулся в первоначальное состояние, существует команда возврата к заводским настройкам

 

 

После данной команды также требуется заново подключиться к модулю в терминальной программе.

С помощью следующей программы мы узнаем текущий режим работы контроллера в плане электропитания и пониженного энергопотребления

 

 

Посмотрим в документации по AT-командам, что это за режим

 

 

Получается, что модуль по умолчанию находится в одном из спящих режимов.

 

 

Для работы модуля в режиме передачи данных на максимальной скорости нам такой режим не подойдёт, нужно включить активный режим. Пошлём соответствующую команду модулю

 

 

Теперь модуль находится в активном режиме.

На всякий случай мы можем это проверить

 

 

Теперь проверим состояние устройства в плане типа, то есть, станция у нас или точка доступа

 

 

Посмотрим в документации, что это за режим

 

 

Получается, что у нас модуль работает в режиме точки доступа. Сегодня мы попробуем другой, более простой режим — в режиме станции, то есть использовать мы будем другую точку доступа. Я буду использовать свой домашний роутер, который управляет домашней сетью.

Поэтому пошлём команду на переключение модуля в другой режим передачи данных, а затем проверим переключение

 

 

Теперь попробуем подключиться к роутеру с помощью команды AT+CWJAP=»SSID»,»password». Соотвественно, имя точки доступа и пароль у всех будут разные

 

 

Если имя и пароль правильные, то через некоторое время модуль соединится с точкой доступа и получит адрес IP.

Посмотрим данный адрес, а также MAC-адрес нашего устройство с помощью следующей команды

 

 

Далее включим поддержку нескольких соединений

 

 

Попробуем сначала проверить доступность в сети нашего модуля с помощью посылки на него пингов

 

 

Модуль прекрасно откликается.

Сегодня мы попробуем передать данные с PC на модуль и обратно по протоколу UDP, для этого пошлём соответствующую команду модулю

 

 

Тем самым мы создали соединение с PC с его портом 1556, модулю назначили порт 1555, также в третьем параметре мы указали сетевой адрес компьютреа, далее после портов идёт параметр режима UDP, нам он не так важен, оставляем его 0 по умолчанию. Не важно, что мы ещё не создавали порт на компьютере, это всё-таки UDP и это не проверяется.

Создадим порт на PC с помощью утилиты netcat, с которой мы дружим уже очень давно

 

 

Мы видим, что команда nc очень похожа на AT команду модуля, только немного всё переставлено местами и IP-адрес мы уже здесь вводим модуля.

Теперь мы можем начать обмен между нашими узлами. Но, прежде чем мы его начнём, запустим утилиту анализа сетевого трафика WireShark, чтобы убедиться с помощью неё что пакеты у нас доходят полностью без сбоев. Отфильтруем поток по IP-адресу модуля

 

 

Попробуем сначала передать строку с PC на модуль

 

 

Посмотрим в Wireshark, что пакет от нас благополучно ушел на модуль

 

 

 

В терминальной программе мы также видим, что пакет в модуль пришел

 

 

Кроме строки мы здесь видим отчёт, по какому номеру соединения к нам пришло сколько байтов информации

Теперь, наоборот, попробуем передать строку с модуля на компьютер.

Для это сначала мы дадим команду, в которой заранее определим, сколько байтов мы планируем передать

 

 

В ответ мы увидим приглашение на ввод строки для передачи.

Введём эту строку

 

 

В нашей строке, если посчитать вместе с пробелами, содержится 18 символов. К ним мы прибавляем символы возврата строки и перевода каретки, получается 20.

Нажмём Enter и увидим, что строка наша ушла из модуля

 

 

В WireShark мы видим также, что строка пришла полностью

 

 

В утилите netcat мы также видим, что строка полностью пришла, так как после отображения строки произошел переход на новую

 

 

Мы видим, что всё у нас прекрасно передаётся и принимается нашими узлами.

После этого мы можем закрыть соединение с помощью соответствующей AT-команды

 

 

Итак, в данном занятии нам удалось подключить модуль ESP-01 к компьютеру посредством шины UART и немного поупражняться в работе команд AT, с помощью которых мы можем управлять нашим модулям. Также нам удалось создать соединение с роутером, при помощи которого мы смогли передать и принять данные с использованием протокола UDP.

Несомненно, на этом арсенал команд AT не исчерпывается, у контроллера ESP8266 их очень много, в том числе мы можем изменить скорость передачи данных по UART и многое другое, но, думаю, в рамках нашего занятия достаточно и тех, которые мы изучили и испытали на практике.

Всем спасибо за внимание!

 

 

Предыдущий урок Программирование МК ESP8266 Следующий урок

 

 

Различные модули ЕSP8266 можно приобрести здесь Модули ЕSP8266

 

 

Смотреть ВИДЕОУРОК (нажмите на картинку)

 

ESP8266 AT команды

8 комментариев на “ESP8266 Урок 2. AT команды
  1. Максим:

    «существует команда возврата к заводским настройкам»

    Зачем команду обрезал и не написал.
    Теперь придется доки качать. 😉

  2. Максим:

    А зачем GPIO0 и GPIO2 к + подтянуты? просто хотелось бы понять. Не критика, просто не понимаю.
    Заранее большое спасибо!

  3. Денис:

    Напишите пожалуйста все команды и описание назначения выводов в тексте статьи

  4. Александр:

    В программаторе я еще соединил вывод DTR USB-UART переходника с ногой RESET модуля. А вот питание пришлось делать отдельное. При питании от переходника прошиваться модуль отказался.

  5. tvekb:

    Здравствуйте!
    После изменения частоты командой AT+IPR=9600, не вижу в CoolTerm не только ответа модуля, но и отправляемой команды (ни на частоте 9600, ни на 115200).
    В чем может быть проблема?

  6. Сергей СПБ:

    А можно без роутера?
    Я подключил модуль к ноуту проводом и соединил его с этим же ноутом по wifi, ноут подключен к usb-модему с интернетом.
    У меня две сети(две группы адресов):
    ноут-локальные 192.168.8.100(255.255.255.0)
    wifi ноута — 192.168.137.1(255.255.255.0) вбито руками, не автомат.

    Модуль получает адрес 192.168.137.6

    Соответственно ESP(у меня ESP-12) не видит адрес 192.168.8.100

    Команда
    AT+CIPSTART=0,»UDP»,»192.168.8.100",1556,1555,0
    не работает.

    Я так понимаю нужно маршрутизацию прописать(route?), но я не понимаю что там вообще писать и ничего не сломать?

  7. Сергей СПБ:

    Для тех у кого нет роутера.

    Разобрался, если соединять не с роутером, а напрямую с WIFI ноутбука , то надо брать iP компьютера адаптера wifi. Не как у автора «Ethernet adapter..»
    а «Адаптер беспроводной локальной сети…» . И в wireShark соответственно отслеживать этот же адаптер. И всё будет работать.

  8. debunt:

    Поделюсь своим рецептом для корректной работы esptool в моем случае. Стоит python 3.8 с pip менеджером. Поставил esptool через cmd следующим образом:
    python -m pip install esptool.

    В Makefile команда esptool с сайта/видео не работает. Сработало следующее
    python -m esptool elf2image build/app.out

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*