ESP8266
ЧАСТЬ 1
ПОСЛЕДОВАТЕЛЬНЫЙ WIFI МОДУЛЬ ДЛЯ ARDUINO
Это первая из трех инструкций, которая поможет вам использовать ESP8266 с Arduino. В этом первом руководстве вы узнаете, как установить и протестировать работу модуля, подсоединенного к Arduino.
ESP8266 – это, наверное, самый универсальный модуль с последовательным интерфейсом для соединения различных физических предметов («вещей») с интернетом, поэтому он так популярен в сфере «Интернета вещей». Это законченный модуль, который состоит из микропроцессора, доступного для программирования напрямую через ArduinoIDE (C++), или в любой другой среде программирования (обычно используется язык высокого уровня “LUA”).
Для управления «вещами» не нужна сама плата Arduino в качестве интерфейса, потому что ESP8266 уже имеет 2 GPIO (Интерфейс ввода/вывода общего назначения). Множество дополнительной важной информации вы сможете найти на форуме, посвященном ESP8266.
Ссылка на форум по ESP8266:
Характеристики:
- 802.11 b / g / n
- Wi-FiDirect (P2P), программная точка доступа soft-AP
- Интегрированный стек протоколов TCP / IP
- Интегрированный TR свитч, балун, LNA, усилитель мощности и согласующая сеть (matchingnetwork)
- Интегрированные PLL, регуляторы, DCXO и системы управления мощностью
- + 19.5 дБ выходная мощность в режиме 802.11b
- Отключение при превышении утечки тока <10uA
- 1MB флэш память
- Интегрированный 32-битный центральный процессор с низким энергопотреблением, может быть использован как процессор приложений
- SDIO 1.1 / 2.0, SPI, UART STBC, 1 × 1 MIMO, MIMO 2 × 1
- A-MPDU и A-MSDU агрегирование, 0.4 мс пустой промежуток
- Wakeup пакеты и передача <2мс
- Потребление энергии в режиме ожидания <1.0мВт (DTIM3)
Вышеуказанные данные включают в себя много технической информации, которая вам не понадобится в большинстве ваших проектов, однако лучше, чтобы она была под рукой, на всякий случай.
До сих пор я изучал только ESP8266 в соединении с Arduino, заменяя необходимость в более дорогих WiFi шилдах. (Шилд – это печатная плата, которую вы устанавливаете на Arduino для увеличения его функциональности).
Шаг 1: ESP 8266 характеристики и пины
Итак, сначала необходимо протестировать модуль AT командами, которые являются стандартными. Как правило, модуль поставляется от производителя с установленными настройками скорости передачи данных в 115200 бодов. Иногда это создает неудобства, например, в случае с ArduinoUNO, только однажды HWSerial “0” (пины 0 и 1) мог работать на такой скорости. Проблема в том, что программа SerialMonitor для PC также использует этот последовательный порт. («PC» используется здесь как усредненный термин, надеюсь, мой Macне слышит меня ;) Решение для ArduinoUNO нашлось в виде использования библиотеки "SoftwareSerial", чтобы заставить два других универсальных пина (GPIO) работать в режиме последовательного порта (SW). Это хорошо работает тогда, когда скорость передачи данных не превышает 19200 бодов. Отлично! Но что делать, если ESP8266 изначально запрограммирован на работу с более высокой скоростью? Решением может быть перепрограммирование. Но не все прошивки, которые загружены в устройство на заводе, поддерживают перепрограммирование модуля. Таким образом, сначала нужно обновить прошивку. В некоторых постах в интернете описывается, как это сделать. Я не буду загружать вас перепрошивкой, скоростью и т.д., для упрощения процесса будет использована плата ArduinoMEGA, на которой есть 4 аппаратных последовательных порта (4 HWserialports) .
Порты на плате MEGA:
- TX0 / RX0 ==> Pin 1, 0 (то же, что UNO) ==> "Serial 0"
- TX1 / RX1 ==> Pin 18, 19 ==> "Serial1"
- TX2 / RX2 ==> Pin 16, 17 ==> "Serial2"
- TX3 / RX3 ==> Pin 14, 15 ==> "Serial3"
Для моих тестов я буду использовать последовательный порт 2 (Serial 2) (пины 16 и 17).
Давайте подробнее рассмотрим модуль:
- Питание: 3.3 В. Это важно, т.к. модуль не работает с напряжением в 5 В, и может сгореть. Входные пины также не поддерживают напряжение 5 В, поэтому при получении сигнала Arduino важно использовать конвертер уровня напряжения (как раньше их называли «делитель напряжения»). Другая важная вещь – это иметь независимый источник питания на 3.3 В, т.к. не всегда Arduino выдает требуемый ток для корректной работы модуля.
- Модуль имеет 6 пинов:
- TX: он будет подсоединен к RX2 на плате MEGA (может быть соединен напрямую, т.к. MEGA интерпретирует 3.3 В как HIGH)
- RX : TX2 подсоединен к MEGA через конвертер уровня напряжения
- VCC : 3.3В
- GND : Земля. Важно помнить, что необходимо подсоединять GND платы ESP8266 к GND на плате MEGA.
- CH_PD (*) : подсоединен к пину 4 последовательного порта на плате MEGA, сброс для начала обмена данными
- RST : Сброс, обычно подсоединяется к VCC
- GPIO0 : свободно (Интерфейс ввода/вывода общего назначения)
- GPIO2 : свободно (Интерфейс ввода/вывода общего назначения)
(*)На некоторых сайтах в интернете показано, что этот пин напрямую подсоединен к VCC. В моем случае без «сброса» по последовательному порту SW (устанавливает пин в значение LOW) ESP8266 не работает.
Продаются адаптеры для включения модуля в макетную плату, т.к. физически расстояние между пинами ESP8266 не совпадает с отверстиями на макетной плате. Для соединения я использовал обычный кабель «мама/папа» типа FTDI (см. ниже). Цвета совпадают с диаграммой соединений.
Шаг 2: Цепь, которая будет использована в тестах
Ничего особенного в диаграмме аппаратных последовательных соединений (HW). Красная пластина – это независимый источник питания 3.3 В, смонтированный на макетной плате. Обратите внимание, что желтый провод соединен с TX2 на Arduino, проходит через делитель напряжения (1K и 2.2K резисторы), таким образом TX2 – это HIGH (5В), ESP8266 получает примерно 3.3В (для него это HIGH).
ШАГ 3: ТЕСТИРОВАНИЕ ESP8266 С ПОМОЩЬЮ AT-КОМАНД
Идея этого скетча состоит в тестировании и настройке модуля, который позволяет вводить AT-команды и видеть вывод в программе SerialMonitor.
В части «комментарии» перечислены основные AT-команды. В начале загрузки программы после имени модуля вы увидите много ненужного для нас текста в окне SerialMonitor, затем слово «ready». С этого момента вы можете вводить AT-команды.
Начните с простого «АТ», модуль должен ответить «ОК», протестируйте другие команды.
Картинка показывает, что должно появляться в окне SerialMonitor после того, как вы ввели различные команды.
- AT для тестовых примеров:
- AT =====> ESP8266 возвращает OK
- AT + RST =====> ESP8266 рестарт и возврат OK
- AT + GMR =====> ESP8266 возвращает версию AT; SDK version; id; OK
- AT + CWMODE? => ESP8266 возвращает режим работы
- AT + CWLAP ===> ESP8266 возвращает обнаруженные точки доступа
- AT + CIFSR ===> ESP8266 возвращает установленный IP
- AT + CIPMUX = 1 ==> Устанавливает плате ESP8266 режим работы с несколькими соединениями
- AT + CIOBAUD = 9600 ==> Изменить скорость обмена данными ==> ESP8266 возвращает OK
- AT + CIPSERVER = 1.80 ==> Устанавливает режим SERVER порт: 4040
- AT + CWMODE = 3 ==> Работа ESP8266 в комбинированном режиме (точка доступа (2) и сервер (1))
- AT + CWSAP = "Acc_Point_name", "password", wifi_Channel, cript # ==> j.
- AT + CWSAP = "ESP_8266_AP," 1234 ", 3.0
- AT + CWJAP = "SSID", "password" ==> Подключается к сети WiFi
- * = AT + CWJAP "ROVAI TIMECAP", "-1 mjr747"
****************************************************************** /
Ниже представлены файлы с инструкциями для проведения тестов: скетч Arduino, и два PDF документа (один с полным списком команд и другой с более полным руководством по настройке модуля для разных режимов работы: в качестве веб сервера, точки доступа и т.д.)
Шаг 4: Заключение
В следующих двух инструкциях я расскажу, как использовать Arduino/ESP8266 в качестве веб-сервера и как включать/отключать светодиоды (или любое другое устройство) удаленно, используя интернет.
Всего доброго!
Для дополнительной информации посетите мой блог: