1

Topic: Как это у вас все работает? У меня не работает ничего!

Собрал схему - Arduino UNO + ESP-01 (на основе ESP-8266). В ESP-01 прошивка сначала была стандартная. Потом скачал рекомендованную на сайте remotexy.com , Потом еще скачивал самую новую прошивку с сайта производителя. Прошивал. Система ведет себя одинаково. Все соединено правильно. Проверено. Сделал уже несколько своих программ. Программы мои управляет модулем ESP-01 при помощи AT-команд. На смартфон установил приложение "WiFi Controller". Подаю команды, моя схема (Arduino UNO + ESP-01) принимает и выполняет. Минусы - приложение "WiFi Controller" имеет лишь фиксированный набор органов управления. 20 кнопок и три слайдера. Для индикации только что то типа монитора порта IDE. Для каждой кнопки можно задать надпись на ней и текстовую фразу, которую приложение будет посылать по Wi-Fi при нажатии. Связь только по Wi-Fi и только в пределах локальной сети. Через интернет не предусмотрено. тем более через блютуз.

Нашел проект RemoteXY. По описанию все понравилось. Скачал и установил библиотеку для IDE, создал простейший проект в редакторе на сайте. Сгенерил программу. Открыл ее в IDE. Скомпилировал, загрузил в Arduino. Скачал и установил приложение RemoteXY Free. Запустил микроконтроллерную часть. Сначала ардуино начинал подавать при старте команды на ESP-01, но последовательность команд обрывалась после AT+RST и ATE0. Пробовал разные прошивки. Нашел одну, когда вся последовательность выполнялась вплоть до AT+CIPSTO=7. Но при попытке подсоединиться при помощи приложения на смартфоне со смартфона по WiFi поступает почему то подряд четыре запроса:
+IPD,0,6:U<0><0>ne
+IPD,0,4:<0><0>u
+IPD,0,6:U<0><0>ne
+IPD,0,6:U<0><0>ne0,CLOSED

В шестнадцатеричном виде:

30 2C 43 4F 4E 4E 45 43 54 0D 0A
0D 0A
2B 49 50 44 2C 30 2C 36 3A 55 06 00 00 F1 E9 0D 0A
2B 49 50 44 2C 30 2C 34 3A 04 00 00 FC 0D 0A
2B 49 50 44 2C 30 2C 36 3A 55 06 00 00 F1 E9 0D 0A
2B 49 50 44 2C 30 2C 36 3A 55 06 00 00 F1 E9 30 2C 43 4C 4F 53 45 44 0D 0A

При этом по каждому из запросов ардуино начинает процесс передачи данных:
AT+CIPSEND,0,63
AT+CIPSEND,0,63
AT+CIPSEND,0,63
AT+CIPSEND,0,63

Но запросы идут так быстро один за другим, что процесс CIPSEND так и остается незавершенным. Ведь нужно дождаться от модуля приглашения ">" и лишь потом передать сами данные. Но приложение в смартфоне присылает новый запрос, он поступает на Ардуино и тот выдает новый AT+CIPSEND,0,63. В общем что я не делаю ничего не работает. Перепрошивал много раз ESP-01, пробовал обновить библиотеку, упростил максимально проект (оставил всего одну кнопку). Результат тот же. Попробовал купить новый ESP-01. К сожалению попался точно такой же как у меня (8 Мбит 256+256). И ведет себя точно так же. Других модулей у нас в Симферополе не купить. Похоже их вообще всего два в городе было.

В заключении привожу данные прошивки и конфигурации модуля:

AT+GMR

AT version:1.3.0.0(Jul 14 2016 18:54:01)
SDK version:2.0.0(656edbf)
compile time:Jul 19 2016 18:44:44
OK



AT+RST


OK

ets Jan  8 2013,rst cause:2, boot mode:(3,7)

load 0x40100000, len 816, room 16
tail 0
chksum 0x8d
load 0x3ffe8000, len 788, room 8
tail 12
chksum 0xcf
ho 0 tail 12 room 4
load 0x3ffe8314, len 288, room 12
tail 4
chksum 0xcf
csum 0xcf

2nd boot version : 1.2
  SPI Speed      : 40MHz
  SPI Mode       : QIO
  SPI Flash Size : 8Mbit
jump to run user1

