W tym poście chciałbym opisać sposób wykonania komunikacji pomiędzy dwoma urządzeniami wyposażonymi w moduły Lora.
Podłączenie:
Wykorzystywany przeze mnie moduł LORA RC-SM1276-868 oparty na układzie Semtech SX1276.
Dokumentację do układu można znaleźć pod tym linkiem.
Sposób podłączenia pod Ardunio Nano wygląda następująco:
- Arduino 3v3 - VDD -Pin 2,
- Arduino GND - GND - Pin 3,4,
- Arduino D10 - NSS - Pin 15,
- Arduino D2 - DIO0 - Pin 6,
- Arduino D13 - SCK - Pin 12,
- Arduino D12 - MISO - Pin 13,
- Arduino D11 - MOSI - Pin 14,
- Arduino D9 - NRESET - Pin 5;
Programowanie:
Na samym początku należy pobrać odpowiednią bibliotekę. Ja wykorzystuje bibliotekę LORA przedstawioną na obrazku poniżej:
W celu przetestowania układu można się posłużyć prostym przykładem nadajnika/odbiornika (LoRaReceiver oraz LoRaSender).
Dokładny opis biblioteki można znaleźć pod tym linkiem.
Poniżej zmodyfikowany program nadajnika/odbiornika:
Dokładny opis biblioteki można znaleźć pod tym linkiem.
Poniżej zmodyfikowany program nadajnika/odbiornika:
- #include <SPI.h>
- #include <LoRa.h>
- int counter = 0;
- int loopVal = 0;
- void setup() {
- Serial.begin(9600);
- while (!Serial);
- Serial.println("LoRa Receiver");
- if (!LoRa.begin(866E6)) {
- Serial.println("Starting LoRa failed!");
- while (1);
- }
- }
- void loop() {
- // try to parse packet
- int packetSize = LoRa.parsePacket();
- if (packetSize) {
- // received a packet
- Serial.print("Received packet '");
- // read packet
- while (LoRa.available()) {
- Serial.print((char)LoRa.read());
- }
- // print RSSI of packet
- Serial.print("' with RSSI ");
- Serial.println(LoRa.packetRssi());
- }
- if(loopVal >= 5000)
- {
- Serial.print("Sending packet: ");
- Serial.println(counter);
- loopVal = 0;
- //SendPacket
- LoRa.beginPacket();
- LoRa.print("test ");
- LoRa.print(counter);
- LoRa.endPacket();
- counter++;
- }
- loopVal++;
- delay(1);
- }