Inhaltsverzeichnis:

Einfache Arduino LoRa-Kommunikation (mehr als 5 km) - Gunook
Einfache Arduino LoRa-Kommunikation (mehr als 5 km) - Gunook

Video: Einfache Arduino LoRa-Kommunikation (mehr als 5 km) - Gunook

Video: Einfache Arduino LoRa-Kommunikation (mehr als 5 km) - Gunook
Video: So weit funkt LoRa | Reichweite und Signalstärke der ESP32 LoRa Boards im Test 2024, Juli
Anonim
Einfache Arduino LoRa-Kommunikation (mehr als 5 km)
Einfache Arduino LoRa-Kommunikation (mehr als 5 km)

Wir werden E32-TTL-100 mit meiner Bibliothek testen. Es ist ein drahtloses Transceiver-Modul, arbeitet mit 410 441 MHz (oder 868 MHz oder 915 MHz) basierend auf dem Original RFIC SX1278 von SEMTECH, transparente Übertragung ist verfügbar, TTL-Pegel. Das Modul verwendet die LORA-Spreizspektrumtechnologie.

Lieferungen

  • Arduino UNO
  • LoRa e32-Geräte

Optional

  • Mischianti Arduino LoRa-Schild (Open Source)
  • Mischianti WeMos LoRa-Schild (Open Source)

Schritt 1: Gerätespezifikationen

