Начало работы с ESP8266: руководство для начинающих

Интернет вещей (Internet of Things) и автоматизация дома (Home Automation) в настоящее время стали одними из ведущих трендов в развитии микроэлектроники. Для начинающих радиолюбителей особенно волнительным является процесс создания какого либо устройства, способного подключаться к мировой всемирной паутине интернета (World Wide Web). Доступ к таким устройствам можно получить из любой точки земного шара, в которой есть подключение к сети Интернет.

Некоторые могут подумать, что создание своими руками электронного устройства с подключением к сети Интернет является достаточно сложной задачей. Отчасти да. Но с появлением таким замечательных (и при этом сравнительно недорогих) модулей как ESP8266 от компании Espressif Systems эта задача значительно упростилась.

Внешний вид проекта для изучения основ работы с модулем ESP8266

В данной статье мы рассмотрим основы работы с модулем ESP8266-01. Для программирования данного модуля вам понадобится программатор (адаптер) FTDI USB to TTL. Более подробно все эти процессы вы можете посмотреть на видео, представленном в конце статьи.

Что такое ESP8266?

Большинство людей называют ESP8266 модулем Wi-Fi, но на самом деле это микроконтроллер. ESP8266 - это название микроконтроллера, разработанного компанией Espressif Systems, базирующейся в Шанхае. Данный микроконтроллер имеет возможность работы с технологией Wi-Fi, поэтому он широко используется в качестве модуля Wi-Fi.

Внешний вид модуля ESP8266

Существует множество типов модулей ESP8266, доступных в диапазоне от ESP8266-01 до ESP8266-12. В данной статье мы будем использовать модуль ESP8266-01 в связи с тем, что он самый дешевый.

Однако все модули ESP имеют только один тип процессора ESP и отличаются только типом используемого интерфейсного модуля. Интерфейсный модуль микроконтроллера ESP8266-01 имеет только 2 вывода GPIO, а другие модули ESP могут иметь большее количество выводов.

Назначение элементов на плате модуля ESP8266-01

Технические характеристики микроконтроллера ESP8266-01 приведены в следующей таблице.

Напряжение питания 3.3V
Потребление тока 10uA-170mA
Максимальный потребляемый ток во время программирования (прошивки) модуля 800mA
Флэш-память 16MB (512K normal)
Тип процессора Tensilica L106 32 bit
Тактовая частота процессора 80-160MHz
ОЗУ (RAM) 32K+80K
Число контактов GPIO 17 (большинство из них могут выполнять несколько функций)
АЦП 1 (с разрешением 10 бит)
Максимальное число соединений TCP 5

Хочется отметить, что в составе даже такого дешевого модуля как ESP8266-01 имеется аналого-цифровой преобразователь (АЦП), что позволяет подключать к нему различные аналоговые устройства. Также особенностью модуля является его очень большой потребляемый ток во время его прошивки (программирования) - 0,8 А.

Основы технологии Wi-Fi

Протокол управления передачей (Transfer Control Protocol, TCP), интернет-протокол (Internet Protocol, IP), протокол пользовательских дейтаграмм (User Datagram Protocol, UDP), точка доступа (Access Point, AP), станция (Station, Sta), идентификатор набора служб (Service Set Identifier, SSID), интерфейс прикладного программирования (Application Programming Interface, API), веб-сервер (Webserver). Знакомы ли вам эти термины? Если да, то можете пропустить данный раздел статьи и переходить сразу к следующему ее разделу. Если же нет – то желательно все же кратко познакомиться с этими терминами в данном разделе статьи.

Протокол управления передачей (TCP)

Протокол транспортного управления стека протоколов TCP/IP. Фактически, это набор правил, на основе которых работает Интернет. Wi-Fi – это технология, описывающая 1-й и 2-й уровни эталонной семиуровневой модели взаимодействия открытых систем (ЭМ ВОС), а чтобы выходить в сеть Интернет данная технология на более высоких уровнях ЭМ ВОС использует протокол IP (3-й уровень) и протоколы TCP или UDP на 4-м уровне. Вы можете настроить свой модуль ESP для работы по протоколу TCP/IP или протоколу UDP.

Протокол пользовательских дейтаграмм (UDP)

UDP также является еще одним типом интернет-протокола. Он обеспечивает более высокие скорости передачи данных чем TCP, но он менее точен (совершает больше ошибок при передаче). Причина в том, что протокол TCP использует подтверждение во время сеанса связи, а UDP – нет. TCP, в основном, используется в сетях, где требуется высокая надежность. UDP используется в местах, где скорость имеет более высокий приоритет, чем надежность. Например, UDP используется в видеоконференциях, потому что там, даже если некоторые пиксели не передаются (или передаются неправильно), то это не сильно повлияет на качество видео, но скорость соединения в видеоконференциях очень важна.

Большинство проектов и кодов ESP8266 работают по протоколам TCP/IP, протокол UDP используется значительно реже.

Точка доступа (AP) и станция (STA)

Как только вы начнете работать с модулем ESP, вы будете часто сталкиваться с этими двумя терминами. Допустим, вы и ваш друг хотели бы пользоваться Интернетом на своих смартфонах, но, поскольку у него нет активного подключения к Интернету, вы решаете включить свою точку доступа, и ваш друг подключается к ней и через нее получает доступ в сеть Интернет. Здесь ваш телефон, который обеспечивает подключение к Интернету, является точкой доступа (AP), а телефон вашего друга, который использует Интернет, называется станцией (STA).

Модуль ESP8266 может использоваться в трех режимах: режиме AP (точки доступа), режиме STA (станции) или как в режиме STA, так и в режиме AP (комбинированном).

Идентификатор набора служб/услуг (SSID)

Это достаточно простой термин. Наверняка все из вас пользовались Wi-Fi связью. Имя сети Wi-Fi называется ее SSID. Когда у нас есть несколько точек доступа для подключения станции, станция должна знать, к какой точке доступа она должна подключиться, поэтому каждой точке доступа (AP) присваивается идентификатор, который называется SSID.

Интерфейс прикладного программирования (API)

Проще говоря, API – это мессенджер, который принимает ваши запросы, обрабатывает их и возвращает вашей системе желаемый результат. Большинство действий, которые мы выполняем в сети Интернет, использует API, например, когда вы бронируете рейс, совершаете онлайн-покупку и т.д. Каждый веб-сайт связывает вас с API, где для вас выполняется определенная часть работы, такая как регистрация, оплата и т. д.

Микроконтроллер ESP8266 использует API для общения с миром Интернета. Например, если он хочет узнать время, погоду или что-то еще, то он должен запросить это в форме API на соответствующем веб-сайте. Этот веб-сайт получит запрос и вернет желаемый результат нашему модулю ESP.

Веб-сервер

Веб-сервер – это то, что отвечает за отображение содержимого веб-сайта. Все содержимое этого конкретного веб-сайта будет загружено на его веб-сервер. Существуют выделенные компьютеры, работа которых заключается только в том, чтобы выполнять функции веб-сервера. Мы также можем запрограммировать наш ESP8266 для работы в качестве веб-сервера и подключиться к нему из любой точки мира.

Способы программирования ESP8266

Существует два основных способа работы с модулем ESP8266. Первый – это использование AT команд. Второй – использование Arduino IDE. Давайте более подробно разберем эти способы.

Все модули ESP8266 поставляются с завода с заранее загруженной в них прошивкой (default firmware). Фактически, прошивка модуля – это набор SDK+API. Эта прошивка (встроенная программа) и позволяет производить программирование модуля ESP8266 с помощью AT команд.

Второй способ непосредственного программирования модуля ESP8266 – это использование интегрированной среды Arduino IDE (сама плата Arduino при этом не нужна) со всеми ее библиотеками.

