RSS  |  PDA

Это реклама. Ссылки открываются в новом окне.
Микроконтроллеры

ESP8266 с AT-прошивкой и медленный интернет

Стр. 1 | 2
Сергей К ◊
05 марта, 14:09

Собрал устройство на базе МК и готового модуля ESP8266 (ESP-01) для периодической передачи информации на WEB-сервер.
В модуле стоит АТ-прошивка at023sdk101flash512k.bin.
Логика работы следующая. С помощью АТ-команд модуль подключается к Wi-Fi-точке доступа, делает пинг сервера (для теста), затем командой AT+CIPSTART подключается к серверу и несколькими "пакетами", с помощью команды AT+CIPSEND вся информация передается на сервер.
Когда модуль подключен к домашнему роутеру с кабельным интернетом все работает, как и должно. Пинг составляет 8-30 мс.
Но когда я включаю свой мобильный телефон в режиме Wi-Fi-точки доступа (интернет через GPRS или 3G, оба варианта работают одинаково), связь рвется после отправки от одного до 4х пакетов (командой AT+CIPSEND), и модуль сообщает "CLOSED. SEND FAIL" вместо "SEND OK". Пробовал вручную вбивать AT-команды и так-же получил срыв связи.
При подключении через GPRS/3G пинг возрастает до 500...900 мс, и часто модуль пишет "timeout".
Мне кажется, что у модуля есть некий таймаут на отправку данных серверу и на медленном канале он прекращает связь ранее, чем данные физически успевают передаться. В AT-прошивках я не встречал команд какой-либо настройки этого таймаута. Пока не знаю, куда дальше "копать". Пробовал следующие АТ-прошивки:
at023sdk101flash512k.bin
AT22SDK100-2015-03-20-boot1.3b.bin
На обеих поведение одинаково.

Здесь успело уйти несколько пакетов:

12:39:29.280, AT+CIPSTART="TCP","sergey.kiev.ua",80
12:39:29.826, CONNECT
12:39:29.826,
12:39:29.826, OK
12:39:34.303, AT+CIPSEND=35
12:39:34.303,
12:39:34.303, OK
12:39:34.412, > POST /test/test.php HTTP/1.0
12:39:34.412,
12:39:34.412, Recv 35 bytes
12:39:36.050,
12:39:36.159, SEND OK
12:39:36.159, AT+CIPSEND=23
12:39:36.159,
12:39:36.159, OK
12:39:36.268, > Host: sergey.kiev.ua
12:39:36.268,
12:39:36.268, Recv 23 bytes
12:39:38.343,
12:39:38.343, SEND OK
12:39:38.452, AT+CIPSEND=26
12:39:38.452,
12:39:38.452, OK
12:39:38.452, > Referer: sergey.kiev.ua
12:39:38.452,
12:39:38.452, Recv 26 bytes
12:39:38.998,
12:39:38.998, SEND OK
12:39:39.544, AT+CIPSEND=49
12:39:39.544,
12:39:39.544, OK
12:39:39.544, > Content-Type: application/x-www-form-urlencoded
12:39:39.544,
12:39:39.544, Recv 49 bytes
12:39:41.619,
12:39:41.619, SEND OK
12:39:41.728, AT+CIPSEND=19
12:39:41.728,
12:39:41.728, OK
12:39:41.728, > Connection: Close
12:39:41.728,
12:39:41.728, Recv 19 bytes
12:39:53.194, CLOSED
12:39:53.194, SEND FAIL

Но чаще SEND FAIL на втором пакете:

12:39:18.032, AT+CIPSTART="TCP","sergey.kiev.ua",80
12:39:18.469, CONNECT
12:39:18.469,
12:39:18.469, OK
12:39:23.055, AT+CIPSEND=35
12:39:23.055,
12:39:23.055, OK
12:39:23.164, > POST /test/test.php HTTP/1.0
12:39:23.164,
12:39:23.164, Recv 35 bytes
12:39:23.820,
12:39:23.820, SEND OK
12:39:23.929, AT+CIPSEND=23
12:39:23.929,
12:39:23.929, OK
12:39:23.929, > Host: sergey.kiev.ua
12:39:23.929,
12:39:24.038, Recv 23 bytes
12:39:28.515, CLOSED
12:39:28.515, SEND FAIL

А это через кабельный канал, здесь все ОК:

