Беспроводной модуль ESP8266

Работа с устройством

Вставьте microSD карту памяти (макс. 32 ГБ) в установленный на монтажной плате адаптер и подключите все устройство к любому USB-совместимому порту (или источнику питания 5 В). Мы подали питание на устройство. Следует удостовериться, что выбранный USB порт способен обеспечить выходной ток 1 А, – модуль ESP-12E потребляет большой ток при передаче файлов.

Как только устройство получит питание, будет создана беспроводная Wi-Fi точка доступа с именем «SD Reader». Подключитесь к этой точке доступа, используя пароль, который указан в исходном коде (скетче). Затем, в зависимости от того, какое устройство вы используете для подключения к точке доступа, откройте соотвествующее приложение: если вы подключаетесь с ПК, можно использовать ПО FileZilla или WinSCP, если вы подключаетесь с Android-устройства, то можно использовать приложение AndFTP.

В приложении настройте учетные данные. Например, для AndFTP потребуется ввести имя пользователя и пароль (по умолчанию в исходном коде имя пользователя и пароль «esp8266») и адрес хоста – 192.168.12.7. После настройки подключитесь к FTP серверу; как только подключение будет установлено, вы сможете загружать любые файлы с SD-карты памяти, а также загружать файлы со своего телефона на SD-карту памяти (Рисунок 7).

Беспроводной модуль ESP8266
Беспроводной модуль ESP8266
Беспроводной модуль ESP8266
Рисунок 7. Подключение к FTP серверу на ESP-12E с Android
-смартфона.

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

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

Несмотря на то, что устройство выполняет свою функцию, оно очень медленное. Для передачи четырех файлов (каждый примерно по 100 Кбайт) потребуется около 30 секунд. Если взять файл большего размера (около 10 Мбайт), то его передача займет около 3-4 минут. Есть некоторые способы  оптимизации и увеличения скорости обмена данными до 450 Кбит/с, а в случае применения Wi-Fi модуля на ESP32 – скорость обмена данными может достигать 1 Мбит/с.

Автор называет две основные причины, по которым он не пытался оптимизировать устройство. Во-первых, хотелось наряду с FTP-сервером иметь возможность использовать интерфейс USB для обмена данными, но данный интерфейс не поддерживается в ESP8266 или ESP32. Во-вторых, низкая скорость передачи данных по FTP. По этой же причине не имеет смысла использовать ESP32 вместо ESP-12E.

Тем не менее, вероятно, одну из проблем можно решить, если использовать Wi-Fi модуль ESP32 S2, который поддерживает полноскоростной USB интерфейс.

Arduino IDE для ESP8266: быстрый старт

1. Подключить USB-TTL к USB

2. Подключить ESP8266 к USB-TTL как обычно. Если вы подключили ESP8266 по схеме без поддержки автозагрузки прошивки (не подключены DTR и RTS), то вручную соедините GPIO0 с землей, передерните питание модуля – все готово для  прошивки

3. Запускаем Arduino IDE

4. В меню Инструменты – Плата – Generic ESP8266 board (в самом низу)

5. В меню Инструменты выбираем порт, к которому подключен наш USB-TTL

6. В меню Инструменты – выбираете частоту, размер флеш памяти вашего модуля

7. В меню Файл – Примеры (Образцы) – ESP8266WiFi – WiFiWebServer

8. В скетче заполняете SSID и пароль вашей WiFi сети

9. Жмем кнопку компиляции и загрузки скетча

10. Ждем окончании процесса прошивки. После прошивки, если модуль подключен по схеме без поддержки автопрошивки, отсоедините GPIO0 от земли и передерните питание модуля без отключения USB-TTL от питания

11. В меню Инструменты – Монитор последовательного порта

12. Выбираем скорость 115200

13. Смотрим что происходит в терминале

14. Когда модуль подключится к сети, то появятся надписи в мониторе “WiFi connected” и “Server started”

15. Ниже будет IP адрес вашего модуля ESP8266, например 192.168.1.248

