Как передать AT-команды Лоре из UART ESP32?

Я подключил "Reyax RYLR998" Модуль Lora подключен к ESP32 UART2, но AT-команды прошли через последовательный порт оборудования, но он не работает.

#define RXD2 16
#define TXD2 17

void setup()
{
    Serial.begin(115200);
    Serial2.begin(115200, SERIAL_8N1, RXD2, TXD2);

    Serial.print("\nSetting Lora Module \n");

    Serial2.print("AT+BAND=865000000\r\n");
    if (Serial2.available())
        Serial.println(Serial2.read());
    delay(1000);

    Serial2.print("AT+ADDRESS=1\r\n");
    if (Serial2.available())
        Serial.println(Serial2.read());
    delay(1000);

    Serial2.print((String)"AT+NETWORKID=5\r\n");
    if (Serial2.available())
        Serial.println(Serial2.read());
    delay(1000);
}

void loop()
{
    while (Serial2.available())
    {
        Serial.print(char(Serial2.read()));
    }
}

Я пробовал

Serial2.print((String)"AT+NETWORKID=5\n");
Serial2.println((String)"AT+NETWORKID=5\r");
Serial2.print((String)"AT+NETWORKID=5\r");

Ничего не помогло, никакого ответа от AT-команды, Пожалуйста, помогите мне, я работаю над одной и той же проблемой уже 2 дня.

Соединение RYLR998 с EPS32

[![Здесь все AT-команды работают хорошо][2]][2]

, 👍1

Обсуждение

Добавьте к своему вопросу схему подключения и ссылку на документацию вашего модуля Lora. Похоже, вы установили скорость передачи данных UART модуля Lora на 9600, но Serial2 ESP32 все еще имеет скорость 115200. Они должны совпадать. 9600 сохраняется во флэш-памяти Lora для последующих подключений., @6v6gt

Хорошая идея — попробовать использовать устройство FTDI для подключения между модулем LORA и ПК, чтобы вы могли передавать команды LORA через последовательную консоль, как показано на втором изображении. Однако, похоже, вы неправильно подключили TX и RX. Их необходимо пересечь. Передача на одном устройстве на прием на другом и т. д. Поэкспериментируйте со скоростью передачи данных на последовательной консоли, скажем, 9600 или 115200., @6v6gt

Извините, я подключил правильно, на изображении неправильно, я взял его из другого места, я подключил tx к rx и rx к tx, @MrNams

Документация находится здесь: https://reyax.com/products/RYLR998. Попробуйте использовать устройство FTDI, подключенное к модулю Lora, с помощью USB-кабеля, подключенного к вашему ПК. На данный момент игнорируйте ESP32. Просто введите команду «AT», затем <enter> на последовательной консоли, и она должна дать ответ «+OK». Начните со скорости передачи данных 115200 на последовательной консоли. Если это не помогло, попробуйте снизить частоту до 9600. Возможно, FTDI не сможет обеспечить достаточную мощность для функции передачи, но ее должно быть достаточно для теста «AT»., @6v6gt

Да, он отлично работает при подключении к USB и подаче AT-команды. Как долго ждать и как ждать после того, как я подам AT-команду модулю lora через ESP32 SoftwareSerial?, @MrNams

Я бы попробовал ввести команду AT, подождал 1 секунду, пока результат станет доступен, а затем выполнил следующее: while (Serial2.available()) Serial.print(Serial2.read());` . Попробуйте для начала использовать простое «AT». Какую скорость передачи данных вы использовали в последовательном мониторе для успешных тестов с адаптером FTDI?, @6v6gt

Пожалуйста, исправьте или удалите изображение в вашем вопросе с неправильной проводкой FTDI TX/RX. Если вы установили успешное соединение между модулями LORA и ESP32, добавьте ответ на свой вопрос с помощью кода, который вы использовали. Это может помочь кому-то другому., @6v6gt

Я буквально сдался, код работает с Node MCU, я думаю, что ESP32 нужно настроить и т. д. Всем спасибо., @MrNams


1 ответ


2

Я новичок в модуле Lora и ESP32 и играю всего неделю.

Я успешно отправил AT-команды модулю RYLR998 через ESP32 и получил сообщения через другой RYLR998, подключенный к другому компьютеру через последовательный порт USB UART. Вам нужно использовать trim(), прежде чем отправлять строку в Serial2.(ryltr998)

trim()
[StringObject Function]
Description
Get a version of the String with any leading and trailing whitespace removed. The trim() function modifies the String in place rather than returning a new one.

Syntax
myString.trim()
,