Перейти к содержанию
    

Вопрос к людям, работавшим с ESP8266: какую максимальную потоковую скорость вы получали с помощью данной микросхемы?

Интересует главным образом работа в непрерывном режиме передачи потока данных на фиксированной скорости.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос к людям, работавшим с ESP8266: какую максимальную потоковую скорость вы получали с помощью данной микросхемы?

Интересует главным образом работа в непрерывном режиме передачи потока данных на фиксированной скорости.

 

Если что, то для CC3100 на интерфейсе SPI 20 МГц был такой результат:

post-2050-1446382895_thumb.png

Это трафик от дивайса к PC зафиксированный программой iPerf 1.7.0 с сайта https://iperf.fr/iperf-download.php

Командная строка была такая: Iperf -s -p 5001 -i 1

 

В офисе в это время работало еще с десяток соседних Wi-Fi сетей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С ESP8266 не все просто. Несколько различных выпусков ревизий чипа. Различные прошивки ROM в одной и той же версии встречаются, не доступны пользователю. Ну и программ загружаемых много различных, опять же под разные версии как чипа так и внутренней ROM. К тому же все криво на китайском как то описано. Но Ардуиньшики пользуют как то для удаленных термодатчиков и поморгать ледиком. Цена примерно в 1.5 бакса за чип при сотне конечно привлекает. Да и сайты уже с поддержкой раздуты. Если смотреть их описание то 54 Mbit в воздухе по стандарту N должны поддерживать, 160Mhz внутренний их арм проц по квад SPI вроде как поддерживает 80Мгц внешнюю флешку. Ну и 5...10 Mbit должен как выдавать. Но хорошо если, 1..2 Mbit выдаст по SPI.

Ti 32, 31 более поддержаны, хотя нам проц всего 80Mhz, внутрренней периферии поболее, .. но много дороже, если термодатчик по WI-FI читать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос к людям, работавшим с ESP8266

В режиме AT-команд не выше скорости UART-порта очевидно.

А вам сколько надо?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В режиме AT-команд не выше скорости UART-порта очевидно.

А вам сколько надо?

По UART-порту 460Kbit пока никто не получил, хотя заявлено.

115200 едва-едва, но тоже никто не пользует почему то, наверное нестабильно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я пытался делать web сервер с участием хост контроллера.

Нарвался на пару проблем.

1. В режиме подключения к роутеру через несколько минут работы пинги до ESP растягивались до 1 секунды. Такие же задержки были и с веб сервером.

Потом она и вовсе переставала отвечать, даже на пинги. В режиме работы ESP как хоста такой проблемы не наблюдал.

 

2. После некоторых манипуляций в ответ на AT команды начинает отвечать busy. После этого можно было вернуть к жизни только через ножку ресет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нарвался на пару проблем.

А версия прошивки какая? Есть ведь свежачки - рекомендую.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но хорошо если, 1..2 Mbit выдаст по SPI.

Я не точно выразился. Интересует не столько сам чип, сколько готовые модули на нём (ибо их и планирую использовать).

А в них в основном только UART. Да и по скорости его достаточно, хотя SPI конечно удобнее в работе.

Хочу этот модуль использовать для приёма реалтайм-аудио (в домашнюю свою поделку имеющую тюнер на RDA5807M захотел добавить возможность слушания онлайн-радиостанций ;)

Соответственно скорость требуется на приём по одному сокету желательно до 200кбит/сек. Модуль в режиме Station, сокет - клиентский на удалённый серверный.

Других сокетов не будет или будут с малой скоростью.

В данный момент написал драйвер рулящий ESP8266. В принципе всё заработало, сегодня начал тестить скорость.

Для теста открываю два клиентских сокета на два серверных порта на PC, гоню поток SLIP-кадров с CRC через один сокет на устройство, устройство возвращает поток через другой сокет на 2-й серверный порт,

где эти кадры проверяются. Наблюдаю иногда нарушение целостности данных. Пока более-менее работает при скорости через один сокет 3кБ/сек (суммарная 6кБ/сек).

Возможно проблемы где в моём драйвере, так как только-только написал его, сырой ещё. Или в тестовом ПО.

 

По UART-порту 460Kbit пока никто не получил, хотя заявлено.

115200 едва-едва, но тоже никто не пользует почему то, наверное нестабильно.

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

Может ардуинщики и не получили, а LPC1788 нормально с ним работает на всех скоростях. :)

 

2. После некоторых манипуляций в ответ на AT команды начинает отвечать busy. После этого можно было вернуть к жизни только через ножку ресет.

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

 

А версия прошивки какая? Есть ведь свежачки - рекомендую.

Залил самую последнюю из тех, что нашёл на http://esp8266.ru/ и которая влезает в 512кБ флеши.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Этот сайт знаем, но иногда пользую и этот http://espressif.com/en/products/esp8266/

Так какой модуль у вас или где в инете есть ссылка на него? Самопалок куча есть.

По скорости с каким роутером или что на другом конце было? Какой режим? Какие настройки, форматы?

И ссылку на последнюю прошивку поточнее можно? Или тут выложить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Этот сайт знаем, но иногда пользую и этот 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% потерь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

законнектился в каком из этих 802.11 -> B или G? И как скорость упадет при двух модулях одновременной работы на каксимально возможных скоростях?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

законнектился в каком из этих 802.11 -> B или G? И как скорость упадет при двух модулях одновременной работы на каксимально возможных скоростях?

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

 

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

Скорость 230400 с модулем. Период отправки 1кБ кадров == 200мс, 1100 кадров полёт нормальный - 100% доставлено и прошло проверку на валидность.

Уменьшаю период до 150мс - вижу что постепенно с ростом числа кадров, растёт задержка в канале (т.е. - рассогласование числа отправленных кадров в окне передатчика и числа принятых в окне приёмника).

При достижении 600 кадров эта разница составляет ~25кадров. После остановки передачи, счётчик приёмника догоняет счётчик передатчика. Т.е. - не хватало пропускной способности канала и постепенно заполнялась очередь в устройстве, которая через некоторое время переполнилась-бы.

 

Хорошо - увеличиваю скорость UART до 460800. Тест с периодом 150мс - тормоза пропали - 3300кадров - всё ок! Ни одного сбоя ;)

Уменьшаю период до 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кбит/сек

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может быть кому пригодится впоследствии... вобщем результаты моих экспериментов с 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/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а на стороне ESP8266 каким тулом тестили?

ЕМНИП, Iperf необходимо запускать на двух узнал сети - на одном "клиент" на втором "сервер"

 

Если что, то для CC3100 на интерфейсе SPI 20 МГц был такой результат:

post-2050-1446382895_thumb.png

Это трафик от дивайса к PC зафиксированный программой iPerf 1.7.0 с сайта https://iperf.fr/iperf-download.php

Командная строка была такая: Iperf -s -p 5001 -i 1

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если кому интересно, напишу что сделал дальше.

Сейчас я на том железе, на котором тестировал, запустил 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-битной шине.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...