WiFi модуль ESP8266 ESP07 для домашней автоматизации

Миниатюрные WiFi модули ESP8266 довольно привлекательны для систем умного дома и домашней автоматизации. Их еще называют «убийцами NRF24L01». Здесь уже был обзор этого модуля
Я себе заказал более поздние модификации ESP07 и ESP12, которые отличаются меньшими размерами и большим числом выведенных GPIO, что не требует «хаков» для использования в них дополнительных портов ввода/вывода.

Данный модули разработаны китайской компанией Espressif System

Технические характеристики:


  • WI-FI: 802.11 b/g/n с WEP, WPA, WPA2.
  • Режимы работы: Клиент (STA), Точка доступа (AP), Клиент+Точка доступа (STA+AP).
  • Напряжение питания 1.7..3.6 В.
  • Потребляемый ток: до 215мА в зависимости от режима работы.
  • Количество GPIO: 16.
  • Flash память размером 512кб.
  • RAM данных 80 кб
  • RAM инструкций — 32 кб.

Про модификации модулей ESP8266 можно прочитать здесь

Заказывал я модули в январе.
Цена ESP-07 — $3.78, ESP-12 — $4.24. Покупал на премию за обзор статьи. Приехали за 31 день в запаянных пакетиках




ESP8266 ESP-07


ESP8266 ESP-12


Оживление модуля заняло довольно много времени
Для этого нужно подать на него 3.3В. Причем стабилизаторы у преобразователей USB/UART не тянут данный модуль по току, поэтому питание нужно внешнее.

Далее нужно посадить GPIO15 на землю, а CH_PD и GPIO0 подтянуть к VCC через резистор. В некоторых источниках еще указывается, что нужно подтянуть к VCC и GPIO2, но у меня все заработало и без этого.

RXD, TXD и GND подсоединяются через переходник USB/UART к компьютеру.

В результате собрал на макетке такую схему

Здесь сразу столкнулся со следующей сложностью — шаг дырочек у ESP07 — 2мм, а не 2.5 как у штырьковых разъемов, применяемых в Ардуино и прочих местах.

Пришлось к макетке паять на проволочках


Сразу вывел кнопку RESET и перемычку GPIO0 на землю, переводящую модуль в режим загрузки прошивки. А питание на модуль завел через линейный стабилизатор LM1117-N-3.3

После этого запустил программу CollTerm и на скорости 9600 получил приглашение модуля.
Команда AT+GMR выдала 0020000904 (Версия SDK — 0020, в версия AT — 0904)

Далее побаловавшись с AT командами запустил модуль как точку доступа и подключился к своей.


Для тех, кому лень, как мне, разбираться с АТ командами, есть программа ESP8266_config, позволяющая все это настроить.

Далее интересно было попробовать модуль в режиме самостоятельного контроля. Для этого решил прошить его NodeMCU со встроенным интерпретатором LUA.
Я загрузил ModeMCU сGITHUB вместе с примерами и модулями на LUA

Прошивку делал утилитой XTCOM_UTIL. Так как данная программа работает только с COM1-COM6, пришлось в диспетчере устройств изменить свой COM33 от USB/UART конвертера на COM6.

Далее прошивка не представляет труда: открываем порт и коннектимся. Скорость выбирается автоматически. Главное, не забыть посадить GPIO0 на землю (у меня для этого есть специальная перемычка). Скорость выбирается автоматически. Иногда коннект не устанавливался. Помогало нажатие кнопки RESET во время коннекта.

Далее выбираем файл с прошивкой
nodemcu-firmware-master\pre_build\latest\nodemcu_latest.bin


Теперь можно подключиться к модулю при помощи ESPlorer
В данной программе можно загружать в ESP файлы для интерпретатора LUA, выполнять как одиночные команды так и скрипты этого интерпретатора.


У меня получилось запустить модуль давления/температуры BMP180, подключенный к GPIO2 и GPIO0

Для этого я загрузил файл bmp180.lua из готовых модулей, идущих вместе с прошивкой с GITHUB
И затем файл init.lau, выполняемый при загрузке ESP8266


tmr.alarm(1, 5000, 1, function()
    print('ip: ',wifi.sta.getip())
    bmp180 = require("bmp180")
    bmp180.init(4, 3)
    tmr.stop(1) -- alarm stop
end)

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


bmp180.read(OSS)
t = bmp180.getTemperature()
p = bmp180.getPressure()

-- temperature in degrees Celsius  and Farenheit
print("Temperature: "..(t/10).."  C")
-- pressure in differents units
print("Pressure: "..(p * 75 / 10000).." mmHg")

Выдавал в консоль текущее давление и температуру.

А вот запустить выдачу данных параметров в режиме веб-сервера мне не удалось. Все дело в нехватки памяти. Отдельно веб сервер и BMP180 работали, а вместе вываливались в


PANIC: unprotected error in call to Lua API (error loading module 'bmp180' from file 'bmp180.lua': not enough memory)

Или просто на консоль валились обрывки кода LUA.

Модернизировать свою домашнюю метеостанцию с ходу не получилось.

Дальнейший мой путь был, собирать свою прошивку на фирменном SDK, как написано в этой статье . Но это уже другая история. Скажу только, что прошивки собираются без проблем, а вот запустить злополучный BMP180 так и не удалось.

Выводы

  • Модули ESP8266 — это очень дешевое решения для построение сети умного дома и прочей домашней автоматизации с использованием WiFi
  • Данные модули вполне годятся для замены NRF24L01+ в связке с Arduino и прочими «народными» контроллерами.
  • Для работы в качестве самостоятельного контроллера ESP8266 имеет маловато ресурсов и довольно сырые прошивки
  • Программирование ESP-модулей довольно трудоемкий процесс, который может отпугнуть новичков
  • В целом ESP8266 имеют большие перспективы. Буду ждать развитие прошивок и средств разработки, а пока, буду применять их в связке с другими контроллерами (кроме проектов с WiFi розетками и выключателями )))

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


Дальнейшее развитие событий по моему использованию ESP8266 буду публиковать в своем блоге

Кот попался, пока возился с макрофотографиями

Оказался довольно пыльным )))

mysku.ru

Esp8266 07 и 12 делаем wifi кнопку

В интернете много информации про данные модули, но когда понадобилось выполнить конкретную задачу, на 4 строки вкладок в firefox нагуглил, поэтому решил хоть одно применение описать полностью (ну почти).

Итак, есть у меня не так давно подъемные гаражные ворота doorhan, и 2 брелока к ним, но иногда 2-х бывает мало, да и один из этих двух временами глючит несмотря на новую батарейку. Но в на плате управления, что в гараже, есть пины для подключения внешней проводной кнопки. Используя их решил реализовать управление со смартфона.
Посмотрев обзор уважаемогоsav13 mySKU.me/blog/ebay/30626.html были приобретены 2 платы esp8266 esp-07 и esp-12.
Я не профессионал, поэтому некоторые вещи пишу как понял, где-то могу ошибиться). Да и делал я всё «на коленке»))).
Начнем с самого начала. Для начала работы с модулем нужен uart конвертер, у меня такой mySKU.me/blog/ebay/29003.html, ещё к адруине покупал. Для работы со смартфоном нужно прошить esp прошивкой nodemcu. Я прошил такой nodemcu_integer_0.9.6-dev_20150704.bin, качал здесь: github.com/nodemcu/nodemcu-firmware/releases.
Что нужно для прошивки и как подключать:
Есть сайт esp8266.ru, где в принципе все есть esp8266.ru/esp8266-podkluchenie-obnovlenie-proshivki/#esp8266-update-firmware, только разбросано по разным местам, и иногда (редко конечно) мелкие нюансы не расписаны.
Качаем программу для прошивки ESP8266Flasher.exe отсюда: github.com/nodemcu/nodemcu-flasher

Дополнительная информация


Подключаем плату к uart как описано в статье «Как быстро подключить ESP8266» esp8266.ru/esp8266-podkluchenie-obnovlenie-proshivki/#esp8266-connect.
— RX и TX зеркально,
— питание к питанию (vcc — 3V3) берем ТОЛЬКО 3.3 вольта, 5 я не пробовал, но в инете не рекомендуют,
— земля к земле (gnd)
— на плате esp gpio15 соединяем с землей (насовсем)
— на плате esp пин EN (CH_PD) соединяем с VCC через тумблер или на скрутке двумя проводами, чтобы можно было рвать и восстанавливать питание.
Когда все это дело собрали)

Дополнительная информация


mysku.me

ESP8266 и Arduino, подключение, распиновка / Хабр