Das Modul verfügt über den FEC Forward Error Correction-Algorithmus, der seine hohe Codierungseffizienz und gute Korrekturleistung gewährleistet. Bei plötzlichen Störungen kann er die gestörten Datenpakete automatisch korrigieren, so dass Zuverlässigkeit und Reichweite entsprechend verbessert werden. Aber ohne FEC können diese Datenpakete nur verworfen werden. Und mit der rigorosen Verschlüsselung und Entschlüsselung wird das Abfangen von Daten sinnlos. Die Funktion der Datenkomprimierung kann die Übertragungszeit und die Wahrscheinlichkeit von Störungen verringern und gleichzeitig die Zuverlässigkeit und Übertragungseffizienz verbessern.

  • Modulgröße: 21*36mm
  • Antennentyp: SMA-K (50Ω Impedanz)
  • Übertragungsentfernung: 3000m (max.)
  • Maximale Leistung: 2 dB (100 mW)
  • Übertragungsraten: 2,4 Kbit/s (6 optionale Stufen (0,3, 1,2, 2,4, 4,8, 9,6, 19,2 Kbit/s)
  • Emissionslänge: 512ByteReceive
  • Länge: 512Byte
  • Kommunikationsschnittstelle: UART – 8N1, 8E1, 8O1,
  • Acht Arten von UART-Baudraten, von 1200 bis 115200bps (Standard: 9600)
  • RSSI-Unterstützung: Nein (Integrierte intelligente Verarbeitung)

Schritt 2: Übertragungstyp

Übertragungsart
Übertragungsart

Transparente Übertragung Dies kann wie ein „Demo-Modus“betrachtet werden, standardmäßig können Sie Nachrichten an alle Geräte mit der gleichen konfigurierten Adresse und dem gleichen Kanal senden.

Feste Übertragung

Bei dieser Art der Übertragung können Sie eine Adresse und einen Kanal angeben, wohin Sie die Nachricht senden möchten. Sie können eine Nachricht senden an:

  • Spezifiziertes Gerät mit einer vordefinierten Adresse Low, Address High und Channel.
  • Nachricht an eine Reihe von Kanalgeräten senden Normaler Modus Einfach eine Nachricht senden.

Schritt 3: Gerätemodus

Normaler ModusEinfach Nachricht senden.

Wake-up-Modus und Energiesparmodus

Wie Sie beabsichtigen, wenn sich ein Gerät im Wake-up-Modus befindet, können Sie ein oder mehrere Geräte, die sich im Energiesparmodus befinden, mit einer Präambelkommunikation „aufwecken“.

Programm-/Schlafmodus

Mit dieser Konfiguration können Sie die Konfiguration Ihres Geräts ändern.

Schritt 4: Gerät verdrahten

Verdrahtungsgerät
Verdrahtungsgerät
Verdrahtungsgerät
Verdrahtungsgerät

Hier das Schema der Verbindung des Geräts, dies ist ein vollständig verbundenes, mit Verwaltung von M0 und M1-Pin ermöglicht die Änderung der Modalität des Geräts, sodass Sie mit dem Programm in den Konfigurations- oder Aufweckmodus wechseln können. Die Bibliothek hilft Ihnen bei all dem Betrieb.

Schritt 5: Konfiguration

Aufbau
Aufbau

Existieren Sie einen angegebenen Befehl zum Einstellen und Abrufen der Konfiguration

Void setup () { Serial.begin (9600); Verzögerung (500); // Alle Pins und UART starten e32ttl100.begin (); ResponseStructContainer c; c = e32ttl100.getConfiguration(); // Es ist wichtig, den Konfigurationszeiger vor allen anderen Operationen zu erhalten Configuration configuration = *(Configuration*) c.data; Serial.println (c.status.getResponseDescription()); Serial.println (c.status.code); printParameters(Konfiguration); ResponseStructContainer cMi; cMi = e32ttl100.getModuleInformation(); // Es ist wichtig, den Informationszeiger vor allen anderen Operationen zu erhalten ModuleInformation mi = *(ModuleInformation*)cMi.data; Serial.println (cMi.status.getResponseDescription()); Serial.println (cMi.status.code); printModuleInformation(mi); }

Schritt 6: Konfigurationsergebnis

Und das Ergebnis wird

Starterfolg 1 ---------------------------------------------------- HEAD BIN: 11000000 192 C0 AddH BIN: 0 AddL BIN: 0 Chan BIN: 23 -> 433MHz SpeedParityBit BIN: 0 -> 8N1 (Standard) SpeedUARTDataRate BIN: 11 -> 9600bps (Standard) SpeedAirDataRate BIN: 10 -> 2.4kbps (Standard) OptionTrans BIN: 0 - > Transparente Übertragung (Standard) OptionPullup BIN: 1 -> TXD, RXD, AUX sind Push-Pulls/Pull-Ups OptionWakeup BIN: 0 -> 250ms (Standard) OptionFEC BIN: 1 -> Schalten Sie den Forward Error Correction Switch ein (Standard) OptionPower BIN: 0 -> 20dBm (Standard) ---------------------------------------- Erfolg 1 ---------------------------------------- HEAD BIN: 11000011 195 C3 Modell-Nr.: 32 Version: 44 Funktionen: 14 ----------------------------------------

Schritt 7: Nachricht senden

Nachricht senden
Nachricht senden

Hier eine einfache Skizze, um eine Nachricht an alle an den Kanal angeschlossenen Geräte zu senden

void loop() { // Wenn etwas verfügbar ist if (e32ttl100.available()>1) { // die String-Nachricht lesen ResponseContainer rc = e32ttl100.receiveMessage(); // Geht etwas schief Druckfehler if (rc.status.code!=1){ rc.status.getResponseDescription(); } Else {// Drucken Sie die empfangenen Daten Serial.println (rc.data); } } if (Serial.available ()) { String input = Serial.readString (); e32ttl100.sendMessage (Eingabe); } }

Schritt 8: Schild für Arduino

Schild für Arduino
Schild für Arduino

Ich erstelle auch ein Schild für Arduino, das für das Prototyping sehr nützlich ist.

Und ich veröffentliche es hier als Open Source Projekt

www.pcbway.com/project/shareproject/LoRa_E32_Series_device_Arduino_shield.html

Schritt 9: Bibliothek

Bücherei
Bücherei

GitHub-Repository

Hilfeforum

Zusätzliche Dokumentation

Empfohlen: