Forum: Mikrocontroller und Digitale Elektronik Arduino Pro Mini - Lora - Bug


von Heinz M. (utgmk)


Lesenswert?

Guten Morgen,

ich bin leider mit meinem Latein am Ende. Aus diesem Grund versuche ich 
es hier, vielleicht kann mir jemand von euch helfen.

**Folgendes Projekt:**

Ich nutze einen Arduino Pro Mini mit Reedkontakt und LORA Modul 
(SX1276).
Ich verbinde mich mit dem TTN Netzwerk (thethingsnetwork.org).

Das Projekt soll eine "Alarmanlage" darstellen.
Ich sende in regelmäßigen Abständen (20Min) ein WatchDog Signal.
Sobald die Tür aufgeht, sende ich zwei direkte Alarmpakete im Abstand 
von 30 Sek. Wenn die Tür offen stehen bleibt ein weiteres Alarm Paket 
alle 10 Min.

Wenn die Tür zu geht, soll wieder alle 20 min das Watchdog Signal 
gesendet werden.

--> Und genau hier ist das Problem. Diese Umschaltung nach einem Alarm 
erfolgt nicht zuverlässig. Meistens steigt das System dann aus und es 
wird kein LORA Paket mehr gesendet.

Die Lora Verbindung wir mit einem kleinen OS gesteuert.
Das Watchdog Signal wird immer in die Warteschlange eingereiht.
Wenn ein Alarm Paket geschickt wird, wird die Warteschleife gelöscht und 
Sofort ein Paket gesendet.
Sobald ein Paket gesendet wurde, wird ein neues Watchdog Paket 
eingereiht (so die Theorie).

Im Code wird an zwei Stellen ein Lora Paket gesendet:

1. (Watchdog-Paket -- Send Queue)
 https://github.com/CK1-CK/Arduino-Pro-Mini-LoRa-Sensor-Node/blob/f299601155e563add1cc1e9ad8488c02aba3da2d/src/lorawan.cpp#L166

2. (Alarm-Paket -- Direktversand )
 https://github.com/CK1-CK/Arduino-Pro-Mini-LoRa-Sensor-Node/blob/f299601155e563add1cc1e9ad8488c02aba3da2d/src/main.cpp#L28

Vielleicht kennt sich jemand von euch mit LORA und dem LMiC aus.


Dokumentation LMIC:

https://github.com/CK1-CK/Arduino-Pro-Mini-LoRa-Sensor-Node/blob/master/Documentation/Documentation_IBM_LMiC-v1.5.pdf

Ich bin wirklich über jeden Tipp dankbar.

Viele Grüße
UTGMK

: Verschoben durch Moderator
von Rainer W. (rawi)


Lesenswert?

Heinz M. schrieb:
> Dokumentation LMIC:
>
> 
https://github.com/CK1-CK/Arduino-Pro-Mini-LoRa-Sensor-Node/blob/master/Documentation/Documentation_IBM_LMiC-v1.5.pdf

Dass der Arduino Pro Mini kein STM32/Cortex-M3 ist, spielt keine Rolle?
Oder verwendest du einen eigenen HAL?

Beitrag #7584729 wurde vom Autor gelöscht.
von Heinz M. (utgmk)


Lesenswert?

Um ehrlich zu sein, spielt die CPU glaube ich keine Rolle.

Mein Projekt ist ein Fork von 
https://github.com/JackGruber/Arduino-Pro-Mini-LoRa-Sensor-Node

Die Verbindung und WatchDog funktionieren auch zuverlässig bis es zu dem 
ersten "Alarm/Tür auf" kommt. Dann kommt das System ins straucheln. 
Manchmal geht der WatchDog dann wieder weiter, manchmal hängt sich das 
System auf.

Ich habe mir auch schon Gedanken gemacht, ob ich die Fair Use Policy 
verletze 
(https://www.thethingsnetwork.org/docs/lorawan/duty-cycle/#fair-use-policy)

Ich sollte aber eigentlich im Rahmen der Fair Use Policy sein.

(WatchDog 20min, WatchDog 20min, Alarm 1 30Sek, Alarm 2 30Sek, Alarm 3 
10Min, Alarm 4 10Min, WatchDog 20min)

Nur WatchDogs: 72 Pakete/24h

Mit Alarm der 15Min ansteht: 75 Pakete/24h

Auf jeden Fall, wenn ich den Arduino neu starte, wählt sich das System 
neu ins TTN ein und sendet wieder zuverlässig bis zum nächsten Alarm. 
Dann beginnt das Glücksspiel von neuem.

Viele Grüße
UTGMK

von Rahul D. (rahul)


Lesenswert?

Heinz M. schrieb:
> Um ehrlich zu sein, spielt die CPU glaube ich keine Rolle.

Definitiv.
Das Dokument wird nur als Grundlage fur das Projekt verwendet worden 
sein.

Heinz M. schrieb:
> Die Verbindung und WatchDog funktionieren auch zuverlässig bis es zu dem
> ersten "Alarm/Tür auf" kommt. Dann kommt das System ins straucheln.
> Manchmal geht der WatchDog dann wieder weiter, manchmal hängt sich das
> System auf.

Hast du die Funktion mal ohne das LoRa-Geraffel ausprobiert?

von Heinz M. (utgmk)


Lesenswert?

Ja klar habe ich, bevor ich mit Lora angefangen habe, die Funktionen 
getestet und mir auf der Konsole ausgeben lassen wenn ein Alarm anstand 
bzw. ich den Reed Kontakt wieder geschlossen habe.

Es sind viele Faktoren zu berücksichtigen:

- LMIC OS inkl. Jobs, SendQueue etc.
- TTN

Leider etwas frustrierend.

Viele Grüße
UTGMK

von Gerald B. (gerald_b)


Lesenswert?

https://github.com/CK1-CK/Arduino-Pro-Mini-LoRa-Sensor-Node/blob/master/gerber/promini_rfm95.jpg

Wenn ich sowas sehe, krieg' ich 'n Föhn!
Wenn da was sendet, egal ob LORA, SIM oder WLAN, wird gepulst Leistung 
gezogen. Da gehören Ablock Cs an die Anschlüsse (Elko und KerKo) und 
Masse und Ub dürfen den gsamten zur Verfügung stehenden Platz nutzen.
Ne Klospülumg wird auch nicht per Trinkhalm angeschlossen :P

von Wastl (hartundweichware)


Lesenswert?

Gerald B. schrieb:
> Wenn ich sowas sehe, krieg' ich 'n Föhn!

Ich stimme dir voll umfänglich zu.

Allein die Präsentation einer so dilettantischen Schaltung/
Anordnung spricht schon für sich.

Aber wie heisst es doch so schön: alles im was Internet zu
lesen ist, ist wahr und richtig.

von Wastl (hartundweichware)


Lesenswert?

Heinz M. schrieb:
> Es sind viele Faktoren zu berücksichtigen:

Die übliche Einstellung der vielen Softwerker die von Hardware
keine Ahnung haben. Sie gehen von der Annahme davon dass eine
fertige Digitalschaltung eben "rein digital" ist und ohne
Einschränkung funktioniert bzw. per Dekret zu funktionieren
hat. Zweifel daran kann es nicht geben.

von Heinz M. (utgmk)


Angehängte Dateien:

Lesenswert?

Gerald B. schrieb:
> 
https://github.com/CK1-CK/Arduino-Pro-Mini-LoRa-Sensor-Node/blob/master/gerber/promini_rfm95.jpg
>
> Wenn ich sowas sehe, krieg' ich 'n Föhn!
> Wenn da was sendet, egal ob LORA, SIM oder WLAN, wird gepulst Leistung
> gezogen. Da gehören Ablock Cs an die Anschlüsse (Elko und KerKo) und
> Masse und Ub dürfen den gsamten zur Verfügung stehenden Platz nutzen.
> Ne Klospülumg wird auch nicht per Trinkhalm angeschlossen :P

Diese Schaltung habe ich nicht übernommen, die kommt direkt von 
JackGruber 
(https://github.com/JackGruber/Arduino-Pro-Mini-LoRa-Sensor-Node/blob/master/gerber/promini_rfm95.jpg). 
Die Massefläche hätte ich über die komplette Platine gelegt und nicht 
nur als Leitung ausgeführt.

Ich habe es aber auch nicht viel besser gelöst -.-
Ich habe das SX1276 Modul mit kurzen Leitungen direkt an den Arduino 
angelötet (ohne Dock-Platine) und ebenfalls keine Kondensatoren verbaut. 
Das Datenblatt bzw. das Referenz-Design empfiehlt 
Entkoppel-Kondensatoren (siehe Screenshot).

Die Massefläche auf dem SX1276 Modul ist jetzt auch nicht überragend 
groß 
(https://m.media-amazon.com/images/I/512qGb-SYNL._SY445_SX342_QL70_ML2_.jpg).

Auch wenn ich dadurch Leistung verliere reicht es immer noch im 
Stadtgebiet 2,6km weit zu senden.

Wir driften aber auch etwas vom Thema ab.

Das Problem ist immer noch, dass nach den zwei Alarm Paketen die 
Umschaltung zurück auf WatchDog Mode nicht funktioniert.

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.