Привет geektimes. Тема ESP8266, как и IoT(интернет вещей), всё больше набирает популярности, и уже Arduino подхватывает инициативу — добавляя эти Wi-Fi модули в список поддерживаемых плат.
Но как же его подключить к ардуино? И возможно как-то обойтись вообще без ардуино? Сегодня именно об этом и пойдёт речь в этой статье.

Забегая наперёд, скажу, что будет вторая статья, уже более практическая, по теме прошивки и программирования модуля ESP8266 в среде разработки Arduino IDE. Но, обо всём по порядку.

Этот видеоролик, полностью дублирует материал, представленный в статье.



На данный момент, существует много разновидностей этого модуля, вот некоторые из них:

А вот распиновка ESP01, ESP03, ESP12:


* Данную картинку можно посмотреть в хорошем качестве на офф. сайте pighixxx.com.

Лично мне, больше всего нравится версия ESP07. Как минимум за то, что тут есть металлический экран (он защищает микросхемы от внешних наводок, тем самым обеспечивает более стабильную работу), своя керамическая антенна, разъём для внешней антенны. Получается, подключив к нему внешнюю антенну, например типа биквадрат, то можно добиться неплохой дальности. К тому же, тут есть немало портов ввода вывода, так называемых GPIO(General Purpose Input Output — порты ввода-вывода общего назначения), по аналогии с ардуино — пинов.

Давайте вернёмся к нашим баранам Wi-Fi модулям и Arduino. В этой статье, я буду рассматривать подключение ESP8266(модели ESP01) к Arduino Nano V3.

Но, данная информация будет актуальна для большинства модулей ESP8266 и так же разных Arduino плат, например самой популярной Arduino UNO.

Пару слов по ножкам ESP01:

Vcc и GND(на картинке выше это 8 и 1) — питание, на ножку Vcc можно подавать, судя по документации, от 3 до 3.6 В, а GND — земля (минус питания). Я видел, как один человек подключал этот модуль к двум AA аккумуляторам (напряжение питания в этом случае было примерно 2.7 В) и модуль был работоспособным. Но всё же разработчики указали диапазон напряжений, в котором модуль должен гарантированно работать, если вы используете другой — ваши проблемы.

Внимание! Этот модуль основан на 3.3 В логике, а Arduino в основном — 5 В логика. 5 В запросто могут вывести из строя ESP8266, потому на него нужно отдельно от ардуино подавать питание.

— На моей ардуинке есть ножка, где написано 3.3 В, почему бы не использовать её?

Наверное подумаете вы. Дело в том, что ESP8266 довольно таки прожорливый модуль, и в пиках может потреблять токи до 200 мА, и почти никакая ардуинка по умолчанию не способна выдать такой ток, разве что исключением является Arduino Due, у которой ток по линии 3.3 В может достигать 800 мА, чего с запасом хватит, в других же случаях советую использовать дополнительный стабилизатор на 3.3 В, например AMS1117 3.3 В. Таких валом как в Китае, так и у нас.

Ножка RST 6 — предназначена «железной» для перезагрузки модуля, кратковременно подав на неё низкий логический уровень, модуль перезагрузиться. Хоть и на видео я этим пренебрёг, но всё же вам советую «прижимать» данную ногу резистором на 10 кОм к плюсу питания, дабы добиться лучшей стабильности в работе модуля, а то у меня перезагружался от малейших наводок.

Ножка CP_PD 4(или по-другому EN) — служит, опять же, для «железного» перевода модуля в энергосберегающий режим, в котором он потребляет очень маленький ток. Ну и снова — не будет лишним «прижать» эту ногу резистором на 10 кОм к плюсу питалова. На видео я тупо закоротил эту ногу на Vcc, потому как под рукой не оказалось такого резистора.

Ноги RXD0 7 TXD0 2 — аппаратный UART, который используется для перепрошивки, но ведь никто не запрещает использовать эти порты как GPIO(GPIO3 и GPIO1 соотвественно). GPIO3 на картинке почему-то не размечен, но в даташите он есть:

К стати, к ножке TXD0 2 подключен светодиод «Connect», и горит он при низком логическом уровне на GPIO1, ну или когда модуль отправляет что-то по UART.

GPIO0 5 — может быть не только портом ввода/вывода, но и переводить модуль в режим программирования. Делается это подключив этот порт к низкому логическому уровню(«прижав» к GND) и подав питание на модуль. На видео я делаю это обычной кнопкой. После перепрошивки — не забудьте вытащить перемычку/отжать кнопку(кнопку во время перепрошивки держать не обязательно, модуль при включении переходит в режим программирования, и остаётся в нём до перезагрузки).

GPIO2 3 — порт ввода/вывода.

И ещё один немаловажный момент, каждый GPIO Wi-Fi модуля может безопасно выдавать ток до 6 мА, чтобы его не спалить, обязательно ставьте резисторы последовательно портам ввода/вывода на… Вспоминаем закон Ома R = U/I = 3.3В / 0.006 А = 550 Ом, то есть, на 560 Ом. Или же пренебрегайте этим, и потом удивляйтесь почему оно не работает.

В ESP01 все GPIO поддерживают ШИМ, так что к нашим четырём GPIO, то есть GPIO0-3 можно подключить драйвер двигателя, аля L293 / L298 и рулить двумя двигателями, например катера, или же сделать RGB Wi-Fi приблуду. Да, да, данный модуль имеет на борту много чего, и для простеньких проектов скрипач Arduino не нужен, только для перепрошивки. А если использовать ESP07 то там вообще портов почти как у Uno, что даёт возможность уже уверенно обходиться без ардуино. Правда есть один неприятный момент, аналоговых портов у ESP01 вообще нет, а у ESP07 только один, ADC зовётся. Это конечно усугубляет работу с аналоговыми датчиками. В таком случае ардуино аналоговый мультиплексор в помощь.

Всё вроде как по распиновке пояснил, и вот схема подключения ESP8266 к Arduino Nano:

Видите на Arduino Nano перемычка на ножках RST и GND? Это нужно для того, чтобы ардуинка не мешала прошивке модуля, в случае подключения ESP8266 при помощи Arduino — обязательное условие.

Так же если подключаете к Arduino — RX модуля должен идти к RX ардуинки, TX — TX. Это потому, что микросхема преобразователь уже подключена к ножкам ардуино в перекрестном порядке.

Так же немаловажен резистивный делитель, состоящий из резисторов на 1 кОм и 2 кОм (можно сделать из двух резисторов на 1 кОм последовательно соединив их) по линии RX модуля. Потому как ардуино это 5 В логика а модуль 3.3. Получается примитивный преобразователь уровней. Он обязательно должен быть, потому что ноги RXD TXD модуля не толерантные к 5 В.

Ну и можно вообще обойтись без ардуино, подключив ESP8266 через обычный USB-UART преобразователь. В случае подключения к ардуино, мы, по сути, используем штатный конвертер интерфейсов usb и uart, минуя мозги. Так зачем тратиться лишний раз, если можно обойтись и без ардуино вообще? Только в этом случае, мы подключаем RXD модуля к TXD конвертора, TXD — RXD.

Если вам лениво заморачиваться с подключением, возится с резисторами и стабилизаторами — есть готовые решения NodeMcu:

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

Ну вот, с теорией наверное всё, статья получилась пожалуй довольно таки большая, и практическую часть, аля прошивка и программирование модуля, я опубликую немного позже.

Я, у себя на ютуб канале, открыл целый плейлист посвящённый моим видео по теме этого Wi-Fi модуля. В планах построили машинку, или лодку, на Wi-Fi управлении, где вместо пульта ДУ будет обычный смарт. Но пока что я к этому ещё не пришёл, так что это всего лишь планы на будущее.

Продолжение этой статьи.

Даташиты на:
ASM1117 3.3 B;
ESP8266EX(микроконтроллер, что стоит в модуле);

Ещё ссылки:
Русскоязычное сообщество по ESP8266;
Схемы рисовал в программе Fritzing;
Почему многие не любят Arduino;
Все мои публикации на geektimes.

By Сергей ПоделкинЦ ака MrПоделкинЦ.

habr.com

подключение и обновление прошивки – esp8266

Модуль esp8266 подключен USB-TTL на 3,3 вольта

ESP8266 — быстрый старт для начинающих

Как проверить ESP8266

Как быстро подключить ESP8266

Как правильно подключить ESP8266

Как подключить ESP8266 через Arduino

Как подключить ESP8266 через RaspberryPi

Как настроить ESP8266

Как обновить прошивку ESP8266

Нижеприведенные инструкции и схемы не являются «правильными» с точки зрения схемотехники и не должны применяться в реальных конечных устройствах. Это упрощенные инструкции для быстрого старта, чтобы вы могли с минимальным набором компонентов запустить свой модуль ESP8266. При этом все эти упрощенные схемы реально работают и проверены автором лично на различных модулях ESP8266.

