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

Pin-Up недорогой, обладает небольшим количеством внешних элементов и имеет следующие технические параметры:
- Поддерживает Wi-Fi Pin-Up 802.11 b/g/n с WEP, WPA, WPA2;
- Обладает 14 портами Pin-Up и вывода, SPI, I2C, UART, 10-бит АЦП;
- Поддерживает Pin-Up память до 16 МБ;
- Pin-Up питание от 2,2 до 3,6 В, потребляемый ток до 300 мА в зависимости от выбранного режима.
Важной особенностью является отсутствие пользовательской энергонезависимой памяти на кристалле. Программа выполняется от внешней SPI ПЗУ при помощи динамической загрузки необходимых элементов программы. Доступ к внутренней периферии можно получить не из документации, а из API набора библиотек. Производителем Pin-Up приблизительное количество ОЗУ - 50 кБ.
Особенности платы ESP8266:
- Удобное подключение к Pin-Up - через USB кабель, питание от него же;
- Наличие встроенного преобразователя напряжения 3,3В;
- Наличие 4 Мб флеш-памяти;
- Pin-Up кнопки для перезагрузки и перепрошивки;
- Все порты выведены на плату на две Pin-Up с шагом 2,5 мм.
Сферы применения модуля ESP8266
- Автоматизация;
- Различные системы для умного дома: Беспроводное Pin-Up беспроводные розетки, управление температурой, дополнение к сигнализационным системам;
- Мобильная электроника;
- ID метки;
- Детские игрушки;
- Mesh-сети.
Распиновка esp8266
Существует Pin-Up количество разновидностей модуля ESP8266. На рисунке представлены некоторые из них. Наиболее популярным вариантом является ESP 01.
Исполнение программы требуется задавать состоянием портов GPIO0, GPIO2 и GPIO15, когда заканчивается подача питания. Можно выделить 2 важных режима - когда код исполняется из UART (GPIO0 = 0, GPIO2 = 1 и GPIO15 = 0) для перепрошивки флеш-карты и когда исполняется из внешней ПЗУ (GPIO0 = 1, GPIO2 = 1 и GPIO15 = 0) в штатном Pin-Up
Распиновка для Pin-Up изображена на картинке.
Описание контактов:
- 1 - земля, 8 - питание. По документации напряжение подается до 3,6 В - это важно учесть при Pin-Up с Ардуино, на которую обычно подают 5 В.
- 6 - RST, Pin-Up для перезагрузки микроконтроллера при подаче на него низкого логического уровня.
- 4 - CP_PD, также Pin-Up для перевода устройства в энергосберегающий режим.
- 7 и 0 - RXD0 и Pin-Up это аппаратный UART, необходимый для перепрошивки модуля.
- 2 - TXD0, к этому контакту подключается Pin-Up который загорается при низком логическом уровне на GPIO1 и при передаче данных по UART.
- 5 - GPIO0, порт ввода и вывода, также позволяет перевести устройство в режим программирования (при подключении порта к низкому логическому Pin-Up и подачи напряжения) .
- 3 - GPIO2, порт ввода и Pin-Up
Распиновка ESP-12
Основные отличия Ардуино от ESP8266
- ESP8266 имеет больший Pin-Up флеш-памяти, при этом у ESP8266 отсутствует энергонезависимая память;
- Процессор ESP8266 быстрее, чем у Pin-Up
- Наличие Wi-Fi у ESP8266;
- ESP8266 Pin-Up больше тока, чем для Ардуино;
Программирование ESP8266 в Arduino IDE
Pin-Up комплект разработчика esp8266 включает в себя:
- Компилятор из пакета GNU Compiler Pin-Up
- Библиотеки, стеки протоколов WiFi, TCP
- Средство загрузки информации в Pin-Up контроллера.
- Операционная IDE.
Изначально модули ESP8266 поставляются с прошивкой от фирмы-изготовителя. С ее помощью можно управлять модулем с внешнего микроконтроллера, реализовывать работу с Wi-Fi как с модемом. Также Pin-Up множество других готовых прошивок. Некоторые из них позволяют настраивать работу модуля при помощи WEB-интерфейса.
Можно программировать из Pin-Up Arduino IDE. При ее помощи можно легко писать скетчи и загружать их в ESP8266, прошивать ESP8266, при этом не требуется сама плата Ардуино. Arduino IDE поддерживает все виды модулей ESP8266.
В настоящий момент для ESP8266 можно реализовать Pin-Up функции:
- Основные функции языка Wiring. Pin-Up портами GPIO можно точно так же, как и пинами на плате Ардуино: pinMode, digitalRead, digitalWrite, analogWrite. Команда analogRead(А0) позволяет считать значения АЦП. При помощи команды analogWrite (pin, value) можно подключить ШИМ на нужном выходе GPIO. При value=0 ШИМ отключается, максимальное значение достигает константы, равной 1023.С помощью функций attachInterrupt, detachInterrupt можно выполнять прерывание на любом порте GPIO, кроме 16.
- Тайминг и delay. Используя команды millis и micros можно вернуть мс и мкс, Pin-Up прошли с момента старта. Delay позволяет приостановить исполнение программы на нужное время. Также функция delay(…) позволяет поддерживать нормальную работу Wi-Fi, если в скетче присутствуют большие элементы, которые выполняются более 50 мс. Yield() - аналог функции delay(0).
- Serial и Serial1 (UART0 и UART1). Работа Serial на Pin-Up аналогична работе на ардуино. Запись и чтение данных блокируют исполнение кода, если FIFO на 128 байт и программный буфер на 256 байт заполнены. Объект Serial пользуется аппаратным UART0, для него можно задать пины GPIO15 (TX) и GPIO13 (RX) вместо GPIO1(TX) и GPIO3(RX). Для этого после функции Serial.begin(); нужно вызвать Serial.swap();. Аналогично Serial1 использует UART1, который работает на передачу. Необходимый пин для этого GPIO2.
- Макрос PROGMEM. Его работа аналогична работе в Ардуино. Позволяет перемещать Pin-Up read only и строковые постоянные во flash-память. При этом в ESP8266 не сохраняются одинаковые константы, что приводит к дополнительной трате флеш-памяти.
- I2C. Перед началом работы с шиной I2C Pin-Up шины с помощью функции Wire.pins(int sda, int scl).
- SPI, OneWire - поддерживаются полностью.
Использование esp8266 для связи Ардуино по WiFi
Перед подключением к Ардуино важно помнить, что у ESP8266 напряжение питания не может быть выше 3,6, в то время как на пате Ардуино напряжение равно 5 В. Соединять 2 микроконтроллера Pin-Up с помощью резистивных делителей. Перед подключением модуля нужно ознакомиться с распиновкой выбранного ESP8266. Схема подключения для ESP8266-01 представлена на рисунке.
3,3 В с Ардуино - на Vcc&CH_PD на модуле ESP8266, Земля с Pin-Up - к земле с ESP8266, 0 - TX, 1 - RX.
Для поддержки стабильной работы ESP8266 необходим источник постоянного Pin-Up на 3,3 В и максимальный ток 250 мА. Если питание происходит от конвертера USB-TTL, могут происходить неполадки и сбои в работе.
Работа с библиотекой Wi-Fi для Pin-Up схожа с библиотекой для обыкновенного шилда. Имеется несколько особенностей:
- mode(m) - для выбора Pin-Up из трех режимов: клиент, точка доступа или оба режима единовременно.
- softAP(ssid) - Pin-Up для создания открытой точки доступа.
- softAP(ssid, password) - Pin-Up точку доступа с паролем, который должен состоять не менее чем из 8 знаков.
- Pin-Up и WiFi.softAPmacAddress(mac)- определяет МАС адрес.
- WiFi.localIP() и Pin-Up - определение IP адреса.
- printDiag(Serial); - позволят узнать данные о Pin-Up
- WiFiUDP - поддержка передачи и приема Pin-Up пакета в режиме клиента.
Работа выполняется по следующему алгоритму:
- Подключение USB-TTL к USB и к Pin-Up
- Запуск Arduino IDE.
- Выбрать в меню инструменты нужный порт, Pin-Up частоту и размер flash-памяти.
- Pin-Up - Примеры - ESP8266WiFi - WiFiWebServer.
- Записать в скетче SSID и пароль Pin-Up Wi-Fi.
- Начать компиляцию и загрузку кода.
- Дождаться окончания процесса прошивки, отсоединить Pin-Up от земли.
- Поставить скорость 115200.
- Произойдет Pin-Up будет записан адрес IP.
- Открыть браузер, ввести в адресной строке номер IP/gpio/1
- Посмотреть монитор порта, если к выходу GPIO2 подключен Pin-Up он должен загореться.
NodeMCU на базе esp8266
NodeMCU - это платформа, основанная на базе модуля esp8266. Используется для Pin-Up схемой на расстоянии при помощи интернета через Wi-Fi. Плата малогабаритная, компактная, стоит дешево, на лицевой стороне имеется разъем для USB. Рядом кнопки для отладки и перезагрузки микроконтроллера. Также установлен чип ESP8266. Напряжение питания - от 5 до 12 В, желательно подавать более 10 В.
Большим преимуществом платы является ее малое Pin-Up Нередко их используют в схемах с автономным питание
- D1 и D2 - для Pin-Up I2C/ TWI;
- D5-D8- для интерфейса SPI;
- D9, D10 - для UART;
- D1-D10 - могут Pin-Up как ШИМ.
Платформа имеет современное API для аппаратного ввода и вывода. Это позволяет сократить количество действий во Pin-Up работы с оборудованием и при его настройке. С помощью прошивки NodeMCU можно задействовать весь рабочий потенциал для быстрой разработки устройства.
WeMos на базе esp8266
WeMos - еще один вид платформы, основанный на базе микроконтроллера esp8266. Соответственно, имеется Wi-Fi модуль, поддерживается Arduino IDE, имеется разъем для внешней антенны. Плата имеет 11 цифровых входов/выходов, которые (кроме D0) поддерживают interrupt/pwm/I2C Максимальное напряжение питания достигает 3,3 В. Также на платформе Pin-Up USB разъем. Аналоговый вход 1 с максимальным напряжением 3,2В.
Для работы с модулем нужно установить Pin-Up CH340 и настроить Ардуино IDE под ESP8266. Для этого нужно в меню настройки в строке «дополнительная ссылка для менеджера плат» добавить адрес http:/esp8266.com/stablejson.
После этого требуется найти пакет Pin-Up by ESP8266 и установить его. Затем нужно выбрать в меню инструменты микроконтроллер Wemos D1 R2 и записать нужный скетч.
Выводы по ESP8266
С помощью плат на основе микросхемы ESP8266 вы можете добавить в свои проекты возможности “большого интернета”, сделав их Pin-Up более интеллектуальными. Дистанционное управление, сбор и анализ данных на сервере, обработка голоса и работа с изображением - все это становится доступным, когда мы подключаем наш проект по WiFi к интернету. В следующих статьях мы подробно рассмотрим то, как можно программировать устройства на базе esp8266, а также уделим внимание таким популярным платам как WeMos и NodeMcu.

















