Микроконтроллер esp8266: область применения и подключение

Знакомство с недорогим и функциональным микроконтроллером ESP8266: прошивка и пример использования

  • Статьи, 8 мая 2019 в 12:29
  • Александр Ланский

ESP8266 — китайский микроконтроллер (далее МК) от производителя Espressif с поддержкой WiFi-интерфейса. Часто этот МК позиционируют только как WiFi-модуль, который работает в связке с другими МК. Однако встроенных возможностей МК серии ESP достаточно для реализации большого количества проектов.

В большинстве случаев этот МК применяют в системах автоматизации быта и IoT (Internet of Things — Интернете вещей). Управлять всем этим можно не только с браузера, но и из приложений на Android/iOS/Desktop, хотя первый вариант имеет больше «кроссплатформенности», т. к. сейчас браузер есть почти на всём — от часов до телевизоров. Если МК будет применяться там, куда не достаёт WiFi-сеть, либо её там попросту и не должно быть (дачи, теплицы), то ESP8266 может работать в режиме точки доступа. У этого МК уже существует более мощный и продвинутый брат — ESP32.

Примечание В этой статье не будут рассмотрены практические примеры применения ESP8266. Речь пойдёт об основных преимуществах и возможностях этого МК.

У этого МК нет встроенной flash-памяти, поэтому он работает с внешней flash-памятью по интерфейсу SPI. В большинстве популярных версий МК её объём варьируется от 512 Кбайт до 4 Мбайт. При желании и умении микросхему памяти можно будет перепаять на версию до 32 Мбайт.

Разновидности МК серии ESP и их плат

Существует около полутора десятка версий МК серии ESP и огромное количество плат с ними. Рассмотрим самые популярные из них.

Микроконтроллеры

ESP-01

Считается самым популярным из серии. Имеет 8 разведённых контактов (VCC, GND, UTXD, URXD, CH_PD, GPIO0, GPIO2, GPIO6) и PCB-антенну (печатный проводник на самой плате). Из разведённых выводов тут присутствуют только 3 GPIO, но не стоит видеть в этом одни минусы. Если нужно будет управлять одним реле или получать данные с датчика температуры, вам не понадобятся все выводы МК, достаточно будет лишь пары. К тому же, существуют платы и шилды с возможностью простой коммутации именно к этой версии МК. Например такая:

ESP-03

Здесь появляется керамическая антенна. Она считается немного эффективней своего печатного собрата. Также на плате разведены все доступные выводы GPIO. В этой статье описана разница между типами антенн.

ESP-07

В этой версии в глаза сразу бросается металлический экран (который перед этим появляется на ESP-06). На борту керамическая антенна и разъём для внешней антенны.

ESP-12

Разные варианты микроконтроллера ESP-12. Источник

В свою очередь, существует несколько вариантов этой версии: ESP-12S, ESP-12F, ESP-12E. Вторая и третья версии имеют на торце дополнительно 6 разведённых контактов.

Платы

WeMos D1 mini

Плата WeMos D1 mini. Источник

Имеет распайку девяти GPIO-контактов. На плате имеется небезызвестный мост CH34x (такие часто ставят на клоны Arduino). Установлен МК с 4 Мбайт flash-памяти. Недостаток для некоторых — придётся самому паять контакты на плату (идут в комплекте). Конструкционно совместима с различными выпускаемыми шилдами реле/датчиками.

NodeMCU v0.9/v1

Плата NodeMCU v0.9. Источник

Первое поколение плат серии NodeMCU. На ней распаяны все 11 GPIO-портов. Некоторые из них обладают дополнительными функциями (UART, I2C, SPI, PWM, ADC). Хотя на плате впаяны контакты, она занимает всю ширину беспаечной макетной платы, что затрудняет работу на ней. МК имеет 4 Мбайт flash-памяти. Также имеется мост CH340.

NodeMCU v3

Плата NodeMCU v3. Источник

Финальная версия платы этой серии. Существует и v2 «Amica», которая меньше по габаритам. v3 носит название «LoLin» и отличается от предыдущей версии только размерами и незначительными деталями (например дополнительной распайкой шины питания). Кроме традиционного моста CH340/CH341 на платы ставят чип CP2102, так что внимательней с выбором драйвера на них.

Характеристики

Все эти (и не только эти) микроконтроллеры выполнены на чипсете ESP8266EX, а следовательно, характеристики у них одинаковые:

  • Протоколы: 802.11 b/g/n/e/i.
  • Диапазон частот: 2.4 ГГц – 2.5 ГГц.
  • Процессорное ядро: Tensilica L106 32 разряда.
  • Диапазон напряжений питания: 2.5 В – 3.6 В.
  • Среднее потребление тока: 80 мA.
  • Режимы WiFi: Station/SoftAP/SoftAP+Station.
  • Безопасность: WPA/WPA2.
  • Шифрование: WEP/TKIP/AES.
  • Обновление прошивки: через UART, по радиоканалу (OTA — Other The Air).
  • Сетевые протоколы: IPv4, TCP/UDP/HTTP/FTP.
  • Поддержка WiFi Direct (P2P), P2P Discovery, P2P GO (Group Owner) mode, GC (Group Client) mode, P2P Power Management.
  • Встроенные аппаратные ускорители: CCMP (CBC-MAC, режим счётчика), TKIP (MIC, RC4), WAPI (SMS4), WEP (RC4), CRC.
  • Поддержка LUA-скриптов.

Как работать с ESP8266?

Есть два способа работы с ним: управление через AT-команды и автономная работа со своей прошивкой. В первом случае ESP8266 работает только в паре с другими МК, во втором — может работать независимо (хотя никто не запрещает присоединить её к другому МК).

Sportmaster Lab, Москва, до 150 000 ₽ (до налогов)

«Из коробки» МК поставляется с прошивкой для работы через AT-команды. Для этого ESP8266 подключается к любому другому МК по UART-интерфейсу. Для демонстрации работы AT-команд ESP8266 можно подключить к компьютеру через USB-UART переходник и запустить монитор последовательного порта (например из Arduino IDE). Про то, как работать с этими командами, можно прочитать в этой статье.

Прошивка

В большинстве случаев намного удобней прошивать МК и работать с ним со своей прошивкой. Однако тут тоже есть свои нюансы. Вот 3 варианта событий:

  • У вас «голый» ESP8266, например ESP-01. Вам потребуется USB-UART переходник, который нужно подключить к МК. Этот переходник обязательно должен быть на 3-вольтовой логике, т. к. иначе можно легко отправить ваш МК в кибер-Вальхаллу. Про процесс подключения можно прочитать здесь.
  • Второй случай идентичен первому, кроме того, что вместо переходника можно использовать любую плату Arduino. Достаточно специальным образом подключить ESP8266 к UART-контактам Arduino, а её саму «отключить», замкнув контакт аппаратного сброса (RESET) на землю. Естественно, питать ESP8266 нужно будет от шины питания 3.3 В. В этом случае в качестве переходника USB-UART будет выступать мост (чаще всего CH340) на самой плате Arduino. Этот процесс также описан в статье выше.
  • Лучший вариант — это плата с USB-UART мостом на борту (как NodeMCU, WeMos и прочие). В этом случае ничего дополнительного делать не нужно — просто подключайте плату через USB.

В чём прошивается?

Существует несколько софтов для прошивки МК. Например NodeMCU Flasher (которая подходит не только для плат NodeMCU) или ESPTool (необходим Python).

Однако в этой статье работа с МК и процесс прошивки будут рассмотрены в Arduino IDE.

Изначально среда Arduino IDE не предназначена для работы с МК серии ESP. Чтобы это исправить, идём в Файл → Настройки и в поле Дополнительные ссылки для Менеджера плат вставляем эту ссылку:

