В прошлой статье мы рассмотрели первоначальную настройку и работу модуля ESP-01 с базовой AT-прошивкой. Возможности данной прошивки достаточно ограничены и использовать её для каких-то повседневных задач достаточно сложно. Как я писал в первой статье, для ESP8266 можно написать свою прошивку с нужным функционалом и тем самым сделать плату ESP-01 самодостаточным устройством. Всем кому это интересно, прошу под хабракат.
Как известно, SoC ESP8266 построен на базе процессора Xtensa LX106 фирмы Tensilica, если кому-то интересно, то в сети есть статья про конфигурируемые процессоры этой фирмы. Компания Espressif предоставляет полную документацию, а так же компилятор и среду разработки для SoC ESP8266 только после подписания партнерского соглашения и не со всеми подряд, на мое письмо они так и не ответили. Немного погуглив можно найти утекший в сеть официальный компилятор, среду разработки, основанную на Eclipse, множество документации и лицензии, но это не наш путь. Мы будем использовать неофициальный компилятор на основе Crosstool-NG
Разработка WEB-интерфейса для ESP8266. Часть 1: Подготовка скетча в Arduino IDE
В этой статье я расскажу как собрать компилятор под Ubuntu Linux, а так же мы попробуем написать простейшую прошивку. Основной упор я сделаю на работу с компилятором под Windows, а так же настройку среды Eclipse для написания прошивок для ESP8266.
Часть 1: Сборка компилятора под Ubuntu Linux, настройка SDK, сборка стандартных примеров и прошивок.
Установка среды сборки
Для 32-разрядной Debian (Linux) выполняем:
apt-get install git autoconf build-essential gperf bison flex texinfo libtool libncurses5-dev wget gawk libc6-dev-amd64 python-serial libexpat-dev
Для 64-разрядной Debian (Linux) выполняем:
apt-get install git autoconf build-essential gperf bison flex texinfo libtool libncurses5-dev wget gawk libc6-dev-i386 python-serial libexpat-dev
Далее:
USER меняем на логин текущего пользователя.
sudo mkdir /opt/Espressif sudo chown USER:root /opt/Espressif cd /opt/Espressif git clone -b lx106 git://github.com/jcmvbkbc/crosstool-NG.git cd crosstool-NG ./bootstrap ./configure —prefix=`pwd` make make install ./ct-ng xtensa-lx106-elf ./ct-ng build PATH=$PWD/builds/xtensa-lx106-elf/bin:$PATH
После этого можно откинуться на спинку кресла минут на 40-50 и попить кофе. Если все завершится без ошибок, то можно двигаться дальше.
cd /opt/Espressif mkdir ESP8266_SDK cd ESP8266_SDK wget http://bbs.espressif.com/download/file.php?id=72 -O esp_iot_sdk_v0.9.3_14_11_21.zip wget http://bbs.espressif.com/download/file.php?id=73 -O esp_iot_sdk_v0.9.3_14_11_21_patch1.zip unzip esp_iot_sdk_v0.9.3_14_11_21.zip rm esp_iot_sdk_v0.9.3_14_11_21.zip rm esp_iot_sdk_v0.9.3/lib/libpp.a unzip esp_iot_sdk_v0.9.3_14_11_21_patch1.zip rm esp_iot_sdk_v0.9.3_14_11_21.zip mv esp_iot_sdk_v0.9.3/* . rm -r esp_iot_sdk_v0.9.3/
Добавляем библиотеки libc, libhal и заголовочные файлы в SDK
cd /opt/Espressif/ESP8266_SDK wget -O lib/libc.a https://github.com/esp8266/esp8266-wiki/raw/master/libs/libc.a wget -O lib/libhal.a https://github.com/esp8266/esp8266-wiki/raw/master/libs/libhal.a wget -O include.tgz https://github.com/esp8266/esp8266-wiki/raw/master/include.tgz tar -xvzf include.tgz rm include.tgz
Установка ESP image tool
ESP8266/ESP32: Обзор, начало работы
ESP tool можно собрать из исходников,
для Linux можно скачать здесь
для Debian/Ubuntu здесь
Готовый пакет для Ubuntu качаем отсюда
cd /opt/Espressif/ wget https://github.com/esp8266/esp8266-wiki/raw/master/deb/esptool_0.0.2-1_i386.deb sudo dpkg -i esptool_0.0.2-1_i386.deb rm esptool_0.0.2-1_i386.deb
Установка ESP upload tool
cd /opt/Espressif git clone https://github.com/themadinventor/esptool esptool-py sudo ln -s $PWD/esptool-py/esptool.py crosstool-NG/builds/xtensa-lx106-elf/bin/ sudo ln -s $PWD/esptool-py/esptool.py /usr/sbin/
Сборка примеров прошивок
Для начала откройте файл /opt/Espressif/ESP8266_SDK/include/osapi.h и закомментируйте строку #include «user_config.h»
Скачиваем и собираем примеры blinky и basic_example:
cd /opt/Espressif/ESP8266_SDK/examples/ wget https://github.com/esp8266/source-code-examples/archive/master.zip unzip master.zip rm -r master.zip mv source-code-examples-master/* . rm -r source-code-examples-master cd blinky make
Если все шаги были сделаны правильно, то сборка пройдет без ошибок и в каталоге firmware появятся 2 файла прошивки 0x00000.bin и 0x40000.bin
Скачиваем и собираем пример базовой прошивки AT:
cd /opt/Espressif/ESP8266_SDK/examples/ wget -O at_v0.19_14_10_30.zip http://bbs.espressif.com/download/file.php?id=13 unzip at_v0.19_14_10_30.zip rm at_v0.19_14_10_30.zip cd at_v0.19_on_SDKv0.9.2/ rm Makefile cp ../example.Makefile . mv example.Makefile Makefile
Для правильной сборки AT прошивки необходимо отредактировать базовый Makefile в строке
LIBS = c gcc hal pp phy net80211 lwip wpa main
добавить линковку библиотеки upgrade, итоговая строка будет выглядеть так
LIBS = c gcc hal pp phy net80211 lwip wpa upgrade main
после этого прошивку можно собрать командой make
Cобираем пример прошивки IoT:
cd /opt/Espressif/ESP8266_SDK/examples/IoT_Demo/ rm Makefile cp ../example.Makefile . mv example.Makefile Makefile
Так же как и для AT прошивки, для правильной сборки IoT прошивки необходимо отредактировать базовый Makefile в строку
MODULES = driver user
нужно добавить дополнительные модули, итоговая строка будет выглядеть так
MODULES = driver user json ssl upgrade lwip
а в строку
LIBS = c gcc hal pp phy net80211 lwip wpa main
добавить линковку библиотеки json, итоговая строка будет выглядеть так
LIBS = c gcc hal pp phy net80211 lwip wpa main json
после этого прошивку можно собрать командой make
Для того чтобы прошить плату ESP-01 нужно использовать команду make flash
Не забываем, что для переключения в режим обновления прошивки нужно подать низкий уровень на GPIO0 и высокий на CH_PD.
Чтобы понять, что делает make flash стоит открыть любой Makefile и найти строку flash:
после подстановки всех аргументов получаем команду прошивки SoC:
esptool.py —port /dev/ttyUSB0 write_flash 0x00000 firmware/0x00000.bin 0x40000 firmware/0x40000.bin
Формат файла прошивки, собственно и как протокол обмена можно почитать тут на русском или здесь на английском языках.
На этом рассмотрение сборки компилятора и SDK под Linux закончено.
Часть 2: Установка компилятора под Windows, настройка SDK, сборка стандартных примеров и прошивок.
Т.к. моя основная ОС под которой я работаю 90% времени это Windows, то разработка в Linux меня не сильно интересовала.
Ниже я расскажу, как установить и настроить компилятор и SDK в Windows, а так же как настроить среду разработки Eclipse для комфортной разработки прошивок в ней.
Рассматривать процесс сборки компилятора под Windows я не буду, т.к. это довольно сложная процедура, она намного сложнее сборки в Linux.
Дабы избавить Вас от всех тонкостей и нюансов, я подготовил рабочий комплект Espressif DevKit, включающий в себя компилятор, последнюю версию SDK, стандартные примеры прошивок, а так же мои собственные примеры прошивок.
Итак приступим:
1. Cкачиваем (148Mb) и устанавливаем мой комплект Espressif-ESP8266-DevKit-v2.2.1-x86.exe (актуален на 15.11.2016)
2. Скачиваем и устанавливаем Java Runtime x86 или x64 (Например: jre-8u111-windows-x64.exe для Windows x64)
3. Скачиваем и устанавливаем Eclipse Neon x86 или Eclipse Neon x64 для разработки на С++. Распаковываем архив в корень диска С.
4. Скачиваем и устанавливаем MinGW. Запускаем mingw-get-setup.exe, в процессе установки выберите режим без GUI, то есть уберите галочку «. also install support for the graphical user interface».
5. Скачиваем набор моих скриптов для автоматизации установки доп.модулей для MinGW. (актуален на 15.10.2016)
6. Запустите из моего набора файл install-mingw-package.bat. Он скачает с моего сайта закэшированые архивы пакетов для mingw, примерно 90 Mb и установит основные модули для MinGW. Скачивание заранее готового набора файлов пакетов для MinGW гарантирует, что все они будут установлены, иногда сервера, где лежат пакеты MinGW становятся недоступными и необходимые пакеты не ставятся и поэтому сборка прошивок может проходить с разного рода фокусами.
7. Запустите Eclipse из каталога c:eclipseeclipse.exe
8. В Eclipse выберите меню File -> Import -> General -> Existing Project into Workspace, в строке Select root directory выберите каталог C:EspressifexamplesESP8266 и импортируйте рабочие проекты.
Далее справа в Make Target выберите нужный проект, например hello-world и запустите цель all на сборку,
при этом в окне Console должен отобразиться ход сборки, если все сделано правильно, то будет примерно такая картина:
17:00:00 **** Build of configuration Default for project hello-world **** mingw32-make.exe -f C:/Espressif/examples/ESP8266/hello-world/Makefile all CC driver/uart.c CC user/user_main.c AR build/app_app.a LD build/app.out FW firmware/0x00000.bin FW firmware/0x40000.bin 17:00:04 Build Finished (took 3s.740ms)
Это значит, что прошивка для ESP8266 собрана и находится в каталоге C:Espressifexampleshello-worldfirmware
Для прошивки ESP8266 используйте цель flash, предварительно отредактировав файл сборки проекта Makefile, строка
ESPPORT ?= COM2
, где после COM цифра 2 указывает номер COM-порта к которому подключена плата с ESP8266.
Источник: habr.com
Arduino IDE для ESP8266

