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

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