Как подключить esp8266 к arduino ide
Перейти к содержимому

Как подключить esp8266 к arduino ide

  • автор:

Установка ESP8266 в Arduino IDE (руководство для ОС Windows)

Платы ESP8266 оснащены микроконтроллером ESP8266 с интерфейсом Wi-Fi, подключаются к компьютеру через WiFi или USB порт.

О том как установить «Arduino IDE» можно прочитать в статье Wiki — Установка среды разработки Arduino IDE для Windows .

Настройка Arduino IDE:

Писать скетчи под микроконтроллер ESP8266 можно в среде разработки «Arduino IDE», но перед загрузкой скетча нужно выбрать тип используемой платы из списка меню «Инструменты» > «Плата», а там по умолчанию нет плат ESP8266. Вся настройка сводится к тому, что бы в этом списке меню появились эти платы.

В среде «Arduino IDE» имеется «Менеджер плат» который поможет быстро добавить интересующие платы в список. Для этого нужно выполнить следующие действия:

Откройте «Arduino IDE» и выберите пункт меню: «Файл» > «Настройки»

В открывшемся окне заполните поле «Дополнительные ссылки для Менеджера плат» введя в него строку: http://arduino.esp8266.com/stable/package_esp8266com_index.json И нажмите на кнопку «Ok».

Запустите «Менеджер плат» выбрав пункт меню «Инструменты» > «Плата» > «Менеджер плат».

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

Дождитесь окончания установки сборки. «Менеджер плат» загрузит примерно 150 Мбайт данных.

После успешной установки сборки, в списке, напротив её названия «esp8266 by ESP8266 Community» появится фраза «INSTALLED». Закройте «Менеджер плат» нажав на кнопку «Закрыть».

На этом настройка «Arduino IDE» завершена! Теперь в списке плат есть раздел «ESP8266 Boards».

Первая программа:

Самая первая программа для любой платы под управлением микроконтроллера — это «Hello, World!» (вывод строки) или «Blink» (мигание светодиодом). Данная статья не будет исключением, загрузим скетч для мигания светодиодом.

Для работы с платами ESP 8266 нужно в пункте меню «Инструменты» > «Плата» > «ESP8266 Boards» выбрать соответствующую плату или «Generic ESP8266 Module»

Так же нужно выбрать COM-порт после подключения платы к компьютеру через USB порт. На рисунке выбран порт «COM10», но Вам нужно выбрать тот порт, который появился у Вас в списке доступных портов после подключения платы. Если после подключения платы новый порт не появился, значит не установлен драйвер для чипа CH340G / CP2104, ссылки на драйверы указаны в конце данной статьи.

Осталось загрузить скетч и проверить его работу. На рисунке загружается простой скетч для мигания светодиодом, установленным на плате и подключённым катодом к выводу D4. При написании скетчей, обратите внимание на то что константы имён выводов D0 . D8 хранят нумерацию выводов GPIO микроконтроллера, а не нумерацию выводов платы, так например: digitalWrite(D5, HIGH); // установит «1» на выводе платы D5 (он же вывод GPIO-14 микроконтроллера).
digitalWrite(5, HIGH); // установит «1» на выводе платы D1 (он же вывод GPIO-5 микроконтроллера).

Предыдущий скетч можно не писать вручную, а загрузить из примеров, большое количество которых стало доступно в меню «Файл» > «Примеры» > «Примеры для Generic 8266 Module», после выбора платы «Generic ESP8266 Module».

В примере «Файл» > «Примеры» > «ESP8266» > «Blink» светодиод включается на 1 секунду через паузу в 2 секунды, а вывод к которому подключён светодиод указывается не константой D4, а константой LED_BUILTIN. Обратите внимание на то, что светодиод включается подачей логического «0».

Ссылки

  • драйвер для чипа СH340G.
  • драйвер для чипа CP2104.

Как подключить esp8266 к arduino ide

Віримо в перемогу ЗСУ!
Працюємо з 09:00 до 18:00 Пн-Сб Працюємо з 09:00 до 19:00 Пн-Пт —> Магазин у відпустці до 19.08.2023 —>

  • Ваша корзина пуста!
  • Главная
  • Статьи
  • Настройка Arduino IDE для программирования WiFi модуля ESP8266

Настройка Arduino IDE для программирования WiFi модуля ESP8266

