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

Вопрос о скорости

NecroSS

New member
Уважаемые господа знатоки, помогите разобраться.

Строится беспилотный ЛА управляемый с PC через интернет, конструкция такая: есть аналоговая камера hd color 700tvl, она оцифровывается чипом TW9960, выходное разрешение 960x576, изображение получает контроллер STM32F437VGT6 (288MHz, Nuttix на борту), делает некие махинации (сжимает, форматирует), и передает на 3G модем SIM5350L-E скорость на получение 14.4 Mbps, на передачу 5.76 Mbps. К этому же контроллеру подсоединены датчики, GPS, сервы и т.д., так же все передается на 3G.

Скорости интерфейсов STM32F437VGT6 : SPI 72MBit/s, USART 4.5MBit/s.

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

В датащите на ESP8266 пишут, что скорость UART`а 115200*40, что составляет 4608К бод.
Будет ли работать на таких скоростях?

Bопрос номер два: как я понимаю аппаратный SPI у ESP8266 работает только как мастер и подцепиться к нему контроллером не получится?

И вопрос на засыпку: датащит пишет что модуль ESP8266 поддерживает стандарты b/g/n, g и n работают на скорости до 54Мбит/c, а сам девайс общается с периферией 4,6Мбит/c. Нафига стандарты g и n?

И если ESP8266 не подходит для такой задачи, посоветуйте что-нибудь. Мощность/дальность сигнала тоже имеют значение.

Взгляд пал на wl1805mod от Texas Instruments, но найти его как то не реально, да и плат с уже готовой обвязкой я не находил.
 

JustACat

Moderator
Команда форума
По этому поводу обратитесь к постам и тестам @pvvx - он тестировал и неоднократно писал про максимально возможные скорости как собственно самого WiFi-соединения, так и передачи в UART.

аппаратный SPI у ESP8266 работает только как мастер
Могу врать, но, если мне память не изменяет, то в каком-то из документов, что-то вроде Module Application Guide описаны и режимы работы ESP именно в качестве слейва к основному МК. Вот только я не помню у нас тут упоминаний о том, что кто-то с ним так работал.
Однако, я точно помню упоминание (у нас на форуме) о том, что кто-то писал драйвер под Linux (вроде бы), который как раз использовал ESP в качестве WiFi модуля. Думаю, вам нужно поискать этот драйвер и почитать про него.

Ну и что еще на ум приходит: может попробовать I2C как-то?

Ответил на то, на что мысли были, на остальное пусть отвечают те, кто знает :)
 

pvvx

Активный участник сообщества
Возникло желание поставить Wi-Fi модуль для отработки и не далеких полетов, т.к. сотовая связь дороговато выходит.
У WiFi существуют зависимости от скорости между передатчиком-приемником. Но они не критические... Если на 3G пашет, то явно скорости аппарата малы.
В датащите на ESP8266 пишут, что скорость UART`а 115200*40, что составляет 4608К бод.
UART имеет внутренний CLK 80 MHz, но выходы его i/o уверенно работают до 10Mbit/s. Далее мешает малая частота стробирования i/o и возникают искажения.
У ESP8266 есть SPI - он работает на 80Mbit/s, но нет DMA - пакеты до 64 байт передаются/принимаются в специальный fifo буфер и далее софтом переносите... Но есть ограничение доступа по шине к регистрам этого fifo (~26MHz).
Скорость приема-передачи в "полудуплексе" по WiFi на TCP соединении > 1.2MBytes/s при близких расстояниях. При удалении - см. специфику WiFi.
В "дуплексе" (одновременно туда-сюда по TCP) скорость сильно падает из-за переключений режимов блока WiFi и малой скорости CPU ESP8266 (160MHz) + кривого кода от китайцев. Беглый тест TCP2UART с закороченными RX-TX RTS-CTS на UART дают поток на уровне до 3Mbit/s, для более требуется серьезная оптимизация и адаптация размеров пакетов и ACK подтверждений по TCP с учетом текущей скорости...
 
Последнее редактирование:

NecroSS

New member
@pvvx, Спасибо за ответ.
Ну и что еще на ум приходит: может попробовать I2C как-то?
С I2C, думается ситуация такая же будет по скорости, что и со SPI.