Arduino IDE для ESP8266 позволяет писать скетчи и загружать их одним кликом в ESP8266 в знакомой среде (я бы даже сказал «до боли знакомой») Arduino IDE. Для тех кому интерфейс Arduino IDE не очень по душе, есть поддержка плагина для Eclipse. Итак, обо всем по порядку. Самые нетерпеливые могут сразу перейти к Arduino IDE для ESP8266: быстрый старт
- Arduino IDE для ESP8266: краткий обзор реализованных в настоящее время функций
- Базовые функции языка Wiring
- Тайминг и delay
- Последовательные порты Serial и Serial1 (UART0 и UART1)
- PROGMEM
- Библиотека WiFi ESP8266 (ESP8266WiFi)
- Тикер
- EEPROM
- I2C (Библиотека Wire)
- SPI
- ESP8266 API
- Библиотека OneWire
- mDNS библиотека ESP8266mDNS
- Библиотека Servo
- Другие библиотеки, не включенные в поставку Arduino IDE
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
Библиотека 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 должны работать без каких-либо доработок. На сегодняшний день можно точно сказать, что протестированы и полностью работоспособны следующие библиотеки:
Установка Arduino IDE через Boards Manager
- Установите Arduino IDE с официального сайта Arduino.cc
- Запустить 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 (В это поле вы можете вводить несколько ссылок, разделенных запятой)
- Инструменты — Плата —Boards Manager
- В Boards Manager в поле фильтра введите esp8266 или вручную пролистайте список и кликните на ESP8266 by ESP8266 Community Forum
- Кликните Install и дождитесь окончания загрузки (около 130 Мегабайт). Если загрузка произошла слишком быстро, возможно, что вы уже устанавливали Arduino IDE для ESP8266 и потребуется почистить кэш Boards Manager, иначе у вас останется установленной старая версия. Нужно сначала деинсталлировать старую версию, а потом необходимо удалить файлы кэша. Для Win7 x64 удалите файлы из папки C:UsersПользовательAppDataRoamingArduino15 и повторите все, начиная с п.2
- Закройте Boards Manager и в меню Инструменты выберите Плата — Generic ESP8266
- Установите частоту вашего модуля 80 или 160Mhz, размер флеш памяти и выберите последовательный порт, к которому подключен ваш USB-TTL адаптер
Схема подключения ESP8266

