Änderungen
Aus Hackerspace Ffm
LoRaWAN
,/* Was ist das The Things Network (TTN) */
= Vortrag auch zu LoRa, LoRaWAN und TheThingsNetwork auf der Make Darmstadt 2019 =
Auf der [http://make-darmstadt.de/ Make Darmstadt] hat Lutz Lisseck vom Hackerspace FFM ein Vortrag zum Thema "Die lizenzfreie Übertragung kleiner Datenmengen per Funk" gehalten, die Folien zum Vortrag gibt es auch hier: [[Datei:Die_lizenzfreie_Übertragung_kleiner_Datenmengen.pdf]]
= Rückblick: Workshop zu LoRa und LoRaWAN =
Am 25. Februar 2018 von 15 bis etwa 21 Uhr fand der 1. Teil des Workshops zu LoRa und LoRaWAN bei uns im Hackerspace statt.
Der 2. Teil ist geplant an einem Sonntag im April, ebenfalls von 15 bis etwa 21 Uhr im Hackerspace.
Please note: The main language of the workshop will be German, so the presentations of the workshop will be held in German language. However, there will be a lot of people who can assist you if you have issues in understanding the language and of course I am open to answer your questions in English as well.
Folgendes steht/stand auf der Agenda:
== Agenda Teil 1 ==
[[Datei:IMG_20180225_184530744.jpg|400px]]
* Begrüßungsrunde
** Anwendungfälle der Teilnehmer: Bienenstöcke vor Diebstahl schützen, Stratosphärenballon, Feinstaubmessungen
* Vortrag Teil A: LoRa
** Was ist LoRa und wie funktioniert es?
** Verfügbare LoRa Module und mit LoRa ausgestattete Boards
** Legale Nutzung von LoRa: Nutzbare Frequenzen, Duty-cycle und Bandbreite Beschränkungen, maximale Leistung
** Wie macht man eine LoRa Punkt-zu-Punkt-Verbindungen mit Arduino?
* Workshop Teil A:
** Ziel: Erreichen einer Punkt-zu-Punkt-Verbindung via LoRa unter Arduino
** Anschluss von LoRa (RFM95) Modulen an Arduino-Boards (433MHz und 868MHz)
** Konfiguration und Einstellungen für LoRa unter Arduino
** Senden und Empfangen von LoRa Paketen
* Vortrag Teil B: LPWAN / LoRaWAN / The Things Network
** Wozu LPWAN? Derzeitige Situation der konkurierenden Systeme
** Was ist ein LoRaWAN?
** The Things Network: [https://vimeo.com/136731514 Spoilervideo :-)]
*** Was kann man damit alles machen?
*** Wie baut man eine Node?
*** Wie kommt man an die Daten und verarbeitet sie weiter?
* Workshop Teil B:
** Ziel: Aus dem Setup von Teil A eine Node fürs TTN machen und die Daten im TTN empfangen
** Zurechtfinden in der (leider etwas weniger intuitiven) Standard Node Software für Arduino (LMIC)
** ABP Einstellungen, um die Node zum TTN hinzuzufügen
** Empfang der Telegramme in der Console von thethingsnetwork.org
* Field-Day: Wir testen die Reichweite der Node
* Schlussbesprechung
== Vorläufige Agenda-Ideen Teil 2: (Termin steht noch nicht fest) ==
* Mitmachen und Erweitern des TheThingsNetworks durch ein eigenes Gateway (=Basisstation, =Konzentrator)
* Was ist ein LoRaWAN Konzentrator?
* Aufbau des TheThingsNetwork
* Standortanforderungen für Gateways
* Komponenten zum Selbstbau oder Einkauf für LoRaWAN Gateways
* Antennen (ggf. Selbstbau) für Gateways
* Workshop: Aufbau eines Gateways und Verbinden mit dem TTN. Antennenbau und Reichweitentests
= LoRa =
== Was ist LoRa? ==
Datei:RFM95_LoRa_Modul_868_MHz_und_Antenne.jpg|RFM95 LoRa Modul - hier für 868 MHz mit Antenne
Datei:Ra-01_Ai-Thinker_LoRa_Modul_443_MHz_und_Antennen.jpg|Ra-01 Ai-Thinker LoRa Modul - hier für 433 MHz mit Antennen in unterschiedlichen Bauformen
Datei:ESP32_mit_SSD1306_OLED_und_LoRa_und_Antenne.jpg|link=Heltec_Wifi_LoRa_32|ESP32 mit OLED und LoRa und Antenne für <strike>868 MHz</strike> 433 MHz (hat ein SX1278)Datei:LoRa TestBoards.jpg|link=MikroEckeBauteile|Zwei Testboards aus unserem Workshop sind in der [[MikroEcke]] zu finden
</gallery>
=== Ai-Thinker Ra-01 oder Ra-02 ===
Der Unterschied zwischen Ra-01 und Ra-02 ist lediglich der, dass der Ra-01 die Antenne an einem der Pads herausgeführt hat (und meist eine Federantenne dabei liegt), während beim Ra-02 eine Buchse für einen Antennenstecker dran ist (IPEX).
==Antenne = Heltec Wifi LoRa 32 - ESP32 mit OLED und LoRa ======= Arduino ====Um dieses sehr interessante Modul via Arduino nutzen zu können, reichte bei mir die [https://github.com/espressif/arduino-esp32 Standard-ESP32-Arduino Bibliothek], die man wie dort beschrieben installiert. Aus der recht großen Liste der Arduino Boards konnte ich gleich "Heltec_WIFI_LoRa_32" wählen und damit das Modul programmieren. Es gibt auch ein [http://www.heltec.cn/download/WIFI_LoRa_32_Diagram.pdf Dokument mit dem Heltec ESP32 Pinout].
Antennen sind für eine bestimmte Frequenz optimiert. In Europa wird das ISM-Band mit 868 Mhz verwendet.<br>Die Wellenlänge berechnet sich nach folgender Formel: [[Datei:Wavelength.PNG]]<br>f =frequency in hertz (Hz) <br>λ =wavelength in meters (m)<br>c =speed of light (299.792.458 m/s)<br><br>[[Datei:Wavelength_of_868.PNG]]<br>Die Antenne muss also 34.5 cm lang sein oder ein 1/2λ = Weisse LED 17.25, 1/4λ =8.63, 1/8λ ===Sollte an Pin 25 sein4.31, ...
==== Display ==LoRa Bibliotheken ==Verbaut ist ein OLED Display vom Typ SSD1306, Hier gibt es ist ein 128x64 Monochrom Displayfolgende Bibliotheken:* [https://github. Es ist NICHT an den Standardcom/sandeepmistry/arduino-I2CLoRa LoRa by Sandeep Mistry] Einfach nur zur Ansteuerung des LoRa-Leitungen angeschlossen Moduls in Arduino ohne viel Balast und braucht ein Resetohne Schnick-SignalSchnack. Bei manchen Bibliotheken sind Sinnvoll daher kleine Modifikationen nötigfür Punkt-zu-Punkt Verbindungen, um aber nicht für Netzwerke.* [http://www.airspayce.com/mikem/arduino/RadioHead/ RadioHead] Hier die Bibliothek für sehr viele verschiedene Funkmodule. Hiermit können auch (Mesh-)Netzwerke aufgebaut werden und das Display zu benutzenIP-Protokoll über Funk abgewickelt werden. LoRaWAN fürs TTN wird allerdings hiermit nicht unterstützt.
{| class="wikitable" style="text-align:center"
!RFM95
!Arduino
|-
|VCC
|3.3V
|-
|GND
|GND
|-
|SCK
|SCK
|-
|MISO
|MISO
|-
|MOSI
|MOSI
|-
|NSS
|10
|-
|NRESET
|9
|-
|DIO0
|2
|-
|DIO2
|3 (LoRaWan)
|}
</pre>
=== Erweiterung um Packete zu empfangen ===
<pre>
case EV_TXCOMPLETE:
Serial.print(F("EV_TXCOMPLETE: "));
if (LMIC.txrxFlags & TXRX_ACK) {
//rxcounter++;
Serial.println(F("Received ack."));
}
if (LMIC.dataLen) {
Serial.print(F("Received "));
Serial.print(LMIC.dataLen);
Serial.print(F(" bytes of payload: "));
for(int d=0; d<LMIC.dataLen; d++) {
Serial.print(*(uint8_t *)(LMIC.frame+LMIC.dataBeg+d), HEX);
Serial.print(" ");
}
//rxcounter2 += LMIC.dataLen;
}
// Schedule next transmission
Serial.print(F(" txChn1 "));
Serial.print(LMIC.txChnl);
Serial.print(F(", datarate "));
Serial.println(LMIC.datarate);
os_setTimedCallback(&sendjob, os_getTime()+sec2osticks(TX_INTERVAL), do_send);
break;
</pre>
== Konfiguration für bestimmte Hardware ==
=== ESP32 ===
Der ESP32 hat eine sog. Schaltmatrix und man kann damit sämtliche wichtigen IO-Funktionen auf andere Pinne "umbiegen". Das Umbiegen gelingt unter Arduino meist indem beim XXX.begin() die Pinne als Parameter übergeben werden (wo normalerweise nix übergeben wird).
Um typische ESP32 + OLED + LoRA-Module richtig zu befeuern, muss man daher im Setup noch vor dem LMIC-Init eine Zeile hinzufügen, die die Pinne entsprechend für die SPI zuordnet - bei mir ging das mit folgender Zeile:
<pre>
SPI.begin(5, 19, 27, 18);
</pre>
Die Syntax ergibt sich dabei übrigens aus den Headern des ESP32 Arduino Moduls - hier mal einige Zeilen aus den Headern, aus denen hervorgeht, wie man Pinne umbelegen kann:
<pre>
void begin(int8_t sck=-1, int8_t miso=-1, int8_t mosi=-1, int8_t ss=-1); // SPI.h
void begin(int sda=-1, int scl=-1, uint32_t frequency=100000); // Wire.h
void begin(unsigned long baud, uint32_t config=SERIAL_8N1, int8_t rxPin=-1, int8_t txPin=-1, bool invert=false); // Hardware-Serial
</pre>
Folgendes Pinmapping wurde dann noch LMIC übergeben:
<pre>
const lmic_pinmap lmic_pins = {
.nss = 18,
</pre>
Achtung: GPIO5 (SCK) kollidiert manchmal mit I2C was für OLED Displays benutzt wird! = LoRaWAN == ESP8266 ===Hier hat der TTN Zugang mit folgender Konfiguration geklappt: {| class="wikitable" style= Was ist LoRaWAN? "text-align:center"! RFM95 Pin! ESP8266 GPIO#! ESP8266 D#|-|DIO1|4|D2|-|DIO0|5|D1|-|MISO|12|D6|-|MOSI|13|D7|-|SCK|14|D5|-|NSS|15|D8|-|RESET|16|D0|} <pre>const lmic_pinmap lmic_pins ={ .nss =D8,LoRaWAN steht .rxtx = LMIC_UNUSED_PIN, .rst = D0, .dio = {D1, D2, LMIC_UNUSED_PIN},};</pre> === Lora32u4 === Dieses Board gibts von BSFrance und auch als feather32u4 von Adafruit.Wenn man mit PlatformIO das Board in Betrieb nehmen will braucht man folgendes Target in der platformio.ini (Port durch lokale Eintellung ersetzen):<pre>[env:feather32u4]platform = atmelavrboard = feather32u4framework = arduinoupload_flags = -P$UPLOAD_PORTupload_port = /dev/ttyACM3monitor_port = /dev/ttyACM3monitor_baud = 9600</pre> Das Pinmapping für Long Range Wide Area Networkdie LMIC Bücherei ist wie folgt:<pre>const lmic_pinmap lmic_pins = { . Basierend auf nss = 8, .rxtx = LMIC_UNUSED_PIN, .rst = 4, .dio = {7, 6, LMIC_UNUSED_PIN},};</pre> '''Obacht, uffbasse:''' Auf dem Board eine Brücke zwischen Pin 6 und DIO1 (IO-Pin 6 und der IO1 des LoRa Modulation wird hier ein Netzwerk aufgebaut-Moduls) setzen/löten!!1!einself Wenn die fehlt, dass wegen der hohen Reichweite mit relativ wenig Gateways recht große Flächen abdecken dann kannkein LoRaWAN-Paket erfolgreich übermittelt werden, weil ein Interrupt fehlt. == Sonstige Bibliotheken ==* [https://github.com/rocketscream/Low-Power Low-Power Library für Arduino]* [https://lcd-web.nl/ttngenerator/ TTN Generator]