Как проверить ESP8266

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

Внимание! Допустимый диапазон напряжения питания модуля ESP8266 от 3,0 до 3,6 вольт. Подача повышенного напряжения питания на модуль гарантированно приведет к выходу ESP8266 из строя.

Чтобы проверить ESP8266 ESP-01 достаточно подключить три пина: VCC и CH_PD (chip enable) к питанию 3,3 вольт, а GND к земле. Если у вас не ESP-01, а другой модуль и на нем выведен GPIO15, то дополнительно еще потребуется подключить GPIO15 к земле.

При успешном старте заводской прошивки на модуле ESP8266 загорится красный светодиод (индикатор питания, на некоторых версиях модуля, например ESP-12, может отсутствовать) и пару раз мигнет синий (это индикатор передачи данных от модуля к терминалу по линии TX-RX, может иметь другой цвет) и в вашей беспроводной сети должна появится новая точка доступа с именем «ESP_XXXX», которую вы сможете увидеть с любого WiFi устройства. название точки доступа зависит от производителя прошивки и может быть другим, например AI-THINKER_AXXXXC. Если точка доступа появилась, то можно продолжить эксперименты далее, если нет, то еще раз проверьте питание, CH_PD, GND и если все подключено правильно то, скорее всего, у вас неисправный модуль, но есть надежда, что прошивка в модуле с нестандартными настройками и, возможно, вам поможет перепрошивка.

Как быстро подключить ESP8266

В минимальный набор для подключения и прошивки модуля ESP8266 входит:

1. Собственно сам модуль ESP8266

2. Беспаечная макетная плата

3. Набор проводов папа-мама для макетной платы или DUPONT M-F кабель

4. USB-TTL конвертер (ищите с переключателем на 5 и 3,3 вольт, либо версия на 3,3 вольта) на базе FTDI, PL2303 или аналогичном чипе. Идеальным будет вариант, когда на USB-TTL адаптере будут выведены DTR и RTS — это позволит быстро загружать прошивку из Arduino IDE, UDK, Sming без ручного переключения GPIO0 на землю.

В случае если у вас USB-TTL конвертер на 5 вольт, то вам дополнительно потребуется стабилизатор питания на чипе 1117 или аналогичном (ток не менее 300 мА, желательно с конденсаторной обвязкой в виде готового модуля, но сойдет и просто микросхема) и источник питания (для 1117 отлично подойдет пятивольтовая зарядка от смартфона). Вообще, лучше не питать ESP8266 от USB-TTL конвертера или Arduino, а использовать отдельный источник питания — это избавит вас от множества проблем.

В расширенный набор для постоянной и комфортной работы с модулем ESP8266 вам дополнительно потребуются разъемы питания, DIP переключатели, резисторы и светодиоды. Я также использую недорогой USB монитор (Charger Doctor — листайте список  дальше, ищите в белом корпусе), который позволяет видеть потребляемый ток (с китайской точностью) и немного защищает шину USB от короткого замыкания по питанию (при КЗ дисплей монитора начинает мигать)

1. Модулей ESP8266 достаточно много и первое, что вам потребуется, это идентифицировать ваш модуль и определить его распиновку. На нашем сайте есть замечательная таблица с фотографиями модулей и их распиновкой. Далее в этом кратком пособии для начинающих, мы будем подразумевать, что работаем с модулем ESP8266 ESP-01 V090. Если у вас другой модуль (например, ESP-07 или ESP-12) и на нем выведен пин GPIO15 (MTDO, HSPICS), то этот пин необходимо притянуть к земле как для обычного старта модуля, так и для режима прошивки.

2. Убедиться два раза, что питающее напряжение для модуля составляет 3,3 вольта.

Внимание! Допустимый диапазон напряжения питания модуля ESP8266 от 3,0 до 3,6 вольт. Подача повышенного напряжения питания на модуль гарантированно приведет к выходу ESP8266 из строя. Питающее напряжение может быть и существенно ниже 3 вольт, заявленных в документации

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

На первый взгляд схема справа может показаться «лучше» из-за использования отдельного источника питания, но это не совсем так — при использовании USB-TTL конвертера на 5 вольт желательно добавить делитель на резисторах для согласования пятивольтовых и трехвольтовых уровней логики либо модуль преобразования уровней.

Внимание! На правом рисунке подключение UTXD (TX) и URXD (RX) модуля ESP8266 к пятивольтовой TTL логике вы осуществляете на свой страх и риск! Документация на SoC ESP8266 сообщает, что модуль толерантен только к 3.3 вольтовой логике. В большинстве случаев подключение ESP8266 к пятивольтовой логике НЕ ПРИВОДИТ к выходу из строя ESP8266, однако именно вашему модулю может не повезти. Для исключение риска выхода модуля ESP8266 из строя рекомендуется использовать USB-TTL конвертер на 3,3 вольта, либо TTL 5v-3.3v конвертеры либо делитель на резисторах (на рисунке не показан). Более подробно о согласовании логических уровней можете прочитать здесь. Рисковые гики, вроде меня, подключают ESP8266 к пятивольтовой TTL логике напрямую и не заморачиваются.

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

ESP8266 — подключение

Красный — питание 3,3в

Черный — GND

Желтый — на стороне ESP8266 — RX, на стороне USB-TTL — TX

Зеленый  — на стороне ESP8266 — TX, на стороне USB-TTL — RX

Оранжевый — CH_PD (CHIP ENABLE) — должен быть всегда подтянут к питанию

Синий — GPIO0 — подключен через выключатель к земле для включения режима перепрошивки модуля. Для обычного старта модуля GPIO0 можно оставить никуда не подключенным.

Розовый на правой схеме — нестабилизированное питание 5-8 вольт

4. Для старта модуля разорвите цепь GPIO0 — GND и можете подавать питание (причем именно в таком порядке: сначала убеждаемся, что GPIO0 «висит в воздухе», затем подаем питание на VCC и CH_PD)

Внимание! В вышеприведенных, реально работающих, примерах подключения ESP8266 используется подключение выводов ESP8266 «напрямую» к земле и питанию, либо «висячее в воздухе», как у нас никуда не подключен RESET, что является абсолютно неправильным и пригодно только для пары первых экспериментов, хотя и вполне работоспособно на подавляющем большинстве модулей. «Напрямую» к питанию подключается только вывод VCC, остальные выводы: CH_PD, RESET, GPIO0, GPIO2, должны быть подтянуты (pullup) к питанию (VCC) через резистор от 4,7 до 50 кОм. «Напрямую», к минусу (общему проводу) питания подключаем только GND, а GPIO0 подтягиваем (pulldown) тоже через резистор до 10k к GND для перевода модуль в режим загрузки прошивки. Если вы планируете и дальше экспериментировать с ESP8266, то сделайте грамотное подключение, впрочем так же как и для любых других микроконтроллеров. Детальное описание pullup и pulldown выходит за рамки данной статьи, но вы сможете легко нагуглить описание правильного подключения портов ввода-вывода. «Правильное» подключение позволит вам избежать множества «чудес» и проблем и будет неизбежно необходимым при возникновении затруднений с запуском или перепрошивкой модуля ESP8266.

Как правильно подключить ESP8266

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

Схема подключения ESP8266 (без автозагрузки прошивки, прошиваемся предварительно установив перемычку BURN и перезагрузив модуль)

Схема подключения с поддержкой автозагрузки прошивки из Arduino IDE, UDK, Sming. Для Flash Download Tool и XTCOM_UTIL, возможно, потребуется отключение RTS/DTR. Если RTS и DTR вам отключать неудобно, то можно добавить в схему перемычки

На этих схемах не показано подключение ADC и свободных GPIO — их подключение будет зависеть от того, что вы захотите реализовать, но если хотите стабильности, то не забудьте притянуть все GPIO к питанию (pullup), а ADC к земле (pulldown) через подтягивающие резисторы.

Резисторы на 10k могут заменены на другие от 4,7k до 50k, за исключением GPIO15 — его номинал должен быть до 10k. Номинал конденсатора, который сглаживает высокочастотные пульсации, может быть другим.

Соединение RESET и GPIO16 через резистор deep sleep на 470 Ом вам потребуется, если вы будете использовать режим deep sleep: для выхода из режима глубокого сна модуль перезагружает сам себя, подавая низкий уровень на GPIO16. Без этого соединения глубокий сон будет вечным для вашего модуля.