@pvvx, Исчерпывающий ответ :)
на TCP соединении
Где-то читал, что по UDP быстрее должно работать.

Да, для задачи маловато будет. Да и при оптимизации/ковыряния прошивок, думаю трудно будет поднять скорость до 5,5MBytes/s, да и затрат по времени уйдет уйма. Да и думаю я не один же, кто супер скорость хочет, уже наверное и прошивка такая есть (оптимизированная).
Но за такие деньги для домашних поделок, модуль самое то.
И радует то, что документации полно и сообщество не малое, что не сказать о других подобных модулях.

Может есть альтернатива модулю? Посильнее сигнал, побыстрее?

P.S. С Wi-Fi дел совсем не имел, кроме как с прошивками на роутерах DD-WRT/Open-WTR. (asus wl-300g шил по jtag). Но из ESP8266 понравилась ревизия ESP-07, возьму парочку для своих поделок :)
 

NecroSS

New member
И еще вопрос такой.
Кто-нибудь пробовал мостом пробросить с роутера через ESP8266 до другого роутера. И что там со скоростью будет?
 

pvvx

Активный участник сообщества
Где-то читал, что по UDP быстрее должно работать.
А куда быстрее? У чипа мало памяти и достаточный буфер для поддержки скорости не организовать. Да и зачем поток с данными, в котором нет гарантии доставки и пакеты могут быть переставлены в шахматном порядке...
Да, для задачи маловато будет. Да и при оптимизации/ковыряния прошивок, думаю трудно будет поднять скорость до 5,5MBytes/s, да и затрат по времени уйдет уйма. Да и думаю я не один же, кто супер скорость хочет, уже наверное и прошивка такая есть (оптимизированная).
Нету и не будет. Имеющиеся в Arduino и особенно Lua-клонах - наоборот точатся на тормоз и на предельный ответ-передачу до килобайта. Ведь их основная цель мигать светодиодом или опрашивать устаревший морально и технически датчик из прошлого века, дающий один-два байта в секунду.
Может есть альтернатива модулю? Посильнее сигнал, побыстрее?
Посильнее не бывает. Это уже не WiFi, а передающая станция требующая всевозможных разрешений.
Побыстрее то как? При полной ширине теоретической 50Mbit/s в заявлении спецификации WiFi на какой предел вы рассчитываете? Делите на 3 и получаете предельно достижимую реальную скорость.
Поддержка модулем ESP8266 WiFi в 150Mbit/s - чисто маркетинг. Его потроха и подход китайцев в данном режиме дают только "совместимость", а не все TTX от данного режима. Т.е. модуль "может" работать в режиме 802.11n - отвечать и передавать со скрипом, но не поддерживать полный трансфер. Не успеет передавать и обрабатывать из буферов WiFi все фреймы в память CPU - много потерь WiFi фреймов. В режиме 802.11n ESP8266 не совместим с многими скоростными роутерами - постоянная потеря пакетов, т.к. китайское ПО всегда имеет реализацию для "галочки", что типа оно есть, но реально не работает - кое-как выполняет всего одну какую-нибудь простую функцию, но не полную спецификацию.
Не путайте WiFi c многоантенными спец.реализациями, где на клиента настраивается зона интерференций. Во первых это дорогие проф.решения, во вторых они не адаптированы для движущейся цели, по тому и указывал - есть серьезные ограничения по скорости движения объекта с WiFi. :)
 
Последнее редактирование:

pvvx

Активный участник сообщества
И еще вопрос такой.
Кто-нибудь пробовал мостом пробросить с роутера через ESP8266 до другого роутера. И что там со скоростью будет?
Ничего хорошего - памяти у модуля нет -> буфера нет -> как передавать поток при частичной потере блока?
AP у ESP8266 фиктивная - софтовая и не умеет передавать пакеты между клиентами. Пороцесс: Принял пакет из WiFi, обработал CPU и перенес в память, где собрал из фреймов пакеты, собрал в пакет IP, переделал заголовок, передал передающей ПО части, она перекинула в аппаратуру WiFi передатчика, передатчик переключил в режии передачи, передал. Какой трансфер при этом, да ещё без DMA и низкой скорости шин у данного CPU? Десяток тысяч команд CPU на один байт.
 
Последнее редактирование:
Сверху Снизу