Обсуждение Постигаю ESP8266 - отчеты, вопросы, решения

Kuiper

New member
Всем привет!

Если уважаемые модераторы не против, то буду в этом топике вести что-то вроде дневника по постижению ESP8266 :)
Конечно, информации по ESP8266 в Интернете очень много, но иногда бывают такие вопросы, что вот просто затык и не знаешь, как решить, тем более, если практически нет "базы" в виде навыков по электронике или программированию устройств.

Первым проектом, который я планировал реализовать, чтобы научиться работе с ESP8266 задумал метеостанцию. Но потом задача изменилась, чтобы охватить больший объем практики. Сейчас проект выглядит так:
1) ESP8266-12 как "беспроводной порт" для Arduino MEga 2560.
2) Подключение к WiFi ESP8266, чтение данных с датчиков Arduino, управление ПИНами Arduino.

То есть, это не совсем правильно - использовать такое мощное устройство, как ESP8266 просто как обычный Bluetooth-модуль, но это мой первый проект по работе с ним, поэтому начну с простого. А уже научившись и освоив, перейду к написанию собственных кастомных прошивок и работе через GPIO напрямую, без Arduino.

Две ESP8266-12 и макетки с АлиЭкспресс у меня теперь есть, Arduino Mega 2560, UART на CP2101 и другая электроника от самоделок на Ардуино тоже есть, теперь можно начать осваивать ESP8266.


Вчера был День 1, что сделал:
1. Пропаял одну из ESP8266-12 к макетной плате (паял полдня, т.к. привык обходиться без пайки с Ардуино, шилдами и модулями).
2. Запустил обе ESP8266-12, комп их видит через WiFi (только та, которая на макетке, не запускается без танцев с бубном, а тестера у меня еще нет, заказал на АлиЭкспресс самый дешевый цифровой).
3. Собрал автономный источник питания для Arduino Mega 2560 и ESP8266-12 (маленький повербанк на 5V 1A с аккумулятором 18650, USB кабель питания переходящий в "кругляш" для power-порта Ардуино и параллельно припаял Dupont провода для питания ESP8266-12).

Также за неделю прошел курс по изучению синтаксиса Си, после Си-подобного синтаксиса PHP это гораздо легче, хотя и напрягает, что в Си, например, всего 4 типа данных и так борются за место в памяти. К примеру, что мешало создать еще тип данных string, чтобы не городить с char t[] = "Hello, World"; или универсальный вид массивов int arr = array();, а также ассоциативные массивы, которые иногда очень полезны.

Да и еще не очень понятна работа с регистрами, указателями, то есть, представлять мысленно пространство памяти микроконтроллера и управлять областями по hex-адресам, переключать регистры побитовым смещением, а не просто задавая десятичное значение регистру. Это больше к ASM, мне с моим опытом программирования для Web это пока сложно для понимания, но я стараюсь :)

Сегодня задачи такие:
1. Выбрать "архитектуру" работы (веб-сервер на ESP8266, веб-сервер в приложении или может вообще что-то другое)
2. Сделать пре-прототип, пусть дубово, но работает хоть минимально две функции - отображение данных с ПИНа Arduino и управление ПИНом Arduino
 

Kuiper

New member
Нарисовал схему подключения ESP8266-12:


В Интернете много информации по ESP-1, а чтобы понять, как подключать ESP-12, пришлось погуглить. Кто будет начинать именно с ESP-12, может пригодится.
 
Последнее редактирование:

Kuiper

New member
Какая-то фигня получается с прошивкой.
Подключаю по мануалу - VCC, EN = +3.3V, GND, GPIO15, GPIO0 = GND, Arduino IDE нормально прошивает что тестовый пример ESPWebServer, что тестовый пример Blink for ESP.
Потом отключаю GPIO0, рестартю ESP8266 и ни веб-сервер не работает, ни светодиод не мигает. На прошивке веб-сервера в терминале точки раз в секунду отправляются, а сеть WiFi не видит.
Единственное, что работает - отправка сообщений ESP в терминал, т.е. по UART на COM-порт.

Не нужно ведь ничего потом делать, после того, как залилась прошивка - кроме того, чтобы отключить GPIO0 от GND и перезагрузить ESP8266?
То есть, остается стандартно: VCC, EN = +3.3V, GND, GPIO15 = GND.

Спасибо!
 

Kuiper

New member
Все работает, это я тупил.
Почему-то ESP8266-12 не понимает BUILTIN_LED, поставил вместо него номер ПИНа 2 и светодиод на ESP8266 начал работать.
А с веб-сервером я сам недопонял, там, где в примерах скетчей стоит ssid и password, нужно указывать название и пароль своей WiFi, в которой компьютер, чтобы ESP12 могла подключиться как клиент к точке доступа.
Залил скетч веб-сервера, посмотрел, в списке подключенных клиентов есть ESP8266, работает!

Теперь буду изучать то, как сделать так, чтобы на самой ESP12 создавалась точка доступа и интерфейс для управления Arduino.
 

Kuiper

New member
По архитектуре - вижу два вида:
1. Приложение-сервер, ESP8266 - клиент существующей WiFi-сети, беспроводной порт (также Bluetooth-модуль может с минимальными изменениями работать).
2. ESP8266-сервер с web-интерфейсом и точка доступа, к которой подключается устройство (компьютер/смартфон/планшет), управление из любого браузера, поддерживающего JS и AJAX, легкое приложение в виде WebView/UIWebView с заданным URL.

Мне нравится именно второй вариант, когда веб-сервер работает на самой ESP8266, но я не хочу использовать надстройки в виде NodeMCU с Lua, Python, т.к. аппаратные возможности ESP8266 не безразмерны.

Поэтому буду изучать возможность создать HTML5 AJAX интерфейс на запущенном веб-сервере на ESP8266 и управлять через него Arduino Mega 2560.
 

nicelight

Member
Мне нравится именно второй вариант, когда веб-сервер работает на самой ESP8266, но я не хочу использовать надстройки в виде NodeMCU с Lua, Python, т.к. аппаратные возможности ESP8266 не безразмерны.

Поэтому буду изучать возможность создать HTML5 AJAX интерфейс на запущенном веб-сервере на ESP8266 и управлять через него Arduino Mega 2560.
Ништяк, парень. я с тобой в одной лодке. Держи в курсе всех событий. Сейчас проект закончу и активно начну с тобой страгать.
Если есть желание, покури эти мануалы, они на англицком правда
http://startingelectronics.org/tuto...-shield-web-server-tutorial/basic-web-server/
https://startingelectronics.org/tutorials/arduino/ethernet-shield-web-server-tutorial/SD-card-IO/ тут про ajax
примеры сделаны для веб сервера на ардуино, но если мы пишем на ESP в среде ардуино, то надеюсь примеры будут полезными/
от себя добавлю, покурил немного форумы как LUA прошивки льют, сколько у них головняка с подчисткой кеша, всякими тормозами, понял что экномить время заливкой LUA скриптов себе дороже с учетом того сколько подводных камней в итоге всплывет. да и не уважаю я прошивку поверх прошивки.
Так что если оттачивать ESP чисто под работу качественного web сервера, общающегося с основным мозгом девайса по uart (I2C, etc ) то я с тобой!
 

Elik

New member
Присоединяюсь, уже 4й день бьюсь в надежде, но не хватает опыта в программировании скриптов, изучаю ускоренно как могу.
Пишу со смартфона, завтра постараюсь по подробнее отписаться что уже сделал (интерфейс-веб морду) и что требуется сделать для полноценного завершения грандиозной идеи!

Попишу пока батарейка не сдохла...
 

Elik

New member
Лучше эту идею реализовать ср

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

Elik

New member
Короче вот интерфейс того, что уже есть:
Безымянный.png
Для того, что бы такой стал и у вас надо залить в беспроводного зверька прошивку из соседней темы, вот этот USB2UART, но не торопитесь заливать последнюю версию, вроде там какой то глюк. После первой заливки поверх ничего залить не получалось без ошибок! надо заливать предыдущий вариант версии 0.51!
Tот, что с моим модулем пришит к этому сообщению. Далее прошивать эту веб морду с уже добавленным новым элементом в меню.

Конечно как только все заработает можно будет менять всю морду на то, что надо под конкретный проект: убирать все настройки под значек настройки, а все полезное на начальный экран загрузки!

