Dragino LoRa Shield: Ideal für LoRa-Anwendungen

LoRa ist ein Netzwerkprotokoll mit dem du viele spannende Projekte verwirklichen kannst. WIr zeigen dir wie! Alles was du brauchst sind zwei Arduinos und zwei LoRa-Shields!

Beim Dragino LoRa Shield handelt es sich um einen Langstrecken-Transceiver, der über einen Arduino-Shield-Formfaktor verfügt. Er nutzt dabei den RFM95W-Transceiver von HopeRF, ein beliebtes Modul, was LoRa-Anwendungen betrifft. Das Dragino LoRa Shield enthält sowohl die komplette Sende- als auch Empfangslogik und funktioniert auf Grundlage einer Open-Source-Library. Im Hinblick auf geeignete Bibliotheken bietet sich bei einem RFM95W-Transceiver die „RadioHead Library“ an. Wir zeigen dir, wie du mithilfe des Dragino LoRa Shields einen LoRa-Sender- und -Empfänger erstellst. Konkret wird ein simpler Chat zwischen Client und Server programmiert.

Was bedeutet LoRa eigentlich?

LoRa ist die Abkürzung für Long Range, eine Funktechnologie, die explizit für IoT-Projekte konzipiert wurde. Ein entscheidender Vorteil bei dieser Technik ist die große Reichweite von bis zu 10 Kilometern, aber auch der vergleichsweise niedrige Energieverbrauch und eine kostengünstige Implementierung zeichnen LoRa aus. Dazu ist die Technologie äußerst flexibel: Sie kann als eigenständige Punkt-zu-Punkt-Connection angewandt werden, aber auch in einem öffentlichen oder privaten Netzwerk – Stichwort LoRaWAN.

LoRa Sensoren werden in der Regel durch langlebige Batterien betrieben, wodurch Wartungsarbeiten nur selten notwendig sind. Die Sensoren werden unter anderem zur Messung von Luftfeuchtigkeit, Lichtintensität, Vibration, Temperatur und Bewegung genutzt, aber auch zum Asset-Tracking und zur Indoor-Ortung. Sie kommen vor allem im Rahmen von Smart-Lösungen in den eigenen vier Wänden, in landwirtschaftlichen sowie in Industriebtrieben zum Einsatz.

In Abgrenzung zu LoRa: Was versteht man unter LoRaWAN?

LoRaWAN bedeutet Long Range Wide Area Network und steht für ein Low-Power-Wireless-Netzprotokoll, das in der Regel in einer Sterntopologie aufgebaut ist. Die beteiligten Endgeräte kommunizieren dabei über Gateways, die kleine Datenmengen an einen Server senden. Die Daten können anschließend individuell weiterverarbeitet werden. Der Server ist indes mit Schnittstellen ausgestattet, über die eine Verbindung zu mehreren IoT-Modulen hergestellt werden kann. Mithilfe des Netzwerkes können gar mehrere hundert Sensoren gleichzeitig genutzt werden. Vorteilhaft am LoRaWAN ist, dass lokale komplexe Installationen nicht erforderlich sind.

Soft- und Hardware: Das brauchst du für dein Projekt

WARENKORB

Alle für dieses Projekt notwendigen Artikel landen mit einem Klick auf den Button direkt in deinem Warenkorb, sofern sie in unserem Shop verfügbar sind. Kontrolliere daher deinen Warenkorb genau!

Schritt für Schritt erklärt: So erstellst du einen LoRa-Sender und -Empfänger

  1. Im ersten Schritt musst du das Dragino Shield auf das Arduino Board stecken.
Arduino & LoRa-Shield.
  1. Anschließend öffnest du Arduino IDE und installierst die Radio Head Library. Dabei gehst du folgendermaßen vor:

git clone https://github.com/PaulStoffregen/RadioHead