Любой проект на ESP8266 можно реализовать с помощью любого из этих двух методов. Но если вы будете использовать Arduino IDE для программирования модуля ESP8266 вы, скорее всего, уже не сможете использовать AT команды потому что исходный SDK (software development kit, набор инструментальных средств разработки программного обеспечения) модуля может быть поврежден. В этом случае вы должны будете во время прошивки модуля ESP использовать настройки по умолчанию.

Аппаратное обеспечение для программирования модуля ESP8266

Модуль ESP8266 имеет 8 контактов. Его внешний вид и распиновка показаны на следующих рисунках.

Внешний вид модуля ESP8266

Распиновка модуля ESP8266

Назначение контактов модуля ESP8266:

  • 1 – земля, 8 – питание. По документации напряжение подается до 3,6 В – это важно учесть при работе с Ардуино, на которую обычно подают 5 В.
  • 6 – RST, нужна для перезагрузки микроконтроллера при подаче на него низкого логического уровня.
  • 4 – CP_PD, также используется для перевода устройства в энергосберегающий режим.
  • 7 и 0 – RXD0 и TXD0, это аппаратный UART (последовательный порт), необходимый для перепрошивки модуля.
  • 2 – TXD0, к этому контакту подключается светодиод, который загорается при низком логическом уровне на GPIO1 и при передаче данных по UART.
  • 5 – GPIO0, порт ввода и вывода, также позволяет перевести устройство в режим программирования (при подключении порта к низкому логическому уровню и подачи напряжения).
  • 3 – GPIO2, порт ввода и вывода.

К сожалению, модуль ESP8266 не является "дружественным" к макетной плате (breadboard friendly) и поэтому его нельзя на ней непосредственно закрепить. Также, в отличие от платы Arduino у него нет собственного драйвера для преобразования интерфейса USB в интерфейс последовательного порта (USB to Serial driver), следовательно, нам необходимо будет использовать FTDI USB to TTL Serial Adapter Module (модуль адаптера FTDI для преобразования USB в логику TTL) чтобы взаимодействовать с данным модулем. Прежде чем собирать схему нашего проекта убедитесь в том, что используемая вами плата FTDI может работать при напряжении 3.3V.

Внешний вид модуля (платы) FTDI

Итак, как мы знаем, наш модуль ESP8266 мы должны запитывать от напряжения 3.3V. Но поскольку во время загрузки программного обеспечения (прошивки) модуль может потреблять ток до 0.8A, то он может работать некорректно если мы запитаем его от платы адаптера FTDI, поэтому мы соберем отдельную цепь для его питания на основе регулятора напряжения LM317.

Необходимые компоненты

  1. Модуль ESP8266-01 (купить на AliExpress).
  2. Перфорированная плата.
  3. Плата адаптера FTDI (FTDI breakout Board) (купить на AliExpress).
  4. Регулятор напряжения LM317 (купить на AliExpress).
  5. Конденсатор 0,1 мкФ (купить на AliExpress).
  6. Конденсатор 10 мкФ (купить на AliExpress)
  7. Разъем типа Barrel Jack.
  8. Кнопка.
  9. Переключатель.
  10. Соединительные колодки "мама", "папа".
  11. Соединительные провода.
  12. Адаптер 12V для питания платы.

Схема проекта

Схема для программирования модуля ESP8266 представлена на следующем рисунке.

