User Tools

Site Tools


lets_plaiy:lorawan:start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
lets_plaiy:lorawan:start [2026/04/27 17:20] jan.sonntaglets_plaiy:lorawan:start [2026/04/28 12:20] (current) jan.sonntag
Line 5: Line 5:
  
 ===== Was ist LoRaWAN? ===== ===== Was ist LoRaWAN? =====
 +{{pdfjs 75%,500px>:lets_plaiy:lorawan:lorawan-introduction.pdf}}
  
 ===== The Things Network ===== ===== The Things Network =====
Line 28: Line 29:
 Das Terminal werden wir auch im weiteren Teil des Workshops verwenden. Das Terminal werden wir auch im weiteren Teil des Workshops verwenden.
  
-===== Erste manuelle Tests ===== +===== Was sind AT-Befehle und wie funktionieren sie? =====
-Falls du das LoRa-Modul ohne Python-Skript direkt über die vom Modul verwendenten AT-Befehle testen möchtest, kannst du das Terminalprogramm **Minicom** verwenden. Dies ist besonders nützlich, um die RX/TX-Crossover-Funktionalität zu prüfen oder die Hardware-Verbindung zu verifizieren.+
  
-==== 1. Installation ==== +AT-Befehle (abgeleitet von **AT**tention) sind ein standardisierter Befehlssatz zur Steuerung von Modems und Funkmodulen über eine serielle Schnittstelle (UART). In diesem Workshop dienen sie als Brücke zwischen dem Raspberry Pi und dem LoRa-E5 Modul, um komplexe LoRaWAN-Prozesse durch einfache Textbefehle zu steuern.
-Zuerst muss Minicom auf dem Raspberry Pi installiert werden: +
-<code> +
-sudo apt install minicom +
-</code> +
- +
-==== 2. Minicom starten ==== +
-Starte die Kommunikation über die serielle Schnittstelle mit einer Baudrate von 9600: +
-<code> +
-sudo minicom -b 9600 -D /dev/serial0 +
-</code> +
-//Hinweis: Der Pfad /dev/serial0 verweist auf die primäre UART-Schnittstelle des Pi.// +
- +
-==== 3. Konfiguration im Terminal ==== +
-Da Minicom standardmäßig deine Eingaben nicht anzeigt, musst du das lokale Echo aktivieren. Die Steuerung erfolgt über **STRG+A**, gefolgt von einer weiteren Taste: +
- +
-^ Befehl ^ Funktion ^ +
-| STRG+A => E | **Echo aktivieren**: Damit siehst du, was du tippst. | +
-| STRG+J | **Eingabe bestätigen**: Sendet den Befehl an das Modul. | +
-| STRG+A => X | **Beenden**: Minicom verlassen und zum Terminal zurückkehren. | +
-| STRG+A => C | Terminalfenster aufräumen (Clear). |+
  
-==== 4. Wichtige AT-Testbefehle ==== +==== Funktionsweise im Projekt ==== 
-Sobald die Verbindung stehtkannst du das Modul mit folgenden Befehlen direkt steuern[cite: 65]:+Die Kommunikation erfolgt nach einem einfachen Frage-Antwort-Prinzip: Der Raspberry Pi sendet eine Zeichenfolge an das Modulund das Modul führt die entsprechende Aktion aus oder gibt Informationen zurück. 
  
