Esp8266 eeprom arduino

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

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

Купить на 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).

  • Flash mode: режим загрузки во Flash память.
    • DOUT: медленный, но совместим со всеми модификациями esp8266.
    • QIO: более быстрый, но будет работать не на всех чипах.
  • Erase Flash: режим очистки памяти.
    • 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

    min() и max()

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

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

    Типы данных

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

    Функция analogRead()

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

    • Сам АЦП в esp8266 может измерять напряжение в диапазоне 0.. 1.0V. На платах (NodeMCU, Wemos Mini) стоит делитель напряжения, который расширяет диапазон до более удобных 3.3V.
    • Частый вызов 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 бит) .
    • Частота ШИМ по умолчанию 1 кГц.
      • Частоту можно настроить в analogWriteFreq(100.. 40000 Гц) .
    • ШИМ реализован программно, поэтому на повышенной частоте и разрядности будет тормозить выполнение программы!

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

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

    Либо с ICACHE_RAM_ATTR (на старых версиях ядра), вот так:

  • В обработчике нельзя использовать динамическое выделение и перераспределение памяти (new, malloc, realloc), соответственно менять String-строки тоже нельзя.
  • В прерывании нельзя использовать задержки.
  • Функция yield()

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

    EEPROM

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

    • Перед началом работы нужно вызвать EEPROM.begin(4.. 4096) с указанием размера области памяти в байтах.
    • Для применения изменений в памяти нужно вызвать EEPROM.commit() .

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

    Источник

    esp8266 — Сообщество разработчиков

    Arduino IDE для ESP8266

    Arduino IDE для ESP8266 позволяет писать скетчи и загружать их одним кликом в ESP8266 в знакомой среде (я бы даже сказал «до боли знакомой») Arduino IDE. Для тех кому интерфейс Arduino IDE не очень по душе, есть поддержка плагина для Eclipse. Итак, обо всем по порядку. Самые нетерпеливые могут сразу перейти к Arduino IDE для ESP8266: быстрый старт

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

    Arduino IDE для ESP8266 поддерживает все существующие на сегодняшний день модули ESP8266 (потому что они особо и не отличаются), включая модули с флеш бОльшего, чем 512k объема. Поддерживаются модули NodeMCU (всех версий), Olimex-MOD-WiFi-ESP8266.

    Поддерживается режим авторестарта и прошивки по RTS+DTR, как у обычной Arduino, для этого потребуется USB-TTL адаптер с разведенными пинами DTR и RTS. Если у вас только RX, TX и GND на USB-TTL, то придется по-старинке вручную притягивать к земле GPIO0 и передергивать питание модуля для прошивки.

    Arduino IDE для ESP8266: краткий обзор реализованных в настоящее время функций

    Базовые функции языка Wiring

    Управление GPIO осуществляется точно также, как и управление pin для arduino: pinMode , digitalRead , digitalWrite , analogWrite функционируют как обычно. GPIO нумеруются так, как мы уже привыкли: для чтения состояния GPIO2 нужно использовать команду digitalRead ( 2 )

    GPIO0-GPIO15 могут быть INPUT , OUTPUT , INPUT_PULLUP , и INPUT_PULLDOWN . GPIO16 может быть только INPUT , OUTPUT или INPUT_PULLDOWN . Команда analogRead ( A0 ) считывает значение ADC (АЦП) с TOUT.

    Команда analogWrite ( pin , value ) включает программный PWM (ШИМ) на указанном GPIO. Команда analogWrite ( pin , 0 ) отключает PWM. value может быть в диапазоне от 0 до PWMRANGE . Константа PWMRANGE в настоящее время равна 1023.

    Поддержка прерываний обеспечивается функциями attachInterrupt , detachInterrupt . Прерывания могут быть назначены на любой GPIO, кроме GPIO16. Стандартные прерывания Arduino CHANGE , RISING , FALLING тоже поддерживаются.

    ESP8266 — функции пинов

    Тайминг и delay

    Функции millis и micros возвращают миллисекунды и микросекунды соответственно, прошедшие с момента старта модуля. Любимая многими функция delay также присутствует и приостанавливает выполнение скетча на указанное время в миллисекундах и позволяет отработать операциям WiFi и TCP/IP. Функция delayMicroseconds используется аналогично, только время задается в микросекундах.

    Помните о том, что когда модуль поддерживает WiFi соединение, ему приходится выполнять множество фоновых задач, кроме вашего скетча. WiFi и TCP/IP функции библиотек SDK имеют возможность обработать все события в очереди после завершения каждого цикла вашей функции loop ( ) или во время выполнения delay ( . . . ) . Если в вашем коде есть фрагменты, которые выполняются более 50 миллисекунд, то необходимо использовать delay ( . . . ) для сохранения нормальной работоспособности стека WiFi.

    Также вы можете использовать функцию yield ( ) , которая эквивалентна delay ( 0 ) . С другой стороны, функция delayMicroseconds блокирует выполнение других задач, поэтому ее использование для временных задержек свыше 20 миллисекунд не рекомендуется.

    Последовательные порты Serial и Serial1 (UART0 и UART1)

    Объект Serial работает точно также, как и с Arduino. Помимо аппаратного FIFO (по 128 байт для приема и передачи) определен и программный буфер размером по 256 байт для приема и передачи данных. Прием и передача данных происходит по прерываниям, прозрачно для вашего скетча. Функции записи и чтения блокируют выполнение скетча только когда аппаратный FIFO и программный буфер переполняются.

    Serial использует аппаратный UART0, работающий на GPIO1(TX) и GPIO3(RX). Эти пины могут быть переназначены на GPIO15 (TX) и GPIO13 (RX) вызовом функции Serial . swap ( ) ; после Serial . begin ( ) ; . Повторный вызов Serial . swap ( ) ; вернет все на свои места.

    Serial1 использует аппаратный UART1, работающий только на передачу. UART1 TX это GPIO2. Для включения Serial1 используйте Serial1 . begin ( ) ;

    По умолчанию, отладочная информация библиотек WiFi выключается, когда вы вызываете функцию Serial . begin ( ) ; . Для включения отладочной информации на UART0 используйте Serial . setDebugOutput ( true ) ; Для перенаправления вывода отладочной информации на UART1 используйте команду Serial1 . setDebugOutput ( true ) ;

    И Serial и Serial1 поддерживают 5, 6, 7, 8 бит данных, odd (O), even (E), и no (N) режимы четности, и 1 или 2 стоп бита. Для выбора нужного режима вызывайте Serial . begin ( baudrate , SERIAL_8N1 ) ; или Serial . begin ( baudrate , SERIAL_6E2 ) ; и т.д.

    PROGMEM

    Макрос PROGMEM работает точно также, как в Arduino, помещая read only данные и строковые константы (литералы) во флеш память, высвобождая HEAP. Важное отличие состоит в том, что в ESP8266 одинаковые литералы не хранятся в одном месте, поэтому использование строковых констант внутри конструкций F ( «» ) и/или PSTR ( «» ) приводит к расходованию флеш памяти при каждом вызове этих функций. Вы должны самостоятельно управлять одинаковыми строками для экономичного расходования места во флеш памяти.

    Библиотека WiFi ESP8266 (ESP8266WiFi)

    Функции библиотеки WiFi ESP8266 очень схожи с функциями библиотеки для обычного WiFi шилда.

    • WiFi . mode ( m ) : выбрать режим WIFI_AP (точка доступа), WIFI_STA (клиент), или WIFI_AP_STA (оба режима одновременно).
    • WiFi . softAP ( ssid ) создает открытую точку доступа
    • WiFi . softAP ( ssid , password ) создает точку доступа с WPA2-PSK шифрованием, пароль должен быть не менее 8 символов
    • WiFi . macAddress ( mac ) позволяет получить MAC адрес в режиме клиента
    • WiFi . softAPmacAddress ( mac ) позволяет получить MAC адрес в режиме точки доступа
    • WiFi . localIP ( ) позволяет получить IP адрес в режиме клиента
    • WiFi . softAPIP ( ) позволяет получить IP адрес в режиме точки доступа
    • WiFi . RSSI ( ) пока не реализована
    • WiFi . printDiag ( Serial ) ; выводит диагностическую информацию

    Класс WiFiUDP поддерживает прием и передачу multicast пакетов в режиме клиента. Для передачи multicast пакета используйте вместо udp . beginPacket ( addr , port ) функцию udp . beginPacketMulticast ( addr , port , WiFi . localIP ( ) ) . Когда вы ожидаете multicast пакеты, используйте вместо udp . begin ( port ) функцию udp . beginMulticast ( WiFi . localIP ( ) , multicast_ip_addr , port ) . Вы можете использовать udp . destinationIP ( ) для определения того, был ли пакет отправлен на multicast адрес или предназначался именно вам. Multicast функции не поддерживаются в режиме точки доступа.

    WiFiServer , WiFiClient , и WiFiUDP работаю точно так же, как и с библиотекой обычного WiFi шилда. Четыре примера идет в комплекте с этой библиотекой.

    Тикер

    Библиотека Ticker может быть использована для выполнения периодически повторяющихся событий через определенное время. Два примера включено в поставку.

    В настоящее время не рекомендуется блокировать операции ввода-вывода (сеть, последовательный порт, файловые операции) в callback функциях тикера. Вместо блокирования устанавливайте флаг в callback функциях и проверяйте этот флаг в основном цикле.

    EEPROM

    Эта библиотека немного отличается от стандартной Arduino EEPROM. Необходимо вызвать функцию EEPROM . begin ( size ) каждый раз перед началом чтения или записи, размер (указывается в байтах) соответствует размеру данных, которые вы намереваетесь использовать в EEPROM. Размер данных должен быть в диапазоне от 4 до 4096 байт.

    Функция EEPROM . write не производит запись данных во флеш память немедленно, вы должны использовать функцию EEPROM . commit ( ) каждый раз, когда вы хотите сохранить данные в память. Функция EEPROM . end ( ) тоже производит запись данных, а также освобождает оперативную память от данных, запись которых произведена. Библиотека EEPROM использует один сектор во флеш памяти, начиная с адреса 0x7b000 для хранения данных. В поставку включено три примера работы с EEPROM.

    I2C (Библиотека Wire)

    Реализован только режим ведущего, частота ориентировочно до 450 кГц. Перед использованием шины I2C, нужно выбрать пины SDA и SCL путем вызова функции Wire . pins ( int sda , int scl ) , например Wire . pins ( 0 , 2 ) для модуля ESP-01. Для других модулей пины по умолчанию 4(SDA) и 5(SCL).

    Библиотека SPI поддерживает весь Arduino SPI API, включая транзакции, в том числе фазу синхронизации (CPHA). Clock polarity (CPOL) пока не поддерживается (SPI_MODE2 и SPI_MODE3 не работают).

    ESP8266 API

    Поддержка функций, специфичных для ESP8266 (режим глубокого сна и сторожевой таймер), реализована в объекте ESP . Функция ESP . deepSleep ( microseconds , mode ) переводит модуль в режим глубокого сна. Параметр mode может принимать значения: WAKE_DEFAULT , WAKE_RFCAL , WAKE_NO_RFCAL , WAKE_RF_DISABLED . GPIO16 должен быть соединен с RESET для выхода из режима глубокого сна.

    Функции ESP . wdtEnable ( ) , ESP . wdtDisable ( ) , и ESP . wdtFeed ( ) управляют сторожевым таймером.

    ESP . reset ( ) перезагружает модуль

    ESP . getFreeHeap ( ) возвращает размер свободной памяти

    ESP . getFreeHeap ( ) возвращает размер свободной памяти

    ESP . getChipId ( ) возвращает ESP8266 chip IDE, int 32bit

    ESP . getFlashChipId ( ) возвращает flash chip ID, int 32bit

    ESP . getFlashChipSize ( ) возвращает размер флеш памяти в байтах, так, как его определяет SDK (может быть меньше реального размера).

    ESP . getFlashChipSpeed ( void ) возвращает частоту флеш памяти, в Гц.

    ESP . getCycleCount ( ) возвращает количество циклов CPU с момента старта, unsigned 32-bit. Может быть полезна для точного тайминга очень коротких операций

    Библиотека OneWire

    Библиотека OneWire была адаптирована для ESP8266 (внесены изменения в OneWire.h) Если у вас установлена библиотека OneWire в папку Arduino/libraries, то будет использоваться именно она, а не из комплекта поставки.

    mDNS библиотека ESP8266mDNS

    Библиотека позволяет реализовать в вашей программе ответ на мультикастовые DNS запросы для локальной зоны, например «esp8266.local». В настоящее время поддерживается только одна зона. Позволяет обращаться к WEB серверу ESP8266 по имени, а не только по IP адресу. Дополнительную информацию вы можете найти в прилагаемом примере и в файле readme данной библиотеки.

    Библиотека Servo

    Библиотека позволяет управлять сервомоторами. Поддерживает до 24 сервоприводов на любых доступных GPIO. По умолчанию первые 12 сервоприводов будут использовать Timer0 и будут независимы от любых других процессов. Следующие 12 сервоприводов будут использовать Timer1 и будут разделять ресурсы с другими функциями, использующими Timer1. Большинство сервоприводов будут работать с управляющим сигналом ESP8266 3,3в, но не смогут работать на напряжении 3,3в и потребуют отдельный источник питания. Не забудьте соединить общий провод GND этого источника с GND ESP8266

    Другие библиотеки, не включенные в поставку Arduino IDE

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

    • arduinoWebSockets — WebSocket сервер и клиент для esp8266 (RFC6455)
    • aREST REST API handler библиотека, позволяет управлять GPIO через http запросы вида http://192.168.1.101/digital/6/1
    • Blynk — легкий в освоении IoT фреймворк (страница на Kickstarter). Статья на нашем сайте об этой библиотеке и мобильном приложении ESP8266 – Управляем со смартфона через Blynk
    • DallasTemperature DS18B20, DS1820, DS18S20, DS1822
    • DHT11 — используйте для инициализации следующие параметры DHT dht ( DHTPIN , DHTTYPE , 15 )
    • NeoPixelBus — Arduino NeoPixel библиотека для esp8266
    • PubSubClient Библиотека MQTT by @Imroy. Статья на нашем сайте об этой библиотеке ESP8266 подключаемся к OpenWRT+Mosquitto+mqttwarn и передаем данные на ThingSpeak, EMAIL, Android, iOS, Twitter, CloudMQTT в 100 строчек кода в Arduino IDE
    • RTC — библиотека for Ds1307 & Ds3231 для esp8266
    • Souliss, Smart Home — фреймворк для Умного Дома, построенный на Arduino, Android и OpenHAB

    Установка Arduino IDE через Boards Manager

    1. Установите Arduino IDE с официального сайта Arduino.cc
    2. Запустить Arduino IDE, далее Файл — Настройки — в поле Additional Boards Manager URLs вставить ссылку на стабильную версию http : //arduino.esp8266.com/package_esp8266com_index.json или для nightly build http : //arduino.esp8266.com/staging/package_esp8266com_index.json , нажать OK (В это поле вы можете вводить несколько ссылок, разделенных запятой)
    3. Инструменты — Плата —Boards Manager
    4. В Boards Manager в поле фильтра введите esp8266 или вручную пролистайте список и кликните на ESP8266 by ESP8266 Community Forum
    5. Кликните Install и дождитесь окончания загрузки (около 130 Мегабайт). Если загрузка произошла слишком быстро, возможно, что вы уже устанавливали Arduino IDE для ESP8266 и потребуется почистить кэш Boards Manager, иначе у вас останется установленной старая версия. Нужно сначала деинсталлировать старую версию, а потом необходимо удалить файлы кэша. Для Win7 x64 удалите файлы из папки C:\Users\Пользователь\AppData\Roaming\Arduino15 и повторите все, начиная с п.2
    6. Закройте Boards Manager и в меню Инструменты выберите Плата — Generic ESP8266
    7. Установите частоту вашего модуля 80 или 160Mhz, размер флеш памяти и выберите последовательный порт, к которому подключен ваш USB-TTL адаптер

    Схема подключения ESP8266

    Оптимальное подключение ESP8266 для Arduino IDE

    Оптимальное подключение ESP8266

    Подключение ESP8266 Примечание USB-TTL
    VCC ESP8266 подключайте к внешнему источнику питания >300мА, 3,3V
    GND все контакты GND должны быть соединены вместе: ESP8266, USB-TTL и источника питания GND
    TX (UTXD) RX
    RX (URXD) TX
    GPIO0 подтягивающий к питанию резистор 10k DTR (если на вашем USB-TTL не разведен пин DTR, то вам придется вручную переключать GPIO0 на землю для перевода ESP8266 в режим прошивки)
    RESET (RSBT, REST) подтягивающий к питанию резистор 10k, также можете добавить кнопку, соединяющую RESET и GND для ручного сброса модуля RTS (если на вашем USB-TTL не разведен пин RTS, то вам придется вручную перезагружать модуль )
    CH_PD (CH_EN) подтягивающий к питанию резистор 10k
    GPIO15 (MTDO) подтягивающий к земле резистор 10k
    (для тех модулей, где выведен пин GPIO15)
    GPIO2 подтягивающий к питанию резистор 10k
    (на схеме не показан, но рекомендуется для увеличения стабильности)
    GPIO16 для успешного выхода из режима Deep Sleep необходимо соединить пины ESP8266 GPIO16 и RESET через резистор 470 Ом (на схеме не показан)

    Примечания.

    1. Не на всех модулях выведены все пины. Перед приобретением модуля ознакомьтесь с видами модулей и их распиновкой.

    2. Если на вашем USB-TTL конвертере выведены пины CTS и DSR — для автозагрузки прошивки они вам не помогут, т.к. работают только на вход.

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

    Минимальное подключение ESP8266

    Минимальное подключение ESP8266 (повышенная стабильность)

    Более подробно, со всеми деталями, о подключении ESP8266 вы можете прочитать в нашей статье ESP8266 – подключение и обновление прошивки

    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 у вас подключен светодиод (через резистор, разумеется), то он включится.

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

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

    Источник

    Adblock
    detector