16. Открываете любой браузер, в строке адреса вбиваете “http://192.168.1.248/gpio/1″

17. Смотрите монитор последовательно порта и если к ESP8266 к GPIO2 у вас подключен светодиод (через резистор, разумеется), то он включится.

18. Profit!

Автором этого проекта адаптации Arduino IDE для ESP8266 является наш соотечественник из Санкт-Петербурга Иван Грохотков.

Задать вопросы автору проекта Ивану Грохоткову aka igrr или сообщить об ошибке в Arduino IDE для ESP8266 можно в специальном разделе на нашем форуме.

Подключение ESP8266 через RaspberryPi

Да, можно и «из пушки по воробьям», если под рукой нет вообще никакого USB-TTL конвертера. Подключение через малинку аналогично Arduino, но не такое удобное, т.к. дополнительно потребуется стабилизатор питания на 3,3 вольта. RX, TX, GND малинки подключаем к ESP8266, VCC и GND берем со стабилизированного источника питания на 3,3 вольта

Обратите внимание на то, что необходимо соединить GND всех устройств: малинки, стабилизатора и ESP8266. Брать 3,3 вольта питания с малинки для ESP8266 я лично не пробовал, поэтому вам предлагать такой вариант не буду

Если встроенный в вашу версию малины стабилизатор держит до 300 миллиампер дополнительной нагрузки, то подключение ESP8266 вполне возможно. Если сами захотите рискнуть — пожалуйста.

Установка ядра ESP8266 на ОС Windows

Давайте приступим к установке ядра ESP8266 Arduino.

Во-первых, на вашем компьютере должна быть установлена последняя версия Arduino IDE (Arduino 1.6.4 или выше). Если у вас ее нет, рекомендуем сейчас обновиться.

Для начала нам нужно обновить менеджер плат с помощью пользовательского URL. Откройте Arduino IDE и выберите Файл → Настройки. Затем скопируйте приведенный ниже URL в текстовое поле Дополнительные ссылки для менеджера плат, расположенное в нижней части окна:

Беспроводной модуль ESP8266Рисунок 7 – Установка платы ESP8266 в Arduino IDE с помощью json URL

Отлично. Затем перейдите к Менеджеру плат, выбрав Инструменты → Платы → Менеджер плат. Там, в дополнение к стандартным платам Arduino, должна быть пара новых записей. Отфильтруйте результаты поиска, введя esp8266. Нажмите на эту запись и выберите Установить.

Беспроводной модуль ESP8266Рисунок 8 – Установка ядра ESP8266 в менеджере плат Arduino IDE

Определения и инструменты для платы ESP8266 включают в себя полностью новый набор gcc, g++ и других достаточно больших скомпилированных двоичных файлов, поэтому загрузка и установка могут занять несколько минут (заархивированный файл весит ~110 МБ). После завершения установки рядом с записью появится надпись INSTALLED. Теперь можно закрыть менеджер плат.

Описание ESP8266

Беспроводной модуль ESP8266

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

  • Поддерживает 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

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

Распиновка ESP8266 NodeMCU

С внешним миром ESP8266 NodeMCU соединяют всего 30 выводов. Ниже показана распиновка отладочной платы.

Беспроводной модуль ESP8266Рисунок 6 – Распиновка ESP8266 NodeMCU

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

Выводы питания – на плате расположено четыре вывода питания, а именно: один вывод VIN и три вывода 3.3V. Если у вас есть стабилизированный источник напряжения 5 В, вывод VIN можно использовать для непосредственного питания ESP8266 и его периферии. Выводы 3.3V – это выходы встроенного стабилизатора напряжения. Эти выводы могут использоваться для подачи питания на внешние компоненты.

GND – это вывод земли отладочной платы ESP8266 NodeMCU.

