8-900-374-94-44
[email protected]
Slide Image
Меню

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

Содержание

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ПоделкинЦ.

подключение и обновление прошивки – 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

подключение, распиновка, прошивка в IDE [Амперка / Вики]

Модуль ESP-01 с чипом ESP8266 предназначен для связи устройства с беспроводными сетями по WiFi.

Видеообзор

Общие сведения

ESP-01 — плата-модуль WiFi на базе популярного чипсета ESP8266EX. На борту платы находится микросхема Flash-памяти объёмом 2 МБ, чип ESP8266EX, кварцевый резонатор, два индикаторных светодиода и миниатюрная антенна из дорожки на верхнем слое печатной платы в виде змейки. Flash-память необходима для хранения программного обеспечения. При каждом включении питания, ПО автоматически загружается в чип ESP8266EX.

По умолчанию модуль настроен на работу через «AT-команды». Управляющая плата посылает команды — Wi-Fi модуль выполняет соответствующую операцию.

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

Работа с AT командами

Подключение и настройка

В стандартной прошивке Wi-Fi модуль общается с управляющей платой через «AT-команды» по протоколу UART.

На всех платах Iskra и Arduino присутствует хотя бы один аппаратный UART — HardwareSerial. Если же по каким то причинам он занят другим устройством, можно воспользоваться программным UART — SoftwareSerial.

HardwareSerial

На управляющей плате Iskra JS и Arduino платах с микроконтроллером ATmega32U4 / ATSAMD21G18, данные по USB и общение через пины 0 и 1 осуществляется через два раздельных UART. Это даёт возможность подключить Wi-Fi модуль к аппаратному UART на пинах 0 и 1.

Список поддерживаемых плат:

Для примера подключим модуль Wi-Fi к платформе Iskra Neo.

Прошейте управляющую платформу кодом ниже.

Код прошивки
HardwareSerialAT115200.ino
// serial-порт к которому подключён Wi-Fi модуль
#define WIFI_SERIAL    Serial1
 
void setup()
{
  // открываем последовательный порт для мониторинга действий в программе
  // и передаём скорость 9600 бод
  Serial.begin(9600);
  while (!Serial) {
  // ждём, пока не откроется монитор последовательного порта
  // для того, чтобы отследить все события в программе
  }
  Serial.print("Serial init OK\r\n");
  // открываем Serial-соединение с Wi-Fi модулем на скорости 115200 бод
  WIFI_SERIAL.begin(115200);
}
 
void loop()
{
  // если приходят данные из Wi-Fi модуля - отправим их в порт компьютера
  if (WIFI_SERIAL.available()) {
    Serial.write(WIFI_SERIAL.read());
  }
  // если приходят данные из компьютера - отправим их в Wi-Fi модуль
  if (Serial.available()) {
    WIFI_SERIAL.write(Serial.read());
  }
}
SoftwareSerial

Некоторые платы Arduino, например Arduinio Uno, прошиваются через пины 0 и 1. Это означает невозможность использовать одновременно прошивку/отладку по USB и общение с Wi-Fi модулем. Решение проблемы — программный UART. Подключите пины TX и RX ESP-модуля к другим контактам управляющей платы и используйте библиотеку SoftwareSerial.

Для примера подключим управляющие пины Wi-Fi модуля TX и RX — на 8 и 9 контакты управляющей платы. Прошейте управляющую платформу кодом ниже.

Код прошивки
SoftwareSerialAT115200.ino
// библиотека для работы программного Serial
#include <SoftwareSerial.h>
 
// создаём объект для работы с программным Serial
// и передаём ему пины TX и RX
SoftwareSerial mySerial(8, 9);
 
// serial-порт к которому подключён Wi-Fi модуль
#define WIFI_SERIAL    mySerial
 
void setup()
{
  // открываем последовательный порт для мониторинга действий в программе
  // и передаём скорость 9600 бод
  Serial.begin(9600);
  while (!Serial) {
  // ждём, пока не откроется монитор последовательного порта
  // для того, чтобы отследить все события в программе
  }
  Serial.print("Serial init OK\r\n");
  // открываем Serial-соединение с Wi-Fi модулем на скорости 115200 бод
  WIFI_SERIAL.begin(115200);
}
 
void loop()
{
  // если приходят данные из Wi-Fi модуля - отправим их в порт компьютера
  if (WIFI_SERIAL.available()) {
    Serial.write(WIFI_SERIAL.read());
  }
  // если приходят данные из компьютера - отправим их в Wi-Fi модуль
  if (Serial.available()) {
    WIFI_SERIAL.write(Serial.read());
  }
}
HardwareSerial Mega

На платах форм-фактора Arduino Mega 2560 аппаратный UART, который отвечает за передачу данных через пины 1 и 0, отвечает также за передачу по USB. Это означает невозможность использовать одновременно UART для коммуникации с Wi-Fi модулем и отладки по USB.

Но на платах такого форм-фактора есть ещё дополнительно три аппаратных UART:

  • Serial1: пины 19(RX1) и 18(TX1);

  • Serial2: пины 17(RX2) и 16(TX2);

  • Serial3: пины 15(RX3) и 14(TX3).

Список поддерживаемых плат:

Подключите Wi-Fi модуль к объекту Serial1 на пины 18 и 19 на примере платы Arduino Mega 2560 Прошейте управляющую платформу кодом ниже.

Код прошивки
HardwareSerialAT115200.ino
// serial-порт к которому подключён Wi-Fi модуль
#define WIFI_SERIAL    Serial1
 
void setup()
{
  // открываем последовательный порт для мониторинга действий в программе
  // и передаём скорость 9600 бод
  Serial.begin(9600);
  while (!Serial) {
  // ждём, пока не откроется монитор последовательного порта
  // для того, чтобы отследить все события в программе
  }
  Serial.print("Serial init OK\r\n");
  // открываем Serial-соединение с Wi-Fi модулем на скорости 115200 бод
  WIFI_SERIAL.begin(115200);
}
 
void loop()
{
  // если приходят данные из Wi-Fi модуля - отправим их в порт компьютера
  if (WIFI_SERIAL.available()) {
    Serial.write(WIFI_SERIAL.read());
  }
  // если приходят данные из компьютера - отправим их в Wi-Fi модуль
  if (Serial.available()) {
    WIFI_SERIAL.write(Serial.read());
  }
}

Примеры работы

Рассмотрим несколько примеров по работе с «AT-командами»

Тестовая команда «AT»

Откройте монитор порта. Настройте скорость соединения — 9600 бод. Конец строки — NL & CR. Введите команду AT и нажмите «Отправить». Это — базовая команда для проверки работы Wi-Fi модуля. В ответ получим «OK»: Если ответа нет или появляются непонятные символы — проверьте правильность подключения и настройки скорости обмена данными.

Настройка режима работы

Wi-Fi модуль умеет работать в трёх режимах:

  • Режим точки доступа

  • Режим клиента

  • Смешанный режим

Переведём чип в смешанный режим командой:

AT+CWMODE_DEF=3

После установки модуль должен ответить «OK»:

В отличии от аппаратного UART (HardwareSerial), за работу программного UART (SoftwareSerial) отвечает микроконтроллер, который назначает другие пины в режим работы RX и TX, соответственно и данные которые приходят от Wi-Fi модуля обрабатывает сам микроконтроллер во время программы. По умолчанию скорость общения Troyka Wi-Fi равна 115200, что значительно выше чем позволяет библиотека SoftwareSerial. В итоге часть информации которая приходит с Wi-Fi модуля будет утеряна. Если вы используете плату с HardwareSerial подключением модуля можете пропустить пункт настройки скорости и сразу перейти к дальнейшей работе с модулем.

AT установка скорости общения

Для корректной работы с большими объемами необходимо понизить скорость соединения модуля и микроконтроллера. Для этого используйте «AT-команду»:

AT+UART_DEF=9600,8,1,0,0

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

SoftwareSerialAT9600.ino
// библиотека для работы программного Serial
#include <SoftwareSerial.h>
 
// создаём объект для работы с программным Serial
// и передаём ему пины TX и RX
SoftwareSerial mySerial(8, 9);
 
// serial-порт к которому подключён Wi-Fi модуль
#define WIFI_SERIAL    mySerial
 