На первый взгляд на этих схемах кажется, что GPIO0, GPIO2, GPIO15, GPIO1 (TX), GPIO3 (RX) заняты и вы не можете их использовать для своих целей, но это не так. Высокий уровень на GPIO0 и GPIO2, низкий на GPIO15 требуются только для старта модуля, а в последующем вы можете использовать их по своему усмотрению, только не забудьте обеспечить требуемые уровни до перезагрузки модуля.

Можно использовать и TX, RX как GPIO1 и GPIO3 соответственно, не забывая о том, что при старте модуля любая прошивка будет дергать TX, отправляя отладочную информацию в UART0 на скорости 74480, но после успешной загрузки вы можете использовать их не только как UART0 для обмена данными с другим устройством, но и как обычные GPIO.

Для модулей, имеющих меньшее количество разведенных пинов, как например, ESP-01 подключение неразведенных пинов не требуется, т.е. на ESP-01 разведены только: VCC, GND, GPIO0, GPIO2, CH_PD и RESET — вот только их и подтягиваете. Нет никакой необходимости припаиваться прямо к микросхеме ESP8266EX и притягивать неразведенные пины, только если вам это действительно необходимо.

Данные схемы подключения родились после множества экспериментов, проведенных нашими форумчанами и собраны по крупицам из разрозненной и недоступной изначально документации нашим сообществом, я всего лишь постарался объединить эти знания в одном месте. Множество советов по подключению вы найдете на нашем форуме.  Там же вы сможете задать интересующие вас вопросы или найти помощь в решении проблем. Если вы увидели ошибку, неточность в этой статье или вам есть что добавить, то сообщите мне об этом в специальной теме на нашем форуме.

Внимание! Даже эти схемы нельзя назвать «идеальными». Совершенству нет предела: удобно подключить второй USB-TTL к UART1 (c ESP8266 можно взять только GND и UTXD1, т.е. GPIO2) для подключения отладочного терминала (потребуется второй USB-TTL конвертер) — тогда можно будет прошивать модуль ESP8266 через UART0 без отключения терминала отладки на UART1. Неплохо будет подключить резисторы малого номинала к выводам обоих UART, поставить диод в линию RTS, добавить конденсатор в линию питания для гашения низкочастотных импульсов и т.д. Очень удобно, например, сделано в этой отладочной плате: на все GPIO подключены светодиоды, на ADC подключен фоторезистор, но жаль, что нет кнопки RESET и перемычка только одна на GPIO0.

Правильным будет сказать вам, что не существует идеальной и в тоже время универсальной схемы подключения ESP8266. Все дело в том, что очень многое зависит от прошивки, которую вы собираетесь туда залить. Вышеприведенные схемы рассчитаны на новичков, которые только начинают осваивать ESP8266, для экспериментов. Для реальных проектов, возможно, вам придется немного изменить схему. Например, для прошивки TCP2UART нужно подключить RTS к GPIO15, а CTS к GPIO13. Также в реальных проектах рекомендую уделить особое внимание питанию.

Подключение 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 с использованием SoftSerial. В виду того, что для библиотеки SoftSerial скорость порта в 115200 является слишком большой и не гарантирует стабильную работу, мы не рекомендуем использовать такой способ подключения, хотя есть люди, у которых все стабильно работает (правда только на скорости 9600). Скетч для такой схемы подключения (спасибо nec3540A)

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

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

Настройка ESP8266

Итак, ESP8266 модуль к USB порту мы подключили (через USB-TTL или Arduino) теперь нужно убедится, что драйвера к вашим USB-TTL или Arduino встали корректно и в системе появился новый виртуальный последовательный порт. Вам понадобится программа — терминал последовательного порта. Можете использовать любую на ваш вкус, но она должна удовлетворять следующему требованию: каждая команда, которую вы отправляете с компьютера в последовательный порт должна завершаться символами CR+LF.

Большой популярностью пользуется программа CoolTerm (есть версии для Win/MAC/Linux).

Ваш покорный слуга является автором open-source программы ESPlorer, получившей международное признание. ESPlorer позволит вам не вводить AT команды вручную и легко работать с lua скриптами под NodeMCU (об этом в другой раз) и вы вполне можете использовать ее и как обычный терминал. Обсуждение ESPlorer на нашем форуме и на esp826.com

С подключением к последовательному порту придется немного поколдовать: в связи с разнообразием прошивок для ESP8266, подключение может осуществляться на разных скоростях. Нужную скорость можно определить путем простого перебора трех вариантов: 9600, 57600 и 115200. Как осуществить перебор? Подключаетесь в терминальной программе к вашему виртуальному последовательному порту выставив следующие параметры: 9600 8N1, затем перезагружаете модуль, отключив CH_PD (chip enable) от питания (USB-TTL при этом остается подключенным к USB) и снова включаете (т.е. просто передергиваете CH_PD, почему не передергиваем питание — читаем здесь, также можно кратковременно замкнуть RESET на землю для перезагрузки модуля) и наблюдаете данные в терминале. Во-первых, светодиоды на ESP8266 должны гореть как описано в начале статьи в разделе Проверка ESP8266. Во-вторых, в терминале вы должны увидеть «мусор» из разных символов, оканчивающийся строкой «ready». Если «ready» мы не видим, то переподключаемся терминалом на другой скорости и снова перезагружаем модуль.

На одном из вариантов скорости «ready» вы все-таки увидите — поздравляем, ваш модуль готов к работе.  Если нет, то добро пожаловать к нам на форум — мы постараемся помочь, но предварительно почитайте эту тему.

Немного подробнее о «мусоре». Дело в том, что при старте прошивки, UART модуля ESP8266 переключается на скорость передачи 74 880 (вот такие забавные эти китайцы) выдает в UART отладочную информацию, затем переключает скорость порта на 115200 (ну или на 9600 или 57600 в зависимости от версии прошивки), так вот эта отладочная информация и видится нам как мусор, т.к. мы подключаемся к модулю на другой скорости. Можете подключится к ESP8266 на скорости 74 880 (ESPlorer поддерживает эту скорость) и вы эту отладочную информацию увидите, будет что-то вроде этого:

wdt reset load 0x40100000, len 25052, room 16 tail 12 chksum 0x0b ho 0 tail 12 room 4 load 0x3ffe8000, len 3312, room 12 tail 4 chksum 0x53 load 0x3ffe8cf0, len 6576, room 4 tail 12 chksum 0x0d csum 0x0d

wdt reset

load 0x40100000, len 25052, room 16

tail 12

chksum 0x0b

ho 0 tail 12 room 4

load 0x3ffe8000, len 3312, room 12

tail 4

chksum 0x53

load 0x3ffe8cf0, len 6576, room 4

tail 12

chksum 0x0d

csum 0x0d

НО! не увидите «ready» и не сможете управлять модулем, пока не переподключитесь на ту скорость, на которой работает прошивка.

Что делать дальше

Если у вас новый модуль, то, скорее всего, в нем прошита одна из старых кастомных AT прошивок. Скорее всего это какой-нибудь AI-THINKER AT v0.16 SDK v0.9.2. Проверить версию прошивку вы можете командой «AT+GMR», т.е. прямо в терминальной программе набираете AT+GMR без кавычек и жмете Enter. Модуль должен ответить «OK» и выдать версию прошивки (например, «0016000092» — в разных версиях AT прошивок формат вывода версии отличается). Управление модулем ESP8266 AT командами заслуживает отдельной статьи, однако вы легко сможете разобраться с этим и сами, воспользовавшись одним из наших справочников по AT командам:

На момент написания этой статьи актуальная версия прошивки для ESP8266:

версия AT команд v0.21, версия SDK v0.9.5

Обновление прошивки ESP8266

Модуль ESP8266 замечателен тем, что не требует специального программатора — обновление прошивки производится на том же железе, на котором вы подключаете модуль ESP8266 к компьютеру, т.е. тоже через USB-TTL конвертер (ну или Arduino или RPi). Для обновление прошивки на модуле ESP8266 проделайте следующее:

 1. Скачайте новую версию прошивки с нашего сайта из раздела ESP8266 прошивки (вот ссылка на последнюю версию прошивки AT 0.21 SDK 0.9.5 на момент написания этой статьи)

2. Скачайте одну из утилит для прошивки ESP8266 в зависимости от вашей операционной системы из раздела ESP8266 Утилиты с нашего сайта

для Win систем подойдет XTCOM UTIL (удобно работать, если прошивка состоит из одного файла), мультиплатформенный esptool (требуется python, нужно указывать параметры в командной строке),  FLASH DOWNLOAD TOOL (много настроек, удобно прошивать прошивки, состоящие из нескольких файлов, позволяет «собрать» прошивку в один файл из нескольких). Также вы найдете и другие программы для прошивки ESP8266 — попробуйте разные и пользуйтесь той, которая вам больше понравится.