Выводы I2C используются для подключения всех видов датчиков и периферийных устройств на шине I2C в вашем проекте. Поддерживаются и I2C Master, и I2C Slave. Работа интерфейса I2C может быть реализована программно, а тактовая частота составляет максимум 100 кГц. Следует отметить, что тактовая частота I2C должна быть выше самой низкой тактовой частоты из ведомых устройств.

Выводы GPIO На ESP8266 NodeMCU имеется 17 выводов GPIO, которые можно назначать программно на различные функции, такие как I2C, I2S, UART, PWM, дистанционное инфракрасное управление, светодиодный индикатор и кнопка. Каждый включенный вывод GPIO может быть настроен либо на внутреннюю подтяжку к земле или к шине питания, либо установлен на высокоимпедансное состояние. При конфигурировании на вход для генерирования прерываний процессора он может быть настроен на срабатывание либо по фронту, либо по спаду.

Вывод ADC подает сигнал на имеющийся в NodeMCU, встроенный 10-разрядный прецизионный аналого-цифровой преобразователь последовательного приближения (SAR ADC). С помощью этого АЦП могут быть реализованы две функции: проверка напряжения питания на выводе VDD3P3 и проверка входного напряжения на выводе TOUT (но не одновременно).

Выводы UART ESP8266 NodeMCU имеет 2 интерфейса UART, то есть UART0 и UART1, которые обеспечивают асинхронную связь (RS232 и RS485) и могут обмениваться данными со скоростью до 4,5 Мбит/с. Для связи можно использовать UART0 (выводы TXD0, RXD0, RST0 и CTS0), который поддерживает управление потоком. UART1 (вывод TXD1) поддерживает только сигнал передачи данных, поэтому он обычно используется для печати журнала событий.

Выводы SPI ESP8266 имеет два интерфейса SPI (SPI и HSPI), поддерживающих и ведомый (slave), и ведущий (master) режимы. Эти интерфейсы SPI также поддерживают следующие функции SPI:

  • 4 режима синхронизации передачи SPI;
  • до 80 МГц и тактовые частоты, полученные делением 80 МГц;
  • до 64 байт FIFO.

Выводы SDIO ESP8266 имеет защищенный цифровой интерфейс ввода/вывода (SDIO, Secure Digital Input/Output Interface), который используется для прямого подключения карт SD. Поддерживаются 4-битный 25 МГц SDIO v1.1 и 4-битный 50 МГц SDIO v2.0.

Выводы PWM На плате имеется 4 канала широтно-импульсной модуляции (PWM). Выход ШИМ может быть реализован программно и использован для управления двигателями и светодиодами. Частотный диапазон ШИМ регулируется от 1000 мкс до 10000 мкс, то есть от 100 Гц до 1 кГц.

Выводы управления используются, как ни странно, для управления ESP8266. Эти выводы включают в себя вывод включения микросхемы EN, вывод сброса RST и вывод пробуждения WAKE.

  • Вывод EN – микросхема ESP8266 включена, когда на вывод EN подается высокий логический уровень. При низком логическом уровне микросхема работает на минимальной мощности.
  • Вывод RST используется для сброса микросхемы ESP8266.
  • Вывод WAKE используется для вывода чипа из глубокого сна.

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

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

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

Беспроводной модуль ESP8266

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 IDE.
  • Выбрать в меню инструменты нужный порт, плату, частоту и размер flash-памяти.
  • Файл — Примеры — ESP8266WiFi — WiFiWebServer.
  • Записать в скетче SSID и пароль сети Wi-Fi.
  • Начать компиляцию и загрузку кода.
  • Дождаться окончания процесса прошивки, отсоединить GPIO0 от земли.
  • Поставить скорость 115200.
  • Произойдет подключение, будет записан адрес IP.
  • Открыть браузер, ввести в адресной строке номер IP/gpio/1
  • Посмотреть монитор порта, если к выходу GPIO2 подключен светодиод, он должен загореться.

Что это такое?

Беспроводной модуль ESP8266

Беспроводной модуль ESP8266