13:11:23.621, AT+CIPSTART="TCP","sergey.kiev.ua",80
13:11:23.621, CONNECT
13:11:23.621,
13:11:23.621, OK
13:11:25.694, AT+CIPSEND=35
13:11:25.694,
13:11:25.694, OK
13:11:25.694, > POST /test/test.php HTTP/1.0
13:11:25.694,
13:11:25.694, Recv 35 bytes
13:11:25.694,
13:11:25.694, SEND OK
13:11:25.802, AT+CIPSEND=23
13:11:25.802,
13:11:25.802, OK
13:11:25.916, > Host: sergey.kiev.ua
13:11:25.916,
13:11:25.916, Recv 23 bytes
13:11:25.916,
13:11:25.916, SEND OK
13:11:26.020, AT+CIPSEND=26
13:11:26.020,
13:11:26.020, OK
13:11:26.020, > Referer: sergey.kiev.ua
13:11:26.020,
13:11:26.020, Recv 26 bytes
13:11:26.020,
13:11:26.020, SEND OK
13:11:26.128, AT+CIPSEND=49
13:11:26.128,
13:11:26.128, OK
13:11:26.128, > Content-Type: application/x-www-form-urlencoded
13:11:26.240,
13:11:26.240, Recv 49 bytes
13:11:26.240,
13:11:26.240, SEND OK
13:11:26.349, AT+CIPSEND=19
13:11:26.349,
13:11:26.349, OK
13:11:26.349, > Connection: Close
13:11:26.349,
13:11:26.349, Recv 19 bytes
13:11:26.349,
13:11:26.349, SEND OK
13:11:26.462, AT+CIPSEND=23
13:11:26.462,
13:11:26.462, OK
13:11:26.462, > Content-Length: 418
13:11:26.462,
13:11:26.462,
13:11:26.462, Recv 23 bytes
13:11:26.462,
13:11:26.462, SEND OK
13:11:26.568, AT+CIPSEND=23
13:11:26.568,
13:11:26.568, OK
13:11:26.568, > total_svarok=0000000072
13:11:26.675, Recv 23 bytes
13:11:26.675,
13:11:26.675, SEND OK
13:11:26.675, AT+CIPSEND=18
13:11:26.785,
13:11:26.785, OK
13:11:26.785, > &total_hours=00008
13:11:26.785, Recv 18 bytes
13:11:26.785,
13:11:26.785, SEND OK
13:11:26.897, AT+CIPSEND=20
13:11:26.897,
13:11:26.897, OK
.... и так далее, в конце ответ сервера:
13:11:30.604,
13:11:30.604, +IPD,190:HTTP/1.1 200 OK
13:11:30.604, Server: nginx/1.4.2
13:11:30.717, Date: Thu, 02 Mar 2017 11:11:32 GMT
13:11:30.717, Content-Type: text/html
13:11:30.717, Content-Length: 23
13:11:30.717, Connection: close
13:11:30.824, X-Powered-By: PHP/5.3.26
...
Имя сервера и путь запроса были специально изменены, дабы не наводить поисковики на тестовый канал.
Передать весь пакет одной командой AT+CIPSEND пока не получается, сам пакет предварительно в ОЗУ не формируется (т.к. для этого нужно много ОЗУ) генерируется "на лету" сразу в UART, а постоянная длина обеспечивается ведущими нулями (т.е. размер пакета всегда одинаковый).
# 
trash50
06 марта, 23:09

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

# 
Сергей К ◊
06 марта, 23:25
trash50: в таких условиях пакет должен быть минимального размера

От 10 до 40 байт (сами данные пакета)

Судя по отметкам времени, перед тем, как сказать "SEND FAIL" модуль ждет примерно 4 секунды.
А когда пакет ушел, то задержка ответа (SEND OK) незаметна на фоне скорости 9600 кбит/с (виртуальный USB-порт)

# 
viczai ◊
07 марта, 08:08

Вопрос конечно не в тему, но рядом. Вы когда WIFI модуль ставите в систему, то GSM ставите или нет. Вопрос не конкретно по Вашему затыку, а по самой разработке. Ну и как совет, в глубину если ехать с ESP, то они считаются бытовкой, со всеми минусами, т.е. по темп диапазону и недошлифовке прог обеспечения со стороны уже внешних устройств. Не знаю что даже сказать, но тот же CC3200 как то более пром WIFI ему ближе. Говорят, говорят.

# 
Сергей К ◊
07 марта, 12:17
viczai: Вы когда WIFI модуль ставите в систему, то GSM ставите или нет

Я решил полностью отказаться от GSM. Если там нет интернета, то сейчас можно установить любой GPRS/3G-Wi-Fi-роутер, даже самый дешевый смартфон на Андроиде может работать Wi-Fi-роутером.
Устройство не автономное, т.е. работает в присутствии людей и перебои с интернетом не влияют на работоспособность. Работа при минусе не требуется.

# 
viczai ◊
08 марта, 13:06