Потом открываем Инструменты → Плата → Менеджер плат и в открывшемся списке в самом низу находим плату «esp8266 by ESP8266 Community» (если с этим возникли трудности — используем поиск вверху окна). Устанавливаем последнюю версию платы (около 150 Мбайт).

После установки в списке плат появится немалое количество плат. Если не нашли свою плату или не знаете её названия — выбирайте Generic ESP8266 Module. Теперь можно выбрать свой МК в списке COM-портов.

Теперь что касается скорости передачи. У ESP8266 две скорости передачи: основная — её вы указываете при инициализации последовательного порта, и скорость, на которой передаётся отладочная информация. Она передаётся сразу после подачи питания на МК. Обычно это скорости 115200 бод и 74800 бод 0 соответственно.

Основы

Если вы не владеете базовыми знаниями работы с платформой Arduino, наверстать упущенное можно здесь:

После скачивания платы ESP8266 с помощью менеджера, в примерах появится большое количество скетчей. Рассмотрим один из них (Файл → Примеры → ESP8266WebServer → HelloServer):

Что делает этот скетч? МК подключается к вашей WiFi-сети и запускает сервер. В монитор последовательного порта выведется локальный IP-адрес (к примеру, 192.168.0.105 ). Вбиваем этот IP в адресную строку браузера, после чего в нём должна отобразиться строка «Привет от ESP8266!». Таким же образом можно проверить адрес /inline .

Ознакомиться с API МК можно в их официальном репозитории.

Распределение памяти

Как уже говорилось — встроенной памяти чипсет не имеет, а поэтому используется внешняя — от 512 Кбайт до 4 Мбайт. Эта память распределена на следующие разделы:

  • скетчи (память для прошивки);
  • файловая система SPIFFS;
  • OTA-Update (прошивка, переданная «по воздуху»);
  • EEPROM (да-да, её у МК тоже нет, поэтому она имитируется на flash-памяти);
  • конфигурация WiFi.

Файловая система SPIFFS

Во внешней flash-памяти явно есть свои «плюшки». Одна из них — файловая система. Как это ни странно, в неё можно с лёгкостью записать файлы (как на какой-нибудь накопитель). На аппаратном уровне это можно было бы реализовать подключив к МК модуль SD-карт. Однако это решение требует свободных портов (которых иногда может не быть). Поэтому SPIFFS является очень полезным в данном плане.

Для чего? На МК часто заливаются веб-странички, медиа-файлы и прочее. Если HTML-страницу в 20 строк ещё приемлемо хранить в коде, то что делать с большими сайтами? При каждом изменении менять в коде? А с изображениями как? Сериализовать (бывает и такое) и тоже вставлять в код? Вот в таких случаях и спасает файловая система.

Размер файловой системы (от 32 Кбайт до 15 Мбайт) зависит от самого объема flash-памяти и от конфигурации, выставленной в Инстурменты → Flash size. Например, конфигурация 4M (2M SPIFFS) предназначена для МК с общим объёмом flash-памяти 4 Мбайт, 2 Мбайт из которых будут выделены под файловую систему.

SPIFFS не работает с папками — она содержит только список файлов. Соответственно, если загрузить в неё папку style, в которой будет файл header.css, то в файловую систему систему запишется файл с именем /style/header.css. Об этом стоит помнить, потому что длина файлового имени не должна превышать 31 символ (читается 32, но символ с кодом 0 отведён под завершение строки). В этот 31 символ, естественно, входят все слэши, точки перед расширением и само расширение. Поэтому придётся воздержаться от многоуровневых структур и длинных имён файлов/папок.

