Forum: Mikrocontroller und Digitale Elektronik LoRaWAN Library für atmega328p


von Ulrich K. (ulrich65)


Lesenswert?

Hallo liebe Forumsteilnehmer,

ich bin zur Zeit dabei, in die Mikrocontroller-Programmierung 
einzusteigen und
experimentiere gerade mit LoRAWAN. Einige Sensor-Nodes auf Basis dieses 
Projektes habe ich gebaut (Version 2 und 3):

https://www.attno.de/

Was mich dabei stört, ist die Verwendung des Arduino-Frameworks unter 
PlatformIO. Am liebsten würde ich ohne irgendwelche Frameworks nur mit 
dem avr-gcc arbeiten (Kommandozeile, makefiles, vim, etc.), weil ich das 
einfach so gewohnt bin.

Die Version 3 des o.g. Projekts verwendet die Arduino-LMIC Bibliothek. 
Diese von den Arduino-Abhängigkeiten zu befreien, wäre nicht so viel 
Aufwand. Man müsste wahrscheinlich nur die HAL-Ebene 
"ent-arduinoisieren" und Balast rauswerfen.

Meine Eckpunkte für eine Implementierung sind ungefähr:
- LoRa-Modem RFM95W / SX1276
- ausschließliche Verwendung in Europa (868 MHz)
- OTAA
- LoRa Class B (Downlinks möglich, um Nodeeinstellungen ohne 
Neuprogrammierung zu ändern)

Ich habe von früheren Versuchen mit MCUs noch diverse China Arduino pro 
mini 3,3V Boards, die ich gerne endlich mal verwenden würde.

Die offiziellen Library-Implementierungen von Semtech zielen eher auf 
ARM MCUs ab und sind für die atmega328p Liga einfach zu riesig.

Für Tipps, wie ich Eurer Meinung nach vorgehen könnte, wäre ich dankbar. 
Oder übersehe ich was Grundlegendes?

Ach ja, Programmiererfahrung ist durchaus vorhanden. Ich habe 20 Jahre 
in der C/C++ Softwareentwicklung gearbeitet, allerdings im 
Anwendungsbereich.

Danke und viele Grüße,
Ulrich

von Oliver S. (oliverso)


Lesenswert?

Ulrich K. schrieb:
> Am liebsten würde ich ohne irgendwelche Frameworks nur mit
> dem avr-gcc arbeiten (Kommandozeile, makefiles, vim, etc.), weil ich das
> einfach so gewohnt bin.

Dann mach das doch einfach. Vielleicht kannst du dich ja mit ihm hier 
zusammentun:

Beitrag "Problem mit I2C bei atmega328p (arduino uno)"

Oliver

von temp (Gast)


Lesenswert?

Ich denke, mach eine Haken dran. Wenn du das willst:

Ulrich K. schrieb:
> - OTAA
> - LoRa Class B (Downlinks möglich, um Nodeeinstellungen ohne
> Neuprogrammierung zu ändern)

kommst du um lmic nicht drum herum. Es gibt praktisch keine andere 
Implementierung, nur einen Sack voll Forks des ursprünglichen IMB Codes.
Aktuell verwendet wohl alle Welt dafür:
https://github.com/mcci-catena/arduino-lmic
Allerding ist die Arduino-Schicht recht dünn. Ich hab das mal für ein 
STM32L151 Board von Arduino befreit.
https://heltec.org/project/lora-node-151/
Das komplette Program ohne sinnvollen Usercode belegt 25k Flash im 
Releasemode. Mit Debug Infos sind es schon 46k. Das ganze ist ohne 
weitere LIB und ohne STM Hal gebaut. Viel kleiner geht es somit nicht. 
Natürlich kann ich dir nicht sagen was da bei AVR für Codegrößen 
entstehen. Wenn du es anpassen willst, ist eigentlich nur die lmic_hal.c 
nötig. Und genügend Durchhaltevermögen. Ohne Debugger würde ich das 
nicht machen, aber das muss jeder für sich entscheiden.
Wenn du dich reduzierst und ABT statt OTAA verwendest und auf die 
Downlinks verzichtest gibt es Alternativen:
https://github.com/ClemensRiederer/TinyLoRa-BME280

Auf der Anderen Seite muss auch die Frage nach erreichbaren Gateway 
gestellt werde. Wenn es da auch knapp wird, dann ist es besser nur Lora 
ohne WAN zu verwenden. Das vereinfacht die Sache (auch bidirektional) 
deutlich.

von Heinz (Gast)


Lesenswert?

Willst du LoRaWAN (also mit der internet-basierten Infrastruktur) nutzen 
oder nur LoRa (Kommunikation per Funk direkt von device zu device)?

von Ulrich (Gast)


Lesenswert?

temp schrieb:
> Ich denke, mach eine Haken dran. Wenn du das willst:
>> - OTAA
>> - LoRa Class B (Downlinks möglich, um Nodeeinstellungen ohne
>> Neuprogrammierung zu ändern)>
> kommst du um lmic nicht drum herum.

Den Verdacht hatte ich auch schon. Ich denke, ich versuche mal mein 
Glück und ersetze den Arduino-Code durch nativen Code.

> Natürlich kann ich dir nicht sagen was da bei AVR für Codegrößen
> entstehen.

Werde ich (im Erfolgsfall) berichten.

> Ohne Debugger würde ich das
> nicht machen, aber das muss jeder für sich entscheiden.