void setup()
{
  // открываем последовательный порт для мониторинга действий в программе
  // и передаём скорость 9600 бод
  Serial.begin(9600);
  while (!Serial) {
  // ждём, пока не откроется монитор последовательного порта
  // для того, чтобы отследить все события в программе
  }
  Serial.print("Serial init OK\r\n");
  // открываем Serial-соединение с Wi-Fi модулем на скорости 9600 бод
  WIFI_SERIAL.begin(9600);
}
 
void loop()
{
  // если приходят данные из Wi-Fi модуля - отправим их в порт компьютера
  if (WIFI_SERIAL.available()) {
    Serial.write(WIFI_SERIAL.read());
  }
  // если приходят данные из компьютера - отправим их в Wi-Fi модуль
  if (Serial.available()) {
    WIFI_SERIAL.write(Serial.read());
  }
}

По итогу программный UART успеет обработать каждый пришедший байт с Wi-Fi модуля.

AT сканирование WI-FI сетей

Откройте Serial-порт и отправьте на модуль «AT-команду» для сканирования всех доступных Wi-Fi сетей:

AT+CWLAP

При наличии доступных WI-FI сетей в ответ получим сообщение:

AT+CWLAP

+CWLAP:(0,"AI-THINKER_03842B",-65,"62:01:94:03:84:2b",1,1,-40)
+CWLAP:(3,"PiRExternal",-90,"f0:29:29:26:b8:31",1,-12,0)
+CWLAP:(3,"PiRGroup",-84,"44:ad:d9:87:c8:f0",1,-4,0)
+CWLAP:(4,"corp.Catherine.ru",-82,"f8:1a:67:4c:bf:59",2,10,0)
+CWLAP:(3,"PiRGroup",-87,"f0:29:29:26:b8:30",1,-11,0)
+CWLAP:(3,"Amperka",-44,"6c:3b:6b:ff:0f:4d",6,8,0)
+CWLAP:(3,"SEC_LinkShare_ddd43e",-79,"d0:66:7b:08:93:dd",6,23,0)
+CWLAP:(3,"DIT_AMPP",-82,"1c:b9:c4:25:13:68",1,32767,0)
+CWLAP:(3,"MZPK",-89,"24:a2:e1:eb:5d:08",11,-16,0)
+CWLAP:(0,"Arduino-Yun-B4218AF05F28",-62,"b4:21:8a:f0:5f:28",11,25,0)
+CWLAP:(3,"PiRExternal",-85,"44:ad:d9:87:c8:f1",1,-4,0)

OK

Wi-Fi модуль как самостоятельный контроллер

Настройка железа

Ввиду отсутствия у платформы ESP-01 собственного USB-порта, понижающего преобразователя и отсутствия толерантности к 5 вольтам, подключите её к компьютеру, используя один из перечисленных способов:

Схема через Arduino Uno

Для сборки программатора понадобится:

  1. Соберите схему, представленную ниже.
  2. Переведите модуль в режим программирования:

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

    1. Отключите питание от модуля;

    2. Подключите пин 0 к GND — фиолетовый провод к земле;

    3. Подключите модуль к питанию;

    4. Притяните пин 0 к 3.3V — фиолетовый провод через резистор к питанию.
  3. Железо готово, приступайте к программной части.

Схема через USB-Serial адаптер

Для сборки программатора понадобится:

  1. Соберите схему, представленную ниже.
  2. Переведите модуль в режим программирования:

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

    1. Отключите питание от модуля;

    2. Подключите пин 0 к GND — фиолетовый провод к земле;

    3. Подключите модуль к питанию;

    4. Притяните пин 0 к 3.3V — фиолетовый провод через резистор к питанию.
  3. Железо готово, приступайте к программной части.

Программирование на C++

  1. Для начало работы с платформой ESP на языке C++ скачайте и установите на компьютер интегрированную среду разработки Arduino — Arduino IDE.
  2. В Arduino IDE в пункте меню выбирайте Generic ESP8266 Module.

После выполненных действий модуль ESP-01 готов к программированию через Arduino IDE.

Подробности о функциях и методах работы ESP-01 (ESP8266) на языке C++ читайте на ESP8266 Arduino Core’s.

Программирование на JavaScript

  1. Для старта с платформой ESP-01 на языке JavaScript скачайте и установите интегрированную среду разработки — Espruino Web IDE.

После выполненных действий модуль ESP-01 готов к программированию через Espruino Web IDE.

Подробнее о функциях и методах работы ESP8266 на языке JavaScript читайте на Espruino.

Восстановление стандартной АТ-прошивки

После программирования платформы в режиме самостоятельного контроллера может понадобиться восстановить на модуле стандартную AT-прошивку. Для этого необходимо воспользоваться утилитой Flash Download Tool.

Элементы платы

Чип ESP8266EX

Чип ESP8266 — выполнен по технологии SoC (англ. System-on-a-Chip — система на кристалле). В основе кристалла входит процессор семейства Xtensa — 32-х битный Tensilica L106 с частой 80 МГц с ультранизким энергопотреблением, радиочастотный трансивер с физическим уровнем WiFi IEEE 802.11 b/g/ и блоки памяти SRAM. Мощности процессорного ядра хватает для работы сложных пользовательских приложений и цифровой сигнальной обработки.

Программное приложение пользователя должно храниться на внешней микросхеме Flash-памяти и загружаться в ESP8266EX через один из доступных интерфейсов (SPI, UART, SDIO и др.) каждый раз в момент включения питания системы.

Чип ESP8266 не содержит в себе Flash-память и многих других компонентов для пользовательского старта. Микросхема является основой на базе которой выпускаются модули с необходимой периферией, например ESP-01.

Светодиодная индикация

Имя светодиода Назначение
LED Индикаторный светодиод подключённый к цифровому пину 1
POWER Индикатор питание на модуле

Распиновка

Пины питания

  • 3.3V: Вывод питания модуля. Потребляемый ток не менее 250 мА.

  • GND: Выводы земли.

Пины ввода/вывода

В отличии от большинства плат Arduino, родным напряжением платформы ESP-01 является 3,3 В, а не 5 В. Выходы для логической единицы выдают 3,3 В, а в режиме входа ожидают принимать не более 3,3 В. Большее напряжение может повредить модуль!

Будьте внимательны при подключении периферии: убедитесь, что она может корректно функционировать в этом диапазоне напряжений.

  • Цифровые входы/выходы: 4 пина; 03
    Логический уровень единицы — 3,3 В, нуля — 0 В. Максимальный ток выхода — 12 мА. К контактам подключены подтягивающие резисторы, которые по умолчанию выключены, но могут быть включены программно.

  • ШИМ: 4 пинов; 03
    Позволяет выводить аналоговые значения в виде ШИМ-сигнала. Разрядность ШИМ – 10 бит.

  • UART: пины 3(RX) и 3(TX)
    Используется для коммуникации модуля Wi-Fi с компьютером или другими устройствами по интерфейсу UART.

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

  • Модуль: ESP-01 с чипом ESP8266EX

  • Выходной интерфейс: UART

  • Объём Flash-памяти: 2 МБ

  • Беспроводной интерфейс: Wi-Fi 802.11 b/g/n 2,4 ГГц

  • Режимы работы:

  • Напряжение питания: 3,3 В

  • Потребляемый ток: до 250 мА

  • Габариты: 25×15 мм

В режиме контроллера

  • Тактовая частота: 80 МГц

  • Портов ввода-вывода всего: 4

  • Портов с ШИМ (Программный): 4

  • Разрядность ШИМ: по умолчанию 10 бит

  • Максимальный ток с пина или на пин: 12 мА

Ресурсы

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 читайте в следующей части.

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

Подключение и настройка WiFi модуля ESP8266-01

Подключение и настройка WiFi модуля ESP8266-01

В процессе изучения и проектирования всё более сложных проектов приходит время, когда возникает необходимость и желание научиться работать с таким распространенным видом связи как WiFi. Так как именно такой вид связи может позволить комфортно создать единую сеть для ваших умных домашних устройств и управлять ими, например, с мобильного телефона, планшета или компьютера, то есть другими словами создать самый настоящий умный дом, который обойдется вам в десятки раз дешевле, чем покупать готовые решения в магазине. Применение WiFi конечно не ограничивается на этом и примеров использования данного вида связи настолько много, что перечислять их нет смысла, и если Вы попали на эту страницу, значит, использование WiFi вам уже зачем-то понадобилось, осталось только разобраться, как правильно с ним работать.