https://github.com/PaulStoffregen/RadioHead
Klicke auf den grünen Button um die ZIP-Bibliothek herunterzuladen!

  1. Navigiere dann zur Arduino IDE und klicke auf „Sketch“, anschließend auf „Bibliothek einbinden“ und schließlich auf „ZIP-Bibliothek hinzufügen…“.
Klicke hier auf: “ZIP-Bibliothek hinzufügen…”
  1. Nun kommen die beiden Codes „Client.ino“ und „Server.ino“ ins Spiel. Beide Codebeispiele sind in der Bibliothek unter Radiohead/rf95 zu finden. Solltest du dir die Beispiele anschauen wollen, dann hast du nachfolgend die Gelegenheit dazu.

Client.ino :

#include <SPI.h>
#include <RH_RF95.h>


RH_RF95 rf95;



void setup() 
{


  Serial.begin(9600);
  while (!Serial) ; // Wait for serial port to be available
  if (!rf95.init())
    Serial.println("init failed");
}

void loop()
{
  Serial.println("Sending to rf95_server");
  // Send a message to rf95_server
  uint8_t data[] = "Hello World from Sender n:1";
  rf95.send(data, sizeof(data));
  
  rf95.waitPacketSent();
  // Now wait for a reply
  uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];
  uint8_t len = sizeof(buf);

  if (rf95.waitAvailableTimeout(3000))
  { 
    // Should be a reply message for us now   
    if (rf95.recv(buf, &len))
   {
      Serial.print("got reply: ");
      Serial.println((char*)buf);
//      Serial.print("RSSI: ");
//      Serial.println(rf95.lastRssi(), DEC);    
    }
    else
    {
      Serial.println("recv failed");
    }
  }
  else
  {
    Serial.println("No reply, is rf95_server running?");
  }
  delay(400);
}

Server.ino :

#include <SPI.h>
#include <RH_RF95.h>

// Singleton instance of the radio driver
RH_RF95 rf95;

void setup() 
{

     
  Serial.begin(9600);
  while (!Serial) ; // Wait for serial port to be available
  if (!rf95.init())
    Serial.println("init failed");  

}
void loop()
{
  if (rf95.available())
  {
    // Should be a message for us now   
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];
    uint8_t len = sizeof(buf);
    if (rf95.recv(buf, &len))
    {
      
//      RH_RF95::printBuffer("request: ", buf, len);
      Serial.print("got request: ");
      Serial.println((char*)buf);
//      Serial.print("RSSI: ");
//      Serial.println(rf95.lastRssi(), DEC);
      
      // Send a reply
      uint8_t data[] = "And hello back to you";
      rf95.send(data, sizeof(data));
      rf95.waitPacketSent();
      Serial.println("Sent a reply");
       
    }
    else
    {
      Serial.println("recv failed");
    }
  }
}

  1. Lade zunächst den Sketch „Client.ino“ auf dem ersten Arduino Board hoch und im Anschluss den Sketch „Server.ino“ auf dem zweiten Arduino Board. Wie das im Detail vonstattengeht, erfährst du in diesem anschaulichen YouTube-Tutorial. Wenn du jetzt die beiden Arduino Sketches – jeweils einzeln – mit dem seriellen Monitor (9600 Baudrate) öffnest, bekommst du das folgende Resultat:
Server.ino
Client.ino

Falls du weitere Beispielcodes ausprobieren möchtest, klickst du auf „Datei“, anschließend auf „Beispiele“, auf „RadioHead“ und zum Schluss auf „rf95“.

Deine beiden Arduinos mit LoRa-Shield: Server & Client

Herzlichen Glückwunsch, jetzt ist es geschafft!

Wir wünschen dir viel Spaß mit diesem Projekt und hoffen, dass du mit Hilfe dieses Tutorials noch viele weitere Projekte realisieren kannst. Solltest du Fragen haben, so kannst du diese gerne in den Kommentaren stellen. Alle benötigten Teile für das Projekt findest du noch einmal hier!

Dein BerryBase-Team

Die mobile Version verlassen