Короче логика в чем:

Как только заходим в меню управления Ардуиной, вырисовывается сама плата, что бы наглядно знать что к чему, пины перед глазами (далее можно прямо по клику на пин открывать его меню, но это совсем потом...) Далее под картинкой таблица с одной строкой, типа а может больше и не нужно (можно потом добавить картинки и других плат ардуино, ведь по аналогии можно управлять широким спектром плат и микроконтроллеров!). Далее выбирать, или задавать имя пину, и выбирать что он вообще должен делать, а делать он может, как мы знаем из курса юнного бойца для плат Ардуино много:

Любой пин может быть как цифровым, так и аналоговым (правда аналоговым это параметр относительный, именно те, что прописанны аналоговые просто могут значения при приеме делить на 1024 значения и выводить куда надо, а цифровые могут только 255 значений выводить, и то те, у которых есть опция ШИМ!) но все эти детали мы потом исключим через ЯВА скриптование самого интерфеиса, что бы коенчный пользователь не сходил с ума, а почему и как....
Далее можно включать пуллап пин на любом из цифровых (а так же аналоговых, если прописать им быть цифровыми) входов, что лишает нужды использовать внешний резистор, что бы притягивать выход к питанию, а это плезно, когда нужно, что бы их значение не бегало между единицей и нулем,
Далее есть возможность выводить показания выводов, если мы выбрали его как вход (если это аналоговый, то значений будет 1024, если цигровым то либо 1 либо 0, но всеравно полезно!)

И еще куча значений, на рисунке все наглядно.

Далее надо бы еще прикрутить пару фичей полезных, таких как вывод информации в форме графика, аналогового прибора и еще парочку, ну таких простеньких, так как памяти у нас как мы знаем мизер, всего то несколько сотен килобайт!

В общем как то вот так, пока можете поэкспериментировать моим интерфейсом, который почти готов, но надо додуматься как сделать так, что бы он работал!

Пока что я написал простенький пример для ардуины, что бы та считывала то, что пришло по последовательной шине и распознавала один единственный приказ - зажечь цифровой порт 12! Но это не проблема, по аналогии можно сделать тоже самое с любым из портов! Осталось дописать, как отправить ответ в последовательный порт, что задача выполнена, что не составляыет труда, трудно будет считать модулем эту инфу и вывести в нашу вебморду, так как в оригинале, как это сделал афтор прошивки при управлении GPIO вайфай модуля - это делалось записью в файл gpio.xml, далее вебморда считывала из этого файла и наоборот, что очень полезно, так как таким образом будет сохраняться последняя установка пинов, а в нашем случае настройки портов ардуино!

В обще нам есть над чем поработать!

Для обычного программиста эта задача на пару часов шёлкания по клавиатуре (максимум) а лично для меня - месяцы изучения PHP, JAVA, HTML, и машинных регистров... :) Но нас на одного больше, так что может не месяцы, а меньше ;)

до связи...


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

Вложения

Последнее редактирование:

Elik

New member
да чуть не забыл, про то как соединять Ардуино к модулю, да всего лишь 3мя проводами: Общая земля (то есть минус), RХ на ТХ пин, который может быть абсолютно любым на ардуино и прописывается в скетче, правдa можно и специфический, но тогда можно исключить использование библиотеки SoftwareSerial и перейти на аппаратный последовательный порт MEGA (их там несколько) и ТХ на RХ, подать питание на оба (ардуино и модуль беспроводной связи) и работать дальше, да чуть не забыл! ОЧЕН" ВАЖНО!, что бы не спалить модуль сделать на RХ, то есть на том пине, который идет в модуль ESP8266 - разделитеь напряжения, так как логические сигналы на модуле не должны превышать напряжение питания последнего, то есть в диапазоне 3.3-3.6 вольт!, правдa я и 5и вольтовым пользовался с выхода из ардуино без всяких согласований, но это не правильно и может погубить модуль!
 

aloika

Active member
Elik, а зачем все это? Какая конечная цель у всего этого? Вы хотите запрограммировать Arduino, используя Web-интерфейс? Так через UART в Arduino прошивку не залить, насколько я понимаю, это SPI нужен.