ESP8266 это дешовые широко распространенные модули Wi-Fi. Они состоят из самодостаточного микроконтроллера с GPIO (дискретными входами-выходами), аналоговым входом, портами параллельной связи, I2C, SPI, и самое главное с блоком Wi-Fi связи. Изначально продвигаемые как дешовые модули Wi-Fi для плат Arduino и Raspberry Pi, они так же могут быть запрограммированы как отдельные платы разработчика при помощи Arduino IDE. Для этого необходимо сначала установить библиотеки и инструментарий ESP8266 в Arduino IDE.

В этой статье будет описана процедура установки библиотек и инструментария для ESP8266, и начала программирования модуля ESP8266 в среде Arduino IDE.

Библиотеки и инструментарий доступны на гитхабе здесь:

Установка драйвера CH340

Этот драйвер необходим для загрузки скетчей во многие китайские платы контроллеров, такие как Arduino Nano, MEGA, NodeMCU, Wemos D1 mini. Так что он в любом случае вам не помешает. Его можно скачать под вашу операционную систему здесь wemos.cc/en/latest/ch340_driver.html

Запускаем файл установщика и клацаем кнопку INSTALL. Драйвер установлен и теперь все платы контроллеров с прошивальщиком CH340 при подключении к USB входу компьютера автоматически должны получать свой номер COM порта.

Если будут сообщения с ругательствами, клацните кнопку UNINSTALL

Шаг 1: Добавление менеджера платы ESP8266 в Настройки Arduino IDE

1. В меню программы выберите закладку Файл -> Настройки

2. Во вкладке «Настройки», в пункте “Дополнительные ссылки для менеджера плат”, нажав на кнопку выбора, во всплывающем диалоговом окне выбираем:

для использования стабильной версии библиотек ESP8266:

3. для использования последней версии библиотек ESP8266:http://arduino.esp8266.com/staging/package_esp8266com_index.json

4. Клацаем кнопку OK.

Шаг 2: Установка библиотек и инструментария ESP8266

1. В меню Arduino IDE выбираем Инструменты -> Платы: -> Менеджер плат.

2. В текстовом поле поиска Менеджера плат наберите ESP, затем виберите esp8266 by ESP8266 Community и нажмите кнопку Установка

3. Когда установка завершится, кликните по кнопке “Закрыть”

Шаг 3: Пробуем загрузить проект из Arduino IDE в плату ESP8266

1. Соединяем модуль ESP8266 с компьютером при помощи кабеля USB.

2. Можем произвести проверку связи, загрузив пустой скетч или простейший демо-проект Blink.

3. В среде Arduino IDE из меню выбираем тип платы, которую будем тестировать. В данном случае это “NodeMCU 0.9 (ESP-12 Module)”

4. Так же в меню Arduino IDE выбираем COM-порт, к которому подключен модуль Wi-Fi

5. Нажимаем кнопку Загрузить, чтобы скомпилировать и загрузить наш скетч

Прошивка ESP8266 через Arduino IDE

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

Настройка Arduino IDE для работы с ESP

Первым делом необходимо скачать свежую версию Arduino IDE (https://www.arduino.cc/en/Main/Software) и установить ее на ваш компьютер. Перед началом прошивки платы ESP необходимо добавить дополнительные пакеты в среду разработки Arduino IDE.

Открываем Arduino IDE и добавляем в него возможность работы с платами esp8266, для этого:

1) Переходим в раздел Preferences в меню.

2) В поле «Дополнительные ссылки для Менеджера плат» (Additional Board Manager URLs) вставляем строчку http://arduino.esp8266.com/stable/package_esp8266com_index.json и нижимаеи кнопку «OK».

Открываем настройки Arduino IDE

3) Открываем менеджер плат в меню «Инструменты > Плата > Менеджер плат. » (Go to Tools > Board > Boards Manager…)

Открываем менеджер плат в Фквгштщ IDE

4) В появившемся окне в поиске вводим esp8266 и устанавливаем соответствующий пакет

Установка дополнителных esp плат

5) Закрываем и заново открываем Arduino IDE. Теперь в списке доступных плат появились платы на основе чипа ESP.

Список доступных ESP плат

Прошивка NodeMCU ESP8266 Development Board

В плате NodeMCU версии 1.0 используется чип CP2102 (USB to UART Bridge VCP). Чтобы наш компьютер мог видеть плату esp необходимо скачать драйвер данного чита с официального сайта https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers. Скачиваем и устанавливаем драйвер под нужную операционку. После установки драйвера перезапускаем Arduino IDE.

NodeMCU dev board