3. Отключите от последовательного порта вашу терминальную программу

4. Отключите CH_PD от питания, подключите GPIO0 модуля к GND, подключите обратно CH_PD модуля.

5. Запускайте программу для прошивки модуля и загружайте новую прошивку в модуль ESP8266.

Загрузка прошивки в модуль обычно осуществляется на скорости 115200, но режим прошивки модуля поддерживает автоопределение скорости и прошивка может быть осуществлена на скорости от 9600 и выше. Максимальная скорость зависит от многих факторов (вашего USB-TTL конвертера, длины проводов и прочего) и может быть определена экспериментально на конфигурации именно вашего оборудования.

Все последние версии прошивок загружаются с нулевого адреса (0x00000).

Обсуждение этой статьи на нашем форуме

Обсуждение проблем при подключении ESP8266 на нашем форуме

В статье Обновление прошивки ESP8266 подробно описана загрузки прошивки в модуль с помощью программы XTCOM_UTIL.

Использованная литература

ESP8266 Datasheet — Specifications V4.1 — 08.09.2014 English

ESP8266 Datasheet — Beginners Guide V0.4.1 — 17.09.2014 English

ESP8266 AT Instruction Set v0.21 23.01.2015

ESP8266 Datasheet — Module Application Design Guide — 20.08.2014 English

Xtensa Instruction Set Architecture (ISA) Reference Manual

esp8266.ru

ESP8266 / ESP8266 / stD

Описание, подключение, настройка и работа.

Что такое ESP8266

ESP8266 — это высокоинтегрированный, микроконтроллер с интерфейсами WiFi, SPI, UART и GPIO, производства китайской компании Espressif.

Схема чипа

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

поддержка WiFi протоколов 802.11 b/g/n
Wi-Fi Direct (P2P), soft-AP
встроенный стек TCP/IP
встроенный TR переключатель, balun, LNA, усилитель мощности и соответствие сети
встроенный PLL, регуляторы, и система управления питанием
выходная мощность +20.5 дБм в режиме 802.11b
ток утечки в выключенном состоянии до 10 мкА
SDIO 2.0, SPI, UART
STBC, 1×1 MIMO, 2×1 MIMO
пробуждение и отправка пакетов за время до 22 мс
потребление в режиме Standby до 1.0 мВт (DTIM3)


Распиновка чипа


В данное время на этом чипе реализовано несколько модификаций плат (ESP01 — ESP12) различающихся только формой, количеством выведенных GPIO и вариантами антенн.

ESP01 - 12ESP-01 — самый распространённый, выведены два GPIO, дальность действия — до 400м на открытом пространстве.

ESP-02 — тоже самое, только с возможностью подключения внешней антенны.

ESP-03 — керамическая антенна, выведены все GPIO.

ESP-04 — без внешней антенны, выведены все GPIO.

ESP-05 — выведены только VCC, GND, TX, RX, RST и внешняя антенна.

ESP-06 — контакты расположены снизу, сверху металлический экран.

ESP-07 — керамическая антенна + разъем для внешней антенны, металлический экран.

ESP-08 — тоже самое, но без антенн.

ESP-09 — крохотный модуль — 10х10мм, контакты расположены снизу.

ESP-10 — тоже маленький модуль, выведены только два GPIO.

ESP-11 — с керамической антенной.

ESP-12 — с flash-памятью 512 кбайт.



Схема модуля

Что может модуль ESP

Описание будет вестись на основе популярной модели ESP-01.
Всё написанное ниже, за исключением номеров GPIO, применительно к любой модификаций.

С базовой прошивкой модуль ESP используется в виде моста UART <-> WIFI.

Например:

ESP подключается к ардуине (UART <-> UART) и взаимодействует с ней при помощи AT-команд, а по каналу WIFI соединяется с любым wifi-устройством (планшет, роутер) при этом может работать в разных режимах — клиента, точки доступа, одновременно оба режима.

ESP подключается к ПК через конвертер usb-uart. Можно с ПК посылать АТ-команды модулю, а модуль в свою очередь будет пересылать их какому-то wifi-устройству.

С альтернативными прошивками, ESP может работать автономно. То есть использовать свои пины для управления чем-либо, например светом в комнате, а управляется по каналу WIFI, выступая в роли сервера.

(О прошивках ниже.)


Подключение

В первую очередь надо обеспечить надёжное питание. Внимание! ESP работает от напряжения 3,3v.

Модуль потребляет довольно-таки большой ток (до 300мА), и если подключить модуль к пину 3,3v на ардуине, то он будет постоянно перегружаться (красный и синий диоды будут моргать).
Чтобы всё хорошо работало потребуется DC-DC преобразователь (5v > 3,3v), что-то типа этого:

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

Подключите питание — загорится красный диод.
Подключите пин CH_PD на 3,3v — мигнёт синий диод. Это пин включения/отключения модуля (chip power-down).

В списке сетей wifi на Вашем телефоне/планшете, появится новое устройство с именем «AI-THINKER...».
Можно подключится к нему, но толку от этого пока никакого не будет.

Кратковременное замыкание пина RST на GND перезагрузит модуль.

Свободные GPIO (0, 2) подключать не надо.

Если у Вас модуль не ESP-01, то надо подключить GPIO15 к GND.

Примечание. В дальнейшем, для повышения стабильности работы, нужно пин CH_PD подключать к 3,3v через резистор 10 кОм., RESET, GPIO (0, 2) тоже подтянуть к 3,3v резисторами 10 кОм., по питанию поставить электролит на 100-220 мкФ и керамику 0.1 мкФ.

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

Теперь надо подключить ESP-модуль к компьютеру посредством UARTа (RX, TX), выяснить скорость порта (может различаться для разных прошивок) и пообщаться с модулем АТ-командами.

Для этого подойдёт любой преобразователь USB-UART, можно воспользоваться например вот таким:

Нужно соединить RX и TX модуля с TX и RX преобразователя.

Уровни напряжения на пинах TX <-> RX можно не согласовывать, как показывает практика, всё отлично работает и так.
Если это покажется неубедительным, то можно организовать простой резистивный делитель:

Если под рукой нет преобразователя (USB-UART), то его можно сделать из любой ардуины. Для этого надо соединить на ардуине RST и GND, а сигнальные линии соединить вот так:


TX <-> TX
RX <-> RX
GND <-> GND


Терминал

Далее нам потребуется программа-терминал, можно использовать бесплатную программу CoolTerm. (Lin & Win)

CoolTermСкачать, установить и запустить:

Нажать Options

Выбрать порт и скорость.

Нажать слева Terminal

Terminal Mode: Line Mode. Нажать ОК.

Нажать Connect

В нижнем поле ввести AT и Enter

Либо воспользоваться Serial Monitor из IDE Arduino.

Открываем Serial Monitor, выбираем Both NL & CR (последняя строчка), устанавливаем скорость 115200 и отправляем команду проверки связи — AT:

Вводите команды без пустых символов.

Модуль должен ответить ОК. Если ответа нет, то попробуйте другие скорости (9600, 57600), если ответа попрежнему нет, то проверьте правильность подключения (rx-tx).

Когда модуль начнёт откликаться, дайте команду перезагрузки — AT+RST

Модуль расскажет о себе.

Теперь нужно проверить версию «заводской» прошивки командой — AT+GMR

В «заводских» прошивках, от версии к версии, меняется функционал и могут не работать некоторые команды. Поэтому прежде чем продолжать знакомство с модулем, нужно залить в него свежую прошивку. Делается это очень просто…


Прошивка

Сейчас речь пойдёт о «заводской» прошивке, альтернативные будут рассмотрены позже.

Скачиваем прошивку, я брал её здесь.

И скачиваем утилиту XTCOM для прошивки ESP.

Пользователи Linux, для работы с XTCOM, могут воспользоваться виртуальной машиной с установленой Windows. (В wine я не пробовал запускать.)

Отключаем питание платы, выводGPIO0 соединяем с GND, включаем питание.Именно так.

Запускаем XTCOM_UTIL.exe, переходим в ToolsConfig Device:

Выбираем COM-порт к которому подключена плата, ставим скорость порта 57600, это скорость заливки прошивки, к дальнейшей работе модуля не имеет отношения.

Нажимаем Open


OK...

Нажимаем Connect


Программа должна сказать Connect with target OK!
Если не коннектится, то закройте программу, отключите/включите питание модуля и повторите.

Жмём ОК, закрываем окно настроек, переходим в меню API TEST и выбираем Flash Image Download.

Указываем путь к скаченому файлу v0.9.5.2 AT Firmware.bin, адрес оставляем 0x00000, жмем DownLoad.