Или вы хотите залить в ардуино скетч, такой, чтобы по командам, приходящим в уарт, ардуино что-то делало со своими пинами? А зачем тогда ардуино вообще? Можно напрямую управлять пинами ESP...
 
Последнее редактирование:

Elik

New member
Elik, а зачем все это? Какая конечная цель у всего этого? Вы хотите запрограммировать Arduino, используя Web-интерфейс? Так через UART в Arduino прошивку не залить, насколько я понимаю, это SPI нужен.

Или вы хотите залить в ардуино скетч, такой, чтобы по командам, приходящим в уарт, ардуино что-то делало со своими пинами? А зачем тогда ардуино вообще? Можно напрямую управлять пинами ESP...
помогайте, хотите помочь делитесь информацией, а не собирайте разведданные...
 
Последнее редактирование:

aloika

Active member
http://esp8266.ru/forum/threads/raz...go-webservera-na-esp8266.56/page-32#post-7796

Тут я уже довольно давно выкладывал свою прошивку, написанную на основе "свалки" pvvx.

Проект от Andy Korg:
http://esp8266.ru/forum/threads/matrichnye-chasy-s-muzykoj-i-internetom.87/

И там и там реализовано взаимодействие восьмибитного микроконтроллера Atmel и ESP через UART.
 

Elik

New member
http://esp8266.ru/forum/threads/raz...go-webservera-na-esp8266.56/page-32#post-7796

Тут я уже довольно давно выкладывал свою прошивку, написанную на основе "свалки" pvvx.

Проект от Andy Korg:
http://esp8266.ru/forum/threads/matrichnye-chasy-s-muzykoj-i-internetom.87/

И там и там реализовано взаимодействие восьмибитного микроконтроллера Atmel и ESP через UART.
Спасибо большое! посмотрю как пристроить к проекту...
 

Maximcheg

New member
Добрый день!
У меня таже цель - задружить ESP-12 с ардуиной.
Пришли с али модули ESP-12е и вот такие платки-адаптеры, припаял к ним еспишки, подключил по схеме как у топикстартера (только питалово 3.3V через LM2596S-ADJ) сначала вообще не завелось, потом обратил внимание на то, что разводка у платки-адаптера разводка питалова сделана через регулятор напряжения который надо подпаять снизу платы, и подавать на него например 5V. Т.к. у меня отрегулированное 3.3V я его дал на ногу VCC платки и кинул соплю от этой ноги до VCC еспишки. После чего еспишка заморгала голубым диодом и в эфире появилась точка доступа AI-THINKER_DA80E. Т.е. модуль вроде как не дохлый.
А вот дальше как только я не пытался с ним пообщаться через serial АТ-командами ни через arduino, ни через переходник CP2102 (переходник 100% рабочий я им шью arduino pro mini) не получается :( . Через через ардуино - в терминале сыплет мусором (пробовал и через mini pro, и через UNO - результат одинаков), через CP2102 - вообще никакой реакции.
Прошу сильно не пинать, если не в той теме написал, или если мои объяснения не понятны, в этом деле новичок... Буду признателен за любую помощь!
 

Maximcheg

New member
проверьте общею землю между ESP8266, питанием и USB-TTL
Я сейчас не дома, на работе. Проверить не на чем. Вот только что было замечено, что при подключении через ардуину если общей земли нет - то сыплет один мусор, а если дать общую землю, то другой!
 

Maximcheg

New member
В общем получилось у меня через CP2102 добиться результата:
AT


OK
AT+GMR

AT version:0.40.0.0(Aug 8 2015 14:45:58)
SDK version:1.3.0
Ai-Thinker Technology Co.,Ltd.
Build:1.3.0.2 Sep 11 2015 11:48:04
OK
AT


OK
AT+GMR

AT version:0.40.0.0(Aug 8 2015 14:45:58)
SDK version:1.3.0
Ai-Thinker Technology Co.,Ltd.
Build:1.3.0.2 Sep 11 2015 11:48:04
OK
AT+CWMODE_CUR=1


OK
AT+CWJAP_CUR="QWERTY","*********"

WIFI CONNECTED
WIFI GOT IP

OK
А вот через ардуину результат тотже - мусор :-((

Что я делаю не так?
 
Последнее редактирование:
Сверху Снизу