• Система автоматизации с открытым исходным кодом на базе 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.
 
Сверху Снизу