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

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

pvvx

Активный участник сообщества
Неа. DHCP выключаем - статик на роутере не поможет :)
У меня так и работает. Надо ставить вписывать IP и т.д. на station. Конфликта нет. Когда снимаете галку DHCP - IP и прочее остается вписанным.
Или выключаем DHCP, и руками на модули ставим, что нужно. Или оставляем включенным DHCP, а на роутере гвоздим его статиком.
Так что толпа вариантов. :)
 

shaman1010

Member
У меня так и работает. Надо ставить вписывать IP и т.д. на station. Конфликта нет. Когда снимаете галку DHCP - IP и прочее остается вписанным.
Это и есть отключение DHCP на модуле. Роутер здесь не участвует в присвоении адресов, вне зависимости есть на роутере статик на MAC девайса, либо нет. Но статик на роутере поможет, если модуль обнулить и перешить - тогда по умолчанию (DHCP включен) роутер выдаст модулю тот адрес, который в нем загвоздили за этим MAC-ом. ;)
p.s. подразумевается WiFi роутер и DHCP сервер = одно устройство.
 

Yurech

New member
У station галочку DHCP снять и в роутере назначить фиксированный адрес по MAC.
Снял галочку DHCP. И все заработало без прописки мак адреса. Адрес всегда фиксирован получился.
Но теперь проблема в другом. Есть у меня ардуино и блютуз модуль НС-05. На телефоне стоит Каскада. При нажатии в Каскаде на кнопку мгновенно получаю реакцию на ардуино включением светодиода на пине 13, отпускаю кнопку сразу гаснет. Тогда беру esp8266, подключаю вместо НС-05, вход RX через делитель напряжения, TX напрямую. Настраиваю Каскаду на роботу с WIFI вбиваю сервер IP esp8266 порт 12345. Также в настройках esp8266 пункт TCP2UART ставлю скорость 9600, все другие параметры без изменений. Запускаю шарманку. Жму кнопку в Каскаде, светодиод на ардуино включается с задержкой пол секунды, отпускаю кнопку диод гаснет задержкой 2 сек. Жму повторно кнопу тогда теряется связь с сервером. А сели подождать между нажатиями с интервалом 3-5 сек. тогда работает, на задержки остаются. Где можно подкорректировать настройки модуля для хорошего быстродействия?
Другой модуль WIFI RACK425 такой проблемы не имеет хотя тоже работает как прозрачный УАРТ.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Где можно подкорректировать настройки модуля для хорошего быстродействия?
Изначально стоят предельные. На 9600 Baud - время передачи от последнего символа в пакете UART - 2 ms (2 символа). При других, более скоростных baud, к примеру 3 000 000 baud - около 0.2 ms. RACK425 имеет большие задержки.
Другой модуль WIFI RACK425 такой проблемы не имеет хотя тоже работает как прозрачный УАРТ.
RAK425 работает с AT командами. Кто такая 'Каскада' и на каком протоколе работает я не знаю и знать не хочу. Напишите в 'Каскада' чтобы опубликовали тип протокола и соответствие к RFC стандартам.
 

Yurech

New member
Напишите в 'Каскада' чтобы опубликовали тип протокола и соответствие к RFC стандартам.
Работает по протоколу MODBUS. Выступает как беспроводная HIM панель на андроиде в плеймаркете таких много есть.
Все компоненты (ввода и вывода) имеют связь с контроллером через сетевые переменные ,назначенные в контроллере .Сетевые переменные это регистры ,которые имеют адресацию в контроллере.Биты в контроллере обьеденены в регистры (16 бит) .Но по сети в любом случае передается регистры .Тогда в Каскаде компоненты привязываете к сетевым устройствам ,их регистрам (адресам) и битам (номера) .И задаете в зависимости от канала связи сервера -если блютуз то выбираете по мас адресу то или иное устройство из списка ,если вайфай то прописываете IP адрес и порт .если юсби то делаете настройки канала ...

 

pvvx

Активный участник сообщества
Работает по протоколу MODBUS. Выступает как беспроводная HIM панель на андроиде в плеймаркете таких много есть.
Все компоненты (ввода и вывода) имеют связь с контроллером через сетевые переменные ,назначенные в контроллере .Сетевые переменные это регистры ,которые имеют адресацию в контроллере.Биты в контроллере обьеденены в регистры (16 бит) .Но по сети в любом случае передается регистры .Тогда в Каскаде компоненты привязываете к сетевым устройствам ,их регистрам (адресам) и битам (номера) .И задаете в зависимости от канала связи сервера -если блютуз то выбираете по мас адресу то или иное устройство из списка ,если вайфай то прописываете IP адрес и порт .если юсби то делаете настройки канала ...
Для Modbus есть свой драйвер стандарт по TCP. Он работает на модуле.
Снимок1150.gif Снимок1152.gif Снимок1153.gif Снимок1154.gif Снимок1156.gif
И более полный вариант тут Modbus TCP / RTU RS-485 + WEB server
 
Последнее редактирование:

Yurech