Теперь если подключить плату NodeMCU к компьютеру, то в списке портов вы увидите новое устройство. Для MacOS оно будет иметь вид:

Появился новый UART порт

Com5 в системе Windows

Для проверки работы прошивки загрузим стандартный пример с мигающим светодиодом. Для этого в меню выбираем «Примеры > Basic > Blink».

Выбираем стандартный пример с мигающим светодиодом

Откроется новое окно Arduino IDE со стандартным примером, нажимаем на него. Теперь нам необходимо выбрать соответствующую плату и нужный порт. Выбираем NodeMCU 1.0 и порт, на который подключен модуль ESP. Все параметры должны быть такими же как на скриншоте.

Выбираем плату NodeMCU 1.0

Нажимаем кнопку «Загрузить» в верхней части окна:

Нажимаем кнопку Загрузить

Код начнет компилироваться:

Компиляция скетча

После компиляции начнется загрузка кода на плату ESP, в нижней части экрана побегут оранжевые пиксели и будут появляться проценты загрузки. В результате загрузка дойдет до 100% и чуть выше вы увидите надпись «Загрузка завершена». Поздравляем, вы только что прошили модуль NodeMCU! Посмотрите на плату — на ней должен начать мигать светодиод!

Удачная прошивка NodeMCU

Прошивка ESP-01

В отличии от NodeMCU в модуле ESP-01 нет встроенного программатора и его нельзя напрямую подключить к USB. Поэтому для прошивки я буду использовать внешний программатор.

Модуль ESP-01

Для данного модуля подойдут практические любиые USB-to-UART программаторы, но я заказал специальный программатор с разъемом под ESP-01.

Программатор для Esp-01

В данном программаторе точно также как и в NodeMCU используется чип CP2102, поэтому нам не надо ставить дополнительный драйвер. Также этот программатор имеет дополнительные пины, через которые можно прошивать модули Sonoff. Теперь просто втыкаем плату в программатор, а программатор в USB.

Программатор и вставленный Esp-01

В меню «Порт» появится знакомый нам cu.SLAB_USBtoUART (Для Windows это будет COM*), выбираем его. В поле «Плата:» выбираем «Generic ESP8266 Module». Все параметры должны быть на скриншоте.

Настройки Arduino IDE для ESP-01

Обратите внимание, что каждый раз перед прошивкой этот программатор необходимо вытыкать и втыкать в USB заново. Также иногда внешние программаторы могут быть не видны в Arduino IDE. В этому случае приходится перезгаружать среду разработки. Поэтому для первых экспериментов с модулем ESP я рекомендую использовать модуль NodeMCU.

Как вы видите подготовить Arduino IDE к работе и прошить первый скетч на ESP не так уж и трудно. В следующей статье я расскажу вам как написать скетч, который будет работать с MQTT сервером, а также как потом подключить девайс к системе OpenHAB2.

ESP8266. Начало работы, особенности

В этом уроке поговорим о микроконтроллере ESP8266 и платах на его основе. Как с ними работать и чем они отличаются от Arduino на базе МК AVR. ESP8266 – китайский микроконтроллер за 2 доллара с большим объемом памяти и WiFi связью на борту. Официальная документация:

  • https://github.com/esp8266/Arduino/blob/master/doc/reference.rst
  • https://arduino-esp8266.readthedocs.io/en/latest/

Купить на Aliexpress

Дёшево купить Wemos Mini можно тут: ссылка, ссылка, ссылка. Рекомендуется брать версию как слева на картинке выше, на базе полного чипа ESP-12.

Уроки по работе с esp8266

Конкретные уроки по работе с платой и WiFi библиотеками публикуются на сайте набора GyverKIT, так как уроки на этом сайте являются общими по программированию Arduino, без углубления в сторонние библиотеки.

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

  • Напряжение питания: 3.3V (2.5-3.6V)
  • Ток потребления: 300 мА при запуске и передаче данных, 35 мА во время работы, 80 мА в режиме точки доступа
  • Максимальный ток пина – 12 мА.
  • Flash память (память программы): 1 МБ
  • Flash память (файловое хранилище): 1-16 МБ в зависимости от модификации
  • EEPROM память: до 4 кБ
  • SRAM память: 82 кБ
  • Частота ядра: 80/160 МГц
  • GPIO: 11 пинов
  • ШИМ: 10 пинов
  • Прерывания: 10 пинов
  • АЦП: 1 пин
  • I2C: 1 штука (программный, пины можно назначить любые)
  • I2S: 1 штука
  • SPI: 1 штука
  • UART: 1.5 штуки
  • WiFi связь

