Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Скорость ESP8266
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Wireless/Optic
jcxz
Вопрос к людям, работавшим с ESP8266: какую максимальную потоковую скорость вы получали с помощью данной микросхемы?
Интересует главным образом работа в непрерывном режиме передачи потока данных на фиксированной скорости.
AlexandrY
Цитата(jcxz @ Nov 1 2015, 14:26) *
Вопрос к людям, работавшим с ESP8266: какую максимальную потоковую скорость вы получали с помощью данной микросхемы?
Интересует главным образом работа в непрерывном режиме передачи потока данных на фиксированной скорости.


Если что, то для CC3100 на интерфейсе SPI 20 МГц был такой результат:
Нажмите для просмотра прикрепленного файла
Это трафик от дивайса к PC зафиксированный программой iPerf 1.7.0 с сайта https://iperf.fr/iperf-download.php
Командная строка была такая: Iperf -s -p 5001 -i 1

В офисе в это время работало еще с десяток соседних Wi-Fi сетей.
Aner
С ESP8266 не все просто. Несколько различных выпусков ревизий чипа. Различные прошивки ROM в одной и той же версии встречаются, не доступны пользователю. Ну и программ загружаемых много различных, опять же под разные версии как чипа так и внутренней ROM. К тому же все криво на китайском как то описано. Но Ардуиньшики пользуют как то для удаленных термодатчиков и поморгать ледиком. Цена примерно в 1.5 бакса за чип при сотне конечно привлекает. Да и сайты уже с поддержкой раздуты. Если смотреть их описание то 54 Mbit в воздухе по стандарту N должны поддерживать, 160Mhz внутренний их арм проц по квад SPI вроде как поддерживает 80Мгц внешнюю флешку. Ну и 5...10 Mbit должен как выдавать. Но хорошо если, 1..2 Mbit выдаст по SPI.
Ti 32, 31 более поддержаны, хотя нам проц всего 80Mhz, внутрренней периферии поболее, .. но много дороже, если термодатчик по WI-FI читать.
adnega
Цитата(jcxz @ Nov 1 2015, 15:26) *
Вопрос к людям, работавшим с ESP8266

В режиме AT-команд не выше скорости UART-порта очевидно.
А вам сколько надо?
Aner
QUOTE (adnega @ Nov 1 2015, 16:45) *
В режиме AT-команд не выше скорости UART-порта очевидно.
А вам сколько надо?

По UART-порту 460Kbit пока никто не получил, хотя заявлено.
115200 едва-едва, но тоже никто не пользует почему то, наверное нестабильно.
uriy
Я пытался делать web сервер с участием хост контроллера.
Нарвался на пару проблем.
1. В режиме подключения к роутеру через несколько минут работы пинги до ESP растягивались до 1 секунды. Такие же задержки были и с веб сервером.
Потом она и вовсе переставала отвечать, даже на пинги. В режиме работы ESP как хоста такой проблемы не наблюдал.

2. После некоторых манипуляций в ответ на AT команды начинает отвечать busy. После этого можно было вернуть к жизни только через ножку ресет.
adnega
Цитата(uriy @ Nov 1 2015, 20:10) *
Нарвался на пару проблем.

А версия прошивки какая? Есть ведь свежачки - рекомендую.
jcxz
Цитата(Aner @ Nov 1 2015, 19:45) *
Но хорошо если, 1..2 Mbit выдаст по SPI.