New member
Попробовал..... Тот же результат:(
Если б было плохо настроены поты или адреса тогда, вообще не работало. А так получается что немного работает и немного не работает. Жаль моего скила не хватит на решение этой проблемы.:(
 

pvvx

Активный участник сообщества
Попробовал..... Тот же результат:(
Если б было плохо настроены поты или адреса тогда, вообще не работало. А так получается что немного работает и немного не работает.
Значит ваша программа неправильная - не поддерживает стандарты. Сделана для рекламы работы с продаваемым к ней оборудованием, которое не поддерживает стандарты.
С любым промышленным оборудованием прошивка Modbus TCP/RTU (RS-485) работает. Проверено неоднократно.
Вам уже отвечал:
Напишите в 'Каскада' чтобы опубликовали тип протокола и соответствие к RFC стандартам.
Я участвовать в рекламе их поддерживаемого оборудования не собираюсь. Это возможно только в случае перевода нормальной суммы на поддержку хоть данного сайта. Тогда можно будет подумать о встраивании их кривых протоколов в отдельной версии. :)
 
Последнее редактирование:
Добрый вечер всем! Помогите пожалуйста кто знает ! PVVX то по-любому знает :) , но может еще кто знает.
Пытаюсь разобраться с исходником этого переходника . Хочу вывести сообщение в юарт к примеру "12345" , и хочу вывести сообщение в TCP такое же. Не получается вообще..

Пробовал:
Код:
os_sprintf(payload, MACSTR ",%s", MAC2STR(macaddr), "12345\r\n");
        ets_uart_printf("12345 \r\n");
        tcp_write(conn->pcb, "12345", len, 0);
Пытаюсь вставить код в файл TCP2UART.c где идет по моим предположениям передача в тср.

Код:
//-------------------------------------------------------------------------------
// TCP sent_cb (UART->bufo->TCP)
//-------------------------------------------------------------------------------
err_t ICACHE_FLASH_ATTR tcp2uart_sent_cb(TCP_SERV_CONN *conn) {
#if DEBUGSOO > 3
    tcpsrv_sent_callback_default(conn);
#endif
    tcp2uart_conn = conn;
    if(conn->cntro) {
        uint32 len = mMIN(conn->pcb->snd_buf, conn->cntro);
#if DEBUGSOO > 5
        os_printf(" sent2 %u bytes\n", len);
#endif
        os_printf(" sent2 %u bytes\n", len);
        //tcp_write(conn->pcb, "12345\r\n", len, 0);
        os_sprintf(payload, MACSTR ",%s", MAC2STR(macaddr), "12345\r\n");
        ets_uart_printf("ESP8266 platform starting... \r\n");
        if(tcp_write(conn->pcb, uart_drv.uart_rx_buf, len, 0)!= ERR_OK) {
#if DEBUGSOO > 1
                os_printf("tcp2uart: err sent!\n");
#endif
        }
        if(len) {
            uart_del_rx_chars(len);
            conn->cntro -= len;
        }
    }
    return ERR_OK;
}
 

Virtual

New member
@Артемий
os_printf выдаст в сообщение в DEBUG_UART (по умолчанию в конфиге это порт 1)
ets_uart_printf имхо китайзло:) и вроде тоже будет настроен на DEBUG_UART

пользуй (посимвольный вывод)
uart0_write_char
uart1_write_char


PS а можно нескромный вопрос зачем все это?
 
Мне надо при нажатии на кнопку отправить строку в тср .
А как в тср отправить хотя бы символ?
 

Virtual

New member
@Артемий
смотри лучше пример /app/mdbtcp
это проще!
какая кнопка? (вэб или gpio)
почему tcp ?
(кст udp в разы проще! ибо не нужно ждать когда соединение подымется)
и зачем это? в чем истинный смысл?
 
@Артемий
смотри лучше пример /app/mdbtcp
это проще!
какая кнопка? (вэб или gpio)
почему tcp ?
(кст udp в разы проще! ибо не нужно ждать когда соединение подымется)
и зачем это? в чем истинный смысл?
Спасибо за подсказку !
Дело в том что tcp2uart соединение уже устанавливается и передаются строки из uart в тср , я хочу сохранить тот функционал + по нажатию на кнопку gpio x отправлять строку в тср , такая задача стоит .
Устройство должно иметь веб интерфейс .
Я эту задачу уже сделал на основе примера sta_tcp_client. Но надо еще и веб .
Поэтому пришлось разбираться с этим проектом :)
 

pvvx

Активный участник сообщества
Мне надо при нажатии на кнопку отправить строку в тср .
А как в тср отправить хотя бы символ?
Отдельным TCP соединением.
То, что вы вписали работать не будет. Причин много - во первых не туда, во вторых там крутится только когда открыто соединение, в третьих не туда посылаете, и так-же есть до двадцатых.. :)
Спасибо за подсказку !
UDP через WiFi - нуль гарантий что дойдет.
Поэтому пришлось разбираться с этим проектом :)
Почему не используете Arduino? Там web и прочее есть...
 
>>Почему не используете Arduino? Там web и прочее есть...

Предпочитаю использовать сразу правильный инструмент . Ардуино почему то не люблю , с самого его рождения ..
 
Сверху Снизу