Для загрузки файлов в файловую систему МК потребуется инструмент ESP8266FS, который интегрируется в Arduino IDE. Инструкция по установке:

  1. Качаем инструмент по ссылке выше.
  2. В папке Arduino IDE создайте папку tools (если её там ещё нет).
  3. В папку tools распакуйте скачанный архив. Должно быть так:
    …/Arduino/tools/ESP8266FS/tool/esp8266fs.jar.
  4. После запуска среды в папке скетча (Скетч → Показать папку скетча) нужно создать папку data. Её содержимое будет непосредственно загружаться в файловую систему.
  5. После кликаем в Инструменты → ESP8266 Sketch Data Upload, чтобы загрузить данные в файловую систему. После успешной загрузки в панели статуса высветится «SPIFFS Image Uploaded». Перед процессом загрузки в файловую систему обратите внимание: если открыт монитор последовательного порта — закрываем его.

Как работать с SPIFFS и файлами в ней, можно узнать в этой статье.

Энергонезависимая память EEPROM

Уже упоминалось, что сам чипсет не имеет энергонезависимой памяти, поэтому она имитируется через внешнюю flash-память. Из-за этого работа с ней немного отличается от стандартной. Перед считыванием или записью данных нужно инициализировать EEPROM, указав при этом выделяемую под неё память (от 4 до 4096 байт) функцией EEPROM.begin(size) . Привычная функция EEPROM.write(addr, value) записывает данные не на саму энергонезависимую память, а в оперативную. Чтобы внесённые данные записались в память, нужна функция EEPROM.commit() (или же EEPROM.end() , чтобы заодно очистить данные из оперативной памяти). Метод EEPROM.read(addr) возвращает байт из памяти по адресу.

Прошивка «по воздуху» OTA-Update

ESP8266 имеет возможность обновления прошивки по сети WiFi. Это удобно, если МК находится в труднодоступном месте. Кроме того, прошивки «по воздуху» чаще всего быстрее, чем по проводу.

Вам потребуется установленный Python.

После этого достаточно в метод loop() добавить строку: ArduinoOTA.handle() .

Прошиваем МК по проводу. В случае успешной загрузки в списке портов появится новый хост с именем «esp8266-xxxxxx», где esp8266 — указанное выше имя хоста, а xxxxxx — локальный IP-адрес МК. Выбираем его.
Теперь МК можно прошивать «по воздуху».

ESP8266 Урок 1 Первое знакомство с контроллером ESP8266

Наконец-то, по многочисленным просьбам мы начинаем знакомство, а впоследствии, как я думаю, и полноценную работу по программированию микроконтроллера ESP8266.

Данный контроллер является собственностью китайского производителя Espressif, и основную свою популярность среди программистов он снискал благодаря наличию беспроводного интерфейса Wi-Fi. Также немаловажным фактором является его очень низкая стоимость и также наличие на сегодняшний момент многочисленной документации, а также программного обеспечения, позволяющего самостоятельно писать для него программы на различных языках. О сфере использования данного контроллера в различных устройствах я вообще даже боюсь и говорить. Она очень многообразна: интернет вещей, сбор информации с различных датчиков и приборов, передача на другие устройства, где нет возможности протянуть к ним провода и т.д.

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

Вот это лишь некоторая часть из них

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

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

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

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

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

Основные технические характеристики контроллера ESP8266 (а точнее ESP8266EX), касающиеся передачи данных по Wi-FI:

  1. поддержка протокола 802.11 b/g/n,
  2. поддержка 802.11n (2.4 GHz), до 72.2 Mbps,
  3. дефрагментация,
  4. 2 виртуальных передатчика Wi-Fi,
  5. поддержка шифрования WPA/WPA2 WEP/TKIP/AES,
  6. выходная мощность +20 дБм в режиме 802.11b,
  7. WiFi режим — STA (станция), программная точка доступа, программная точка доступа + STA (станция).

Это лишь некоторые самые интересные характеристики по передаче данных.