Загрузка…

Готово…
Если что-то пошло не так, то отключаем/включаем питание и проделываем процедуру заново.

Отключаем питание платы, отключаем GPIO0, включаем питание, запускаем терминал (115200), проверяем готовность платы командой AT и версию прошивки командой AT+GMR.


АТ-команды

Список АТ-команд работающих с данной прошивкой и их применение.

------------------------------------------------------------------------------

AT — проверка работы, ответ ОК.

------------------------------------------------------------------------------

ATE0 — отключение эхо (повторение команды).
ATE1 — включение эхо.

------------------------------------------------------------------------------

AT+RST — перезагрузка модуля.

------------------------------------------------------------------------------

AT+RESTORE — сброс модуля к заводским настройкам.

Полезная команда на случай если Вы донастраивались до потери работоспособности модуля ))).

------------------------------------------------------------------------------

AT+GMR — версия прошивки.

------------------------------------------------------------------------------

AT+GSLP=3000 — переход в режим пониженного энергопотребления. (3 сек)
Время задаётся в мс.

Для выхода из режима необходимо замкнуть выводы XPD_DCDC и EXT_RSTB (см. распиновка чипа) либо откл/вкл питание.

------------------------------------------------------------------------------

AT+CIOBAUD=115200 — установить скорость UART. (9600-921600)

После изменения переключите терминал.

------------------------------------------------------------------------------

AT+UART=115200,8,1,0,0 — специфичная настройка UART.

(baudrate,databits,stopbits,parity,flow control)

------------------------------------------------------------------------------

AT+CSYSWDTENABLE — активировать Watchdog.

AT+CSYSWDTDISABLE — деактивировать.

------------------------------------------------------------------------------

Установка режима WIFI:

AT+CWMODE=1 — клиент, подключается к другим точкам доступа.

AT+CWMODE=2 — точка доступа, к модулю подключаются клиенты.

AT+CWMODE=3 — оба режима одновременно, модуль подключается к существующим точкам (например к роутеру) и сам является точкой доступа. (смешанный режим)

AT+CWMODE? — узнать текущий режим.

AT+CWMODE=? — узнать возможные режимы.

------------------------------------------------------------------------------

AT+CIFSR — узнать ip-адрес и мас-адрес. В зависимости от режимов (AT+CWMODE) показывает один или два ip-адреса.

------------------------------------------------------------------------------

AT+CIPSTA? — посмотреть ip-адрес для режима «клиент» (AT+CWMODE=1)
AT+CIPSTA=«192.168.3.20» — установить ip-адрес для режима «клиент» (AT+CWMODE=1)
Необходимо исправить кавычки, вот так:

AT+CIPSTA="192.168.3.20"

AT+CIPSTAMAC? — посмотреть мас-адрес для режима «клиент» (AT+CWMODE=1)
AT+CIPSTAMAC=«1a:fe:34:fe:55:55» — установить мас-адрес для режима «клиент» (AT+CWMODE=1). Требуется перезагрузка (AT+RST).

AT+CIPSTAMAC="1a:fe:34:fe:55:55"

------------------------------------------------------------------------------

AT+CIPAP? — посмотреть ip-адрес для режима «точка доступа» (AT+CWMODE=2)
AT+CIPAP=«192.168.3.35» — установить ip-адрес для режима «точка доступа» (AT+CWMODE=2)

AT+CIPAPMAC? — посмотреть мас-адрес для режима «точка доступа» (AT+CWMODE=2)
AT+CIPAPMAC=«1a:fe:34:fe:33:33» — установить мас-адрес для режима «точка доступа» (AT+CWMODE=2). Требуется перезагрузка (AT+RST).

------------------------------------------------------------------------------

AT+CWDHCP= — включает/выключает DHCP сервер.

Пример: AT+CWDHCP=0,0 — DHCP включён для режима «точка доступа».

Первый параметр — режимы: 0 — для точки доступа, 1 — для клиента, 2 — для смешаного режима.
То есть можно для каждого режима (в отдельности) включать/отключать DHCP сервер, либо если модуль работает в «смешаном режиме» (AT+CWMODE=3), то можно.!!!

Второй параметр — вкл/откл: 0 — включить, 1 — отключить.

------------------------------------------------------------------------------

AT+CWLIF — показать ip-адреса подключенных клиентов (только для режимов AT+CWMODE=2 и AT+CWMODE=3).

------------------------------------------------------------------------------

AT+CWLAP — посмотреть доступные wifi-сети. (работает в режимах AT+CWMODE=1 и AT+CWMODE=3)

Значения в скобках — тип шифрования, имя точки, уровень сигнала, мас-адрес, канал.

Типы шифрования: 0 — без шифрования, 1 — WEP, 2 — WPA-PSK, 3 — WPA2-PSK, 4 — MIXED (WPA-WPA2-PSK).

------------------------------------------------------------------------------

AT+CWJAP= — подключение к точке доступа:

На всякий случай перегрузите модуль — AT+RST

Установите режим AT+CWMODE=1 или AT+CWMODE=3.

AT+CWJAP=«nameap»,«parolparol» — подключение к роутеру (имя точки, пароль). (кавычки необходимо исправить)

AT+CWJAP="nameap","parolparol"

Подключение длится 5-6 секунд.

AT+CWJAP? — узнать подключён или нет, и к какой точке.

------------------------------------------------------------------------------

AT+CWQAP — отключиться от точки доступа (роутера).

------------------------------------------------------------------------------
Создание своей точки доступа с паролем (по дефолту точка открытая).

На всякий случай перегрузите модуль — AT+RST

Предварительно нужно отключиться от каких-либо точек доступа (например от роутера) — AT+CWQAP и установить режим — AT+CWMODE=2 или AT+CWMODE=3.

Даём команду:

AT+CWSAP=«myAP»,«parolmyap»,9,4 — где первое значение — имя будущей точки, второе — пароль, третье — канал и четвёртое — тип шифрования (0 — без шифрования, 1 — WEP, 2 — WPA-PSK, 3 — WPA2-PSK, 4 — MIXED (WPA-WPA2-PSK)).

AT+CWSAP="myAP","parolmyap",9,4

Посмотреть какой адрес у нашей точкиAT+CIFSR

Подключите Ваш «гаджет» к созданой точке и посмотрите какой он получил адресAT+CWLIF

------------------------------------------------------------------------------

Ниже описаны команды относящиеся к настройке TCP-сервера или TCP-клиента.

AT+CIPMODE= — устанавливается режим передачи данных для TCP-сервера или TCP-клиента.

В режиме TCP-сервера:
AT+CIPMODE=0 — TCP-сервер может отправлять данные клиенту и может принимать данные от клиента.
AT+CIPMODE=1 — TCP-сервер НЕ может отправлять данные клиенту, но может принимать данные от клиента.

В режиме TCP-клиента:
AT+CIPMODE=0 — TCP-клиент может отправлять данные серверу и может принимать данные от сервера.
AT+CIPMODE=1 — TCP-клиент НЕ может отправлять данные серверу, но может принимать данные от сервера.

AT+CIPMODE? — узнать режим.

------------------------------------------------------------------------------

AT+CIPMUX= — выбор режима одиночного или множественного соединения.

Зависит от AT+CIPMODE.

AT+CIPMUX=0 — с ESP, может соединится только один клиент. (single connection)
Если в этот момент другой клиент запросит соединение, то получит таймаут.

AT+CIPMUX=1 — с ESP, могут одновременно соединяться несколько клиентов (до четырёх). (multiple connection)

AT+CIPMUX? — узнать режим.

------------------------------------------------------------------------------

AT+CIPSTO — таймаут сервера. Команда даётся после старта сервера.

AT+CIPSTO=180 — таймаут 180 секунд. (от 0 до 7200)

AT+CIPSTO? — узнать таймаут.

------------------------------------------------------------------------------

Запуск TCP-сервера:

Предварительно нужно:
На всякий случай делать ресет — AT+RST, или сброс (если Вы что-то там на настраивали) к заводским настройкам AT+RESTORE

Установим «смешанный режим» — AT+CWMODE=3

Установить сквозной режим передачи данных — AT+CIPMODE=0

Установить режим подключения — AT+CIPMUX=1 (multiple connection)

И запустить сервер:

AT+CIPSERVER=1,88 — сервер будет запущен на 88-ом порту.

Чтобы изменить номер порта, нужно остановить сервер — AT+CIPSERVER=0 и запустить с новыми параметрами.

Теперь можно посмотреть как работает сервер, для этого…

Узнаем адрес — AT+CIFSR