-AT-Befehl ^ Beschreibung ^ +  * **Syntax:** Jeder Befehl beginnt mit dem Präfix ''AT''. Parameter werden meist mit einem Gleichheitszeichen (''='') angehängt, während Abfragen oft durch ein Fragezeichen oder den reinen Befehl erfolgen. 
-AT | Testet die RX/TX Kommunikation. Das Modul sollte mit "OK" antworten[cite: 65]| +  * **Testen:** Ein einfaches ''AT'' dient als Verbindungstest; das Modul antwortet im Idealfall mit "OK"
-AT+ID | Zeigt die Geräte-IDs an (DevEui, DevAddr, JoinEui), die für TTN benötigt werden[cite: 65]| +  * **Konfiguration:** Befehle wie ''AT+ID'' werden genutzt, um Hardware-spezifische Adressen wie die DevEui oder AppEui auszulesen, die für die Registrierung im Netzwerk zwingend erforderlich sind
-| AT+MODE | Zeigt den aktuellen Modus des Moduls an[cite65]. | +  * **Aktion:** Mit Befehlen wie ''AT+JOIN'' wird der komplexe Prozess der Netzwerkanmeldung gestartet. Erst nach einer erfolgreichen Bestätigung durch das Modul ("Network joined") können weitere Befehle zum Senden von Daten (zB. ''AT+MSG'' für Text oder ''AT+MSGHEX'' für Hexadezimalwerte) genutzt werden.
-AT+JOIN | Sendet eine Beitrittsanfrage an das LoRaWAN-Netzwerk[cite: 65]+
-AT+MSG="Text" | Sendet eine einfache Textnachricht als ASCII-Zeichen[cite: 65]|+
  
-**Wichtig:** Befehle zur Kommunikation (wie das Senden von Nachrichten) funktionieren erst nach einer erfolgreichen Netzwerk-Anfrage (Join)[cite10].+{{pdfjs 75%,500px>:lets_plaiy:lorawan:lora-e5_at_command_specification_v1.0_.pdf}}
  
 ===== Tests mit Python (Beispiel Skript) ===== ===== Tests mit Python (Beispiel Skript) =====
Line 112: Line 90:
             print("6 Reset des Moduls") # Falls timeout wegen zuviel anfragen             print("6 Reset des Moduls") # Falls timeout wegen zuviel anfragen
             print("7 Nachricht im Loop senden (alle 45s)")             print("7 Nachricht im Loop senden (alle 45s)")
 +            print("c Beliebigen AT-Befehl senden")
             print("q Beenden")             print("q Beenden")
             # print("f Mit TTN verbindung Forcen (AT+JOIN=FORCE)")             # print("f Mit TTN verbindung Forcen (AT+JOIN=FORCE)")
Line 175: Line 154:
                 except KeyboardInterrupt:                 except KeyboardInterrupt:
                     print("\nLoop durch Benutzer abgebrochen. Kehre zum Menü zurück...")                     print("\nLoop durch Benutzer abgebrochen. Kehre zum Menü zurück...")
 +
 +            elif choice == 'c':
 +                msg = input("command: ")
 +                send_command(ser, msg)
  
             elif choice == 'q':             elif choice == 'q':
Line 213: Line 196:
  
 > **Hinweis:** Die Funktionen zur Datenübertragung (Text/Hex/Loop) stehen erst zur Verfügung, wenn die Netzwerkanfrage erfolgreich war und das Modul "Network joined" meldet. > **Hinweis:** Die Funktionen zur Datenübertragung (Text/Hex/Loop) stehen erst zur Verfügung, wenn die Netzwerkanfrage erfolgreich war und das Modul "Network joined" meldet.
 +
 +==== Payload Decoder ====
 +Um die Daten, welche in TTN über LoRaWAN ankommen, zu decodieren kann ein sogenannter Payload Decoder hinterlegt werden. Da die Daten in diesem Fall über die ASCII Tabelle (Gerne mal googeln) codiert wurden in Hexadezimal, sieht der Decoder in diesem Fall so aus:
 +<file javascript decoder.js>
 +function decodeUplink(input) {
 +  var bytes = input.bytes;
 +  
 +  // Konvertierung der Bytes in einen String (ASCII)
 +  var text = "";
 +  for (var i = 0; i < bytes.length; i++) {
 +    text += String.fromCharCode(bytes[i]);
 +  }
 +
 +  return {
 +    data: {
 +      type: "TEXT_MSG",
 +      message: text,
 +      length: bytes.length
 +    }
 +  };
 +}
 +</file>
  
 ===== Credits ===== ===== Credits =====
lets_plaiy/lorawan/start.1777303242.txt.gz · Last modified: 2026/04/27 17:20 by jan.sonntag