• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Прошивка TCP2UART переходника с настройкой по Web

Yoda

New member
Если я напишу сам простенькую прошивку uart-wifi-tcp, не перегруженную сервисами, то возможно еспэшка будет успевать хоть на 4-5 мбит?
 

pvvx

Активный участник сообщества
Если я напишу сам простенькую прошивку uart-wifi-tcp, не перегруженную сервисами, то возможно еспэшка будет успевать хоть на 4-5 мбит?
Нет, без RTS/CTS.
В прошивке чистый канал TCP2UART.
Если вы перепишите китайский драйвер WiFi и прикрутите DMA к UART, то успеет 5Mb/s в одну сторону при приемнике TCP в той-же сети и расстоянии до роутера в пару метров.
В обе стороны и 1Mb/s может не потянуть.
Если не перепишите китайский драйвер WiFi, то разрывы будут обязательно - он не может по другому работать = китайцы из Espressif.
Совет: выкиньте бяку ESP8266 в помойку и используйте что поновее. Цена на новые модули, хотя-бы от Realtek, практически равна ESP8266, но работают на 150Mb/s + имеют DMA на всё + значительно больше RAM.
А раз у вас второй контроллер - непонятно вообще, зачем поставили ESP8266. Ставьте WiFi модуль с интерфейсом по SDIO - они дешевле ESP8266 и некоторые имеют и BT (BLE) (всё в ту-же цену).
Если слегка дороже то есть все в одном чипе: FM радио, Wi-Fi, Bluetooth, GPS -> AP6476
В общем ныне чипов WiFi до грязи и найти переваривающего нормальную спецификацию WiFi и ваши 5Mb/s без проблем.
 
Последнее редактирование:

Yoda

New member
Мне нужно для танков с управлением по wifi. На танках должны стоять камеры. По крайней мере такая задумка.... Так вот мне хотя-бы 3-4 кадра 320х240х8bit вытянуть на еспэшке. ESP8266 были под рукой, вот поэтому и ставлю их. По крайней мере для них есть отличная поддержка со стороны русскоязычного сообщества. И прошивка и IDe - Юзерфрендли.

Например, прикупил полгода назад две платки wifi emw3162. Это связка STM32F205 + wifi чип от broadcom. Но так и не смог их запустить. Ибо в русском сегменте сети с ними никто не работает. А за бугром есть крупинки информации, что их кто-то запустил, но никто не выкладывает исходники. Можно сказать, что почти ноль. . Софт и исходники из которых надо слепить прошивку - от китайцев и там чёрт ногу сломит. А платки крайне удачные. СТМка подключена по SDIO к wifi чипу, куча GPIO, море флэш и оперативы, ну и 120 мГц на закуску. Сам я такую прошивку не напишу, т.к. опыта мало. Либы от китайцев занимают почти 500 кило... там тысячи и тысячи строк кода.

По сути так со многими чипами wifi. Вроде на бумаге крутая железка, а софт-поддержки ноль. Вот и толку от этого? Ведь есп стала такая популярная благодаря именно поддержке сообщества.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Мне нужно для танков с управлением по wifi. На танках должны стоять камеры. По крайней мере такая задумка.... Так вот мне хотя-бы 3-4 кадра 320х240х8bit вытянуть на еспэшке.
Ставьте сразу готовую камеру за 1.3 руб на али. Та есть выходы для поворота камеры и входы, а так-же динамик и микрофон + авто ИК подсветка, если поедете "на танке" под диван. Будете кричать "из танка" по телефону...
 
Последнее редактирование:

Yoda

New member
Мне нужно несколько подругому. Попробую пнуть на 3 мбит или использовать управляющие сигналы.
 

pvvx

Активный участник сообщества
Мне нужно несколько подругому. Попробую пнуть на 3 мбит или использовать управляющие сигналы.
А кто софт на всё писать будет? На Типа такой можно ездить из офиса под диваном дома... Открыть крышку и к выводам с боку платы припаять входы драйверов моторчиков и всё...
Хакинг IP-камер на базе SoC HI3518
 
Последнее редактирование:

Yoda