Также приведу некоторые остальные характеристики:

  1. встроенный MCU 32-бит с низким энергопотреблением,
  2. встроенные блоки ФАПЧ и управления мощностью,
  3. встроенный стек протоколов TCP/IP с поддержкой протоколов передачи данных IPv4, TCP/UDP/HTTP
  4. интерфейсы SDIO 2.0, SPI, HSPI UART, I2C, I2S, IRDA, PWM, GPIO,
  5. поддержка различных режимов пониженного энергопотребления,
  6. диапазон рабочих температур –40°C

125°C,

  • загрузка (а также и выгрузка) ПО по интерфейсу UART,
  • питание 2.5V

    3.6V (стабильная работа контроллера, как подтвердила практика, наблюдается при стабилизированном напряжении 3.3V).

    Токи потребления контроллером в активном режиме при определённых режимах и скоростях передачи данных

    А это токи потребления контроллером в различных режимах пониженного энергопотребления, а также что остаётся в данных режимах в работе

    Находится микроконтроллер ESP8266 в 32-пинном QFN корпусе.

    Вот основное назначение ножек (возможен REMAP)

    А вот это блок-схема

    То, что там нарисован FLASH вовсе не свидетельствует о его наличии, поэтому он него идёт соединительная линия к интерфейсам, подчёркивающая его подключение через внешний интерфейс.

    Также об этом свидетельствует и вот этот пункт, в котором обозначены параметры подключаемого внешнего FLASH

    Оперативной памяти в контроллере около 50 килобайт.

    Процессор в контроллер ESP8266 встроен Xtensa L106 от компании Tensilica. Работает он на частоте до 80 мегагерц, возможен также негарантированный разгон до 160 МГц.

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

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

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

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

    Плата от компании Espressif с чипом ESP8266

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

    Главное преимущество контроллера неизменно, как и у всей продукции данного производителя – низкая цена. Стандартная плата под Bluetooth-адаптер от других компаний обойдётся вам в среднем в 2-3 раза дороже, а здесь вы получаете микроконтроллер с функционалом для работы в двух режимах.

    Теперь все желающие могут подключаться к домашнему WI-FI с помощью компьютеру или использовать сам ноутбук в качестве точки доступа, раздавая интернет. Давайте подробнее разберёмся, что это такое, для тех, кто пропустил официальный выход микроконтроллера или плохо разбирается в теме.

    Что такое микроконтроллер ESP8266

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

    Выбирайте UART или SPI, если хотите сделать оборудование полностью автономным. Именно все эти достоинства дали чипу прозвище «революционный» при его выходе, и если вы занимаетесь проектированием систем и робототехникой на основе Ардуино или РПИ, то вам определённо стоит купить ESP8266 и протестировать его в своих проектах. Небольшое время отклика, скоростные интерфейсы и возможность использования одновременно нескольких протоколов в многоканальном режиме говорят сами за себя.

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

    1. Вместе с другими микроконтроллерами, под которые отдельно пишется ПО на ардуино;
    2. С прямым подключением к ПК и дальнейшим контролем через модуль UART.

    Для программистов-инженеров плата просто находка, ведь написание прошивок происходит на высокоуровневом языке с кучей интерпретаторов в придачу. Язык Ардуино является мультипарадигмальным, что подходит под реализацию большинства алгоритмов. Для обновления прошивки, достаточно подключить устройство через USB-модуль и залить прошивку с помощью стандартного приложения.

    Тот же USB-TTL-конвертер, что и на большей части оборудования для ПК, вкупе с возможностью подключения через дополнительные контроллеры и платы от Ардуино делает девайс полностью универсальным.

    Распиновка ESP8266 ESP-12E

    Область применения ESP8266

    Как уже упоминалось выше, ESP8266 полностью универсален, что позволяет применять его в любых системах, где вам нужен контроль связи по интернету. Иными словами, если необходимо принимать и посылать лишь определённые пакеты по определённым протоколам, для фильтрации, защиты системы от взлома и ДДОС атак, девайс вам пригодится.

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

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

    По своей сути, устройство имеет обширную область применения, от возможности собрать простейший wi-fi-модем и до сложных систем, на подобии умного дома. Ведь девайс сам способен распространять пойманную сеть, становясь точкой доступа, что также позволяет применять его в качестве усилителя сигнала и одновременно с тем, фильтра соединения. Однако скорость пока оставляет желать лучшего, но всегда можно приобрести усилитель.

    ESP-07 ESP8266 последовательный модуль беспроводного приемопередатчика Wi-Fi для Arduino

    Программирование отладка и подключение

    Подключить модуль можно с помощью обычной макетной платы и проводов типа «мать-отец», подходящих к выбранной вами плате. По желанию можете использовать кабеля USB-TTL и прочие, подходящие к описанным выше протоколам соединения с ПК, и конвертер от PL2303 и до FTDI.

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

    Однако, тот же кабель от Ардуино и ЮСБ-ТТЛ не стоит использовать, как основной источник питания микроконтроллера, иначе придётся повозится с кучей ошибок системы и багов. Проще сразу применять отдельные кабели для питания и расширенный набор.

    Вывод

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

    Вы можете приобрести и более мощные программируемые передатчики или микроконтроллеры, но в своём ценовом сегменте у ESP8266 нет конкурентов. Да и такой базовой мощности хватит большинству новичков и мидл-разработчиков.

    WiFi ESP8266 в проектах Arduino

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

    Описание ESP8266

    ESP8266 – микроконтроллер с интерфейсом WiFi, который имеет возможность исполнять программы из флеш-памяти. Устройство было выпущено в 2014 году китайской фирмой Espressif и практически сразу же стало популярным.

    Контроллер недорогой, обладает небольшим количеством внешних элементов и имеет следующие технические параметры:

    • Поддерживает Wi-Fi протоколы 802.11 b/g/n с WEP, WPA, WPA2;
    • Обладает 14 портами ввода и вывода, SPI, I2C, UART, 10-бит АЦП;
    • Поддерживает внешнюю память до 16 МБ;
    • Необходимое питание от 2,2 до 3,6 В, потребляемый ток до 300 мА в зависимости от выбранного режима.

    Важной особенностью является отсутствие пользовательской энергонезависимой памяти на кристалле. Программа выполняется от внешней SPI ПЗУ при помощи динамической загрузки необходимых элементов программы. Доступ к внутренней периферии можно получить не из документации, а из API набора библиотек. Производителем указывается приблизительное количество ОЗУ – 50 кБ.

    Особенности платы ESP8266:

    • Удобное подключение к компьютеру – через USB кабель, питание от него же;
    • Наличие встроенного преобразователя напряжения 3,3В;
    • Наличие 4 Мб флеш-памяти;
    • Встроенные кнопки для перезагрузки и перепрошивки;
    • Все порты выведены на плату на две гребенки с шагом 2,5 мм.

    Сферы применения модуля ESP8266

    • Автоматизация;
    • Различные системы для умного дома: Беспроводное управление, беспроводные розетки, управление температурой, дополнение к сигнализационным системам;
    • Мобильная электроника;
    • >Распиновка esp8266

    Существует огромное количество разновидностей модуля ESP8266. На рисунке представлены некоторые из них. Наиболее популярным вариантом является ESP 01.

    Исполнение программы требуется задавать состоянием портов GPIO0, GPIO2 и GPIO15, когда заканчивается подача питания. Можно выделить 2 важных режима – когда код исполняется из UART (GPIO0 = 0, GPIO2 = 1 и GPIO15 = 0) для перепрошивки флеш-карты и когда исполняется из внешней ПЗУ (GPIO0 = 1, GPIO2 = 1 и GPIO15 = 0) в штатном режиме.

    Распиновка для ESP01 изображена на картинке.

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

    Основные отличия Ардуино от ESP8266

    • ESP8266 имеет больший объем флеш-памяти, при этом у ESP8266 отсутствует энергонезависимая память;
    • Процессор ESP8266 быстрее, чем у Ардуино;
    • Наличие Wi-Fi у ESP8266;
    • ESP8266 потребляеn больше тока, чем для Ардуино;

    Программирование ESP8266 в Arduino IDE

    Программный комплект разработчика esp8266 включает в себя:

    • Компилятор из пакета GNU Compiler Collection.
    • Библиотеки, стеки протоколов WiFi, TCP/IP.
    • Средство загрузки информации в программу контроллера.
    • Операционная IDE.

    Изначально модули ESP8266 поставляются с прошивкой от фирмы-изготовителя. С ее помощью можно управлять модулем с внешнего микроконтроллера, реализовывать работу с Wi-Fi как с модемом. Также существует множество других готовых прошивок. Некоторые из них позволяют настраивать работу модуля при помощи WEB-интерфейса.

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

    В настоящий момент для ESP8266 можно реализовать следующие функции:

    • Основные функции языка Wiring. Управлять портами GPIO можно точно так же, как и пинами на плате Ардуино: pinMode, digitalRead, digitalWrite, analogWrite. Команда analogRead(А0) позволяет считать значения АЦП. При помощи команды analogWrite (pin, value) можно подключить ШИМ на нужном выходе GPIO. При value=0 ШИМ отключается, максимальное значение достигает константы, равной 1023.С помощью функций attachInterrupt, detachInterrupt можно выполнять прерывание на любом порте GPIO, кроме 16.
    • Тайминг и delay. Используя команды millis и micros можно вернуть мс и мкс, которые прошли с момента старта. Delay позволяет приостановить исполнение программы на нужное время. Также функция delay(…) позволяет поддерживать нормальную работу Wi-Fi, если в скетче присутствуют большие элементы, которые выполняются более 50 мс. Yield() – аналог функции delay(0).
    • Serial и Serial1 (UART0 и UART1). Работа Serial на ESP8266 аналогична работе на ардуино. Запись и чтение данных блокируют исполнение кода, если FIFO на 128 байт и программный буфер на 256 байт заполнены. Объект Serial пользуется аппаратным UART0, для него можно задать пины GPIO15 (TX) и GPIO13 (RX) вместо GPIO1(TX) и GPIO3(RX). Для этого после функции Serial.begin(); нужно вызвать Serial.swap();. Аналогично Serial1 использует UART1, который работает на передачу. Необходимый пин для этого GPIO2.
    • Макрос PROGMEM. Его работа аналогична работе в Ардуино. Позволяет перемещать данные read only и строковые постоянные во flash-память. При этом в ESP8266 не сохраняются одинаковые константы, что приводит к дополнительной трате флеш-памяти.
    • I2C. Перед началом работы с шиной I2C выбираются шины с помощью функции Wire.pins(int sda, int scl).
    • SPI, OneWire – поддерживаются полностью.

    Использование esp8266 для связи Ардуино по WiFi

    Перед подключением к Ардуино важно помнить, что у ESP8266 напряжение питания не может быть выше 3,6, в то время как на пате Ардуино напряжение равно 5 В. Соединять 2 микроконтроллера нужно с помощью резистивных делителей. Перед подключением модуля нужно ознакомиться с распиновкой выбранного ESP8266. Схема подключения для ESP8266-01 представлена на рисунке.

    3,3 В с Ардуино – на Vcc&CH_PD на модуле ESP8266, Земля с Ардуино – к земле с ESP8266, 0 – TX, 1 – RX.

    Для поддержки стабильной работы ESP8266 необходим источник постоянного напряжения на 3,3 В и максимальный ток 250 мА. Если питание происходит от конвертера USB-TTL, могут происходить неполадки и сбои в работе.

    Работа с библиотекой Wi-Fi для ESP8266 схожа с библиотекой для обыкновенного шилда. Имеется несколько особенностей:

    • mode(m) – для выбора одного из трех режимов: клиент, точка доступа или оба режима единовременно.
    • softAP(ssid) – нужен для создания открытой точки доступа.
    • softAP(ssid, password) – создает точку доступа с паролем, который должен состоять не менее чем из 8 знаков.
    • WiFi.macAddress(mac) и WiFi.softAPmacAddress(mac)– определяет МАС адрес.
    • WiFi.localIP() и WiFi.softAPIP() – определение IP адреса.
    • printDiag(Serial); – позволят узнать данные о диагностике.
    • WiFiUDP – поддержка передачи и приема multicast пакета в режиме клиента.

    Работа выполняется по следующему алгоритму:

    • Подключение USB-TTL к USB и к ESP.
    • Запуск Arduino >NodeMCU на базе esp8266

    NodeMCU – это платформа, основанная на базе модуля esp8266. Используется для управления схемой на расстоянии при помощи интернета через Wi-Fi. Плата малогабаритная, компактная, стоит дешево, на лицевой стороне имеется разъем для USB. Рядом кнопки для отладки и перезагрузки микроконтроллера. Также установлен чип ESP8266. Напряжение питания – от 5 до 12 В, желательно подавать более 10 В.

    Большим преимуществом платы является ее малое энергопотребление. Нередко их используют в схемах с автономным питанием. На плате расположены всего 11 портов общего назначения, из них некоторые имеют специальные функции:

    • D1 и D2 – для интерфейса I2C/ TWI;
    • D5-D8- для интерфейса SPI;
    • D9, D10 – для UART;
    • D1-D10 – могут работать как ШИМ.

    Платформа имеет современное API для аппаратного ввода и вывода. Это позволяет сократить количество действий во время работы с оборудованием и при его настройке. С помощью прошивки NodeMCU можно задействовать весь рабочий потенциал для быстрой разработки устройства.

    WeMos на базе esp8266

    WeMos – еще один вид платформы, основанный на базе микроконтроллера esp8266. Соответственно, имеется Wi-Fi модуль, поддерживается Arduino IDE, имеется разъем для внешней антенны. Плата имеет 11 цифровых входов/выходов, которые (кроме D0) поддерживают interrupt/pwm/I2C/one-wire. Максимальное напряжение питания достигает 3,3 В. Также на платформе присутствует USB разъем. Аналоговый вход 1 с максимальным напряжением 3,2В.

    Для работы с модулем нужно установить драйвер CH340 и настроить Ардуино IDE под ESP8266. Для этого нужно в меню настройки в строке «дополнительная ссылка для менеджера плат» добавить адрес http://arduino.esp8266.com/stable/package_esp8266com_index.json.

    После этого требуется найти пакет esp8266 by ESP8266 и установить его. Затем нужно выбрать в меню инструменты микроконтроллер Wemos D1 R2 и записать нужный скетч.

    Выводы по ESP8266

    С помощью плат на основе микросхемы ESP8266 вы можете добавить в свои проекты возможности “большого интернета”, сделав их гораздо более интеллектуальными. Дистанционное управление, сбор и анализ данных на сервере, обработка голоса и работа с изображением – все это становится доступным, когда мы подключаем наш проект по WiFi к интернету. В следующих статьях мы подробно рассмотрим то, как можно программировать устройства на базе esp8266, а также уделим внимание таким популярным платам как WeMos и NodeMcu.

    Источники:

    http://narodstream.ru/esp8266-urok-1-pervoe-znakomstvo-s-kontrollerom-esp8266/

    http://arduinoplus.ru/plata-kompanii-espressif-chip-esp8266/

    http://arduinomaster.ru/platy-arduino/arduino-esp8266/

    http://studfile.net/preview/831469/page:2/

  • Ссылка на основную публикацию