Разбираться мы будем на основе самого дешевого и популярного WiFi модуля ESP8266-01. Купить WiFi модуль ESP8266-01 можно у нас на сайте.


Один из главных плюсов такого модуля это наличие памяти и своего микроконтроллера на плате, что позволяет работать ему самостоятельно, загрузив скетч непосредственно в сам модуль.

Модификаций WiFi модуля ESP8266 на самом деле достаточно много и перечислять их здесь мы не будем, научившись работать с одним, Вы без проблем сможете начать работать и с другими. Хочется сразу отметить, что работа с WiFi может показаться довольно не простым занятием, и если в Вашем багаже мало законченных проектов, лучше пока отказаться от WiFi связи и использовать в своих проектах радиосвязь, работа с которой гораздо проще для понимания. По работе с WiFi модулями создают целые сообщества и тематические форумы, что лишний раз доказывает насколько большинству людей трудно сразу разобраться с данным видом связи, а перечитывая всю информацию, у большинства людей просто опускаются руки. Скорей всего и мне не удастся всю важную информацию вместить в рамках только одной этой статьи, да и нет в этом смысла, иначе получится очередная путаница. Я попытаюсь пойти по пути строгой последовательности самых важных моментов, чтобы Вы смогли начать понимать принцип работы данного вида связи и далее уже просто развивать самостоятельно свои навыки в этом направлении.

И так, давайте приступим и для начала разберем выводы WiFi модуля ESP8266-01.

VCC - питание модуля от 3V до 3.6V

GND - земля.

RST - вывод Reset отвечающий за перезагрузку модуля.

CH_PD - "chip power-down" при подаче питания на него активизируется работа модуля.

TX - передача данных (UART интерфейс)

RX - прием данных (UART интерфейс)

GPIO0 - порт ввода/вывода общего назначения

GPIO2 - порт ввода/вывода общего назначения

Выводы GPIO0 и GPIO2 - это точно такие же цифровые выводы, с которыми мы работаем на платах Arduino для взаимосвязи с различными датчиками, и применяются они в случае реализации самостоятельной работы на внутреннем микроконтроллере WiFi модуля ESP8266-01.

Поехали дальше. Приступим к подключению модуля. Для начала сделаем простое подключение, чтобы убедиться в работоспособности модуля.

Для надежного питания модуля ESP8266-01 используйте внешний стабилизированный источник питания на 3.3V и лучше не пытайтесь брать питание от своей платы Arduino, так как модуль потребляет ток до 215mA и это может плохо закончится для вашей отладочной платы. Где взять стабилизированный источник питания на 3.3V надеюсь для вас не проблема, в противном случае вам явно еще рано заниматься данным модулем. Мне, например, нравится использовать для быстрого сбора схем на макетных платах вот такой модуль питания 3.3V и 5.0V YWRobot, который позволяет быстро получить стабилизированное напряжение на 3.3V или 5V на соответствующих дорожках питания макетной платы.

Подключаем плюс (+) от нашего источника питания 3.3V к выводу VCC модуля ESP8266-01, а минус (-) источника питания подводим к выводу GND. В таком состоянии на модуле включится красный светодиод, сигнализирующий нам о правильном подключении питания. Для того чтобы модуль активизировался, необходимо также соединить плюс (+) источника питания с выводом CH_PD модуля ESP8266-01 и желательно это сделать сразу через резистор 10кОм. Теперь, когда мы включим питание, на модуле должен загореться красный светодиод и пару раз быстро мигнуть синий светодиод. Если у вас так все и происходит, значит все отлично, вы правильно все подсоединили и ваш модуль рабочий. В противном случае еще раз проверьте подключение, либо замените модуль, так как он скорей всего не рабочий.

Идем дальше. Для работы с WiFi модулем ESP8266 нам необходим переходник USB-UART. Переходники бывают разные, например: FT232RL, CP2102, PL2303. Но мы предположим, что у вас нет таких переходников, и будем в качестве переходника USB-UART использовать плату Arduino. Я буду использовать для этого плату Arduino NANO, а вы можете использовать любую другую имеющуюся в вашем распоряжении. Подключение на любой плате один в один идентично. Производим подключение согласно следующей схеме.

Давайте рассмотрим, что мы здесь сделали. Сразу обратите внимание на то, что мы замкнули перемычкой на плате Arduino выводы RST и GND. Такая манипуляция отключает микроконтроллер и позволяет сделать из нашей платы Arduino самый настоящий переходник USB-UART.

Так как WiFi модуль ESP8266-01 мы питаем от отдельного внешнего источника питания, незабываем, что мы должны всегда соединять между собой землю всех источников питания в наших проектах. Поэтому мы соединяем вывод GND платы Arduino c землей (-) нашего внешнего источника питания 3.3V, предназначенного для питания модуля ESP8266-01.

Вывод TX вашей платы Arduino соединяем с выводом TX модуля ESP8266-01. По этой линии будут передаваться данные от WiFi модуля к плате Arduino. Кто знаком с UART интерфейсом, может задуматься: "Но как же так? Везде учили, что TX должен соединяться с RX. TX передает информацию, а RX принимает". И Вы будете правы. Всё верно всегда TX соединяется с RX, но именно в случае, когда мы делаем из Arduino переходник UART, необходимо подключать устройства напрямую. Считайте это исключением из правил.

Линию RX вашей платы Arduino подключаем так же напрямую к линии RX модуля ESP8266-01. По этой линии будет передаваться информация от платы Arduino на плату WiFi модуля. Но делаем это соединение через так называемый делитель напряжения, состоящий из двух резисторов номиналами 1кОм и 2кОм. Уменьшить напряжение на этой линии с помощью двух резисторов (делителя напряжения) нам необходимо, так как плата Arduino передает логический сигнал напряжением 5V, а WiFi модуль работает с напряжением 3.3V. Для преобразования логического сигнала мы могли бы использовать специальную платку преобразователя логических уровней, что было бы конечно правильней, но опять же предположим, что у вас ее нет, и нам пришлось пойти более простым путем и сделать это с помощью делителя напряжения.

Всё необходимое для дальнейшей работы мы пока подключили, но у нас остаются не задействованные ещё 3 вывода (GPIO0, GPIO2 и RST) на WiFi модуле ESP8266-01. Для стабильной работы WiFi модуля нам необходимо эти оставшиеся не задействованные выводы подтянуть к плюсовой (+) линии питания модуля через резисторы в 10кОм.

 

Это избавит нас от различных помех (наводок) и сделает работу модуля стабильной. Лучше это делать сразу. В противном случае не удивляйтесь, что ваш модуль постоянно перегружается, выдает не понятную информацию, либо вообще не хочет работать. Использовать подтягивающие резисторы на незадействованных выводах микроконтроллера должно быть, как правило, если хотите стабильной работы в ваших проектах.

И снова проверяем работоспособность модуля WiFi ESP8266-01. Включаем питание и смотрим, чтобы зажегся красный светодиод и пару раз мигнул синий. Если всё так происходит, значит отлично, идем дальше. В противном случае проверяем правильность соединений, а так же качество всех контактов. Может быть просто банальная ситуация, когда десять раз все перепроверили и убедились, что все правильно подключили, но включая модуль, видите, что синий светодиод ведет себя не адекватно, постоянно горит, постоянно мигает или вообще не на что не реагирует. Это может происходить из-за плохого контакта на какой-то линии. Например, собирая схему на макетной плате, какой-нибудь из резисторов неплотно сидит на своем месте и это вызывает помехи. Проверяйте качество соединений. Модуль очень чувствителен. Не пренебрегайте этим. Это частая причина не стабильной работы.

 

Настройка программы Arduino IDE для работы с WiFi модулем ESP8266-01.

В общем, с подключением мы закончили. Сейчас нам необходимо подготовить программу Arduino IDE для работы с WiFi модулем ESP8266-01. Для этого нам надо скачать и установить в Arduino IDE необходимый архив с библиотеками, примерами и платами ESP, который впоследствии позволит нам заливать скетчи прямо в микроконтроллер модуля ESP8266-01, менять прошивку и т.д. В рамках этой статьи нам скорей всего эти настройки и не понадобятся, но мне кажется, что после того, как мы разобрались с подключением модуля, порядок действий будет правильным, если мы сразу скачаем все необходимое для работы с Arduino IDE. Тут все в принципе просто.

Запускаем программу Arduino IDE и переходим в меню "Файл" - "Настройки"

 