New member
У меня уже есть наработки по этой теме. Есть написанный на андроиде tcp-сервер с выводом изображения на экран. Там же будет и интерфейс управления танком. К танку ещё нужны датчики, пушки и т.д. Вопрос конкретно по теме - нужна нормальная скорость передачи по сети (ethernet, не internet). Пока на этом затык. Если передавать по уарту с due на esp 3-4 кадра в секунду, то это почти всё процессорное время due. Так не пойдёт. Она должна обрабатывать кучу другой инфы.
 

pvvx

Активный участник сообщества
Переделывайте на SPI или SDIO. Там затрат процессорного времени у ESP8266 меньше и возможно включение убогого варианта типа DMA реализованного в чипе...
Arduino-due то зачем :eek:? Она же тормоз и дорогая...
Или оптимизируйте протокол (на UART). Передавайте пакетами в размер 2xMSS хоть на 20Mbit/s.
 
Последнее редактирование:

Yoda

New member
Переделывайте на SPI или SDIO. Там затрат процессорного времени у ESP8266 меньше и возможно включение убогого варианта типа DMA реализованного в чипе...
Arduino-due то зачем :eek:? Она же тормоз и дорогая...
Я пробовал соединять due и esp по 8-битной шине + два управляющих провода. Так на есп это заняло все свободные пины. Да и на due минус 10 пинов это плохо. Естественно программно дёргаю ногами, но не через digitalRead или digitalWrite, а напрямую через регистры. Больше укорить GPIO невозможно. Скорость получилась где-то под 3 мегабита. Тоже самое, что и uart. Мало и муторно.

Кстати, про SPI хорошо, что напомнили. Помню, что-то пробовал делать и отбросил этот вариант. А сейчас глянул темы и смотрю, что люди на 10-и мегабитах по SPI передавали.
Due это нормальный контроллер для моих нужд. Мне нужно много GPIO и достаточно оперативки, чтобы хранить хотя-бы один кадр с камеры. А это почти 80кило. Младшие STM32 не подходят. А платы с stm32f2xx-ые и выше стоят в 2 раза дороже, чем due.

Чтобы заюзать DMA - нужно программировать ESP напрямую. В ардуино библиотеках это же не сделано. Я и для due и для esp использую arduino ide.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Естественно программно дёргаю ногами, но не через digitalRead или digitalWrite, а напрямую через регистры. Больше укорить GPIO невозможно. Скорость получилась где-то под 3 мегабита. Тоже самое, что и uart. Мало и муторно.
Если при передаче есть паузы в 3 символа (на UART) - это будет обрыв пакета и срочная передача. Наверняка дрыгание ногами прерывается другими задачами и получается "конец фрейма", требующий срочной отсылки, а кол-во передач пакетов в сек у ESP мало. Требуется заполнение 2-х пакетов по MSS (что-то вроде 1460 байт - счас не помню - уточните в коде ) и их передача. Тогда на TCP будет принят один ACK и это дает максимальную скорость, т.к. меньше накладных расходов и ожиданий ACK.
 
Последнее редактирование:

Yoda

New member
Вы меня не поняли. Я пишу, что программная параллельная шина это - костыль. Всё передаётся байт в байт, т.к. дёргает клок сама esp. Задача выполнена, но не решает главной проблемы - медленная скорость передачи. А про SPI я всё вспомнил. Он ведь работает с ардуиновскими либами на ESP только в режиме мастера. Поэтому отпадает.
 

pvvx

Активный участник сообщества
Вы меня не поняли. Я пишу, что программная параллельная шина это - костыль.
А я пишу вам как оптимизировать для UART... Вписал в 2 прошлые соо "(на UART)", чтобы не повторять.
И непрерывные 3 Mbit/s по UART не тянут даже дешевые FTD без RTS/CTS - у них блок по 300 с чем-то байт и каждый раз выставляют RTS/CTS на время передачи по USB.
 
Последнее редактирование:

Yoda

New member
А я пишу вам как оптимизировать для UART...
Если при передаче есть паузы в 3 символа - это будет обрыв пакета и срочная передача. Наверняка дрыгание ногами прерывается другими задачами и получается "конец фрейма", требующий срочной отсылки, а кол-во передач пакетов в сек у ESP мало. Требуется заполнение 2-х пакетов по MSS (что-то вроде 1460 байт - счас не помню - уточните в коде ) и их передача. Тогда на TCP будет принят один ACK и это дает максимальную скорость, т.к. меньше накладных расходов и ожиданий ACK.
Честно-говоря не совсем понимаю написанное. У меня не сильно шибкие знания в программировании.

