Базовая передача данных LORA
Я использовал два комплекта модулей ESP32 и Ebyte 433 МГц UART LORA для передачи и приема данных на большие расстояния. Этому модулю LORA не нужна библиотека. Мы можем просто использовать Serial.print() и Serial.read() для передачи и приема. При получении нам нужно декодировать данные из символа в целое число. Я использовал HardwareSerial Two вместо Serial. Производитель устанавливает канал, адрес и ключ в значения по умолчанию, поэтому нет необходимости менять их, пока мы не завершим базовую схему и не проведем дистанционное тестирование. Это будет работать из коробки. Убедитесь, что оба модуля имеют одинаковый номер детали. Модуль E220-400T22D рассчитан на расстояние 5 км. Поскольку я использовал низкое напряжение 3,3 В VCC, я смог легко пройти около 500 м (полкилометра) без прямой видимости, используя мощность около 25 МВт.
В некоторых странах используются разные частоты и ограничения мощности для передачи LORA. Для внутреннего тестирования нам не нужна антенна. Если мы не используем антенны, нам нужно отключать питание на несколько минут каждый час, чтобы охладить модуль. Причина в том, что радиочастотное питание будет возвращено обратно в модуль, если антенна не найдена, и она будет выделять тепло.
Несмотря на то, что эти модули могут использоваться для передачи и приема одновременно, я использовал один из них для передачи, а другой для приема только для простоты. Вы можете внести изменения в передачу обратной связи для подтверждения. Я использовал потенциометр для источника данных. Вы можете использовать любые датчики или любые данные для передачи. Вы можете использовать полученные данные для сохранения в базе данных или управления чем-либо с помощью MOSFET или relay.
Модуль передатчика
// Transmitter code
HardwareSerial SerialAT(1);
#define KNOB 4
int readVal;
void setup() {
SerialAT.begin(9600,SERIAL_8N1,16,17);
}
void() {
readVal = analogRead(KNOB);
SerialAT.println(readVal);
delay(500);
}
Модуль приемника
// Receiver code
HardwareSerial SerialAT(1);
void setup() {
Serial.begin(9600);
SerialAT.begin(9600,SERIAL_8N1,16,17);
}
void() {
if (SerialAT.available()) {
Serial.write(SerialAT.read());
}
}
Перед загрузкой, пожалуйста, нажмите на следующие и введите / выберите
Файл → Настройки → Тип https://dl.espressif.com/dl/package_esp32_index.json в дополнительных URL-адресах менеджера досок
Инструменты → Плата → Менеджер плат → Введите esp32 и нажмите кнопку установить рядом с esp32 от Espressif Systems
Инструменты → Плата → ESP32 Arduino → Модуль ESP32 Wrover
Инструменты → Порт (выберите правильный порт)
Расширенная настройка (необязательно)
При приеме в UART данные поступают в виде одного символа за раз. Например, целое число 3256 имеет вид символа “3”, затем символа “2”, затем символа “5”, а затем символа “6”, наконец, новой строки символа “\ r”. Чтобы снова преобразовать их в число, нам нужно расшифровать это. Я показал простой декодер ниже. Просто замените:
( (SerialAT.available()) {
Serial.write(SerialAT.read());
}
со следующими кодами:
( (SerialAT.available()) {
static char[[;]
;static uint8_t i;char c = SerialAT.read ();
if ( c != '\r' && i < 7 ) // assuming "Carriage Return" is chosen as the line ending character
[i++] = c;
else
{
input[i] = '\0';
i = 0;
int receivedNumber = atoi( input ); // Now the receivedNumber is an integer we can store or
// use this value to control devices
}
}
Программное обеспечение и руководство по настройке RF можно загрузить с https://www.ebyte.com/en/data-download.html?id=579&pid=211#load . Для этого конкретного модуля диапазон адресов равен 0 ~ 65535; Диапазон каналов равен 0 ~ 83; Частота ключа равна 0 ~ 65535. Вы можете установить комбинацию разных адресов и ключей для безопасной передачи. Кроме того, вы также можете использовать зашифрованные данные и / или биты контрольной суммы.