В поле "Дополнительные ссылки для Менеджера плат" вставляем ссылку http://arduino.esp8266.com/stable/package_esp8266com_index.json и нажимаем кнопку "ОК".

 

Далее идем в меню "Инструменты" - "Менеджер плат".

 

В появившемся окне в верхнем поле пишем "esp8266". В итоге в окне у нас останется только нужная прошивка. При нажатии на прошивку появится кнопка "Установка". Нажимаем на кнопку "Установка" и ждем, пока все установится. Архив достаточно большой, около 150 мегабайт, так что придется подождать.

 

После окончания установки. Перезагружаем Arduino IDE и видим, как появились новые платы ESP в меню "Инструменты" - "Платы". На этом всё. С настройкой Arduino IDE мы закончили. Пока нам эти настройки не нужны, но в дальнейшей работе нам без них не обойтись.

 

Управление WiFi модулем ESP8266-01 с помощью AT команд.

Всё мы подключили и подготовились, теперь можем начать разбираться с управлением. На самом деле, сейчас будет продолжение проверки и настройки модуля с помощью AT команд и без этого ни как не обойтись. WiFi модули реализованы так, что всё общение с ними происходит с помощью так называемых AT команд, которые зашиты в прошивке модуля. Мы не будем здесь перечислять все AT команды, их достаточно много и если захотите все тщательно изучить, можете без труда их найти в интернете. А мы будем использовать сейчас только самые необходимые для начала работы.

И так, подключаем нашу плату Arduino через USB кабель к компьютеру. А внешний источник питания, который питает WiFi модуль ESP8266-01 пока включать не надо. Запускаем программу Arduino IDE, выбираем в меню "Инструменты" нашу плату Arduino, в моем случае это Arduino NANO, а вы выбираете свою. Так же не забываем выбрать порт к которому подключена наша Ардуинка. Надеюсь все это вы понимаете и делать умеете.

Открываем мониторинг порта "Инструменты" - "Монитор порта". Выбираем скорость порта 74880 (на такой скорости происходит запуск модуля) и слева в списке выбираем "NL & CR"

 

Вот теперь подключаем внешний источник питания который питает наш WiFi модуль. После чего вы должны увидеть в мониторе порта примерно такую информацию.

Здесь мы видим некоторую информацию по нашему WiFi модулю (скорость, количество памяти на борту и т.д.). Полученная информация может отличаться в зависимости от версии прошивки WiFi модуля. Не будем на этом заострять внимание. Важно другое. Внизу мы видим набор бессмысленных символов, это означает, что скорость порта (74880 бод), которую мы выставили, подходит только для начальной загрузки модуля, чтобы увидеть нормально эту информацию, но эта скорость не подходит для нормального общения с WiFi модулем.

Чтобы подобрать правильную скорость порта, будем просто изменять скорость порта и посылать в порт (поле сверху и кнопка отправить) символы AT пока не получим ответ ОК. Если Вы попробуете прямо сейчас послать символы AT в порт на скорости 74880, то будете получать очередные один-два бессмысленных символа в ответ.

 

Попробуйте сразу выставить скорость 115200 бод и послать команду AT. Чаще всего модули прошиты на эту скорость.

Вот такую картину вы должны увидеть в вашем мониторе порта. Если все равно в ответ пришел непонятный набор символов, понижайте скорость и повторяйте отправку AT команды, пока в ответ не вернется ОК. Если вы перепробовали все скорости и не добились правильного ответа, значит вам не повезло и модуль прошит прошивкой с нестандартной скоростью. Тогда остается только перепрошить модуль нормальной прошивкой, но это тема отдельной статьи.

Надеюсь, что все хорошо и скорость правильную вы подобрали. Кстати если вы попробуете выключить и снова включить WiFi модуль, после того как подобрали правильную скорость, то уже вместо той самой первоначальной информации, которая корректно отображалась на скорости 74880 бод, вы наоборот, увидите беспорядочный набор символов, но в конце вы увидите слово "ready".  Но у нас есть возможность посмотреть эту первоначальную информацию в нормальном виде на правильной скорости, для этого необходимо программно перезагрузить модуль с помощью AT-команды AT+RST.

Чтобы узнать версию прошивки вашего WiFi модуля ESP8266-01, необходимо в монитор порта отправить команду AT+GMR и в ответ вы получите примерно следующую информацию:

 

WiFi модуль ESP8266-01 может работать как в режиме точки доступа, так и в режиме клиента. Чтобы разрешить модулю работать сразу во всех режимах, отправьте в монитор порта команду AT+CWMODE=3 и в ответ вы должны получить ОК.

Команда AT+CWLAP позволит посмотреть все WiFi точки доступа, которые видит в данный момент ваш модуль. Мой модуль, например, видит на данный момент в зоне своего покрытия всего три WiFi точки доступа. Ответ должен быть примерно таким:

 

Например, мы знаем пароль к третьей точке доступа и чтобы подключиться к ней выполняем команду AT+CWJAP="имя","пароль", в моем случае эта команда выглядит AT+CWJAP="dsl_unlim_512_home","11111111", на что получаем успешный ответ:

Параметры команды записываются на флеш память WiFi модуля ESP8266-01, и если мы выключим модуль и опять его включим, он автоматически подключится к этой точке доступа. Смотрите случайно в команде не допустите пробел, иначе получите в ответ ERROR. Необходимо обратить внимание, что в последних версиях прошивки рекомендуют использовать команду AT+CWJAP_CUR, то есть команда будет выглядеть AT+CWJAP_CUR="имя","пароль". Если вдруг мы забыли, к какой точке доступа подключен наш модуль, необходимо послать команду AT+CWJAP? или AT+CWJAP_CUR? и в ответ получим ту точку доступа, к которой подключен WiFi модуль на данный момент.

С подключением и первоначальной настройкой WiFi модуля ESP8266-01 мы разобрались. Модуль работает и готов для реализации ваших дальнейших проектов. Разобрать все возможные примеры работы с данным модулем в рамках одной статьи просто не возможно и мы этим займемся в следующих статьях. А для тех, кто не очень дружит с программированием, но очень хочет побыстрей начать управлять своими проектами с помощью WiFi, рекомендую познакомить с конструктором WiFi проектов RemoteXY. Этот сайт поможет вам без особого труда создать интерфейс управления для вашего мобильника или планшета и с помощью него управлять своим устройством, к которому вы подключите WiFi модуль.

 

 

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

ESP-201 WIFI модуль на ESP8266 (Arduino урок №1)

Решил изучить Ардуино. Построить «умный» дом. С чего-то надо начинать.
На базе WI-FI модуля ESP8266 можно получить беспроводной датчик температуры, влажности, давления, освещенности… Надо всего лишь обновить прошивку модуля и подключить датчики. Дополнительные микроконтроллеры не требуются.
Около двух лет назад на китайском рынке появились дешёвые WI-FI модули ESP8266 китайского разработчика. Это не просто WI-FI модуль, а полноценный 32 битный микроконтроллер со своим набором GPIO, в том числе SPI, UART, I2C.
Технические характеристики:
Процессор: одноядерный Tensilica L106 частотой до 160 MHz.
Поддерживаемые стандарты WI-FI: 802.11 b / g / n.
Поддерживаемы типы шифрования: WEP, WPA, WPA2.
Поддерживаемые режимы работы: Клиент(STA), Точка доступа(AP), Клиент+Точка доступа(STA+AP).
Напряжение питания 1.7..3.6 В.
Потребляемый ток: до 215мА в зависимости от режима работы.
Количество GPIO: 16 (фактически до 11). Доступно на модулях: ESP-01 — 4, ESP-03 — 7+1, включая UART. Существуют и другие варианты модулей.
Интерфейсы: 1 ADC, I2C. UART, SPI, PWM.
Внешняя Flash память может быть установлена от 512кБ до 4МБ.
RAM данных 80 кБ, RAM инструкций — 64 кБ.
Смотрим, в каком виде прислали.

Заказал сразу три модуля. Одного для «умного» дома будет маловато.

Эти модули необычные. Имеют возможность подключения внешней антенны.


Техническая информация на странице магазина отсутствует полностью.
Поэтому ориентируемся на то, что расположено на плате и на то, что нарыл.
Схема модуля состоит из минимального количества деталей: самого чипа ESP8266,


flash памяти 25Q41BT (4M-bit Serial Flash, 512K-byte, 256 bytes per programmable page)
www.elm-tech.com/en/products/spi-flash-memory/gd25q41/gd25q41.pdf
и кварца на 26МГц.