По сути, чип ESP8266 представляет собой миниатюрный микроконтроллер с Wi-Fi передатчиком, который может функционировать в условиях полной автономии, без дополнительной платы Arduino. С помощью модуля ESP-01 можно передавать данные о температуре, влажности, включать реле и так далее. Для удобства использования чипа ESP8266, производитель изготовил серию модулей от ESP-01 по ESP-14. Первый в этой серии, это модуль ESP-01 (существует еще ESP-01S, о нем чуть позже), являющийся одним из известным, из-за свой цены и небольшими размерами, всего 14,3 мм на 24,8 мм. Но в нем, есть два недостатка, это ограниченное количество программированных выводов GPIO и их неудобное расположение (неудобно макетировать). Модуль ESP-01 представляет собой небольшую плату, черного цвета, на которой расположены два основных чипа, это микроконтроллером ESP8266 и flash память на 1 Мб. Рядом расположен кварцитовый резонатор и напечатанная антенна. На плате установлены два светодиода, красный и голубой. Красный светодиод, светится когда на модуле есть питание, а синий мигает при выполнении команд (в NSP-01S удален красный светодиод, из-за постоянного потребления электроэнергии). Для подключения модуля ESP-01, предусмотрено восемь выводов (два ряда по четыре вывода, шагом 2.54 мм), два из готовых являются цифровым входами-выходом, поддерживающие широтно импульсную модуляцию. Хотя модуль имеет по умолчанию два вывода GPIO, можно использовать другие доступные контакты, если у вас есть необходимый инструмент для пайки.

Популярные статьи  Как выбрать тёплый пол и правильно его смонтировать

Назначение выводовGND:  «-» питание модуляGPIO2: (Digital I / O программируемый)GPIO0: (Digital I / O программируемый, также используется для режимов загрузки)RX: UART приемTX:  UART передачаCH_PD: (включение / отключение питания, должны быть выведены на 3.3 В непосредственно или через резистор)RST: сброс, необходимо потянуть к 3.3ВVCC:  «3.3В» питание модуля

Внимание! ESP-01 очень капризные к питанию, необходимо использовать внешний стабилизатор напряжения на 3.3В, в качестве первого примера буду использовать адаптер USB

Настройки платы

Для работы с любой платой (даже самодельной) можно выбрать пункт Generic esp8266, будет доступен полный набор настроек. Для работы с Wemos Mini выбираем LOLIN Wemos D1 R2 mini. Настроек станет меньше, а к пинам платы можно будет обращаться в программе по их подписям на плате (Dn). Основные настройки:

  • Upload speed: скорость загрузки прошивки. Можно смело поднимать до 921600.
  • CPU Frequency: частота тактирования процессора. Для большинства задач хватит стандартных 80 МГц. На 160 МГц будет работать шустрее, но могут быть сбои.
  • Flash Size: распределение памяти, настройка имеет вид xMB (FS:xMB OTA:~xKB). Размер памяти под программу не меняется – это всегда 1 МБ.
    • Первое число: полный объём микросхемы памяти (в основном 4MB, на Wemos и NodeMCU стоят такие).
    • Второе число: объём под файловое хранилище.
    • Третье число: объём под OTA (обновление по воздуху) – всегда меньше 1 МБ.
    • Что выбрать? У Wemos самый ходовой – первый вариант: 4MB (FS:2MB OTA:~1019KB).
  • Flash mode: режим загрузки во Flash память.
    • DOUT: медленный, но совместим со всеми модификациями esp8266.
    • QIO: более быстрый, но будет работать не на всех чипах.
  • Erase Flash: режим очистки памяти.
    • Only Sketch: стереть только программу.
    • Sketch + WiFi Settings: стереть программу и настройки WiFi (логин-пароль последнего подключения и т.д.).
    • All Flash Contents: полностью очистить память.
  • Порт: к какому порту подключена плата.

Как запрограммировать

Беспроводной модуль ESP8266

При установке поставьте галочку в пункте «Add python.exe to PTH»Беспроводной модуль ESP8266

