• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Максимальная скорость передачи на скорости 921600

michbil

New member
Добрый день.
Есть необходимость передать 2МБ файл на смартфон. Сейчас управляю модулем по UART при помощи АТ команд, скорость порта настроил 921600, softap, поднял TCP сервер.
Сейчас передача 2МБ файла занимает около 5 минут.
Данные передаю командой AT+CIPSEND=1024 или AT+CIPSEND=2048. Данные передаются с остановками, т.е. передало 30-40 пакетов - замолчало, на секунду, и.т.д.
Есть ли возможность поднять скорость передачи через UART, есть ли смысл писать свою прошивку для ESP8266?
 

pvvx

Активный участник сообщества
В сторону TCP -> UART -> получатель, при 1000000 Baud, 2097152 байта передаются за 21 секунду, через TCP2UART переходник в моей кривой тестовой программе к нему...
Файл в 2 МБ с Web диска (при flash 16Мбайт) передается за 2..3 сек. TCP трансфер у модуля примерно 600..1200 килобайт в сек. 1..1.2 Mбайт в сек - это при выключенной опции вывода отладки, CPU на 160MHz, QSPI у Flash на 80MHz.
http://esp8266.ru/forum/attachments/1mbsec-gif.66/
 

michbil

New member
Спасибо за ответ, буду смотреть в сторону не АТ-шной прошивки. Залью ваш TCP2UART, проведу тесты.
 

pvvx

Активный участник сообщества
Реальная скорость 802.11n (с поддержкой 802.11g) раза в три менее теоретическо-суммарной-маркетинговой 54Мб/с, считаемой в обе стороны. Нехитрым делением 54/3 получаем 18Мб/c. Т.е. предел в 2Мб/c. Учитывая задержки на прием-подтверждение ACK по TCP и что в модуле не 4GHz проц и получаем предел примерно в 1.2 Мегабайта в секунду. И понятно, что UART в AT для поддержки такой скорости должна работать на не менее чем на 12MBaud и требуется иметь немалый буфер в памяти, которой в модуле нет. И с интерпретатором Lua вообще всё ясно – там, путем сильной оптимизации, которой пока в ней нет, и проектом специализированным только для данной задачи можно будет достигнуть в десять раз менее – ну к 100 кбайт в сек (в пике :) ).
Как итог – только хардкод на СИ. А от куда будут взяты примеры – не важно :)
Заявления о полной поддержки чипом WiFi на 150Мб/с - вообще смешны... На всех скоростных роутерах, особенно многоканальных (несколько антенн), поддерживающих полную спецификацию 150Мб/с с данным чипом наблюдаются проблемы...
И если вы собираетесь построить систему из множества ESP8266 - то трансфер в такой обстановке (WiFi зоне этих ESP8266) рухнет до минимума и не даст работать другим. А ограничения мощности передатчика китайцы к данному чипу не дают - занимаются вредительством.
 
Последнее редактирование:

michbil

New member
Мне не нужна большая скорость на пределе технологии, скорость около 500-800 кБит через UART на 921600 baud была бы вполне достаточной. Процедура передачи - разовая(загрузка логов из устройства), так что особых помех для других устройств не будет.
 

pvvx

Активный участник сообщества
Мне не нужна большая скорость на пределе технологии, скорость около 500-800 кБит через UART на 921600 baud была бы вполне достаточной. Процедура передачи - разовая(загрузка логов из устройства), так что особых помех для других устройств не будет.
"Помехи" возникают от наличия низкосоростных устройств в сети WiFi... Со многими роутерами ESP8266 приходится включать в режим 802.11g, иначе нет нормального соединения... Это не всегда и не везде (зависимость не изучалась), но при 802.11g соединение всегда устойчиво.
На AT и текущих Lau получить "500-800 кБит через UART" сложно. У их нет буферов для для организации передач TCP оптимальными размерами пакетов...
Возможно в Sming это исправят.
 
Последнее редактирование:

michbil

New member
Запилил свою прошивку на основе опенсорсного TCP-UART, при буфере 4килобайта скорость возросла очень ощутимо. Осталось допилить flow control, и думаю такой вариант вполне сойдет.
 
Сверху Снизу