Памяти для серьёзных проектов маловато. Способ увеличения несложный. Достаточно перепаять МС памяти на более ёмкую. Обзор на Муське не так давно был:
mysku.ru/blog/aliexpress/41089.html
Для простых проектов той, что стоит, вполне достаточно.
Для проектирования своих задач решено было использовать макетницу. Но возникла проблемка.

Выводы для программирования модуля явно были «лишними». Пришлось немного переделать.

Левые снимки – оригинал, справа после переделки. Никого не заставляю так делать. Просто это моё решение, мне так удобнее.
Теперь ничто не мешает, и программировать удобно.

Как писал ранее, эти модули могут работать как с внутренней (на печатке) антенной, так и с внешней. Изначально модуль «настроен» на работу с внешней антенной. Для перенастройки придётся перепаять перемычку-сопротивление.

Я решил проверить, насколько разнится коэффициент усиления внутренней и внешней антенны. Именно для этого на одном модуле перепаял перемычку.
Но возникла ещё одна сложность: два модуля из трёх пришли пустыми (не прошитые).
Заодно потренировался.
Пригодился кабель-конвертер (USB To RS232 TTL UART) из одного моего обзора про ВольтАмперВаттметр с функцией счётчика PZEM-004.

Обычный кабель-конвертер.

У меня есть более дешёвый вариант. Но этот более удобен (для меня).
Устанавливаю модуль на макетку и вгоняю в него скетч-пример для ESP8266 при помощи Arduino IDE. Есть нюансы. Смотрим схему подключения.

Модуль запитал от внешнего источника. В моём случае узел питания был в комплекте с макеткой.
При загрузке скетча GPIO 00 сажаем на Gnd. Для запуска скетча (после прошивки) GPIO 00 подключаем на +3.3V.
Подключил, всё работает. Осталось проверить, у какой антенны коэффициент усиления выше.
Установил на макетку три модуля.
— ESP-201 с внутренней антенной.
— ESP-201 с «хвостиком» для внешней антенны (шёл в комплекте).
— И у же стандартный модуль на основе ESP8266, купленный по этой ссылке с год назад:
aliexpress.com/item/New-Wireless-module-NodeMcu-Lua-WIFI-Internet-of-Things-development-board-based-ESP8266-with-pcb-Antenna/32299982691.html

Для питания использовал PowerBank. Для чистоты эксперимента пришлось выйти почти в поле. Тем не менее, один несанкционированный роутер всё же поймался:) Название на графике удалил. Мешаться не будет.
Оценивать силу сигнала буду при помощи программы Acrylic Wi-Fi. Программ существует множество, в том числе и для смартфонов. Но эта может отслеживать все изменения в динамике.
В непосредственной близости от модулей.

Wifi_int_ant — ESP-201 с внутренней антенной.
Wifi_ext_ant — ESP-201 с «хвостиком» для внешней антенны.
WeatStat — ESP8266,
Отошёл на 10 метров.

Отошёл ещё на 10 метров.

Ещё.

И ещё.

Погрешности измерения естественно присутствуют. Но общая картина ясна.
Пора объявлять победителей.
1 место: ESP-201 с внутренней антенной.
2 место: стандартный модуль на основе ESP8266.
3 место: ESP-201 с «хвостиком» для внешней антенны.
Подпаялся к банке из-под сгущённого молока.

Картина реально изменилась.

Дело было не бабине… 🙂
С выносной антенной сигнал намного сильнее. Даже если в качестве антенны обычная консервная банка.
Вот, в общем-то, и всё. Для правильного вывода того, что написал, должно хватить. Кому что-то неясно, задавайте вопросы. Возможно, какие-то моменты упустил.
Надеюсь, хоть кому-то помог.
Удачи!
Продолжение следует…

Товар предоставлен для написания обзора магазином. Обзор опубликован в соответствии с п.18 Правил сайта.

Nodemcu Lua Wi-Fi на Esp8266: описание, подключение, схема, характеристики

NodeMCU Lua – плата на основе популярного модуля ESP8266 (рисунок 1) предназначена для создания IoT устройств (устройств Интернета вещей), которым необходима передача или получение данных в интернет с помощью технологии Wi-Fi.

Содержание


NodeMCU Lua – плата на основе популярного модуля ESP8266 (рисунок 1) предназначена для создания IoT устройств (устройств Интернета вещей), которым необходима передача или получение данных в интернет с помощью технологии Wi-Fi.

Технические характеристики модуля

  • Процессор 32-битный
  • WiFi – 802.11 b/g/n
  • Напряжение питания 3,3 В
  • Внешнее питание 3.6–20 В
  • Ток потребления: режим передачи данных– 200 мА, режим приёма данных – 60 мА
  • Подсоединение к компьютер – вход microUSB
  • Имеет встроенную flash память 4 Mб
  • Поддержка в базовой прошивке интерпретатора Lua
  • Возможность обновления прошивки по Wi-Fi
  • Наличие встроенного датчика температуры
В чем же преимущества данной платы на основе модуля ESP8266? Во-первых, на плате присутствует интерфейс UART-USB с разъемом micro USB, что позволяет подключать его к компьютеру без переходников. Во вторых, она имеет выводы для всех доступных контактов ESP8266. А это 11 портов ввода-вывода общего назначения, некоторые из которых имеют дополнительные функции (см. рисунок 1).

Naznachenie-vyvodov-NodeMcu.jpg

Рисунок 1. Назначение выводов NodeMcu

В-третьих, на данной плате установлена прошивка, которая может интерпретировать команды скриптового языка Lua. Lua - это встраиваемый язык сценариев, который является маленьким, быстрым и очень мощным. С помощью команд Lua для NodeMCU можно выполнять следующие действия:
  • использование платы в качестве WiFi точки доступа
  • подключаться (в том числе и автоматическое) к точке доступа WiFi
  • режим пониженного энергопотребления (уход в сон)
  • перенаправлять вывод
  • выполнять операции со списком файлов в flash-памяти
  • управление пользовательским таймером и таймером WatchDog
  • управление GPIO1 выводами
  • создание веб-сервера
  • обмениваться даннымиI2C — устройствами
  • считывать данные на выводе АЦП
Можно не только выполнять команды Lua в терминале, но и cоздавать файлы в flash-памяти ESP8266 и вызывать их на иcполнение. Рассмотрим примеры напиcания программ для модуля на языке Lua, а также в среде программирования Arduino IDE.

Примеры использования (скриптовый язык Lua)

Рассмотрим пример написания скрипта на языке Lua для платы NodeMCU. Будем использовать программу ESPlorer (рисунок 2), которую вместе с можно скачать со страницы тут.

Okno-programmy-ESPlorer.jpg

Рисунок 2. Окно программы ESPlorer.

Напишем скрипт создания простейшего веб-сервера, чтобы при обращении к модулю по HTTP с него выдавалась информация. Создадим для этого файл server1.lua и запишем в него код, представленный в листинге 1. Листинг 1
serverport = 80

server=net.createServer(net.TCP)

server:listen(serverport,

function(connection)

connection:send("HTTP/1.1 200 OK\nContent-Type: text/html\nRefresh: 10\n\n" ..

"<!DOCTYPE HTML>" ..

"<html><body>" ..

"<b>Server </b></br>" ..

" ChipID : " .. node.chipid() .. "<br>" ..

" MAC : " .. wifi.sta.getmac() .. "<br>" ..

" Heap : " .. node.heap() .. "<br>" ..

" Timer Ticks : " .. tmr.now() .. "<br>" ..

"</html></body>")

connection:on("sent",function(connection) connection:close() end)

end

)
Сохраним файл server1.lua в модуле и запустим.  Для проверки работы севера подключимся к точке доступа модуля и наберем в браузере ее адрес: http://192.168.4.1 (рисунок 3). Для запуска сервера при загрузке модуля необходимо в конце нашего autorun-файла init.lua добавить строку: dofile(server1.lua)

Obrashchenie-k-serveru-na-NodeMCU.jpg

Рисунок 3. Обращение к серверу на NodeMCU


Примеры использования (скетч в среде программирования Arduino IDE)

Рассмотрим создание программ дя платы NodeMCU в среде программирования Arduino IDE. Для этого необходимо установить Arduino IDE для ESP8266. На компьютере уже должно быть установлено программное обеспеченние Arduino IDE версии не ниже 1.6.5. На рисунках 4-8 представлены скриншоты процесса установки Arduino IDE для ESP8266.