Далее подключаемся к ESP по Wifi с какого-нибудь гаджета, открываем браузер и заходим по адресу — 192.168.4.1:88

На странице конечно ничего не отобразится, но в терминале появятся строки запроса:

Активные соединения можно посмотреть командой — AT+CIPSTATUS

Принудительно закрыть соединение — AT+CIPCLOSE=0

Если соединений несколько, то указываем его id — AT+CIPCLOSE=1

Если модуль работает в режиме — AT+CIPMUX=0 (single connection), то команда закрытия соединения даётся без параметров — AT+CIPCLOSE

Это ещё не всё, хотелось бы увидеть полноценный обмен данными с нашим сервером. В этом поможет бесплатная программа (для Linux и Win) — SocketTest, скачайте её.

Далее нужно соединить компьютер и ESP по каналу wifi. У меня компьютер подключён к роутеру, поэтому ESP тоже подключается к этому роутеру.

Подключаем: (на всякий случай, подробности описаны выше)

AT+CWJAP="nameap","parolparol"

Имя «точки» и пароль.

Смотрим какой адрес получил модуль ESP — AT+CIFSR


Теперь сервер будет работать на адресе — 192.168.1.87:88

Это адрес будем использовать в программе SocketTest.

Запустите её:

На вкладке «Client» вводим адрес 192.168.1.87 и порт 88, нажимаем «Connect».


Пользователям Win наверно придётся отключить файрволы.

В терминале будет будет написано «CONNECT».

Отправим в ESP какой-нибудь текст. Нажмите «Connect», в поле «Message» введите «Hello» и нажмите «Send».

В терминале увидим наш запрос:

+IPD — это признак полученных данных, 0 — это id клиента, 7 — это длина пакета, ну и содержимое пакета.

Соединение будет длиться 180 сек, это таймаут сервера по умолчанию. По истечении времени, оно будет разорвано.

Изменить таймаут можно командой — AT+CIPSTO

Теперь отправим данные с ESP в SocketTest.

Нажмите «Connect» и в терминале введите команду:

AT+CIPSEND=0,13id соединения, длина пакета.

В терминале появится символ ввода >

Введите и отправьте строку «Hi Soket Test»:

В программе «SocketTest» появится наше сообщение.

С TCP-сервером разобрались, перейдём к TCP-клиенту...

------------------------------------------------------------------------------

Запуск TCP-клиента:

Сбросим все настройки — AT+RESTORE

Устанавливаем режимы:

AT+CWMODE=3

AT+CIPMODE=0

Подключаемся к Вашему роутеру:

AT+CWJAP="nameap","parolparol"

В программе SocketTest открываем вкладку «Server», вписываем ip-адрес Вашего компьютера, порт 88 и нажимаем кнопку «Start Listening»:

Переходим в терминал, устанавливаем режим — AT+CIPMUX=0 (single connection) и запускаем клиента:

AT+CIPSTART=«TCP»,«192.168.1.49»,88 — для протокола TCP.

Параметры: протокол — может быть TCP или UDP, адрес сервера с которым будем соединятся, порт.

Отправим серверу данные:

Даём команду — AT+CIPSEND=12 (указывается только длина пакета)
Появится символ — >
Введите и отправьте — Hello Server

Чтоб послать серверу ещё одно сообщение, нужно заново ввести AT+CIPSEND=12 и т.д.

SocketTest получил наше сообщение.


В поле «Message» введите «Hello Client» и нажмите «Send».

ESP получил сообщение.

Теперь поменяем режим клиента с AT+CIPMUX=0 (single connection) на AT+CIPMUX=1 (multiple connection)
Нажимаем «Disconnect» в программе SocketTest (или в терминале командуем — AT+CIPCLOSE).

В терминале и даём команду AT+CIPMUX=1

Запускаем клиента:

AT+CIPSTART=0,«TCP»,«192.168.1.49»,88 — для протокола TCP. (добавился ещё один параметр — id соединения)

Параметры: id — от 0 до 4, протокол — может быть TCP или UDP, адрес сервера с которым будем соединятся, порт.

Отправляем данные серверу — AT+CIPSEND=0,12 (id соединения, длина пакета)
Появится символ — >
Введите и отправьте — Hello Server

Собственно всё то же самое, что и для «single connection», только появилась возможность нескольких соединений (до четырёх) одновременно.

------------------------------------------------------------------------------

Команды для управления GPIO

AT+CIOREAD=0 — читать ножку GPIO0
AT+CIOREAD=2 — читать ножку GPIO2

AT+CIOWRITE=0,1 — подать напряжение на GPIO0
AT+CIOWRITE=0,0 — снять напряжение с GPIO0

AT+CIOWRITE=2,1 — подать напряжение на GPIO2
AT+CIOWRITE=2,0 — снять напряжение с GPIO2

Можно подключить светодиоды к GPIO через резисторы ~1kOm и помигать.

AT-команды.pdf
Спецификация.pdf



Пример подключения:

Настраиваем работу модуля в режиме клиента, подключаемся к роутеру и запускаем TCP-сервер.

AT+RESTORE — к заводским настройкам.

AT+CWMODE=1 — режим клиента.

AT+CWJAP=«nameap»,«parolparol» — подключение к роутеру.

AT+CIPMODE=0 — Установить сквозной режим передачи данных.

AT+CIPMUX=1 — Мultiple connection.

AT+CIPSERVER=1,88 — запустить сервер.

AT+CIPSTO=3 — таймаут сервера 3 секунды.

AT+CIFSR — смотрим адрес который получил ESP от роутера.

Сервер работает на 192.168.1.87:88

И таки да, модуль может зависать (прошивка пока ещё «сыровата»), помогает обесточивание.



Статья получилась большая, поэтому описание подключения Ардуины к ESP читайте в следующей части.

Обсудить на форуме...

istarik.ru

WiFi модули ESP8266 ESP-07 и ESP-12 для домашней автоматизации

WiFi модули ESP8266 ESP-07 и ESP-12

Миниатюрные WiFi модули ESP8266 довольно привлекательны для систем умного дома и домашней автоматизации. Их еще называют «убийцами NRF24L01».

Я себе заказал более поздние модификации ESP07 и ESP12, которые отличаются меньшими размерами и большим числом выведенных GPIO, что не требует «хаков» для использования в них дополнительных портов ввода/вывода.

Данный модули разработаны китайской компанией Espressif System

Технические характеристики:

WI-FI: 802.11 b/g/n с WEP, WPA, WPA2.
Режимы работы: Клиент (STA), Точка доступа (AP), Клиент+Точка доступа (STA+AP).
Напряжение питания 1.7..3.6 В.
Потребляемый ток: до 215мА в зависимости от режима работы.
Количество GPIO: 16.
Flash память размером 512кб.
RAM данных 80 кб
RAM инструкций — 32 кб.

Заказывал я модули в мае. Цена ESP-07 — $3.01, ESP-12 — $2.57. Приехали за 31 день в запаянных пакетиках:

ESP8266 ESP-07: Модуль с керамической антеной и разъемом для подключения внешней.

ESP8266 ESP-12: Модуль с антеной, разведенной на печатной плате.

Оживление модуля заняло довольно много времени. Для этого нужно подать на него 3.3В. Причем стабилизаторы у преобразователей USB/UART не тянут данный модуль по току, поэтому питание нужно внешнее.

Далее нужно посадить GPIO15 на землю, а CH_PD и GPIO0 подтянуть к VCC через резистор. В некоторых источниках еще указывается, что нужно подтянуть к VCC и GPIO2, но у меня все заработало и без этого.

RXD, TXD и GND подсоединяются через переходник USB/UART к компьютеру.

В результате собрал на макетке такую схему:

Здесь сразу столкнулся со следующей сложностью — шаг дырочек у ESP07 — 2мм, а не 2.5 как у штырьковых разъемов, применяемых в Ардуино и прочих местах.

Пришлось к макетке паять на проволочках:

Сразу вывел кнопку RESET и перемычку GPIO0 на землю, переводящую модуль в режим загрузки прошивки. А питание на модуль завел через линейный стабилизатор LM1117-N-3.3

После этого запустил программу CollTerm и на скорости 9600 получил приглашение модуля.

Команда AT+GMR выдала 0020000904 (Версия SDK — 0020, в версия AT — 0904)

Далее побаловавшись с AT командами запустил модуль как точку доступа и подключился к своей.

Для тех, кому лень, как мне, разбираться с АТ командами, есть программа ESP8266_config, позволяющая все это настроить.

Далее интересно было попробовать модуль в режиме самостоятельного контроля. Для этого решил прошить его NodeMCU со встроенным интерпретатором LUA. Я загрузил ModeMCU с GITHUB вместе с примерами и модулями на LUA