Ну и как бы обновляю свою информацию с Вашей помощью, вот такой сайт оказывается есть с таким же названием.
https://esp8266.ru/forum/threads/sravnenie-rtl8710-i-esp8266.1467/
И даже такой сайт есть, только только вылупился и ... Да не надо, не надо анекдотов. Я и сам посмеяться люблю, но тут не тот случай.
https://rtl8710.ru/index.php
Похоже все ждут что кто то Cortex M4 с WiFi из хорошо проверенных подружит. STM вооще не шевелится. ESP не Cortex, CC3200 без внутренней флеши. Будем искать. с)
https://www.youtube.com/watch?v=yGDyhkHJsUM
RTL8710 вообще мутно, даже даташита нет, и в кейле его нет.
http://www.keil.com/dd2/
Но говорят перспективная. Читаю вот только. Потому что про ESP говорят, что с ней чего не делай всё только метеостанция получается. Где то на этих форумах про это услышал.

# 
Сергей К ◊
08 марта, 14:07

Все зависит от задачи. У меня есть свой процессор с кучей периферии и обвязки, поэтому для меня актуальна версия с AT-прошивкой. Ресурсы Wi-Fi-процессора можно задействовать, но пока нет времени на изучение среды проектирования и написания собственной прошивки.
По надежности все зависит от задачи. Когда начал изучать GSM-модемы, то в схему советовали устанавливать ключ, который коммутирует питание модуля и если что-то пошло не так и с помощью АТ-команд или по линии "power key" не получается перезапустить модуль - передернуть его питание. Но сейчас эти модули доработали и они уже в состоянии надежно работать и без этого.
К тому-же, по первой ссылке указан ток 80 мА, хотя на самом деле он может не надолго достигать 300 мА - отсюда и глюки у многих, т.к. часто ставят 100-200 мА линейный стабилизатор. И в статике как-бы работает, но глючит иногда.
Первая моя проба - это UART-мост между компьютером и прибором через Wi-Fi на двух модулях ESP. Проработал месяц практически без отключений. Нареканий на работу не было, хоть я и не надеюсь, что это будет работать безглючно. Честно говоря, в спешке я питание со стороны ПК организовал очень не надежно, но работало и так.
На rtl8710 смотрел по диагонали, есть АТ-прошивка я думаю, что несложно будет поправить кода и под него.

viczai: Потому что про ESP говорят, что с ней чего не делай всё только метеостанция получается.

Ну это если без внешнего МК, т.к. без нескольких каналов ШИМ, АЦП, компаратором, модулей захвата-сравнения и т.д. сейчас никуда

По теме: переписал код так, чтобы все 500 байт отправлялись за один раз, одним пакетом. Работает стабильно, и на GPRS, что на 3G (тьфу-тьфу).

# 
viczai ◊
09 марта, 11:10

Только мы проговорили и тут предложения на почту. Ну это будет интересно для тех кто захочет присоединиться в WIFI MCU проекты.
http://www.dessy.ru/catalog-pdc436304.html
А так метеостанция тут точно есть. Но что тут ещё есть, так это вправка мозгов на новые MCU, а кому то просто кроксворд. с) И полезно и приятно. Но это Ардуино. А что ещё пенсу надо, ведь паять вредно, а тут чисто втычно затычный ембеддер проект. И достаточно серьёзный, ну не мелкий это точно. Налетай не скупись покупай живопись.с)
https://www.youtube.com/watch?v=_weoESj8HH8
Я вот сегодня и купил. Хоть и не надо, но уж больно макетку под норм размер и ДУ ИК в руках не держал на MCU-шках хотелось посмотреть. Так сказать дист клаву, а то в некоторые высоковольтные прим лучше и не лазить ближе метра, а то и двух.
PS Для метео станции похоже баро надо будет отдельно докупить. Да мелочи это. А то только термо и гигро. Неполная метеостанция. Для wifi в которую то и прогноз можно иметь как то непорядок.
PS2 Из серии ждёмс пока STM или TI свой wifi mcu допилят до урожая бабла с кроличьей фермы. Чё там сказал. Ладно правилку включать не будем. Потом иногда что я сказал сам доходишь. И на несколько ходов вперёд.

# 
viczai ◊
19 марта, 11:57

Выше или ниже в теме про ебей было про CC3220, что его нет. В новом IAR он есть.

И холодильник покупать не надо. с)
Мы их сами делаем.
https://www.youtube.com/watch?v=0c24qe8m-dY
Ой тут чё то дядя Федор заболел. Как то не позитив, а тут выздоровел и так видоизменился.
https://www.youtube.com/watch?v=ZW_xl02X7F4
Поднимем настроение.

# 
Сергей К ◊
19 марта, 18:55
viczai: В новом IAR он есть

И как он лично Вам, по сравнению с ESP?

# 
Страницы:
1  2