05.jpg

Рисунок 4. 

06.jpg

Рисунок 5.

 

07.jpg

Рисунок 6.

 

08-1024x820.jpg

Рисунок 7.

Рассмотрим пример подключения аналогового датчика освещенности (фоторезистора) к плате NodeMCU ESP8266 и отправку данных по протоколу MQTT в интернет на сервер http://www.mqtt-dashboard.com/.

Схема соединений представлена на рис. 8.

Skhema-podklyucheniya-Nodemcu-Lua-Wi-Fi-1024x480.jpg

Рисунок 8. Схема подключения.

Для написания скетча необходима библиотека pubsubclient  для общения с брокером MQTT . Разархивируйте скачанный файл в папку библиотеки IDE Arduino. Откройте в Arduino IDE скетч _2.ino. Вам необходимо внести в скетч изменения параметров SSID и пароля для точки подключения платы NodeMCU к вашей WiFi сети.

const char* ssid = "your_wifi_hotspot";

const char* password = "your_wifi_password";

Загружаем скетч на нашу плату NodeMCU, открываем монитор последовательного порта и если соединения указаны правильно, увидим следующий результат (рисунок 9).

Soedinenie-s-brokerom-po-seti.jpg

Рисунок 9. Соединение с брокером по сети.

После того, как NodeMCU подключился к wifi и брокеру MQTT, он публикует данные о освещенности для брокера MQTT по теме OsoyooData (рисунок 10).

Otpravka-dannyh-datchika-osveshchennosti.jpg

Рисунок 10. Отправка данных датчика освещенности.