Habe ich nicht vor. Ich habe mir vor Jahren mal einen Atmel ICE gekauft. 
Dann werde ich mich dieses Mal von meiner spartanischen Methode 
verabschieden und das MPLAB X verwenden.

> Wenn du dich reduzierst und ABT statt OTAA verwendest und auf die
> Downlinks verzichtest gibt es Alternativen:
> https://github.com/ClemensRiederer/TinyLoRa-BME280

Ja, ohne OTAA gibt es einiges. Auch z.B. den in meinem Ursprungspost 
genannten LoRa-Node. Davon habe ich schon einige am Laufen.

> Auf der Anderen Seite muss auch die Frage nach erreichbaren Gateway
> gestellt werde.

Die Frage ist beantwortet. Ich habe ein eigenes und versorge damit auch 
die Umgebung ganz gut mit, wie ein Blick ins Transfer-Log zeigt. Das 
Gateway hängt am TTN bzw. TTS, wie es jetzt heißt.

von Ulrich K. (ulrich65)


Lesenswert?

Heinz schrieb:
> Willst du LoRaWAN (also mit der internet-basierten Infrastruktur)
> nutzen
> oder nur LoRa (Kommunikation per Funk direkt von device zu device)?

Ich nutze LoRaWAN mit einem eigenen Gateway über TTN / TTS. Einige 
selbstgebaute und auch gekaufte Nodes habe ich schon einige Zeit am 
Laufen.

Die Eigenbau-Nodes nutzen alle ABP und ich wollte jetzt auf OTAA 
umsteigen und dafür meine atmega328p verwenden.

von temp (Gast)


Lesenswert?

Darf ich fragen was für ein Gateway das ist? Hängt das auch schon am V3 
Stack?

von Ulrich K. (ulrich65)


Lesenswert?

temp schrieb:
> Darf ich fragen was für ein Gateway das ist? Hängt das auch schon
> am V3
> Stack?

Es ist das TTN Indoor Gateway. Und TTS v3 geht damit ja leider noch 
nicht, weil sich die Firmware fix mit dem TTN v2 verbindet, wenn ich das 
richtig verstanden habe. Ein Update wird wohl nicht nur von mir dringend 
erwartet.

Nebenbei bin ich von der Reichweite echt überrascht. Ich bin hier in der 
dicht bebauten Stadt mit meinem Selbstbau-Node mit einfacher kurzer 
Drahtwendelantenne ziemlich weit gelaufen, bis nichts mehr durchkam. 
LoRa ist echt eine tolle Technik.

von temp (Gast)


Lesenswert?

Ulrich K. schrieb:
> Es ist das TTN Indoor Gateway

Zumindestens eins mit 8 Kanälen. Wenn man lmci an einem 1 Kanal Gateway 
betreiben will, muss man den zu erst mal abgewöhnen nach dem JOIN den 
Frequenzplan einzuarbeiten, damit nicht 80% der Pakete sinnlos in die 
Luft gepustet werden.

Ich hab mir mein Gateway aus Raspi und ic880 gebaut. Das läuft aktuell 
noch unter V2. V3 mit Basicstation habe ich mal probiert um zu testen ob 
es überhaupt machbar ist, aktuell aber wieder verworfen. Ich habe den 
Eindruck, dass die Worte bei TTN und V3 schneller kommen als die Taten. 
Vieles in der V3 Console ist noch nicht da wo die V2 ist.

Obwohl ich das Gateway habe benutze ich es real aber noch nicht. Da 
reicht mir Lora ohne WAN vollständig aus. Einen deutlichen Mehrwert 
würde es nur geben, wenn die Region besser vernetzt ist. Aktuell bin ich 
auf ca. 1000km² mit noch einem Gateway sehr alleine. Mal sehen was die 
Zukunft bringt.

von Ulrich K. (ulrich65)


Lesenswert?

temp schrieb:
> Ich habe den
> Eindruck, dass die Worte bei TTN und V3 schneller kommen als die Taten.
> Vieles in der V3 Console ist noch nicht da wo die V2 ist.

Den Eindruck habe ich auch. Im Moment geht es irgendwie ziemlich 
durcheinander. Ich habe meine Nodes inzwischen auf V3 umgezogen, nur das 
Gateway läuft halt noch auf V2. Die Pakete werden über den Broker in den 
neuen Stack weitergeleitet. Die Doku finde ich ein bisschen, na ja, 
sagen wir mal, unstrukturiert. Andererseits stellt TTN kostenlos eine 
leistungsfähige Infrastruktur zur Verfügung, da muss man vielleicht 
einfach Geduld haben.

Was mir an der V3 Konsole gut gefällt, ist die Möglichkeit, pro Device 
einen eigenen Payload-Decoder zu definieren. Das ging unter V2 nur pro 
Anwendung. So kann man sich die ganzen Fallunterscheidungen sparen.

> Einen deutlichen Mehrwert
> würde es nur geben, wenn die Region besser vernetzt ist. Aktuell bin ich
> auf ca. 1000km² mit noch einem Gateway sehr alleine. Mal sehen was die
> Zukunft bringt.

Ich ziehe evtl. demnächst auch raus aus der Stadt. Ob die Abdeckung am 
künftigen Wohnort auch so dünn ist wie bei Dir, weiss ich im Moment 
nicht. Aber ich denke, ich werde ein dickeres Outdoor-Gateway 
installieren. Dann bin ich halt der Erste in der Region.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.