Схема для программирования модуля ESP8266Некоторые из вас, возможно, пытались запитывать ваш модуль ESP напрямую с вашей платы FTDI и заставить его работать (в частности, сейчас достаточно часто используется программирование модулей ESP с помощью использования платы Arduino в качестве платы FTDI как, например, продемонстрировано в данной статье), но ниже приведены причины для создания собственной схемы питания модуля ESP:

  1. Только некоторые из плат FTDI могут обеспечить достаточный ток для модуля ESP. При этом некоторые модули ESP могут потреблять больший ток, чем другие аналогичные модули, во время загрузки в них программы. Следовательно, всегда безопаснее иметь свой собственный источник (схему) питания для модуля ESP. Эту схему проще собрать на точечной плате, нежели на макетной плате.
  2. Перед загрузкой кода программы всегда необходимо сбрасывать модуль ESP. Создание собственной схемы питания модуля позволяет легко интегрировать в нее кнопку для осуществления сброса модуля.
  3. Вывод GPIO0 модуля ESP должен быть заземлен при программировании с помощью Arduino IDE и должен быть оставлен свободным (не подключенным) при использовании AT команд – это легко реализовать в нашей собственной схеме. Мы использовали переключатель для переключения между режимом AT команд и режимом программирования с помощью Arduino IDE.
  4. Программирование модуля ESP осуществляется с использованием последовательной связи – при использовании макетной платы некоторые ненадежно закрепленные контакты могут привести к ошибке в процессе последовательной передачи данных, тогда вам придется повторять процесс программирования модуля сначала.

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

Создание платы для программирования ESP8266

Итак, мы занимаемся созданием платы для программирования модуля ESP8266, которая имеет свою собственную схему питания ESP8266.

Как уже отмечалось, наш модуль потребляет ток примерно 800mA во время его программирования. Наш собственный блок для питания модуля мы собрали на основе микросхемы регулятора напряжения LM317, которая выдерживает ток до 1.2A. Входное напряжение на микросхему LM317 в нашем проекте подается 12V, его можно обеспечить с помощью простого адаптера 12V 2A. На выходе микросхемы LM317 мы получаем стабилизированное напряжение 3.3V с помощью резисторов сопротивлением 220 и 360 Ом.

Формула для расчета выходного напряжения микросхемы LM317 выглядит следующим образом:

Vout = 1.25*(1+ (R2/R1))

В нашем случае, R1= 220 Ом, R2= 360 Ом.

Схема подключения модуля ESP8266 к остальным элементам схемы нашего проекта представлена в следующей таблице.

Номер контакта Название контакта ESP8266 Куда подключен
1 Ground земля платы FTDI
2 GPIO2 оставлен не подключенным
3 GPIO0 переключение между режимами программирования
4 Rx Tx платы FTDI
5 Tx Rx платы FTDI
6 CH_PH 3.3V от LM317
7 Reset к кнопке сброса
8 Vcc 3.3V от LM317

Для быстрого переключения между режимами AT команд и программирования с помощью Arduino IDE мы использовали в схеме переключатель (jumper), который на подает на GPIO 0 модуля землю (ground) во время использования Arduino IDE и оставляет его "свободно висящим в воздухе" во время использования AT команд.

Кнопка в схеме используется для сброса модуля ESP – во время ее нажатия происходит замыкание контакта сброса модуля (RST pin) на землю. Каждый раз перед программированием модуля ESP мы должны сбрасывать его.

После сборки схемы проекта на перфорированной плате у нас получилась следующая конструкция проекта.

Собранная на перфорированной плате схема проекта

Вместо перфорированной платы вы можете использовать макетную плату.

После сборки схемы подайте на нее питание без подключения модуля ESP и платы FTDI и проверьте точно ли мы вы получаете напряжение 3.3V на выходе микросхемы LM317. Проверьте то, что ваша плата FTDI может работать от 3.3V, и после этого подключайте плату FTDI и модуль ESP в схему.

Когда на модуль ESP будет подано питание, на нем должен загореться светодиод красного цвета.

Горящий светодиод красного цвета свидетельствует о работоспособности модуля ESP

После этого подключите вашу плату FTDI к компьютеру используя кабель mini-USB to USB, откройте диспетчер устройств на компьютере и в нем вы должны обнаружить к какому COM порту компьютера подключилась ваша плата FTDI, как показано на следующем рисунке.

COM порт компьютера которому подключен наш модуль ESP8266

После этого можно приступать к программированию вашего модуля ESP8266. Можно начать с AT команд, а потом перейти к его программированию с помощью Arduino IDE.

Видео, демонстрирующее работу проекта

Источник статьи

(Проголосуй первым!)
Загрузка...
77 просмотров

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

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