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

Модуль NodeMCU-32S и датчик CWT-Soil-TH-S

ОлегК

New member
К модулю NodeMCU-32S ESP-32S) я подключаю датчик CWT-Soil-TH-S по протоколу Modbus RTU. Модуль имеет выводы аппаратной шины UART0 (TX0, RX0). Выводы для шин UART1 и UART2 отсутствуют.
Программу я разрабатываю в esp-idf. Пример esp-idf/examples/protocols/modbus/serial/mb_master предполагает подключение RS485 - ttl к выводам UART. В Arduino есть библиотека SoftwareSerial для программной реализации шины UART. Известны ли для esp-idf решения аналогичные SoftwareSerial, которые позволят NODEMCU-32S взаимодействовать с устройством Modbus?
1712520590354.png
 

ОлегК

New member
Раз вы пишете в esp-idf то зачем вам SoftwareSerial? У вашего ESP-32 аж 3 аппаратных UART.
Разобрался с конфигурированием UART . Как выяснилось, в примере esp-idf/examples/protocols/modbus/serial/mb_master уже есть вызов функции uart_set_pin(), которая привязывает шины UART и выводы платы ESP-32.
Код:
    // Set UART pin numbers
    err = uart_set_pin(MB_PORT_NUM, CONFIG_MB_UART_TXD, CONFIG_MB_UART_RXD,
                              CONFIG_MB_UART_RTS, UART_PIN_NO_CHANGE);
Таким образом, необходимости в SoftwareSerial нет. Пришлось переделать структуру holding_reg_params_t под тип данных, которые передает датчик: параметры float заменить на uint_16t.
Код:
typedef struct
{
    uint16_t holding_data0;
    uint16_t holding_data1;
} holding_reg_params_t;
В приложении файл master.c - текст примера, основанного на mb_master, который опрашивает CWT-Soil-TH-S и выводит значения влажности и температуру почвы.
Схема соединений в заголовке текста примера. Задавать какие-либо параметры через idf.py не нужно.
Возможно, кому-то пригодится.
 

Вложения

Сверху Снизу