В7 привет! Сегодня я решил создать небольшой туториал для начинающих ардуиншиков и флпрогеров, касающийся небезызвестного WiFi модуля ESP8266. Информации по этому девайсу в сети предостаточно, но первое знакомство с модулем не всегда доставляет положительные эмоции. И связано это с его капризным нравом. Но его можно обуздать и он вам подарит новые возможности о которых вы раньше даже и не мечтали!
Начнем по порядку. Для начала вам нужно выбрать сам модуль, если у вас его еще нет. И выбрать тут есть из чего. Вот описание и распиновка основных. На мой взгляд самые предпочтительные варианты это ESP8266 ESP-07 или ESP8266 ESP-12 .Если модуля у вас еще нет и вы его хотите заказать например на #Aliexpress, то срезу же присмотрите еще некоторые девайсы, которые облегчат вам знакомство с ESP8266. Прежде всего советую посмотреть конвертор USB–TTL с возможностью выбора питания 5V и 3,3V .(понадобится для прошивки вашей ESP). Вторая необходимая (на мой взгляд) вещь это преобразователь уровней 5-3.3V. Дело в том что ESP питается напряжением до 3.6V больше ни в коем случае не подавайте (гарантированно сгорит) и логика соответственно имеет уровень 3.3V и если вы захотите подключить ESP например к Arduino Uno то вам придется решать вопрос с согласованием их логических уровней. на мой взгляд, самое простое решение. Хотя для экспериментов можно подключать напрямую, но для стабильной работы в готовом проекте согласование, на мой взгляд, необходимо. Ну раз уж я обмолвился о питании, то хочу заметить, что этот модуль очень прожорлив и капризен! Питание должно быть стабилизированным не более 3.6V, модуль потребляет ток до 300мА(!!!). В качестве питания я использую линейный преобразователь напряжения LM1117 3.3V.
Ну вот, теперь когда у вас уже все есть для первого старта, начнем… Начнем с того, что обеспечим наш ESP стабильным питание. Если вы выбрали линейный преобразователь напряжения LM1117 3.3V. , то во-первых посоветую подавать на него не больше 5V, можно конечно и больше, но он будет сильнее греться и может вызвать нестабильную работу ESP, и во вторых советую поставить между +3.3v и GND ESP-шки конденсатор 0.1мкФ, это тоже избавит от неожиданных приколов. С питанием разобрались, казалось бы модуль готов к работе, но не тут то было. Для того, чтобы модуль начал что-нить вещать в эфир нужно найти на своем модуле пин с названием CH_DP и подать туда +3.3V через резистор 10кОм, если в вашем модуле есть пин GPIO15, то соединить его с GND, опять же через резистор в 10кОм. Ну и на всякий случай подтягиваем RESET к +3.3V, при помощи все того-же 10кОм резистора. Ну вот теперь наш модуль готов для первого запуска. Подайте питание включить ноутбук, телефон или планшет в режим поиска WiFi сети. Если ваш девайс запеленговал точку доступа примерно с таким названием «AI-THINKER_AXXXXC», значит у вас все получилось и вы можете использовать ESP8266 в своих проектах совместно с какой-нибудь ардуинкой. Ну а если нет, то не расстраивайтесь, просто придется немного больше повозиться. Для начла проверьте схему соединений, возможно ошибка там, посмотрите не греется ли модуль и линейный стабилизатор. Если с этим все в порядке, тогда идем дальше.
Вам понадобиться конвертор USB-TTL и программа-терминал последовательного порта. Если у вас нет ни того ни другого, то отчаиваться все равно еще рано! Вместо USB-TTL конвертора можно использовать например Arduino Uno, у него этот конвертор уже встроен. Но тогда появиться проблема в согласовании TTL уровней (помним что в UNO – 5V, а в ESP8266 – 3,3!!!). Но не буду вас пугать, все будет работать и бес согласования уровней, но нужно помнить, что это должно быть только временным решением проблемы.
Теперь о подключении ESP8266 к вашему компу. Если у вас USB-TTL конвертор, то для начала выберите на нем перемычкой уровень 3,3V. Соедините RX на конвертере с TX на ESP8266, ну и соответственно TX USB-TTL конвертора с RX на ESP8266. Несмотря на то, что у вас на конвертере может быть выход 3,3V, я вам крайне не рекомендую его использовать для питания ESP8266. Используйте внешний источник питания. Это сэкономит вам время и нервы. Только не забудьте соединить GND на двух платах!!!
Подключение через Arduino Uno ничем не сложнее, единственно отличие – соединяем RX-RX, TX-TX. Питание ESP8266 лучше взять отдельно, ну и естественно GND в кучу!
Теперь нужно запустить программу-терминал, если у вас ее нет то я советую взять вот эту ESPlorer.
Запускаем наш терминал, подключаем наш TTL-USB конвертор (или UNO) к компьютеру, убеждаемся что у вас что-то появилось на новом COM порту. В программе-терминале выбираем Serial port с вашим девайсом и пробуем получить конект, путем нажатия на кнопку OPEN в терминале. В окне терминала должна появиться надпись
PORT OPEN 115200
Communication with MCU…
Если точки после этой надписи продолжают бежать и конекта не происходит, попробуйте на ESP8266 кратковременно замкнуть RESET на GND, это перезагрузит модуль. Если в окне терминала появились какие-то крякозяблы, то это уже неплохо! Нажмите на кнопку CLOSE, поменяйте скорость с 115200 например на 57600 и повторите соединение со всеми вытекающими манипуляциями. Перебирайте скорости пока в окне терминала не увидите нормальные английские буквы)) Идеально если вы увидите слово READY. Если вам повезло и вы увидели сообщение о том что модуль готов, то можете смело слать в него AT команды.
Но при моем первом знакомстве с ESP8266 все было не так идеально… После нескольких удачных соединений по несколько минут, модуль уходил в забастовку на неопределенной срок и не подавал признаков жизни, при этом жутко грелся. Если честно, в тот момент я уж было чуть не сложил руки… Если вы такие же “счастливчики”, как и я, то могу сказать, что у меня проблема решилась после замены прошивки.
Стандартная прошивка, которая идет «в коробке» позволяет общаться с ESP8266 через UART при помощи AT команд. Это позволяет соединив ESP и Arduino организовать связь по «воздуху» между несколькими контроллерами ну или использовать Web браузер для управления вашим контроллером. Очень советую посмотреть видео урок на эту тему от многоуважаемого с моей стороны (думаю и не только с моей) автора проекта FLProg. Но хочу вас предупредить – на этом возможности ESP8266 не заканчиваются. Т.к. на его борту есть полноценный контроллер, причем с довольно неплохими характеристиками, то ESP можно использовать и без Arduino и заливать скетчи напрямую в него. Но эта тема выходит за рамки данного туториала. Если вам будет интересно как использовать Arduino IDE для работы с ESP, пишите в комментариях, по возможности напишу о своих первых шагах в этой теме. И может быть, когда-нибудь, многоуважаемый автор FLProg Сергей Глушенко, добавить ESP8266 в список контроллеров, которые можно будет программировать из его прекрасной программы.
Ну а теперь перейдем к прошивке. Из всех модулей. которые я покупал в Китае, ни один не пришел с нормальной прошивкой в коробке. О стабильной работе модуля можно было мечтать. Надеюсь вам повезет больше чем мне и многие не дочитают этот туториал до конца и найдут решение проблем, которые может подкинуть этот модуль. Если же вы, все таки, видите, что модуль работает нестабильно, (не всегда соединяется с терминалом, сильно греется, или пропадет из списка доступных точек доступа) я советую вам сменить стандартную прошивку. Тем более, что процедура эта не очень сложная и у вас уже есть практически все, что потребуется. Для начала нужно скачать прошивку. Я выбираю вот эту. Она, конечно, не самая последняя, но зато работает стабильно. Теперь нужно скачать утилиту, при помощи которой будем заливать прошивку. Их великое множество, но я пользуюсь вот этой. Поэтому процесс заливки буду описывать по ней. Распаковываем, запускаем. Теперь обратите внимание, в программе есть 7 строчек с указанием пути к файлам с прошивками. Вам нужно снять все галки, кроме второго пункта. Теперь нажимаем на многоточие и в открывшимся проводнике указываем путь к файлу с вашей новой прошивкой. Обратите внимание, что почти все новые прошивки надо записывать начиная с адреса 0х0000. Именно этот адрес вы видите во второй строчке после слова OFFSET . Ну что же, почти все готово… Осталось только взять наш ESP8266 найти в нем пин GPIO0 и повесить его на GND. Именно так загрузчик в контроллере ESP узнает о том, что нужно не выполнять залитую в него программу, а смотреть в UART. Подключаем наш ESP к компьютеру при помощи USB-TTL (ну или Arduino), выбираем СОМ порт на котором оказалось наше соединение (не забываем закрыть все терминальные программы, которые могут обратиться к этому же порту), нажимаем на кнопку START ждем несколько минут и смотрим в окно терминала программы за ходом прошивки. После успешной заливки не забываем снять перемычку между GPIO0 и GND. Ну вот и все! Все танцы с бубном закончены! Кстати, не забывайте о том, что все не использованные в вашем проекте GPIO было бы неплохо подтянуть к +3.3V, для этого подойдут резисторы с номиналом от 4.7кОм до 50кОм.
P.S. Надеюсь этот туториал кому-нибудь пригодиться и сэкономит время и нервы))
Добавил: bulldozzer