Änderungen
Aus Hackerspace Ffm
LoRaWAN
,/* Was ist das The Things Network (TTN) */
= Aktuell: Workshop Vortrag auch zu LoRa und , 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]]
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:
== Vorläufige 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?
* Schlussbesprechung
== Vorläufige Agenda-Ideen Teil 2: (Termin steht noch nicht fest) ==
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 ==
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λ = 17.25, 1/4λ = 8.63, 1/8λ = 4.31, ...
== LoRa Bibliotheken ==
* [https://github.com/sandeepmistry/arduino-LoRa LoRa by Sandeep Mistry] Einfach nur zur Ansteuerung des LoRa-Moduls in Arduino ohne viel Balast und ohne Schnick-Schnack. Sinnvoll daher für Punkt-zu-Punkt Verbindungen, 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 IP-Protokoll über Funk abgewickelt werden. LoRaWAN fürs TTN wird allerdings hiermit nicht unterstützt.
== Hardware ==
{| 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)
|}
== Quellen ==
[https://hackaday.com/2017/09/11/the-things-network-sets-702-km-distance-record-for-lorawan/ Reichweitenrekord von 702 Km.]
== Was ist das [https://www.thethingsnetwork.org/ The Things Network ] (kurz: TTN)? ==Das [https://www.thethingsnetwork.org/ The Things Network ] biete basierend auf der LoRa Technologie ein Community betriebenes Wide Area Network. Im Empfangsbereich eines Gateways kann man so mit einer LoRa-Node gebührenfrei Daten ins Internet funken, allerdings nur einige Bytes jede Minute. Wenn noch kein Gateway im Empfangsbereich ist, kann man das Netzwerk selbst um eigene Gateways erweitern.
[[Datei:LoRaGoPort_aufRPi.jpg|600px|LoRaWAN Gateway mit LoRaGo Port auf Raspberry Pi]]
LoRaGo PORT einrichten für TTN: http://sandboxelectronics.com/?p=2696#Extra_Using_the_onboard_GPS_data_as_gateway_location
=== Gateway Infos ===
* <pre>sudo tcpdump -AUq port 1700</pre> zeigt Verkehr mit TTN an
* Mehr über Antennen: https://www.thethingsnetwork.org/forum/t/the-big-and-small-antenna-topic-part-1/7880
=== Applikation einrichten ===
Unter "Applications" mit "add application" eine neue Anwendung erstellen.<br>
Danach die Application auswählen. Oben rechts den Reiter "Devices" anwählen und "register device" drücken z.B. "pondtempsensornode" als id eingeben.<br>
Unter "Device Overview" die "Activation Method" von OTAA auf ABP stellen und "Frame counter checks" anhaken.
== LoRaWAN Bibliotheken ==
== 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,
.rxtx = LMIC_UNUSED_PIN,
.rst = 14,
.dio = {26, 33, 32},
};
</pre>
Damit war die Belegung für den LoRa-Chip wie folgt:
{| class="wikitable" style="text-align:center"
! RFM95 Pin
! ESP32 GPIO#
|-
|DIO2
|32
|-
|DIO1
|33
|-
|DIO0
|26
|-
|MISO
|19
|-
|MOSI
|27
|-
|SCK
|5
|-
|NSS
|18
|-
|RESET
|14
|}
Achtung: GPIO5 (SCK) kollidiert manchmal mit I2C was für OLED Displays benutzt wird!
=== ESP8266 ===
};
</pre>
'''Obacht, uffbasse:'''
Auf dem Board eine Brücke zwischen Pin 6 und DIO1 (IO-Pin 6 und der IO1 des LoRa-Moduls) setzen/löten!!1!einself
Wenn die fehlt, dann kann kein 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]