Оптимальное подключение ESP8266 для Arduino IDE
Оптимальное подключение ESP8266
| 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 можно в специальном разделе на нашем форуме.
Источник: esp8266.ru
Программирование
Номера контактов в Arduino непосредственно соответствуют контактам номеров ESP8266 GPIO.

pinMode(pin, mode)
– pin: номер вывода, режим работы которого будет конфигурироваться.
– mode: принимает значения INPUT, OUTPUT или INPUT_PULLUP.
digitalWrite(pin, value)
– pin: номер вывода
– value: значение HIGH или LOW
digitalRead(pin)
– pin: номер цифрового вывода, с которого необходимо считать значение (int)
Цифровые контакты 0-15 могут быть в режимах INPUT, OUTPUT, или INPUT_PULLUP.
Pin 16 может быть INPUT , OUTPUT или INPUT_PULLDOWN_16 . При запуске, контакты настроены как INPUT.
Цифровые контакты 6-11 используются для подключения флэш -памяти чипа на большинстве модулей. Попытка использовать эти контакты, вероятно, приведет к краху программы.
Пины могут также служить для других функции, такие как последовательный, I2C, SPI. Эти функции обычно активируются соответствующими библиотеками.
Внешние прерывания
Прерывания поддерживаются через attachInterrupt, detachInterrupt функций.
Прерывания могут быть присоединены к любому контактакту GPIO, за исключением GPIO16.
attachInterrupt(pin, function, mode)
pin: номер вывода
function: функция, которую необходимо вызвать при возникновении прерывания;
эта функция должна быть без параметров и не возвращать никаких значений. Такую функцию иногда называют обработчиком прерывания.
mode: определяет условие, при котором должно срабатывать прерывание. Может принимать одно из трез предопределенных значений:
CHANGE – прерывание будет срабатывать всякий раз, когда меняется состояние вывода
RISING – прерывание сработает, когда состояние вывода изменится с низкого уровня на высокий
FALLING – прерывание сработает, когда состояние вывода изменится с высокого уровня на низкий.
detachInterrupt(pin) – Запрещает заданное прерывание.
– pin: номер вывода, соответствующее прерывание которого необходимо запретить
Аналоговый вход
ESP8266 имеет один канал АЦП доступной для пользователей. Это может быть использован либо для чтения напряжение на АЦП, или для считывания напряжение питания модуля (VCC).
analogRead (A0)
Чтобы прочитать внешний напряжение, приложенное к АЦП, используйте analogRead (A0) .
Диапазон входного напряжения: 0 – 1,024.
ESP.getVcc ()
Чтобы прочитать напряжение питания, и контакт АЦП должен быть отключен. Кроме того, следующая строка должна быть добавлена к эскизе:
ADC_MODE (ADC_VCC);
Эта строка должна появиться вне всяких функций, например сразу после #include строки эскиза.
Источник: esp8266-arduinoide.ru