Њгдѓoм“;ѓыo|мЊd‡p;l„г{›dЊlЊ d`ЊгrЫlм$„ l`Њвs“l‡џ


Подскажите что нибудь!

2

Re: Как это у вас все работает? У меня не работает ничего!

Сложно сказать что вы делаете не так. Судя по командам все верно.

\\это первый запрос конфигурации от смартфона к ардуино.
+IPD,0,6:U<0><0>ne
\\это отправка ответа от ардуино к смартфону (получается что попытка отправки).
AT+CIPSEND,0,63
\\Так как смартфон по какой то причине не получил ответа через таймаут около секунды, он запрашивает конфигурацию старой версии:
+IPD,0,4:<0><0>u

Ардуино отправляет запрос в ESP на передачу данных AT+CIPSEND,0,63 и ждет приглашения ">". Но не получает его, как вы правильно заметили. Не получает в течении секунды, уж не знаю почему, и по этому не передает сами данные. У вас бы там вылезли краказябры 63 байта вместо данных.

Еще вы пишите что объем памяти модуля 8M 256KB+256KB . Но 8M должно быть 512KB+512KB
Еще мы тестировали модули 4M 256KB+256KB с какой то старой прошивкой. Они в принципе работают. Но затыкаются когда в режиме точки доступа открывается сервер, видимо не хватает ресурсов. В RemoteXY как раз открывается сервер. Но этот модуль в режиме клиента вполне себе работал. Попробуйте запустить в режиме клиента, для этого в редакторе RemoteXY в настройках конфигурации выберите Ethernet.
Возможно вы залили в модуль 8M прошивку от 4М.

3

Re: Как это у вас все работает? У меня не работает ничего!

Спасибо за ответ. Пока ждал ответа я продолжал пытаться понять, что же мешает. Насчет 256+256 это я просто ошибся. Писал по памяти и не то написал. Вот результат выполнения RST

AT+RST


OK
WIFI DISCONNECT

ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x40100000, len 1396, room 16
tail 4
chksum 0x89
load 0x3ffe8000, len 776, room 4
tail 4
chksum 0xe8
load 0x3ffe8308, len 540, room 4
tail 8
chksum 0xc0
csum 0xc0

2nd boot version : 1.4(b1)
  SPI Speed      : 40MHz
  SPI Mode       : QIO
  SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user1 @ 1000

don't use rtc mem data
sdЋѓsъ
ready
WIFI CONNECTED
WIFI GOT IP

Прошивку я залил ту, которую предлагают на сайте remotexy.com
Скачал с сайта. От туда же скачал программу FLASH_DOWNLOAD_TOOLS_v2.4 (у меня была версия 3.6.4). Что бы ну все было один в один. В полях программы FLASH_DOWNLOAD набрал один в один то, что там на сайте в иллюстрации написано. В таблице ниже видно, что это как раз для моего случая.

Теперь об ошибках. Мне тоже удобнее работать в режиме клиента. Я так и работаю теперь. Проблем две. Во первых при выполнении начальных установок (библиотечной функции RemoteXY_Init ()). Правильно выполняется только один раз сразу после перепрошивки модуля ESP-01. Проходят все команды, какие нужно. Начиная с AT+RST и заканчивая AT+CIPSTO=7.   При последующих перезапусках (нажатие кнопки сброса либо просто закрыть и потом открыть окно монитора порта в IDE) проходит команда AT+RST и ARE0. И уже эта вторая команда не завершается. Причина - после AT+RST модуль ESP-01 начинает процесс подключения к моей Wi-Fi сети. Он запоминает все параметры и автоматически подключается после начального сброса. А программа на Ардуино шлет новые команды (конкретно ATE0). Когда соединение с моей Wi-Fi устанавливается, модуль выдает два сообщения:

WIFI CONNECTED
WIFI GOT IP

Это, по моему, и сбивает все дальнейшие команды. В ответ на команду ATE0 не приходит OK и Ардуино прекращает выполнение процесса инициализации. При первом запуске после перепрошивки программы в модуле автоматического подключения к домашней WiFi сети не происходит так как настройки еще ни разу не устанавливались.

Вторая проблема возникает тогда когда начальная установка проходит (при первом запуске). Проверяю - модуль в сети пингуется. Выбранный мной порт проверяю - открыт. Пытаюсь подсоединиться при помощи приложения RemotrXY со смартфона. Я контролирую весь процесс при помощи сразу двух адаптеров TTL-USB. Один подключаю к линии по которой RX-Ардуино -> TX-ESP. Второй к линии TX-Ардуино -> RX-ESP.
То есть вижу и команды от Ардуино и ответ от ESP-01. Так вот хорошо видно, что от ESP приходят подряд четыре запроса (ни есть выше в моем первом сообщении). Они идут очень быстро друг за другом. По моему так быстро модуль приглашение на запрос AT+CIPSEND не дает. Ну это мое предположение. Факт в том, что Ардуино в ответ выдает четыре команды AT+CIPSEND,0,63   и не передает сами данные. Я делал сам программу обмена данными с ESP модулем. я знаю что должно быть видно в окне монитора порта. Должно быть сообщение OK, затем запрос ">", затем сами данные, потом еще будет "busy s..." и в завершении "Rvce 63 bytes". И только после этого можно давать новую команду. Иначе процесс выполнения команды срывается.  Почему приложение RemoteXY выдает запросы так часто не понятно.

4

Re: Как это у вас все работает? У меня не работает ничего!

Первую проблему решил. Нашел команду отключения автоматического подключения модуля к Wi-Fi при включении   AT+CWAUTOCONN=0

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

5

Re: Как это у вас все работает? У меня не работает ничего!

avbelov wrote:

Первую проблему решил. Нашел команду отключения автоматического подключения модуля к Wi-Fi при включении   AT+CWAUTOCONN=0   Теперь при включении и после сброса все команды проходят в полном объеме, модуль подключается к домашней сети и запускается сервер.

Попробуем воспроизвести проблему. Возможно это фишка новых прошивок. При наших тестах такого не возникало.

avbelov wrote:

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

Смартфон шлет четыре команды запроса конфигурации с таймаутом в 1 секунду для первых двух запросов и с таймаутом в 5 секунд для третьего и четвертого запроса. У вас как то странно если вы говорите что запросы приходят все разом.
Вы можете попробовать включить вывод отладочной информации в аппаратный порт на скорости 115200. Для этого в самое начало скетча добавьте строку:

#define REMOTEXY__DEBUGLOGS Serial

Где вместо Serial можете указать любой аппаратный Serial. Для отладочной информации доступны только аппаратные порты.

6

Re: Как это у вас все работает? У меня не работает ничего!

RemoteXY wrote:

Смартфон шлет четыре команды запроса конфигурации с таймаутом в 1 секунду для первых двух запросов и с таймаутом в 5 секунд для третьего и четвертого запроса. У вас как то странно если вы говорите что запросы приходят все разом.

Ну мне трудно замерить время прихода запросов, но визуально они приходят одновременно.



RemoteXY wrote:

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

#define REMOTEXY__DEBUGLOGS Serial

Где вместо Serial можете указать любой аппаратный Serial. Для отладочной информации доступны только аппаратные порты.

Так в Ардуино же только один аппаратный последовательный порт! И он занят общение с ESP модулем! Считывать данные с портов других видов (не UART) у меня нет аппаратный возможностей.

Вот скриншет. Я подключился вторым адаптером и программой терминал к обратному каналу по которому ESP-01 отвечает а на мониторе порта видно какие команды ардуино посылает на модуль ESP-01
http://www.simfion.ru/dwl/pic_bel.jpg

7 (edited by avbelov 2019-05-29 17:33:19)

Re: Как это у вас все работает? У меня не работает ничего!

Сделал захват с экрана, заснял процесс передачи запросов в окне терминала. Потом по видео замерил промежутки времени между запросами. Все совпадает с вашими пояснениями. Между первым и вторым запросом и вторым и третьим по 1 секунде. Между третьим и четвертым и между четвертым и моментом закрытия канала по 5 секунд.  Но вот ответ не проходит. И в ответах модуля ESP-01 не видно приглашения ">". Нет приглашения и Ардуино не передает сами данные. Только запрос AT+CIPSEND  проходит.

8

Re: Как это у вас все работает? У меня не работает ничего!

Вот то то и странно, что ардуино посылает в ESP запрос на отправку данных AT+CIPSEND=0,17 но ESP в ответ не отдает символ приглашения ">" для передачи данных. Ардуино ждет этот символ в течении 1 секунды и сбрасывает по таймауту. Если бы модуль ESP выдал этот символ, то ардуино бы передал данные.
Вопрос, почему ESP не отдает символ приглашения ">"? И она так же не отдает что то типа "error", то есть команда AT+CIPSEND=0,17 передана верно.
Может быть есть какая то команда ESP в новой прошивке которая меняет порядок действий при передаче данных?

Что бы использовать режим вывода лога на Arduino UNO с одним Serial портом, можно ESP подключить к SoftwareSerial. Однако из за того что SoftwareSerial работает на максимальной скорости 38400, необходимо ESP настроить на эту скорость, что бы она сразу после сброса работала на этой скорости. Это можно сделать на разных версиях прошивки разными командами:  AT+CIOBAUD, AT+UART_DEF.  Тогда единственный аппаратный Serial будет у вас свободен для вывода отладочной информации.

9 (edited by avbelov 2019-05-30 11:17:13)

Re: Как это у вас все работает? У меня не работает ничего!

Спасибо большое за советы. Не знаю, что там за отладочная информация. Наверное там есть много полезного. Я понял вас как это все запустить. Но это не понадобится. Проблема РЕШЕНА! Вынужден констатировать, что у вас на сайте все очень правильно. А вот я кое что не заметил. Дело в том, что на ваш сайт я наткнулся тогда, когда я уже давно самостоятельно соединил Arduino UNO и ESP-01, и сам разработал кучу программ управления модулем при помощи AT команд. Поэтому я воспользовался вашим графическим редактором, сгенерил программу, скачал и установил библиотеку. Еще перепрошил ESP-01 в соответствии с вашими рекомендациями. А схему оставил свою. Она же у меня работала. Тем более, что питание ESP-01 у меня осуществляется от отдельного стабилизатора на 3.3 В. Но вот одна мелочь у меня не соответствовала вашей схеме. Делитель по каналам RxD - TxD от Ардуино к ESP модулю у меня стоял  20 кОм + 10 кОм, а у вас на схеме приведенной на сайте 2 кОм + 1 кОм. И в этом была причина. Поменял резисторы и все сразу заработало! На обоих экземплярах модуля ESP-01!    Я номиналы поставил такие, какие увидел в одной из схем, найденных в интернете. Она мне первая попалась, я и спаял. Так что спасибо за отклик, извините за беспокойство. А для других пользователей будет уроком. Поможет не сделать мою ошибку. Буду рекламировать ваш проект. Хочу поместить его описание в свою книгу, которую сейчас пишу.