Прошивку делал утилитой XTCOM_UTIL. Так как данная программа работает только с COM1-COM6, пришлось в диспетчере устройств изменить свой COM33 от USB/UART конвертера на COM6.

Далее прошивка не представляет труда: открываем порт и коннектимся. Скорость выбирается автоматически. Главное, не забыть посадить GPIO0 на землю (у меня для этого есть специальная перемычка). Скорость выбирается автоматически. Иногда коннект не устанавливался. Помогало нажатие кнопки RESET во время коннекта.

Далее выбираем файл с прошивкой
nodemcu-firmware-masterpre_buildlatestnodemcu_latest.bin

Теперь можно подключиться к модулю при помощи ESPlorer. В данной программе можно загружать в ESP файлы для интерпретатора LUA, выполнять как одиночные команды так и скрипты этого интерпретатора.

У меня получилось запустить модуль давления/температуры BMP180, подключенный к GPIO2 и GPIO0

Для этого я загрузил файл bmp180.lua из готовых модулей, идущих вместе с прошивкой с GITHUB. И затем файл init.lau, выполняемый при загрузке ESP8266

Код:
tmr.alarm(1, 5000, 1, function()
print(ip: ,wifi.sta.getip())
bmp180 = require("bmp180")
bmp180.init(4, 3)
tmr.stop(1) -- alarm stop
end)

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

Код:
bmp180.read(OSS)
t = bmp180.getTemperature()
p = bmp180.getPressure()

-- temperature in degrees Celsius  and Farenheit
print("Temperature: "..(t/10).."  C")
-- pressure in differents units
print("Pressure: "..(p * 75 / 10000).." mmHg")

Выдавает в консоль текущее давление и температуру!

Выводы

Модули ESP8266 — это очень дешевое решения для построение сети умного дома и прочей домашней автоматизации с использованием WiFi
Данные модули вполне годятся для замены NRF24L01+ в связке с Arduino и прочими «народными» контроллерами.

Для работы в качестве самостоятельного контроллера ESP8266 имеет маловато ресурсов и довольно сырые прошивки.

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

В целом ESP8266 имеют большие перспективы. Буду ждать развитие прошивок и средств разработки, а пока, буду применять их в связке с другими контроллерами (кроме проектов с WiFi розетками и выключателями)

Проверенный магазин…>>>

17.07.2016, 14:46

picofarad.ru

Обзор WiFi модуля ESP8266 ESP07

Миниатюрные WiFi модули ESP8266 довольно привлекательны для систем умного дома и домашней автоматизации. Их еще называют «убийцами NRF24L01». Здесь уже был обзор этого модуля

Я себе заказал более поздние модификации ESP07 и ESP12, которые отличаются меньшими размерами и большим числом выведенных GPIO, что не требует «хаков» для использования в них дополнительных портов ввода/вывода.

Данный модули разработаны китайской компанией Espressif System

Технические характеристики:

 

  • WI-FI: 802.11 b/g/n с WEP, WPA, WPA2.
  • Режимы работы: Клиент (STA), Точка доступа (AP), Клиент+Точка доступа (STA+AP).
  • Напряжение питания 1.7..3.6 В.
  • Потребляемый ток: до 215мА в зависимости от режима работы.
  • Количество GPIO: 16.
  • Flash память размером 512кб.
  • RAM данных 80 кб
  • RAM инструкций — 32 кб.

Про модификации модулей ESP8266 можно прочитать здесь

Заказывал я модули в январе.

Цена ESP-07 — $3.78, ESP-12 — $4.24. Покупал на премию за обзор статьи. Приехали за 31 день в запаянных пакетиках



ESP8266 ESP-07

ESP8266 ESP-12

Оживление модуля заняло довольно много времени

Для этого нужно подать на него 3.3В. Причем стабилизаторы у преобразователей USB/UART не тянут данный модуль по току, поэтому питание нужно внешнее.

Далее нужно посадить GPIO15 на землю, а CH_PD и GPIO0 подтянуть к VCC через резистор. В некоторых источниках еще указывается, что нужно подтянуть к VCC и GPIO2, но у меня все заработало и без этого.

RXD, TXD и GND подсоединяются через переходник USB/UART к компьютеру.

В результате собрал на макетке такую схему

Здесь сразу столкнулся со следующей сложностью — шаг дырочек у ESP07 — 2мм, а не 2.5 как у штырьковых разъемов, применяемых в Ардуино и прочих местах.

Пришлось к макетке паять на проволочках

Сразу вывел кнопку RESET и перемычку GPIO0 на землю, переводящую модуль в режим загрузки прошивки. А питание на модуль завел через линейный стабилизатор LM117 3.3

После этого запустил программу CollTerm и на скорости 9600 получил приглашение модуля.

Команда AT+GMR выдала 0020000904 (Версия SDK — 0020, в версия AT — 0904)

Далее побаловавшись с AT командами запустил модуль как точку доступа и подключился к своей.

Для тех, кому лень, как мне, разбираться с АТ командами, есть программа ESP8266_config, позволяющая все это настроить.

Далее интересно было попробовать модуль в режиме самостоятельного контроля. Для этого решил прошить его NodeMCU со встроенным интерпретатором LUA.

Я загрузил ModeMCU сGITHUB вместе с примерами и модулями на LUA

Прошивку делал утилитой XTCOM_UTIL. Так как данная программа работает только с COM1-COM6, пришлось в диспетчере устройств изменить свой COM33 от USB/UART конвертера на COM6.

Далее прошивка не представляет труда: открываем порт и коннектимся. Скорость выбирается автоматически. Главное, не забыть посадить GPIO0 на землю (у меня для этого есть специальная перемычка). Скорость выбирается автоматически. Иногда коннект не устанавливался. Помогало нажатие кнопки RESET во время коннекта.

Далее выбираем файл с прошивкой

nodemcu-firmware-masterpre_buildlatestnodemcu_latest.bin

Теперь можно подключиться к модулю при помощи ESPlorer

В данной программе можно загружать в ESP файлы для интерпретатора LUA, выполнять как одиночные команды так и скрипты этого интерпретатора.

У меня получилось запустить модуль давления/температуры BMP180, подключенный к GPIO2 и GPIO0

Для этого я загрузил файл bmp180.lua из готовых модулей, идущих вместе с прошивкой с GITHUB

И затем файл init.lau, выполняемый при загрузке ESP8266


tmr.alarm(1, 5000, 1, function()
    print( ip:  ,wifi.sta.getip())
    bmp180 = require("bmp180")
    bmp180.init(4, 3)
    tmr.stop(1) -- alarm stop
end)

Запуск программы без задержки таймера приводил к неизменной ошибке.

После рестарата, код


bmp180.read(OSS)
t = bmp180.getTemperature()
p = bmp180.getPressure()

-- temperature in degrees Celsius  and Farenheit
print("Temperature: "..(t/10).."  C")
-- pressure in differents units
print("Pressure: "..(p * 75 / 10000).." mmHg")

Выдавал в консоль текущее давление и температуру.

А вот запустить выдачу данных параметров в режиме веб-сервера мне не удалось. Все дело в нехватки памяти. Отдельно веб сервер и BMP180 работали, а вместе вываливались в


PANIC: unprotected error in call to Lua API (error loading module  bmp180  from file  bmp180.lua : not enough memory)

Или просто на консоль валились обрывки кода LUA.

Модернизировать свою домашнюю метеостанцию с ходу не получилось.

Дальнейший мой путь был, собирать свою прошивку на фирменном SDK, как написано в этой статье . Но это уже другая история. Скажу только, что прошивки собираются без проблем, а вот запустить злополучный BMP180 так и не удалось.

Выводы

  • Модули ESP8266 — это очень дешевое решения для построение сети умного дома и прочей домашней автоматизации с использованием WiFi
  • Данные модули вполне годятся для замены NRF24L02 в связке с Arduino и прочими «народными» контроллерами.
  • Для работы в качестве самостоятельного контроллера ESP8266 имеет маловато ресурсов и довольно сырые прошивки
  • Программирование ESP-модулей довольно трудоемкий процесс, который может отпугнуть новичков
  • В целом ESP8266 имеют большие перспективы. Буду ждать развитие прошивок и средств разработки, а пока, буду применять их в связке с другими контроллерами (кроме проектов с WiFi розетками и выключателями )))

 

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

Дальнейшее развитие событий по моему использованию ESP8266 буду публиковать в своем блоге

Кот попался, пока возился с макрофотографиями

Оказался довольно пыльным )))

mysku.ru

mysku.su

alexxlab

Отправить ответ

avatar
  Подписаться  
Уведомление о