Мы будем использовать на любом устройстве (например планшете или компьютере) MQTT-клиент, чтобы подписаться на тему OsoyooData от того же брокера MQTT и получать значения освещенности в реальном времени.
90000 ESP8266 Pinout Reference: Which GPIO pins should you use? 90001 90002 This article is a guide for the ESP8266 GPIOs: pinout diagrams, their functions and how to use them. 90003 90002 The ESP8266 12-E chip comes with 17 GPIO pins. Not all GPIOs are exposed in all ESP8266 development boards, some GPIOs are not recommended to use, and others have very specific functions. 90003 90002 With this guide, you'll learn how to properly use the ESP8266 GPIOs and avoid hours of frustration by using the most suitable pins for your projects.90003 90002 We also have a guide for the ESP32 GPIOs: ESP32 Pinout Reference: Which GPIO pins should you use? 90003 90010 ESP8266 12-E Chip Pinout 90011 90002 The following figure illustrates the ESP8266 12-E chip pinout. Use this diagram if you're using an ESP8266 bare chip in your projects. 90013 90003 .90000 Introduction & Getting Started with ESP8266 WiFi Transceiver 90001 90002 Internet of Things and Home Automation has really been a hyped topic in the recent days. Building something on our own which can communicate to the World Wide Web and can be accessed from anywhere in the world, really sounds cool does not it? 90003 90002 But, wait !!! It also sounds complicated ??? .... 90003 90002 So did it for me, I thought it would take immense time and skill to build things which can interact with the internet.NO, I was completely wrong, thanks to this fantastic module called the 90007 ESP8266 90008 from Espressif Systems. Now, you can easily open your doors for IoT Projects with the help of this module. This low cost, small size module could do wonders and is really simple and easy to use, provided we follow the right steps. 90003 90002 This tutorials aims to 90007 introduce you to this ESP8266-01 module 90008 90007 and help you get started 90008 with it. Perhaps, you have already brought your module and got stuck while trying to using it.Then, you are not alone do not worry, many people find it very difficult to get started with module because there is no proper guidance or documentation for this module. This is the reason for making this tutorial. Follow the instructions here and you should be able to get your ESP8266-01 module up and running in no time, here we will use 90007 FTDI USB to TTL Serial Adapter Module 90008 to program the ESP8266. Check the 90007 detailed Video 90008 at the end of the Tutorial. 90003 90002 Before getting into the topic lets cover some basics about the ESP8266-01 Module.90003 90002 90003 90024 What is ESP8266? 90025 90002 Most people call ESP8266 as a WIFI module, but it is actually a microcontroller. ESP8266 is the name of the microcontroller developed by Espressif Systems which is a company based out of shanghai. This microcontroller has the ability to perform WIFI related activities hence 90007 it is widely used as a WIFI module 90008. 90003 90002 90031 90003 90002 There are many types of ESP8266 module available ranging from ESP8266-01 to ESP8266-12.The one that we are using in the tutorial is the ESP8266-01 because it the cheapest one and easily available. However all the ESP modules have only one type of ESP processor, what differs is only the type of breakout bard used. The breakout board of ESP8266-01 will have only 2 GPIO pins whereas in other boards it will be higher. 90003 90002 The complete specification of the module is given in the below table 90003 90037 90038 90039 90040 90002 Voltage 90003 90043 90040 90002 3.3V 90003 90043 90048 90039 90040 90002 Current Consumption 90003 90043 90040 90002 10uA-170mA 90003 90043 90048 90039 90040 90002 Maximum current consumption during flashing 90003 90043 90040 90002 800mA 90003 90043 90048 90039 90040 90002 Flash Memory 90003 90043 90040 90002 16MB (512K normal) 90003 90043 90048 90039 90040 90002 Processor 90003 90043 90040 90002 Tensilica L106 32 bit 90003 90043 90048 90039 90040 90002 Processor Speed ​​90003 90043 90040 90002 80-160MHz 90003 90043 90048 90039 90040 90002 RAM 90003 90043 90040 90002 32K + 80K 90003 90043 90048 90039 90040 90002 GPIO 90003 90043 90040 90002 17 (but most are multiplexed) 90003 90043 90048 90039 90040 90002 Analog to digital Converter 90003 90043 90040 90002 1 (10-bit) 90003 90043 90048 90039 90040 90002 Maximum TCP connections 90003 90043 90040 90002 5 90003 90043 90048 90139 90140 90002 90003 90002 Okay few things which could have surprised you about the specification is that, YES the ESP8266 module comes with a ADC Converter and it does consume a very high current of 0.8A during flashing your device. 90003 90002 Also check our various ESP8266 based interesting IoT Projects. 90003 90002 90003 90024 Basics of WiFi Theory: 90025 90002 Transfer Control Protocol (TCP), Internet Protocol (IP), User Datagram Protocol (UDP), Access Point (AP), Station (Sta), Service Set Identifier (SSID), Application Programming Interface (API), Webserver ... .. 90003 90002 Do all the above terms make sense to you? 90003 90002 If, yes. Then, BINGO you can jump this part and move to the next section.90003 90002 If, no. Then you must be one among the many electrical students who just blinked through most these terms just like I did when I was first introduced to all these stuff. So, let us quickly run through all these terms because only then we could make our entry into the world of IOT. 90003 90002 90003 90002 90007 Transfer Control Protocol (TCP): 90008 90003 90002 Most of us would know what this means. Yes, these are the set of rules based on which the internet works. Since ESP8266 has the ability to set up WIFI connections.At a high level Wi-Fi is the ability to participate in the TCP / IP connections over a wireless link. You can make your ESP to work on the TCP / IP protocol or the UDP protocol. 90003 90002 90003 90002 90007 User Datagram Protocol (UDP): 90008 90003 90002 UDP is also another type of internet protocol. This type of communication is faster than TCP but it is less accurate. The reason is that TCP uses an Acknowledgment during its communication but UDP does not. TCP is mostly used in networks where there is a requirement high reliability.UDP is used in places where speed has high priority than reliability. For example UDP is used in video conferencing, because there even if some pixels are not transmitted it will not affect the video quality that much but the speed is very important. 90003 90002 Most of the ESP8266 projects and codes work around the TCP / IP, UDP will be least bothered. 90003 90002 90003 90002 90007 Access Point (AP) and Station (STA): 90008 90003 90002 Once you start working with ESP module, you would come across these two terms frequently.Let us say you and your friend would like to surf the internet on your smart phones but since he does not have an active internet connection you decide to turn on your hotspot and your friend connects to it. Here your phone which is sourcing the internet connection is the Access Point (AP) and your friend's phone which is using the internet is called the Station (STA). 90003 90002 ESP8266 module can be used in three modes, AP mode, STA mode or in both STA and AP mode (combined). 90003 90002 90003 90002 90007 Service Set Identifier (SSID): 90008 90003 90002 This is fairly a simple term.Almost all of us have used WIFI. The name of the Wi-Fi Network is called its SSID. When we have multiple access points for a station to connect to, the station should know which access point it should get connected, hence each Access Point (AP) is given a identity which is called the SSID. 90003 90002 90003 90002 90007 Application Programming Interface (API): 90008 90003 90002 To put it simple an API is a messenger which takes in your requests, processes it and returns your system the desired result.Most of the activities we do on the internet uses API's, like when you book a flight, make an online purchase etc. Every websites links you to an API where some part of the work like signing up, making payment etc. is done for you there. 90003 90002 ESP8266 uses API to talk to the world of Internet. For example if it wants to know the time, climate, or whatever it should request in form of an API to the corresponding website. That website will receive the request and give the desired result back to our ESP module.90003 90002 90003 90002 90007 Web Server: 90008 90003 90002 A web Server is something which is responsible to display the contents of a website. All the contents of that particular website will be loaded into its web server. There are dedicated computers whose job is to only acts as a web server. We can also program our ESP8266 to work as a web server, and connect to it from anywhere in the world. 90003 90002 Okay, this is enough for us to get started. Now, 90007 let us get our hands on the hardware 90008.90003 90002 90003 90024 Types of programming with ESP8266: 90025 90002 There are two of ways to work with your ESP8266 module. This tutorial will help you to get started with both. 90007 One way is by using the AT commands. The other way is by using the Arduino IDE 90008. Let us understand what it means. 90003 90002 All ESP8266 modules shipped from the factory will have a default firmware (SDK + API) loaded into it. This firmware will help you to program the ESP8266 module through AT commands.90003 90002 The other way is by directly programming the ESP8266 module using the Arduino IDE (board not needed) and its libraries. All the projects can be done in both the methods. But, if you start using the Arduino IDE for programming your ESP8266 you might not be able to use AT commands because the default SDK might have been corrupted. In that case you have to flash your ESP with default settings. We will cover that in another tutorial. 90003 90002 90003 90024 Hardware to Program ESP8266 Module: 90025 90002 ESP8266 is an 8 terminal module.The pin out of the same is shown below. 90003 90002 90031 90003 90002 90239 90003 90002 Unfortunately, this module is not breadboard friendly and hence we can not mount it directly onto our breadboard. Also 90007 unlike Arduino it does not have a built in USB to Serial driver; hence we have to use "FTDI USB to TTL Serial Adapter Module" to communicate with it 90008. Make sure that the FTDI board can operate on 3.3V also; the one that we are using in this tutorial is shown below. 90003 90002 90003 90002 Now, as we know we should power up the ESP8266 with 3.3V. But the current consumption is 0.8A, so it might not work as expected if powered from our FTDI breakout board. Hence we have to build our own powering circuit. Here we have used LM317 for the powering purpose; the details for making the complete hardware are given later sections. 90003 90002 90003 90024 Materials Required: 90025 90253 90254 Perf Board 90255 90254 ESP8266-01 90255 90254 FTDI breakout Board 90255 90254 LM317 90255 90254 0.1uf capacitor 90255 90254 10uf Capacitor 90255 90254 Barrel Jack 90255 90254 Bergstik Male and Female 90255 90254 Push Button 90255 90254 Connecting wires 90255 90254 12V Adapter to power the board.90255 90276 90002 90003 90024 Circuit Explanation: 90025 90002 The Schematics of the board is shown below 90003 90002 90284 90003 90002 Some might have tried powering your ESP directly from your FTDI and got it working, but the following are 90007 the reasons to build your own board 90008 with few additional components: 90003 90290 90254 Only few FTDI boards can source enough current for the ESP module. Few ESP modules might consume high current than the other during flashing.Hence it is always safe to 90007 have your own power source 90008, and it will be easier to integrate powering circuit on Dot Board instead of breadboard. 90255 90254 We should always reset the ESP module before uploading the code, building our own board will help us to reset the module easily. 90007 We have used Push Button to Reset ESP8266 90008. 90255 90254 The GPIO0 pin has to be grounded when programming using Arduino and must be left free when using AT commands, this can easily be toggled if we build our own board.We have used a 90007 Jumper for switching between AT commands mode and Arduino IDE Programming mode 90008. 90255 90254 All the programming is done using Serial communication 90007, if you use a breadboard some loose terminals might cause an error 90008 in half way and force us to flash the module to work with again. 90255 90307 90002 That being said you can select between using a breadboard, and making your own board for programming the module. If you still want to use the breadboard, the same circuit shown above can be build using your breadboard.Only the appearance will be different, all the other instructions in this tutorial will apply the same. 90003 90002 90003 90024 Building Board to Program ESP8266: 90025 90002 So here we are building the board to program ESP8266 module which have its own powering circuit to power up the ESP8266. 90003 90002 As said our module will require around 800mA while programming it. Hence we have constructed our own power module by using a LM317 variable voltage regulator since the source current of LM317 is almost 1.2A. The input voltage of LM317 will be 12V which will be given using a 12V 2A wall mount adapter. The output of the LM317 will be regulated to 3.3V constantly by using the resistors of 220ohm and 360ohm. Also check our Battery Charger Circuit using LM317 to learn more about LM317. 90003 90002 The formulae to calculate the output voltage of LM317 is given below: 90003 90002 Vout = 1.25 * (1+ (R2 / R1)) 90003 90002 Where, R1 is 220ohm and R2 is 360ohms. 90003 90002 The ESP8266 Module is connected as per the pins shown in the table below.90003 90037 90038 90039 90040 90002 90007 Pin No. 90008 90003 90043 90040 90002 90007 ESP pin name 90008 90003 90043 90040 90002 90007 Connected to 90008 90003 90043 90048 90039 90040 90002 90007 1 90008 90003 90043 90040 90002 Ground 90003 90043 90040 90002 Ground of the FTDI module 90003 90043 90048 90039 90040 90002 90007 2 90008 90003 90043 90040 90002 GPIO2 90003 90043 90040 90002 Left free or connected to berg stick for future use 90003 90043 90048 90039 90040 90002 90007 3 90008 90003 90043 90040 90002 GPIO0 90003 90043 90040 90002 Switch to toggle between programming modes 90003 90043 90048 90039 90040 90002 90007 4 90008 90003 90043 90040 90002 Rx 90003 90043 90040 90002 Tx of FTDI module 90003 90043 90048 90039 90040 90002 90007 5 90008 90003 90043 90040 90002 Tx 90003 90043 90040 90002 Rx of FTDI module 90003 90043 90048 90039 90040 90002 90007 6 90008 90003 90043 90040 90002 CH_PH 90003 90043 90040 90002 3.3V from LM317 90003 90043 90048 90039 90040 90002 90007 7 90008 90003 90043 90040 90002 Reset 90003 90043 90040 90002 Pushbutton to reset module 90003 90043 90048 90039 90040 90002 90007 8 90008 90003 90043 90040 90002 Vcc 90003 90043 90040 90002 3.3V from LM317 90003 90043 90048 90139 90140 90002 90003 90002 To easily 90007 toggle between the AT command mode and the Arduino Programming mode 90008 I have placed a switch (jumper) which will pull the GPIO 0 to ground when using Arduino IDE and will leave it floating when using the AT commands.90003 90002 There is a 90007 push button which when pressed will reset the ESP module 90008. This is done by simply connecting the RST pin of the ESP module to the ground rail through the pushbutton. Each time before we program our ESP module we should reset it. 90003 90002 Once you have assembled the circuit it should look something like this below. 90003 90002 90491 90003 90002 90003 90002 I have used a Perf board but you can also use a breadboard if you are interested (as discussed above).The complete build and explanation is shown in the 90007 video below 90008. 90003 90002 Once done with the connections. Power up the board without the ESP & FTDI boards and check if we get 3.3V properly on the Vcc and Ground terminals of the ESP modules position. Now ensure your FTDI board is in 3.3V mode and connect your FTDI and ESP modules to your board. 90003 90002 Power on your adapter and connect it to your board, the ESP module should light up with a red colour. 90003 90002 90504 90003 90002 Then connect your FTDI board to your computer using a mini-USB to USB cable and navigate to Device manager on your computer and you should find you FTDI board connected to your COM port, as shown below: 90003 90002 90509 90003 90002 90003 90002 Now time to get our hands on programming our ESP8266 module.You can start with by using the AT-commands and then moving to using the Arduino IDE. Do not forget to check our other 90007 ESP8266 based Projects. 90008 90003 .90000 Getting Started with ESP8266 WiFi Transceiver (Review) 90001 90002 The ESP8266 is a Wi-Fi module great for IoT and Home Automation projects. This article is a getting started guide for the ESP8266 development board. 90003 90004 About the ESP8266 90005 90002 The ESP8266 is a $ 4 (up to $ 10) Wi-Fi module. It allows you to control inputs and outputs as you would do with an Arduino, but it comes with Wi-Fi. 90007 So, it is great for home automation / internet of things applications.90003 90002 90010 So what can you do with this low cost module? 90011 90003 90002 If you want to create a web server with the ESP8266, we highly recommend following our tutorial: Build an ESP8266 Web Server 90003 90015 ESP8266 specifications 90016 90017 90018 11 b / g / n protocol 90019 90018 Wi-Fi Direct (P2P), soft-AP 90019 90018 Integrated TCP / IP protocol stack 90019 90018 Built-in low-power 32-bit CPU 90019 90018 SDIO 2.0, SPI, UART 90019 90028 90002 Comparing the ESP8266 with other Wi-Fi solutions on the market, it is a great option for most "Internet of Things" projects! It's easy to see why it's so popular: it only costs a few dollars and can be integrated in advanced projects.We've published dozens of free ESP8266 projects and tutorials. 90003 90002 There is a successor of the ESP8266 - the ESP32. The ESP32 combines Wi-Fi and Bluetooth and is dual core. Read the following article to find the differences betwee 90003.90000 Arduino UNO + ESP8266 as a WiFi access point 90001 90002 The ESP8266 module will be configured as a standalone WiFi access point. No binding to an existing WiFi network is required for this mode of operation. To connect, the smartphone must be connected to the created access point. 90003 90004 Step 1. Create a graphical user interface project 90005 90002 Enter the RemoteXY editor. Set one button in the smartphone field. Highlight this button, then select the "Snap to pin" property to 13 (LED) value in the right pane of the "Element" tab.90003 90008 90009 90004 Step 2. Configure the project 90005 90002 In the right pane, select the following settings under the "Configuration" tab. 90003 90014 90002 In the right pane, set the following settings under the "Module interface" tab. 90003 90017 90002 The settings indicate the ESP8266 to be connected to the Arduino via the Hardware Serial (pins 0 and 1) at 115200 speed. 90003 90002 The settings also specify the name of the future access point and the password for the access point.90003 90004 Step 3. Get the sketch for the Arduino 90005 90002 Press the "Get source code" button. 90003 90002 In the opened page with the source code of the sketch, download it to your computer (the link "Download code") and open it in the Arduino IDE. 90003 90002 Also, download the library RemoteXY (the link "Download Library") from this page. 90003 90002 The library being installed correctly, the source code for the sketch must be compiled without errors. 90003 90002 More information on installing the RemoteXY library for the Arduino IDE 90003 90004 Step 4.Set up the ESP8266 90005 90002 The ESP8266 module needs to be set up. Your module might already have the necessary default settings, but it is better to check it. 90003 90002 You need to check the following: 90003 90040 90041 The module has a firmware supporting AT commands of the version no lower than v0.40; 90042 90041 The module is set up for the 115200 speed. 90042 90045 90002 More information on configuring the ESP8266 to work with RemoteXY 90003 90004 Step 5.Connect the ESP8266 to the Arduino Uno 90005 90002 Connect the ESP8266 to the Arduino Uno according to the diagram below. Note that the RX-TX contacts are connected by a crosswire. 90003 90002 Since the ESP8266 module has 3.3V signal levels and the Arduino has 5V ones, it is necessary to use a resistive voltage divider to convert the signal level. 90003 90054 90009 90004 Step 6: Load the sketch into the Arduino 90005 90002 The sketch is loaded into the Arduino in the normal way. However, programming is not possible because the ESP8266 module is connected to pins 0 and 1, the compiler will show an error.90003 90002 Before programming, disconnect the wires going to the ESP8266 from terminals 0 and 1. Fulfill programming. Then place the contacts back. Press the Arduino reset button. 90003 90002 90063 Notice. 90064 Flickering of the blue LED on the ESP8266 module for half a second immediately after the reset is the first sign that the programming was successful. Blinking of the blue LED means the data exchange between the Arduino and the ESP8266. In these half-seconds, the Arduino configures the ESP8266 to work as an access point.90003 90004 Step 7. Connect from the mobile application. 90005 90002 Install the RemoteXY mobile application on your smartphone / tablet. 90003 90002 90063 Notice. 90064 Before connecting, it is necessary to connect manually your smartphone to the access point using the operating system settings in the iOS application. The Android application is able to independently switch the system to the access point of the device and return to the previous access point after disconnecting. 90003 90002 Press the new connection "+" button in the top panel in the application.In the window that opens, select the connection "WiFi access point". 90003 90002 In the 90063 iOS 90064 application, go to the system settings first and connect to the access point "RemoteXY" using the password "12345678". The connected access point must be displayed in the opened window. Press the "Connect" button. 90003 90080 90002 In the 90063 Android 90064 application, turn on WiFi and press the update button for a list of available access points. Select the RemoteXY access point. In the window that opens, enter the password for the access point "12345678", press the "Connect" button.90003 90085 90004 If there is no connection ... 90005 90002 You can check the connection between the Arduino and the ESP8266 using the Serial Monitor, which you can open in the Tools tab of the Arduino IDE. 90003 90002 Open the Serial Monitor and set the speed to 115200. Press the reset button on the Arduino board. 90003 90092 Check for a properly loaded program 90093 90002 If there are no messages after the Arduino reset in the Serial Monitor, it might mean that the Arduino will not execute your program.It is possible that: 90003 90040 90041 the sketch needed was not downloaded; 90042 90041 your Arduino is not on; 90042 90041 the Serial Monitor is not connected to the Arduino; 90042 90041 there is something wrong with your Arduino. 90042 90045 90092 Check the connection between the Arduino and the ESP8266 90093 90002 If you see the following sequence of commands after the Arduino reset in the Serial Monitor, this means that the ESP8266 initialization is successful and there is a connection between the Arduino and the ESP8266: 90003 90002 90111 90009 AT 90009 AT + RST 90009 ATE0 90009 AT + CWMODE = 2 90009 AT + CWDHCP = 0,1 90009 AT + CWSAP = "RemoteXY", "12345678", 10,4 90009 AT + CIPMODE = 0 90009 AT + CIPMUX = 1 90009 AT + CIPSERVER = 1,6377 90009 90122 90003 90002 If you only see repeating "AT" commands, this means that there is no connection between the Arduino and the ESP8266.90003 90002 90111 90009 AT 90009 AT 90009 AT 90009 AT 90009 90122 90003 90002 There may be no connection for various reasons. The main ones are listed below: 90003 90040 90041 RX and TX pins are not connected correctly, the contacts are reversed, or not connected to the right contacts, or are not connected at all; 90042 90041 there is no power supply to the ESP8266, when the power is supplied to the ESP8266, the red LED must be lit; 90042 90041 there is not enough 3.3 V power supply for the ESP8266; 90042 90041 the ESP8266 module is defective. 90042 90045 90092 Check the ESP8266 firmware 90093 90002 If after the Arduino reset in the Serial Monitor you only see the beginning of the commands sequence, but there is no end 90063 AT + CIPSERVER = 1,6377 90064 command, this means that the ESP8266 module has an obsolete firmware. Firmware upgrade is required. 90003 90002 More information on updating the ESP8266 firmware. 90003 90092 Check the power supply for the ESP8266 90093 90002 Your ESP8266 might not have enough power supply.Some Arduino cards have a weak 3.3V voltage regulator, which is not capable of delivering 200-300mA in peak modes. In this case, you will also see a break in the command sequence in the Serial Monitor. 90003 90002 It is possible that the power connection cables are too long or too thin. 90003 90092 Check the peculiarities of your smartphone 90093 90002 Some models of smartphones on Android base have some peculiarities of connecting WiFi access points, and the access point may not turn on automatically.Try to connect to the access point manually beforehand, using the system settings. After that, try to connect to the device from the RemoteXY application. If in this case the connection is established, your smartphone has that kind of peculiarity. 90003 .

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

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