• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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 на один байт.
 
Последнее редактирование:
Сверху Снизу