Dragino LoRa Shield: Ideal für LoRa-Anwendungen

Dragino LoRa Shield: Ideal für LoRa-Anwendungen

Arduino, Projekte
8 Dezember 2020

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.

Der Dragino LoRa-Shield.
Der LoRa-Shield.

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.
Der Arduino und der LoRa-Shield.
Arduino & LoRa-Shield.
  1. Anschließend öffnest du Arduino IDE und installierst die Radio Head Library. Dabei gehst du folgendermaßen vor:

  • Falls du als Betriebssystem Linux nutzt, öffnest du ein Terminal und lässt den Befehl „git clone https://github.com/PaulStoffregen/RadioHead“ ausführen.
git clone https://github.com/PaulStoffregen/RadioHead

  • Sofern du auf Windows zurückgreifst, öffnest du den Link „https://github.com/PaulStoffregen/RadioHead“ und lädst die Bibliothek herunter.
https://github.com/PaulStoffregen/RadioHead
Der LoRa Code auf Github
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…“.
Einbinden einer ZIP-Bibliothek in der Arduino IDE.
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:
LoRa - Server.ino
Server.ino
LoRa - Client.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“.

Die beiden Arduinos mit ihren Dragino LoRa Shields.
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

Wie hilfreich war dieser Beitrag?

Klicke auf die Sterne um zu bewerten!

Durchschnittliche Bewertung 4.4 / 5. Anzahl Bewertungen: 7

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

Kommentare

  1. Mann! Was ist denn das für eine bescheuerte Kommentarfunktion
    Einmal Enter gedrückt und schon wird der Kommentar abgesendet.
    Das ist doch Quatsch

    unter der URL https://github.com/PaulStoffregen/RadioHead

    steht Teensy-Only Copy of RadioHead

    Das heisst die library von Paul Stoffregen wurde speziell für Teensy-Boards angepasst
    da sind doch Schweirigkeiten bei der Verwendung anderer Boards vor-PROGRAMMIERT

Hinterlasse ein Kommentar

XHTML: Sie können diese Tags verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>