Я не точно выразился. Интересует не столько сам чип, сколько готовые модули на нём (ибо их и планирую использовать).
А в них в основном только UART. Да и по скорости его достаточно, хотя SPI конечно удобнее в работе.
Хочу этот модуль использовать для приёма реалтайм-аудио (в домашнюю свою поделку имеющую тюнер на RDA5807M захотел добавить возможность слушания онлайн-радиостанций wink.gif
Соответственно скорость требуется на приём по одному сокету желательно до 200кбит/сек. Модуль в режиме Station, сокет - клиентский на удалённый серверный.
Других сокетов не будет или будут с малой скоростью.
В данный момент написал драйвер рулящий ESP8266. В принципе всё заработало, сегодня начал тестить скорость.
Для теста открываю два клиентских сокета на два серверных порта на PC, гоню поток SLIP-кадров с CRC через один сокет на устройство, устройство возвращает поток через другой сокет на 2-й серверный порт,
где эти кадры проверяются. Наблюдаю иногда нарушение целостности данных. Пока более-менее работает при скорости через один сокет 3кБ/сек (суммарная 6кБ/сек).
Возможно проблемы где в моём драйвере, так как только-только написал его, сырой ещё. Или в тестовом ПО.

Цитата(Aner @ Nov 1 2015, 20:12) *
По UART-порту 460Kbit пока никто не получил, хотя заявлено.
115200 едва-едва, но тоже никто не пользует почему то, наверное нестабильно.

В смысле "не получал"? Модуль стабильно работает на всех заявленных скоростях от 115200 до 921600 - я проверил все.
Может ардуинщики и не получили, а LPC1788 нормально с ним работает на всех скоростях. sm.gif

Цитата(uriy @ Nov 1 2015, 23:10) *
2. После некоторых манипуляций в ответ на AT команды начинает отвечать busy. После этого можно было вернуть к жизни только через ножку ресет.

У меня пока такого не наблюдается. Но тестирую ещё недолго.

Цитата(adnega @ Nov 1 2015, 23:45) *
А версия прошивки какая? Есть ведь свежачки - рекомендую.

Залил самую последнюю из тех, что нашёл на http://esp8266.ru/ и которая влезает в 512кБ флеши.
Aner
Этот сайт знаем, но иногда пользую и этот http://espressif.com/en/products/esp8266/
Так какой модуль у вас или где в инете есть ссылка на него? Самопалок куча есть.
По скорости с каким роутером или что на другом конце было? Какой режим? Какие настройки, форматы?
И ссылку на последнюю прошивку поточнее можно? Или тут выложить.
jcxz
Цитата(Aner @ Nov 2 2015, 03:58) *
Этот сайт знаем, но иногда пользую и этот http://espressif.com/en/products/esp8266/
Так какой модуль у вас или где в инете есть ссылка на него? Самопалок куча есть.
По скорости с каким роутером или что на другом конце было? Какой режим? Какие настройки, форматы?
И ссылку на последнюю прошивку поточнее можно? Или тут выложить.

Конкретно модуль первая фотка (ESP-01) здесь:
http://esp8266.ru/modules-esp8266/
Прошивка:
http://esp8266.ru/forum/resources/at-0-25-...s-512k-flash.5/
Прошивка не самая последняя, а одна из.
Роутер: ASUS WL-500gP V2. С ним по WiFi никто больше не работает сейчас.
Режимом - что имеете в виду? Модуль в режиме "Station", подключается к точке - роутеру. Сокеты - клиентские. AT+CIPMUX=1
Вот сейчас тестирую, модуль на 115200, поток кадров ~1кБ с периодом 250мс по двум сокетам - всё отлично - несколько тысяч кадров - ни одного сбоя.
Если период уменьшить до 200мс - появляются сбои. Достаточно редкие - порядка 0.7% потерь.
Aner
законнектился в каком из этих 802.11 -> B или G? И как скорость упадет при двух модулях одновременной работы на каксимально возможных скоростях?
jcxz
Цитата(Aner @ Nov 2 2015, 05:01) *
законнектился в каком из этих 802.11 -> B или G? И как скорость упадет при двух модулях одновременной работы на каксимально возможных скоростях?

Диапазон не знаю как определить. И меня пока только один модуль. Вот если тест на вшивость пройдёт, то может ещё закажу wink.gif

Продолжаю тестирование:
Скорость 230400 с модулем. Период отправки 1кБ кадров == 200мс, 1100 кадров полёт нормальный - 100% доставлено и прошло проверку на валидность.
Уменьшаю период до 150мс - вижу что постепенно с ростом числа кадров, растёт задержка в канале (т.е. - рассогласование числа отправленных кадров в окне передатчика и числа принятых в окне приёмника).
При достижении 600 кадров эта разница составляет ~25кадров. После остановки передачи, счётчик приёмника догоняет счётчик передатчика. Т.е. - не хватало пропускной способности канала и постепенно заполнялась очередь в устройстве, которая через некоторое время переполнилась-бы.

Хорошо - увеличиваю скорость UART до 460800. Тест с периодом 150мс - тормоза пропали - 3300кадров - всё ок! Ни одного сбоя wink.gif
Уменьшаю период до 120мс - 3000кадров - всё ок.
Если уменьшить период до 100мс - опять появляется рассогласование счётчиков TX/RX.
В принципе 120мс - это примерно 1/.12*2*8 = 133кбит/сек - т.е. потоки 128кбит/сек уже должен тянуть, хоть и на пределе.
На 921600 наблюдаются какие-то сбои после нескольких десятков кадров с малым периодом. Возможно проблема где-то у меня в ПО, а может неточность выставления скорости UART-ом LPC уже слишком велика для ESP.
Позже попробую выставить PLL LPC-ки на частоту кратную 921600.

PS: 460800 бод, период 110мс, >6400кадров - всё ок. Т.е.: 1/.11*2*8 = 145кбит/сек
jcxz
Может быть кому пригодится впоследствии... вобщем результаты моих экспериментов с ESP8266:
Того чего мне нужно было, мне полностью удалось добиться - сейчас ESP8266 с указанной ранее прошивкой стабильно качает в потоковом режиме 256кб/сек (поток онлайн-радиостанции 256кб/сек) на приём.
Тестирую в такой конфигурации:
ESP8266 (интерфейс UART=460800 бод) коннектится на удалённый порт радиостанции, получаемый с неё поток пишу в UART на скорости 460800 бод, UART подключен к PC, где этот COM-порт отображается в TCP-порт (серверный) программой IP-Сom, на который коннектится VLC-плеер. Буфер входного потока ESP8266 и выходного на UART выставил с большим запасом по 240кБ каждый, думаю хватит гораздо меньшего.
VLC нормально играет поток без пауз и бульков, тестил в течение длительного времени.
Видно, что в начале, при подключении к радиостанции первые секунды поток с ESP8266 идёт на макс. скорости порта, потом скорость снижается до 32кБ/сек и так дальше стабильно держится.

Когда я тестил ранее с двумя сокетами (по одному закачиваю с порта радиостанции поток, по другому сокету транслирую на PC, без доп.UART) узкое место было в передающем сокете - поток захлёбывался и воспроизведение VLC шло с разрывами даже потока 64кб/сек. Ограничивала скорость передающего сокета, она не поднималась выше 5.5 кБ/сек.
Я думаю это из-за слишком громоздкой процедуры передачи ESP8266: надо дать команду "AT+CIPSENDBUF" (эхо выключено для скорости), дождаться номеров сегментов, дождаться приглашения "> ", только потом выдать передаваемый фрейм, потом ещё дождаться "Recv N bytes", потом дождаться "SEND OK". Слишком много всего надо принять, а в это время идёт интенсивный принимаемый поток, между кадрами которого и должны проскочить эти сообщения.
Возможно нужно изменить процедуру передачи, если-бы только знать размер внутреннего буфера передатчика WiFi....
Если буфер этот равен 2048байт, то можно командой "AT+CIPSENDBUF" передавать не полный размер 2048, а только половину, и потом не дожидаясь "SEND OK", после получения "Recv N bytes", слать след. TX-кадр.
Думаю что "Recv N bytes" - это подтверждение приёма кадра в буфер передатчика WiFi, а "SEND OK" - уведомление о том, что данный сегмент отправлен в эфир. Так что если не заполнять полностью командой "AT+CIPSENDBUF" весь буфер, а дописывать его не более чем на половину, то можно добиться более непрерывного потока передачи и большей скорости передачи.
Но мне для текущей задачи не нужен быстрый выходной поток, т.к. при соединении с р/ст плеер должен передать только первый HTTP-запрос и больше он ничего в сокет не передаёт, а только принимает. Так что меня вполне устраивает полученный результат и оптимизировать передачу скорее всего не буду.
Скорость порта 921600 тоже сильно не тестил - вообще работает, но есть редкие сбои, скорей всего из-за неточности выставления делителей на LPC1778 и ESP8266. Можно выставить его точно на LPC1778, но тоже не буду делать - 460800 мне хватает вполне.

Вобщем вывод: ESP8266 вполне подходит для подключения к онлайн-радиостанциям до 256кб/сек как минимум, на скорости UART == 460800 бод с прошивкой http://esp8266.ru/forum/resources/at-0-25-...s-512k-flash.5/
Doka
а на стороне ESP8266 каким тулом тестили?
ЕМНИП, Iperf необходимо запускать на двух узнал сети - на одном "клиент" на втором "сервер"

Цитата(AlexandrY @ Nov 1 2015, 16:06) *
Если что, то для CC3100 на интерфейсе SPI 20 МГц был такой результат:
Нажмите для просмотра прикрепленного файла
Это трафик от дивайса к PC зафиксированный программой iPerf 1.7.0 с сайта https://iperf.fr/iperf-download.php
Командная строка была такая: Iperf -s -p 5001 -i 1


jcxz
Если кому интересно, напишу что сделал дальше.
Сейчас я на том железе, на котором тестировал, запустил MP3-декодер. И сейчас работает приёмник онлайн-радиостанций, всё работает на LPC1788.
Примерно цепочка такая:
ESP8266 (альт.прошивка указанная выше) подключен по UART-DMA на 460800 бод к LPC1788, на котором крутится мой стек поверх AT-команд ESP8266.
На LPC1788 принимаемый поток декодируется MP3-декодером Helix. Далее поток сэмплов передискретизируется моим ресэмплером (кусочно-линейная аппроксимация) и передаётся на DAC-DMA.
LPC1788 сейчас работает на 96МГц тактовой, в режиме отладки большая часть кода и все большие массивы - в SDRAM, код Helix и большая часть его рабочих буферов - во внутреннем ОЗУ.
Компиляция с полной оптимизацией (balanced, IAR) кода Helix - даёт загрузку процессора примерно на 42...51% при проигрывании MP3-потока радиостанции 320кбит/сек.
SDRAM подключена к LPC1788 по 16-битной шине.
FedorovN
Нужна Ваша помощь! Как получить данные с сервера, транслирующего MP3 поток? Командой AT+CIPSTART="UDP","109.206.96.34",8100 я подключаюсь к передающему серверу, но дальше дело не идет.
jcxz
Цитата(FedorovN @ Mar 4 2017, 19:47) *
Нужна Ваша помощь! Как получить данные с сервера, транслирующего MP3 поток? Командой AT+CIPSTART="UDP","109.206.96.34",8100 я подключаюсь к передающему серверу, но дальше дело не идет.

не знаю. Я по UDP не работал с радиостанциями.
FedorovN
А Вы как подключались? Я пытаюсь сделать интернет радио (велосипед sm.gif ). Использую STM32F407VET6 + VS1053B и хочу подключиться к интернет по WiFi . Первый рабочий вариант - ESP8266 c АТ прошивкой. Как подключаться к транслирующей станции по TCP или UDP пока не имею никакого понятия. И мне очень интересно, как Вы это сделали.
Уже попробовал радио на одном ESP8266 в ардуино варианте. Работает. Но на мой взгляд ардуино ESP8266 - это "вещь в себе", поэтому не очень интересно. Я планирую нагрузить ESP8266 только простой, связной функцией.
Вы же сделали что-то подобное?
jcxz
Цитата(FedorovN @ Mar 5 2017, 19:57) *
А Вы как подключались?

По TCP/HTTP конечно.

Цитата(FedorovN @ Mar 5 2017, 19:57) *
Вы же сделали что-то подобное?

Выше всё описано что делал.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.