Начало работы

Для работы с платами на основе esp8266 нужно установить ядро и драйвер.

  • Идём в Файл/Настройки/Дополнительные ссылки для менеджера плат. Вставляем ссылку https://arduino.esp8266.com/stable/package_esp8266com_index.json.
  • Инструменты/Плата/Менеджер плат…, ищем в поиске esp8266 и устанавливаем. В списке плат появится семейство плат на базе esp8266.
  • На большинстве плат стоит USB конвертер CH340, как на всех китайских Ардуинах. Если вы ещё не устанавливали драйвер – читать здесь.

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

Для работы с любой платой (даже самодельной) можно выбрать пункт 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).
    • DOUT: медленный, но совместим со всеми модификациями esp8266.
    • QIO: более быстрый, но будет работать не на всех чипах.
    • Only Sketch: стереть только программу.
    • Sketch + WiFi Settings: стереть программу и настройки WiFi (логин-пароль последнего подключения и т.д.).
    • All Flash Contents: полностью очистить память.

    Нумерация пинов

    У самого чипа esp8266 все выводы пронумерованы цифрами. На распиновке они подписаны как GPIOn, где n – номер. На плате (NodeMCU, Wemos Mini) пины подписаны как Dn и эти номера не совпадают с номерами GPIO! При работе например с Wemos можно использовать как нумерацию выводов GPIO ( digitalWrite(5, LOW) ), так и D-нумерацию пинов на плате ( digitalWrite(D1, LOW) ) – если выбрана плата Wemos. Новички очень часто в этом путаются, будьте внимательны. Также GPIO1 и GPIO3 подписаны на плате как TX и RX, по этим названиям к ним тоже можно обращаться ( digitalWrite(TX, LOW) ).

    Особенности пинов

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

    • К целому ряду пинов подключена внешняя Flash память, в общем случае их использовать нельзя (если очень нужно – ищите информацию). На плате NodeMCU визуально гораздо больше пинов, чем на Wemos Mini, но по факту “безопасных” для использования пинов там ровно столько же.
    • С оставшимися пинами тоже не всё гладко: некоторые из них требуют наличия определенного логического уровня на момент включения микроконтроллера (подача питания, перезагрузка). Если к этим пинам подключить что-то, дающее противоположный сигнал – esp не запустится. Вот распиновка с нужным уровнем сигнала при запуске:
    • На плате (NodeMCU, Wemos и других) эти пины уже подтянуты резисторами к нужному напряжению, поэтому нужно несколько раз подумать, что вы к ним подключаете и как оно повлияет на напряжение на пине. Например, можно подключить энкодер, он прижмёт системный пин к GND и esp не запустится.
    • На GPIO16/D0 нельзя подключать прерывания ( attachInterrupt() ) и включать ШИМ сигнал ( analogWrite() ).
    • Максимальный ток с GPIO – 12 мА.
    • Светодиод LED_BUILTIN находится на пине GPIO2 и его поведение инвертировано: при подаче LOW он включается и наоборот.
    • При старте контроллера почти все пины делают скачок до высокого уровня, подробнее – в этой статье. Единственными “спокойными” пинами являются D1 (GPIO5) и D2 (GPIO4). Если контроллер управляет напрямую какими-то железками (реле, транзистор, или является “кнопкой” для другого устройства), то лучше использовать именно эти пины!
      • На этих же пинах сидит I2C, но шину можно переназначить на любые другие пины через Wire.begin(sda, scl) .

    Особенности работы WiFi

    WiFi реализован синхронно, его обработчик должен постоянно вызываться во время работы программы не реже, чем каждые 20 мс (если WiFi используется в программе). Обработка WiFi происходит в следующих местах:

    • Автоматически в конце каждой итерации loop()
    • Внутри любого delay()
    • Внутри функции yield()

    Если у вас есть участки программы, которые долго выполняются, то нужно разместить вызовы yield() до и после тяжёлых блоков кода. Также в чужих скетчах можно встретить delay(0) , по сути это и есть yield() .

    По тем же причинам не рекомендуется использовать задержку delayMicroseconds() более чем на 20’000 мкс.

    Отличия от AVR Arduino

    Деление на 0

    В отличие от AVR, деление на 0 приводит к критической ошибке и перезагрузке микроконтроллера. Стараемся этого избегать.

    min() и max()

    В ядре esp8266 функции min() и max() реализованы как функции, а не как макросы, поэтому должны использоваться с данными одного типа. Использование переменных разного типа приведёт к ошибке компиляции.

    map()

    В функции map(val, min, max, to min, to max) нет защиты от деления на 0, поэтому если min равен max – микроконтроллер зависнет и перезагрузится. Если min и max задаются какими-то внешними условиями – проверяйте их равенство вручную и исключайте вызов map() с такими аргументами.

    Типы данных

    • Тип int является синонимом long ( int32_t ) и занимает 4 байта. В AVR int это int16_t , то есть 2 байта.
    • Тип char является синонимом byte – принимает значения 0.. 255 в отличие от -128.. 127 в AVR.
    • Тип double имеет полную двойную точность – 8 байт. В AVR это 4 байта.
    • Указатель занимает 4 байта, так как область памяти тут 32-битная. В AVR – 2 байта.

    Функция analogRead()

    ESP8266 имеет крайне убогий одноканальный АЦП.

    • Сам АЦП в esp8266 может измерять напряжение в диапазоне 0.. 1.0V. На платах (NodeMCU, Wemos Mini) стоит делитель напряжения, который расширяет диапазон до более удобных 3.3V.
    • Разрешение – 10 бит, т. е. значения 0.. 1023 как на Arduino
    • Частый вызов analogRead() замедляет работу WiFi. При вызовах чаще нескольких миллисекунд WiFi полностью перестаёт работать.
    • Результат analogRead() имеет кеширование до 5 мс, то есть полученные данные могут запаздывать на это время.
    • АЦП может использоваться для измерения напряжения питания МК: для этого нужно вызвать ADC_MODE(ADC_VCC); до void setup() , а само напряжение питания можно получить из ESP.getVcc() .

    Функция analogWrite()

    • Работает на всех пинах, кроме GPIO16.
    • Разрядность ШИМ по умолчанию 8 бит (0.. 255) на версиях ядра 3.x. На ранних версиях – 10 бит (0.. 1023). Скажем спасибо индусам за совместимость.
      • Разрядность можно настроить в analogWriteResolution(4. 16 бит) .
      • Частоту можно настроить в analogWriteFreq(100.. 40000 Гц) .

      Аппаратные прерывания

      • Настраиваются точно так же, через attachInterrupt() .
      • Работают на всех пинах, кроме GPIO16.
      • Функция-обработчик должна быть объявлена с атрибутом IRAM_ATTR :

      void setup() < attachInterrupt(1, myIsr, RISING); >IRAM_ATTR void myIsr()
      Либо с ICACHE_RAM_ATTR (на старых версиях ядра), вот так:
      void ICACHE_RAM_ATTR myIsr() < >void setup()

      Функция yield()

      В реализации esp8266 функция yield() выполняет другую задачу и использовать её как на AVR не получится. Скажем спасибо индусам за совместимость

      EEPROM

      EEPROM в esp8266 является эмуляцией из Flash памяти, поэтому мы можем выбрать нужный размер.

      • Перед началом работы нужно вызвать EEPROM.begin(4.. 4096) с указанием размера области памяти в байтах.
      • Для применения изменений в памяти нужно вызвать EEPROM.commit() .
      • В некоторых версиях SDK отсутствует EEPROM.update() и EEPROM.length() .
      • У Flash памяти небольшой ресурс – всего около 10’000 перезаписей. У фирменной памяти Winbond (можно найти на некоторых моделях ESP-12 и прочих) – около 50’000 перезаписей.

      В остальном работа с библиотекой EEPROM.h ничем не отличается.

      Важно: EEPROM реализован следующим образом: после запуска EEPROM.begin(4.. 4096) содержимое EEPROM указанного размера дублируется в оперативной памяти. После любого изменения и вызова EEPROM.commit() стирается весь блок Flash памяти (4 кБ) и записывается заново. Таким образом ресурс “EEPROM” памяти у ESP вырабатывается довольно быстро и весь сразу, а не по ячейкам.

      Serial (UART)

      • В отличие от реализации для AVR, можно изменить размер буфера на приём: Serial.setRxBufferSize(размер) в байтах. Вызывать перед Serial.begin() , по умолчанию 256 байт.
      • Можно настроить работу только на приём или только на отправку для освобождения пина: Serial.begin(скорость, SERIAL_8N1, режим) , где режим:
        • SERIAL_TX_ONLY – только отправка
        • SERIAL_RX_ONLY – только приём
        • SERIAL_FULL – приём и отправка (по умолчанию)

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

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

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

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