Далее открываем командную строку Пуск>выполнить>cmd

Беспроводной модуль ESP8266

Проверьте установленную версию Python. Введите в командной строке:

C++

python —version

1 python—version

Беспроводной модуль ESP8266

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

C++

pip install esptool

1 pip install esptool

C++

esptool.py version

1 esptool.py version

Беспроводной модуль ESP8266

Вы должны получить у себя на компьютере примерно такое же окно. 

Теперь перейдём непосредственно к стиранию памяти. Нам необходимо ввести строку со следующими параметрами:

C++

esptool.py —port COM1 erase_flash

1 esptool.py—port COM1 erase_flash

кратко опишу команды:

 — запуск утилиты;

 — номер COM-порта устройства. Узнайте ваш номер в диспетчере задач;

erase_flash — очищает полностью память ESP

В моём случае преобразователь COM порта был установлен на COM1. Вы у себя измените номер порта если в этом есть необходимость.

Теперь нам нужны файлы для прошивания памяти ESP. 

Скачаем необходимый SDK с официального сайта Espressif. Тут читаем что такое SDK. В случае модуля ESP-01, мы, скорее всего не сможем воспользоваться третьей версией SDK, так как в ней нет прошивки, пригодной для схемы 512+512. Наши методы прошивания подойдут не только для модулей ESP-01, а и для любых других модулей, где установлен контроллер ESP8266, поэтому вполне можно и воспользоваться SDK3. Но в нашем случае мы скачаем последнюю на данный момент SDK 2.2.1 отсюда. Комплект нужен именно NONOS (без использования операционной системы). Попытаюсь дать прямую ссылку на архив ESP8266 NONOS SDK V2.2.1

Распакуем архив. Из него нам нужны будут для прошивания boot_v1.X.bin, версию подбираем, обычно последняя, файл esp_init_data_default_vXX.bin, я прошивал версию 05, файл blank.bin (если прошиваем неочищенную полностью память) из папки bin, а также файл userX.1024.new.2.bin из папки bin\at\512+512.

Ещё раз уточним, что и с какого адреса прошивать, открыв мануал по AT командам. А тут можно ознакомиться с AT командами на русском языке. Только там далеко не полный список.

Беспроводной модуль ESP8266

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

Внешняя память распределена на следующие разделы:

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

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

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

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

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

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

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

Работа с внешней памятью немного отличается от стандартной.

  • Перед считыванием или записью данных нужно инициализировать EEPROM, указав при этом выделяемую под неё память (от 4 до 4096 байт) функцией .
  • Привычная функция записывает данные не на саму энергонезависимую память, а в оперативную.
  • Чтобы внесённые данные записались в память, нужна функция (или же , чтобы заодно очистить данные из оперативной памяти).
  • Метод возвращает байт из памяти по адресу.

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

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

В скетч нужно добавить файл: . Инициализируем и настраиваем OTA следующими строками:

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

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

Теперь микроконтроллер ESP8266 можно прошивать «по воздуху».

ESP-12

not FCC approved(*)

(*) not FCC approved, just labelled to look like they do, not a valid FCC ID on the label

FCC of ESP-12

FCC ID: 2ADUIESP-12

CE of ESP-12

CE NUMBER: BCTC-141212468

Note:This is not an EU CE declaration of conformity, This is a test pass certificate from a third party test company that has no official standing. An official EU DoC must be made by the manufacturer not a third party. Also note safety standard EN60950 does not exist, and has not for many many years. The R&TTE directive quoted ceased to be valid in 2016. These comments and similar apply to a lot of the certificates on this page.

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

Полезные страницы

  • Набор GyverKIT – большой стартовый набор Arduino моей разработки, продаётся в России
  • Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
  • Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
  • Полная документация по языку Ардуино, все встроенные функции и макросы, все доступные типы данных
  • Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
  • Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
  • Поддержать автора за работу над уроками
  •  – сообщить об ошибке в уроке или предложить дополнение по тексту ()

Программирование 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 – поддерживаются полностью.

