Benutzer-Werkzeuge

Webseiten-Werkzeuge


projekte:grossprojekte:lorawan:7_lora_node_scetch

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
projekte:grossprojekte:lorawan:7_lora_node_scetch [2019/11/05 14:47] – [Was bleibt noch offen] fablab_wikiprojekte:grossprojekte:lorawan:7_lora_node_scetch [2022/12/14 12:47] (aktuell) michael
Zeile 1: Zeile 1:
-=====7 LoRa Node Sketch=====+===== 7LoRa Node Sketch =====
  
 Was bei allen Nodes, egal ob auf Arduino, ESP, Raspi oder anderen Controllern basierend, gleich ist, ist die Notwendigkeit, die erfassten Daten  in das LoRaWAN Netzwerk zu senden. Dazu bedarf es etwas Software, die die Chips (z.B. SX1276 bzw. RFM95W) ansteuern kann. Was bei allen Nodes, egal ob auf Arduino, ESP, Raspi oder anderen Controllern basierend, gleich ist, ist die Notwendigkeit, die erfassten Daten  in das LoRaWAN Netzwerk zu senden. Dazu bedarf es etwas Software, die die Chips (z.B. SX1276 bzw. RFM95W) ansteuern kann.
Zeile 34: Zeile 34:
 Die Bibliothek finden wir bei [[https://github.com/mcci-catena/arduino-lmic|GitHub]]. Die Bibliothek finden wir bei [[https://github.com/mcci-catena/arduino-lmic|GitHub]].
 Nach dem Import in die Arduino-IDE können wir schon fast loslegen. Nach dem Import in die Arduino-IDE können wir schon fast loslegen.
 +(Stand 07.11.2020: Bibliothek Verson 3.2.0)
  
 **Fast?**\\ **Fast?**\\
Zeile 56: Zeile 57:
 //#define LMIC_USE_INTERRUPTS //#define LMIC_USE_INTERRUPTS
 </code> </code>
-Entfernt die beiden Schrägstriche vor der Zeile #define CFG_eu868 1. Speichern - fertig.\\+Entfernt die beiden Schrägstriche vor der Zeile #define CFG_eu868 1 und #define CFG_sx1276_radio 1. Alle anderen CFG-Zeilen werden mit zwei Schrägstrichen auskommentiert. Datei speichern - fertig.\\
 <WRAP center round important 60%> <WRAP center round important 60%>
 Nach einem Update der Bibliothek prüft, ob die Datei **"lmic_project_config.h"** nicht überschrieben wurde. Nach einem Update der Bibliothek prüft, ob die Datei **"lmic_project_config.h"** nicht überschrieben wurde.
Zeile 286: Zeile 287:
     // Reset the MAC state. Session and pending data transfers will be discarded.     // Reset the MAC state. Session and pending data transfers will be discarded.
     LMIC_reset();     LMIC_reset();
 +    LMIC_setLinkCheckMode(0); 
 +    LMIC.dn2Dr = SF9; 
 +    LMIC_setDrTxpow(DR_SF7, 14);
     // Start job (sending automatically starts OTAA too)     // Start job (sending automatically starts OTAA too)
     do_send(&sendjob);     do_send(&sendjob);
Zeile 301: Zeile 304:
 In den Zeilen 56, 60 und 66 müssen wir irgendwelche Adressen eintragen. Dazu später mehr. Um dies vornehmen zu können, müssen wir vorher [[projekte:grossprojekte:lorawan:9_ttn_konto|dies hier]] abgearbeitet haben. In den Zeilen 56, 60 und 66 müssen wir irgendwelche Adressen eintragen. Dazu später mehr. Um dies vornehmen zu können, müssen wir vorher [[projekte:grossprojekte:lorawan:9_ttn_konto|dies hier]] abgearbeitet haben.
  
-In Zeile 69 wird es schon etwas interessanter: Hello Wolrd! LOL+In Zeile 69 wird es schon etwas interessanter: Hello World! LOL
 Das ist der "Datensatz" der später in den LoRaWAN-Netzwerk gesendet werden soll - natürlich als Test. Später sollen es ja Messwerte von Sensoren sein. Das ist der "Datensatz" der später in den LoRaWAN-Netzwerk gesendet werden soll - natürlich als Test. Später sollen es ja Messwerte von Sensoren sein.
  
-Zeile 74 erklärt sich auch fast von selbst. Wir erinnern uns, die Belegunbgszeit eines Nodes auf den Funkfrequenzen unterliegt gewissen Einschränkungen. Also wird man nur ab und an senden - hier momentan alle 60 Sekunden.+Zeile 74 erklärt sich auch fast von selbst. Wir erinnern uns, die Belegungszeit eines Nodes auf den Funkfrequenzen unterliegt gewissen Einschränkungen. Also wird man nur ab und an senden - hier momentan alle 60 Sekunden.
  
 Zeile 77 bis 82. Zeile 77 bis 82.
-Etwas ganz Wichtiges. Hiermit definieren wir die Pins, an die der LoRa Chip angeschlossen ist. Da wir ein Graduino-Shield benutzen, ist hier unbedingt einen Anpassung nötig.+Etwas ganz Wichtiges. Hiermit definieren wir die Pins, an die der LoRa Chip angeschlossen ist. Da wir ein Dragino-Shield benutzen, ist hier unbedingt einen Anpassung nötig.
 Ersetzt diese Zeilen mit diesen Zeilen: Ersetzt diese Zeilen mit diesen Zeilen:
 <code C [enable_line_numbers="true", start_line_numbers_at="77"]> <code C [enable_line_numbers="true", start_line_numbers_at="77"]>
Zeile 323: Zeile 326:
 Schon hier merken wir, dass für die zeitliche Einteilung einer Datenübertragung die Loop-Schleife nicht verwendet werden kann. Für die Bereitstellung der Daten müssen wir also an anderer Stelle entsprechenden Code einfügen. Dies wäre z.B. bei Zeile 154. Dazu später mehr. Schon hier merken wir, dass für die zeitliche Einteilung einer Datenübertragung die Loop-Schleife nicht verwendet werden kann. Für die Bereitstellung der Daten müssen wir also an anderer Stelle entsprechenden Code einfügen. Dies wäre z.B. bei Zeile 154. Dazu später mehr.
  
-Nehmen wir an, wir hätten das Thema Adressen geklärt und der Sketch würde compiliert werden, dann erhielten wir die Nachricht, dass auf dem Uno nur noch sehr wenig Speicherplatz übrig bliebe. Sollten wir also Sendoren mit etwas umfangreicher Software verwenden, müssten wir Speicherplatz sparen, oder auf einen Mega ausweichen. +Nehmen wir an, wir hätten das Thema Adressen geklärt und der Sketch würde compiliert werden, dann erhielten wir die Nachricht, dass auf dem Uno nur noch sehr wenig Speicherplatz übrig bliebe. Sollten wir also Sensoren mit etwas umfangreicher Software verwenden, müssten wir Speicherplatz sparen, oder auf einen Mega ausweichen. 
-Etwas Speicher würde frei werden, wenn wir die Kommunikation in den seriellen Monitor entfernen würden. Im richtigen Leben hängt der Node auch nicht am Rechner und wir lesen mit.+Etwas Speicher würde frei werden, wenn wir die Kommunikation zum seriellen Monitor entfernen würden. Im richtigen Leben hängt der Node auch nicht am Rechner und wir lesen auch nicht mit.
 Eine Idee wäre dieses über einen Compiler-Schalter zu bewerkstelligen. Dann könnte man auch gleich die "leeren" Case Fälle entfernen. Eine Idee wäre dieses über einen Compiler-Schalter zu bewerkstelligen. Dann könnte man auch gleich die "leeren" Case Fälle entfernen.
 Ich habe das mal ganz brutal gelöscht und die wichtigen Passagen für die Erweiterung für Sensoren markiert. Dieser Sketch läßt genau 378 Byte für Variablen übrig. Ich habe das mal ganz brutal gelöscht und die wichtigen Passagen für die Erweiterung für Sensoren markiert. Dieser Sketch läßt genau 378 Byte für Variablen übrig.
Zeile 393: Zeile 396:
 const unsigned TX_INTERVAL = 60; const unsigned TX_INTERVAL = 60;
  
-// Pin Mapping für Graduino LoRa Shield for Arduino+// Pin Mapping für Dragino LoRa Shield for Arduino
 const lmic_pinmap lmic_pins = { const lmic_pinmap lmic_pins = {
   .nss = 10,   .nss = 10,
Zeile 448: Zeile 451:
   // Reset the MAC state. Session and pending data transfers will be discarded.   // Reset the MAC state. Session and pending data transfers will be discarded.
   LMIC_reset();   LMIC_reset();
-  LMIC_setClockError(MAX_CLOCK_ERROR * 2 / 100); 
-  LMIC_setupChannel(0, 868100000, DR_RANGE_MAP(DR_SF12, DR_SF7),  BAND_CENTI);      // g-band 
-  LMIC_setupChannel(1, 868300000, DR_RANGE_MAP(DR_SF12, DR_SF7B), BAND_CENTI);      // g-band 
-  LMIC_setupChannel(2, 868500000, DR_RANGE_MAP(DR_SF12, DR_SF7),  BAND_CENTI);      // g-band 
-  LMIC_setupChannel(3, 867100000, DR_RANGE_MAP(DR_SF12, DR_SF7),  BAND_CENTI);      // g-band 
-  LMIC_setupChannel(4, 867300000, DR_RANGE_MAP(DR_SF12, DR_SF7),  BAND_CENTI);      // g-band 
-  LMIC_setupChannel(5, 867500000, DR_RANGE_MAP(DR_SF12, DR_SF7),  BAND_CENTI);      // g-band 
-  LMIC_setupChannel(6, 867700000, DR_RANGE_MAP(DR_SF12, DR_SF7),  BAND_CENTI);      // g-band 
-  LMIC_setupChannel(7, 867900000, DR_RANGE_MAP(DR_SF12, DR_SF7),  BAND_CENTI);      // g-band 
-  LMIC_setupChannel(8, 868800000, DR_RANGE_MAP(DR_FSK,  DR_FSK),  BAND_MILLI);      // g2-band 
  
-  LMIC_setLinkCheckMode(0); 
-  LMIC.dn2Dr = SF9; 
-  LMIC_setDrTxpow(DR_SF7, 14); 
   // Start job (sending automatically starts OTAA too)   // Start job (sending automatically starts OTAA too)
   do_send(&sendjob);   do_send(&sendjob);
Zeile 494: Zeile 484:
 Glücklicherweise ermöglicht es uns TTN diese Daten direkt mit **copy** zu übernehmen und mit **paste** einzusetzen - ergibt schon keine Tippfehler.\\ Glücklicherweise ermöglicht es uns TTN diese Daten direkt mit **copy** zu übernehmen und mit **paste** einzusetzen - ergibt schon keine Tippfehler.\\
 \\ \\
-Holen wir uns also die Daten. In TTN anmelden, die gewünschte Applikation wählen und dann das Device für das wir die Daten benötigen. Auf der Übersichtsseite für das Device finden wir nun die Daten.+Holen wir uns also die Daten. Zur besseren Verständlichkeit nachfolgend Screenshots einer Anmeldung bei TTN und dem Verauf der Datenabfrage.\\  
 +In TTN anmelden, die gewünschte Applikation wählen und danach das Device für das wir die Daten benötigen. Auf der Übersichtsseite für das Device finden wir nun die Daten.
 \\ \\
 \\ \\
Zeile 566: Zeile 557:
 \\ \\
 \\ \\
-Stand: 05.11.2019+Stand: 30.11.2020
  
  
  
  
projekte/grossprojekte/lorawan/7_lora_node_scetch.1572965231.txt.gz · Zuletzt geändert: 2019/11/05 14:47 von fablab_wiki