Как esp поймёт, что была пауза в три символа? Ей же пофиг, что там прилетает из уарта. Она просто берёт и отправляет. Что такое MSS и почему их должно быть два? Как мне заполнить 2 пакета MSS и остальное всё непонятно. Больше вопросов, чем ответов.
 

pvvx

Активный участник сообщества
Честно-говоря не совсем понимаю написанное. У меня не сильно шибкие знания в программировании.
А писали:
У меня уже есть наработки по этой теме. Есть написанный на андроиде tcp-сервер с выводом изображения на экран. Там же будет и интерфейс управления танком. К танку ещё нужны .......
Если андроид у вас не правильно принимает по TCP, то что делать? Есть разные "стеки TCP" - в одном из вариантов можно гнать по 2 пакета и на них приходит один ACK.

Как esp поймёт, что была пауза в три символа? Ей же пофиг, что там прилетает из уарта. Она просто берёт и отправляет.
Она обучена аппартано в данной UART2TCP прошивке. Ей сколько ждать, до передачи пакета, если пользователь вводит по одному символу?
Что такое MSS и почему их должно быть два? Как мне заполнить 2 пакета MSS и остальное всё непонятно. Больше вопросов, чем ответов.
Передать по UART в ESP блок размером 1460*2 байта хоть на 20 Mbit/s. Далее сделать паузу. Потом передать ещё такой-же блок и т.д. Но лучше отслеживать RTS/CTS. Это дает большую гарантию и синхронизацию с приемом-передачей по WiFi - вдруг в эфире вторая ESP и как всегда гонит помехи другим...
Причина ваших вопросов и непонимания в этом:
Я и для due и для esp использую arduino ide.
Arduino не рассчитано на скорости по UART более 9600 Baud.
 
Последнее редактирование:

Yoda

New member
Если андроид у вас не правильно принимает по TCP, то что делать? Есть разные "стеки TCP" - в одном из вариантов можно гнать по 2 пакета и на них приходит один ACK.
Сервер на андроиде всё правильно принимает. Я же не писал его с нуля. Всё сделано до нас. Беру стандартный TCP java сокет, создаю поток ввода-вывода и получаю байты. Сколько на телефон прилетело - столько я и получу. Проблема только в есп.

Передать по UART в ESP блок размером 1460*2 байта хоть на 20 Mbit/s. Далее сделать паузу. Потом передать ещё такой-же блок и т.д. Но лучше отслеживать RTS/CTS. Это дает большую гарантию и синхронизацию с приемом-передачей по WiFi.
Опять больше вопросов, чем ответов. Т.е. я выставляю RTS на due и потом жду CTS с esp? А далее передаю 1460 (1460*2) или меньше байт? Есп гарантированно примет эти байты на высокой скорости и без потерь?
 

pvvx

Активный участник сообщества
Сервер на андроиде всё правильно принимает. Я же не писал его с нуля. Всё сделано до нас. Беру стандартный TCP java сокет, создаю поток ввода-вывода и получаю байты. Сколько на телефон прилетело - столько я и получу. Проблема только в есп.

Опять больше вопросов, чем ответов. Т.е. я выставляю RTS на due и потом жду CTS с esp? А далее передаю 1460 (1460*2) или меньше байт? Есп гарантированно примет эти байты на высокой скорости и без потерь?
Почитайте про сигналы RTS-CTS. Вам надо отслеживать занятость ESP.
Гарантированно принимает до 3хMSS на предельной для её ножек UART скорости - это где-то к 20 Mbit/s. Далее сигналы искажены - не успевает встроенный UART и бьет с синхронизацией аппаратуры входов/выходов чипа. На 20 Mbit/s уже искажения, но малые - как-то/где-то работает :).
 

Stelsing

New member
Добрый вечер,
подскажите есть ли возможность управлять подключением с устройства через uart ? Интересует подключиться к серверу, отправить данные, отключиться
 

Yurech

New member
Здравствуйте.
Где можно почитать описание настроек в веб интерфейсе? А особенно TCP-UART Settings,WiFi settings,WiFi Scan,System Setup, и GPIO.
 
Сверху Снизу