GPIO. Мигаем светодиодом

Для управления реле (мы ведь собрались делать WiFi розетку) потребуется изучить работу с выводами GPIO. Пока попробуем использовать GPIO вывод в качестве выхода и устанавливать высокий и низкий уровень сигнала. Для наглядности подключим светодиод как показано на схеме.

Нумерация выводов:

IO index ESP8266 pin
GPIO16
1 GPIO5
2 GPIO4
3 GPIO0
4 GPIO2
5 GPIO14
6 GPIO12
7 GPIO13
8 GPIO15
9 GPIO3
10 GPIO1
11 GPIO9
12 GPIO10

D0(GPIO16) can only be used as gpio read/write. No support for open-drain/interrupt/pwm/i2c/ow

ESP-12F

Беспроводной модуль ESP8266

Плата NodeMCU

Беспроводной модуль ESP8266

Примечание: Существует несколько версий плат Nodemcu. Распиновка Вашей платы может отличаться.

Подключение ESP8266 через Arduino

Если у вас под рукой не оказалось USB-TTL конвертера на 3,3в, но есть Arduino со встроенным USB-TTL конвертером, то можно использовать такую схему подключения

ESP8266 подключение через Arduino

На что обратить внимание:

1. Arduino Reset подключен к GND (синий провод) чтобы не запускался микроконтроллер на Arduino, в данном виде мы используем Arduino как прозрачный USB-TTL конвертер

2. RX и TX подключены не «на перекрест», а прямо — RX — RX (зеленый), TX — TX (желтый)

3. Все остальное подключено так же, как и в предыдущих примерах

Внимание! В этой схеме также требуется согласовывать уровни TTL 5 вольт Arduino и 3.3 вольта на ESP8266, однако неплохо работает и так. Внимание! На Arduino может быть установлен стабилизатор питания, который не выдержит ток, требуемый для ESP8266, поэтому прежде, чем производить подключение сверьтесь с даташитом на тот стабилизатор, который установлен именно у вас

Не подключайте другие энергопотребляющие компоненты одновременно с ESP8266 в связи с риском выхода из строя встроенного в Arduino стабилизатора питания

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

Настройка ThingSpeak

ThinkSpeak — потрясающий! Правда, он очень облегчает жизнь. Для его настройки, достаточно реализовать несколько приведенных ниже шагов:

Беспроводной модуль ESP8266

2. Перейдите в Channels —> Create New Channel (вы можете оставить все настройки по умолчанию)

3. Перейдите в API Keys и получите свой уникальный KEY

4. Проведите проверку, вставив в строку вашего браузера следующее:

http://api.thingspeak.com/update?key=&field1=0

5. Результаты будут здесь:

http://api.thingspeak.com/channels//feed.json?key=

Все! Вы можете отсылать данные температуры с помощью модуля ESP8266 в интернет.

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!

Платформы разработки для ESP8266

Теперь перейдем к интересным вещам!

Существует множество платформ разработки, которые могут быть оснащены для программирования ESP8266. Вы можете использовать Espruino – JavaScript SDK и прошивка, эмулирующая Node.js, или использовать Mongoose OS – операционную систему для устройств IoT (рекомендуемая платформа от Espressif Systems и Google Cloud IoT), или использовать комплект разработки программного обеспечения (SDK), предоставляемый Espressif. или любую из платформ, перечисленных на .

К счастью, крутое сообщество ESP8266 сделало выбор IDE на шаг вперед, создав дополнение к Arduino IDE. Если вы только начинаете программировать для ESP8266, мы рекомендуем начать с этой среды разработки, и ее мы опишем в данном руководстве.

Это дополнение ESP8266 для Arduino IDE основано на работе Ивана Грохоткова и остальной части сообщества ESP8266. Для получения дополнительной информации смотрите репозиторий GitHub ESP8266 Arduino.

Оцените статью
Денис Серебряков
Добавить комментарии

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Беспроводной модуль ESP8266
Энергетические батончики