Стандартные примеры
Здесь показаны и подробно разобраны все примеры скетчей из поставки библиотеки ELABORY-SX1262. Эти скетчи наглядно демонстрируют основные приёмы и методы работы с библиотекой и передачи данных по LoRa каналу связи.
Скетч sx1262_info
Пример, который выводит в Serial все текущие настройки чипа SX1262. Может использоваться для получения текущей конфигурации подсистемы LoRa контроллера и как пример использования соответствующих функций библиотеки.
/* ELABORY_SX1262 Library Info example */ #includeElaborySx1262 radio; void setup() { Serial.begin(115200); Serial.println(F("Start SX1262 Info example...")); if (!radio.begin()) { Serial.println(F("LoRa error")); while (true); } printLoraInfo(); } void printLoraInfo() { Serial.print(F("Frequency: ")); Serial.println(radio.getFrequency()); Serial.print(F("Power: ")); Serial.println(radio.getPower()); Serial.print(F("Bandwidth: ")); Serial.println(radio.getSignalBandwidth()); Serial.print(F("CodingRate: ")); Serial.println(radio.getCodingRate4()); Serial.print(F("SpreadingFactor: ")); Serial.println(radio.getSpreadingFactor()); Serial.print(F("LowDataRateOptimize: ")); Serial.println(radio.getLowDataRateOptimize()); Serial.print(F("TransmitTimeout: ")); Serial.println(radio.getTransmitTimeout()); Serial.print(F("PreambleLength: ")); Serial.println(radio.getPreambleLength()); Serial.print(F("CRC: ")); Serial.println(radio.getCrc()); Serial.print(F("IQ: ")); Serial.println(radio.getIq()); Serial.print(F("Gain: ")); Serial.println(radio.getGain()); Serial.print(F("OCP: ")); Serial.println(radio.getOCP()); Serial.println(); } void loop() { }
Скетч sx1262_parameters
Пример, который демонстрирует приёмы изменения параметров чипа SX1262 и работу соответствующих функций. Показано изменение текущих настроек SPI интерфейса, установка номеров управляющих GPIO контроллера, установка мощности передатчика и SpreadingFactor. Затем проверяется корректность внесённых изменений путём вывода текущих настроек в Serial.
/* ELABORY_SX1262 Library Set Parameters example */ #includeElaborySx1262 radio; void setup() { Serial.begin(115200); Serial.println(F("Start SX1262 Set Parameters example...")); // SPI interface settings radio.setSPI(SPI); radio.setSPIFrequency(8E6); // 8 MHz // Set LoRa module pins (default 10, 9, 2) radio.setPins(10, 9, 2); // nss, reset, dio1 if (!radio.begin(868E6)) { // default 868 MHz Serial.println(F("LoRa error")); while (true); } // Examples LoRa settings (see Library documentation) radio.setTxPower(10); // 0-22 radio.setSpreadingFactor(5); // 5-12 printLoraInfo(); } void printLoraInfo() { Serial.print(F("Power: ")); Serial.println(radio.getPower()); Serial.print(F("SpreadingFactor: ")); Serial.println(radio.getSpreadingFactor()); Serial.println(); } void loop() { }
Скетч sx1262_presets
Пример сначала демонстрирует LoRa настройки по умолчанию, затем устанавливает пресет для быстрой связи PRESET_FAST и затем снова выводит в сериал подробную информацию по всем текущим настройкам. В результате можно наглядно увидеть все внесённые изменения.
/* ELABORY_SX1262 Library Presets example */ #includeElaborySx1262 radio; void setup() { Serial.begin(115200); Serial.println(F("Start SX1262 Presets example...")); if (!radio.begin()) { Serial.println(F("LoRa error")); while (true); } Serial.println(); Serial.println(F("Default Preset parameters:")); Serial.println(F("-------------------------")); printLoraInfo(); Serial.println(F("Set Preset FAST:")); Serial.println(F("---------------")); radio.setPreset(PRESET_FAST); printLoraInfo(); } void printLoraInfo() { Serial.print(F("Bandwidth: ")); Serial.println(radio.getSignalBandwidth()); Serial.print(F("CodingRate: ")); Serial.println(radio.getCodingRate4()); Serial.print(F("SpreadingFactor: ")); Serial.println(radio.getSpreadingFactor()); Serial.print(F("LowDataRateOptimize: ")); Serial.println(radio.getLowDataRateOptimize()); Serial.print(F("TransmitTimeout: ")); Serial.println(radio.getTransmitTimeout()); Serial.println(); } void loop() { }
Скетч sx1262_receive
Универсальный тестовый скетч для демонстрации приёма LoRa пакетов. Принимает пришедшие пакеты, выводит принятые данные в Serial и демонстрирует качественные показатели приёма беспроводных сигналов (RSSI, SNR и т. д.).
/* ELABORY_SX1262 Library Receive example */ #includebyte buff[255]; ElaborySx1262 radio; void setup() { Serial.begin(115200); Serial.println(F("Start SX1262 Receive example...")); if (!radio.begin()) { Serial.println(F("LoRa error")); while (true); } } void printQuality() { Serial.print(F(" (rssi:")); Serial.print(radio.packetRssi()); Serial.print(F(" snr:")); Serial.print(radio.packetSnr()); Serial.print(F(" sr:")); Serial.print(radio.rssi()); Serial.print(F(")")); } void receiveData() { int bytesRead = radio.receive(buff, sizeof(buff)); if (bytesRead > -1) { for (byte i = 0; i < bytesRead; i++) { Serial.print(' '); Serial.print(buff[i]); } Serial.print(' '); for (byte i = 0; i < bytesRead; i++) {Serial.write(buff[i]);} printQuality(); Serial.println(); } } void loop() { receiveData(); }
Скетч sx1262_transmit_array
Тестовый скетч, который демонстрирует приёмы и методы передачи по LoRa каналу байтовых массивов. Фактически, это основной и наиболее часто используемый метод передачи LoRa данных.
/* ELABORY_SX1262 Library Transmit Array example */ #includebyte arr[] = {0, 1, 2, 30, 40, 50, 160, 170, 180, 253, 254, 255}; ElaborySx1262 radio; unsigned long packets = 0; void setup() { Serial.begin(115200); Serial.println(F("Start SX1262 Transmit Array example...")); if (!radio.begin()) { Serial.println(F("LoRa error")); while (true); } } void transmitArray(byte ar[], int len) { radio.write(ar, len); Serial.print(F("Send ")); Serial.print(len); Serial.println(F(" bytes")); } void loop() { packets++; transmitArray(arr, sizeof(arr)); delay(2000); }
Скетч sx1262_transmit_byte
Пример передачи по LoRa каналу отдельных байтов. Используется относительно редко, но может пригодиться в каких-то экзотических случаях.
/* ELABORY_SX1262 Library Transmit Byte example */ #includeElaborySx1262 radio; unsigned long packets = 0; void setup() { Serial.begin(115200); Serial.println(F("Start SX1262 Transmit Byte example...")); if (!radio.begin()) { Serial.println(F("LoRa error")); while (true); } } void transmitByte(byte b) { radio.write(b); Serial.print(F("Send ")); Serial.println(b); } void loop() { packets++; transmitByte(65); transmitByte(66); transmitByte(67); delay(2000); }
Скетч sx1262_transmit_string
Демонстрация передачи по LoRa каналу связи текстовых строк (данных). Этот метод может использоваться в случаях, когда достаточно просто передать те или иные строки текста (не бинарные данные).
/* ELABORY_SX1262 Library Transmit String example */ #includeElaborySx1262 radio; unsigned long packets = 0; void setup() { Serial.begin(115200); Serial.println(F("Start SX1262 Transmit String example...")); if (!radio.begin()) { Serial.println(F("LoRa error")); while (true); } } void transmitString(String s) { radio.writeString(s); Serial.print(F("Send String >")); Serial.print(s); Serial.println(F("<")); } void loop() { packets++; transmitString("Packet " + String(packets)); delay(2000); }
Заключение
Здесь даны описания только стандартных примеров из библиотеки ELABORY-SX1262, которые демонстрируют основные приёмы и методы работы с ней. Большее количество примеров и руководств во работе с библиотекой ELABORY-SX1262 вы можете найти на других страницах нашего сайта.
Наши услуги по разработке проектов, электроники, сервисов, 3D печати и т. д.