Nun zu meinem ersten Problem:
In unregelmäßigen Abständen, meistens jedoch Vormittags, bringt der
Reedkontakt eine Fehlmeldung. Das heißt, der Status in der SW ändert
sich, obwohl die Tür verschlossen ist.
Jetzt rätseln wir warum es zu den Fehlalarmen kommt.
Der Sensor bzw. der Magnet sind mittels doppelseitigen Klebeband an der
Innenwand der Seecontainers (Stahl) befestigt.
- Kann es sein, dass die Stahltür schuld ist?
- Das Kabel des Sensors bis zum Arduino ist 2m lang?
- Kann der interne Pullup Widerstand schuld sein?
Erschütterungen können ausgeschlossen werden.
Das zweite Problem ist, dass das der Status mittels Lora zum TTN (The
Things Network) gesandt wird. Nach ca. einer Woche stellt der Arduino
aber seine Arbeit ein. Warum? keine Ahnung.
(Ich will den Beitrag aber auch nicht verwässern. Primäre geht es um den
Reedkontakt)
Den Quell-Code findet man hier:
https://github.com/CK1-CK/Arduino-Pro-Mini-LoRa-Sensor-Node
Du gibst einen 2m entfernten Kontakt ohne Entprellung direkt zur
Auswertung. Was meinst du wie schnell die Tür geöffnet und geschlossen
wird? Wenn das mindestens 2 sec dauert, warum wertet du das Signal dann
1000000 mal schneller aus als nötig?
Mach da besser mal Polling und eine anständige Entstörung mit mindestens
1 sec Entprellzeit.
Und mach den Pullup niederohmiger. Und mache einen 100n-Kondensator mit
rein.
Heinz M. schrieb:> Nun zu meinem ersten Problem:> In unregelmäßigen Abständen, meistens jedoch Vormittags, bringt der> Reedkontakt eine Fehlmeldung. Das heißt, der Status in der SW ändert> sich, obwohl die Tür verschlossen ist.
Steht der Container in Deutschland oder ist er irgendwo unterwegs?
>> Jetzt rätseln wir warum es zu den Fehlalarmen kommt.>> Der Sensor bzw. der Magnet sind mittels doppelseitigen Klebeband an der> Innenwand der Seecontainers (Stahl) befestigt.
Wie habt ihr Magnet und Reedkontakt zueinander positioniert, und in
welchem Abstand (Zeichnung). Hält das Klebeband noch gut wenn die
Containerwand heiß wird?
> - Kann es sein, dass die Stahltür schuld ist?> - Das Kabel des Sensors bis zum Arduino ist 2m lang?> - Kann der interne Pullup Widerstand schuld sein?>> Erschütterungen können ausgeschlossen werden.
Bei den aktuellen Temperaturen könnte ich mir auch eine thermische
Ausdehnung vorstellen, die den Abstand vergrößern könnte.
Zum Program: Ich würde nach einem Interrupt den Kontakt mehrfach
(zeitverzögert) einlesen bevor ein Alarm generiert wird.
Mein Tor dehnt sich bei Hitze bis 5mm. Das könnte auch Deine
Containertür. Deswegen sollte man auf eine sinnvolle Montage achten.
Eine Blattfeder, die auf einen Mikroschalter drückt, wäre evtl. auch
eine Lösung, sofern der Container nicht feucht wird?
Den Reedkontakt für Metalltore werde ich mir mal anschauen.
Lothar M. schrieb:> Du gibst einen 2m entfernten Kontakt ohne Entprellung direkt zur> Auswertung. Was meinst du wie schnell die Tür geöffnet und geschlossen> wird? Wenn das mindestens 2 sec dauert, warum wertet du das Signal dann> 1000000 mal schneller aus als nötig?>> Mach da besser mal Polling und eine anständige Entstörung mit mindestens> 1 sec Entprellzeit.>> Und mach den Pullup niederohmiger. Und mache einen 100n-Kondensator mit> rein.
Ich habe eine Entprellzeit von 60Sek. Die Entprellung mache ich in der
ISR. Pollen ist eher schwierig, weil das Lora LMIC ein eigenes OS
mitbringt und der Versand von Lora-Paketen zeitkritisch ist.
1
voidinterruptDoorFunction()// Interrupt Function for DoorSwitch
2
{
3
if(millis()-oldTime>debounceTime)// Debouncing/Entprellung Switch - The millis() function will overflow (go back to zero), after approximately 50 days. (Max value = 4.294.967.295)
4
{
5
door_state=0;
6
watchdog=0;// Real Alarm // Watchdog/Heartbeat, Differentiation between watchdog and real alarm. 1=WatchDogSignal 0=Real DoorAlarm
7
8
detachInterrupt(digitalPinToInterrupt(PIN_DOOR_SWITCH));// Disable Interrupt Function for DoorSwitch
9
10
oldTime=millis();// Remember last run time.
11
}
12
}
> Steht der Container in Deutschland oder ist er irgendwo unterwegs?
Ja steht in D und hat einen festen Standort.
> Wie habt ihr Magnet und Reedkontakt zueinander positioniert, und in> welchem Abstand (Zeichnung). Hält das Klebeband noch gut wenn die> Containerwand heiß wird?
Abstand zwischen Sensor und Magnet ist max 2mm. Die beiden Komponenten
sind längs zueinander montiert (so wie hier nur viel näher zusammen und
horizontal:
https://www.abus.com/var/ImagesPIM/d110001/derivates/17/001/149/Bild-FU7350_anwend1_abus_960.jpg).
> Bei den aktuellen Temperaturen könnte ich mir auch eine thermische> Ausdehnung vorstellen, die den Abstand vergrößern könnte.
Kann man, denke ich, ausschließen. Der Sensor ist laut Datenblatt bis
11mm Abstand zugelassen. Abstand ist max 2mm
> Zum Program: Ich würde nach einem Interrupt den Kontakt mehrfach> (zeitverzögert) einlesen bevor ein Alarm generiert wird.
Das ist ein guter Punkt. Werde ich in Betracht ziehen. Auf der anderen
Seite kann es eigentlich nicht sein, dass man sich nicht auf den
Schalter verlassen kann. Der Schalter ist ja eigentlich für Alarmanlagen
gedacht.
#######################
Ich war vorhin nochmal 1,5h am Container und bin auf Fehlersuche
gegangen. Das Problem ist definitiv am Sensor bzw. Leitung.
Im Container ist eine Leuchtstoffröhre. Bei geöffneter Tür schaltet der
Türschalter wenn das Licht eingeschaltet wird. Anscheinend ist das lange
Kabel eine Antenne oder der Sensor nimmt das Stör-Signal direkt auf.
Ich werde am WE das Kabel kürzen und dann schauen ob es besser wird.
Wenn alle Stricke reißen wird der Reedkontakt gegen einen mechanischen
Industrieschalter getauscht.
Viele Dank schonmal für die Tipps.
Ich halte euch auf dem laufenden.
Heinz M. schrieb:> Bei geöffneter Tür schaltet der> Türschalter wenn das Licht eingeschaltet wird. Anscheinend ist das lange> Kabel eine Antenne oder der Sensor nimmt das Stör-Signal direkt auf.
Dann achte doch mal genauer auf die Zeiten wann das Licht an ist und
ob nur dann dieser Fehler kommt. Leitung ungünstig verlegt?
Masseproblem? Böse Abschaltspanng?
oszi40 schrieb:> Heinz M. schrieb:>> Bei geöffneter Tür schaltet der>> Türschalter wenn das Licht eingeschaltet wird. Anscheinend ist das lange>> Kabel eine Antenne oder der Sensor nimmt das Stör-Signal direkt auf.>> Dann achte doch mal genauer auf die Zeiten wann das Licht an ist und> ob nur dann dieser Fehler kommt. Leitung ungünstig verlegt?> Masseproblem? Böse Abschaltspanng?
Da ist ein Bewegungsmelder im Container. Der Container wird Max 1-3 Mal
im Monat geöffnet. Somit ist das Licht eigentlich immer aus.
Eine kleine ABB Blindstromkompensation Anlage ist ca 10m entfernt (in
einem Stromhäuschen). Vielleicht spielt das eine Rolle.
Der Arduino hängt im Moment an einem normalen USB Hub als
Stromversorgung. Der Hub wird von einem raspberry benutzt (als USB Hub).
Ich denke nicht dass das von dort kommt.
Es ist echt komisch.
Heinz M. schrieb:> Pollen ist eher schwierig, weil das Lora LMIC ein eigenes OS mitbringt> und der Versand von Lora-Paketen zeitkritisch ist.
Du hast aber kein Problem damit, da mit einem ISR mitten rein zu
trampeln? Warum pollst du nicht, wenn es zeitunkritisch ist? Interrupts
nimmt man für zeitkritische Sachen. Dein Schalter gehört eindeutig nicht
in diese Kategorie.
Zeig mal einen Schaltplan der ganzen Schaltung. Oder wenigstens vom
Eingang. Denn wie gesagt: es reicht sicher nicht, einfach nur einen
internen 40-Pullup einzuschalten.
Hast du eigentlich schon mal mit dem Reedkontakt und dem Magneten
ausprobiert, wie die beste Platzierung ist. Dass muss nicht unbedingt
eine passgenaue Überdeckung sein...
Heinz M. schrieb:> Anscheinend ist das lange Kabel eine AntenneHeinz M. schrieb:> Wenn alle Stricke reißen wird der Reedkontakt gegen einen> mechanischen Industrieschalter getauscht.
Wenn das Kabel als Antenne wirkt, wird das austauschen des Schalters
kaum helfen.
mIstA schrieb:> Wenn das Kabel als Antenne wirkt, wird das austauschen des Schalters> kaum helfen.
Dachte ich auch gerade.
Wie ist der Eingang vom µC beschaltet? Nur die RC Kombination aus
internem Pullup und 100n C mehr als dürftig. Zum einem ist der Pullup
mit ca. 30 Kiloohm eine Zehnerpotenz zu hochohmig für rauhe Umgebungen
und der C könnte auch um 1-2 zehnerpotzenzen größer sein.
Außerdem solltest du dem Eingang noch 2 Clampdioden spendieren. 2 kleine
Wald und Wiesendioden vom Eingang, eine gegen Masse und eine gegen +Ub.
Ich hatte mal auf 2 Meter Kabel zu einem DS18B20 zu einem 100W COB, das
per PWM gedimmt wurde, soviel Störungen, das es mir den Eingang gegrillt
hat. Abhilfe schafften dann Clampdioden am µC und am Sensor und ein Elko
plus KerKo am Sensor.
Stromsparen und zuverlässige Auswertungen in rauher Umgebung beißen sich
halt (hochohmig, geringer Stom)
Heinz M. schrieb:> Pollen ist eher schwierig, weil das Lora LMIC ein eigenes OS> mitbringt und der Versand von Lora-Paketen zeitkritisch ist.
Pollen kostet keinerlei Zeit. Das ist doch nur einen Input-Pin einlesen
(< 1µs). Fürs Pollen hat daher jede CPU Zeit.
Wen Du allerdings nach dem Pin einlesen die CPU blockierst, dann ist das
ganz allein Deine Schuld. Dann ist Deine Programmplanung Rotte.
Die Mainloop darf niemals blockiert werden oder Du verwendest ein
Multitasking-OS.
Heinz M. schrieb:> Ich habe eine Entprellzeit von 60Sek. Die Entprellung mache ich in der> ISR.
Nö, das ist kein Entprellen.
Ich entprelle im Timerinterrupt per Mehrfachabfrage. Ein Zustand muß
über >= 4 Interrupts stabil sein, damit er übernommen wird. Bei 10ms
Interruptrate also >=40ms.
Wozu überhaupt den Pullup?
VCC=>Kontakt=>Eingang.
Und 60S in der int funktion...
Wird der Interupt angehalten wenn der Int aufgerufen wird?
Wenn nicht, da kann man schon mal mehrfach in die gleiche Funktion
springen wärend diese von vorher und vorvorher eigentlich läuft.
Deswegen entprellen im Interrupt, nicht gut.
befindet sich der Container auf einem Schiff?
Dann könnte das eine Einstreuung von Radarsignalen sein.
Nicht wirklich vom eigenen Schiff,
aber wenn man z.B. dicht an anderen Schiffen
vorbei fährt (z.B. in Meerengen, Kanälen), können die Radarsignale
vom anderen Schiff doch recht stark rein ballern.
Hallo,
interner PullUp ist viel zu hochohmig. 3,3k PullUp, 100n Pin gegen GND
sollten schon fast alles eliminieren, 330 Ohm in Reihe zur Leitung am
ProMini jkann zusätzlich helfen. Ansonsten würde ich da auch immer
pollen, Timer-IRQ alle 10ms, abfragen, Zähler mitführen, wenn
geschlossen +1, wenn offen -1, bei 10 und bei 0 Status melden. Kann man
gut anpassen, da stört es dann auch nicht, wenn LoRa da mal die
Interrupts kurz sperrt.
Gruß aus Berlin
Michael
Gerald B. schrieb:> mIstA schrieb:>> Wenn das Kabel als Antenne wirkt, wird das austauschen des Schalters>> kaum helfen.>> Dachte ich auch gerade.> Wie ist der Eingang vom µC beschaltet? Nur die RC Kombination aus> internem Pullup und 100n C mehr als dürftig. Zum einem ist der Pullup> mit ca. 30 Kiloohm eine Zehnerpotenz zu hochohmig für rauhe Umgebungen> und der C könnte auch um 1-2 zehnerpotzenzen größer sein.> Außerdem solltest du dem Eingang noch 2 Clampdioden spendieren. 2 kleine> Wald und Wiesendioden vom Eingang, eine gegen Masse und eine gegen +Ub.> Ich hatte mal auf 2 Meter Kabel zu einem DS18B20 zu einem 100W COB, das> per PWM gedimmt wurde, soviel Störungen, das es mir den Eingang gegrillt> hat. Abhilfe schafften dann Clampdioden am µC und am Sensor und ein Elko> plus KerKo am Sensor.> Stromsparen und zuverlässige Auswertungen in rauher Umgebung beißen sich> halt (hochohmig, geringer Stom)
Also im Moment ist gar kein RC Glied verbaut. Es ist einfach nur der
Schalter am PIN und GND und der Pullup ist aktiviert. (So wie hier:
https://circuitjournal.com/img/articles/1_arduino_buttons/button_connections.jpg?v=19)
> Nö, das ist kein Entprellen.> Ich entprelle im Timerinterrupt per Mehrfachabfrage. Ein Zustand muß> über >= 4 Interrupts stabil sein, damit er übernommen wird. Bei 10ms> Interruptrate also >=40ms.
Was du machst, ist eine Variante um den Status sicher abzufragen. Per
Definition ist das Entprellen.
> Wozu überhaupt den Pullup?> VCC=>Kontakt=>Eingang.
Schon mal etwas von Kurzschluss gehört?
> Und 60S in der int funktion...> Wird der Interupt angehalten wenn der Int aufgerufen wird?> Wenn nicht, da kann man schon mal mehrfach in die gleiche Funktion> springen wärend diese von vorher und vorvorher eigentlich läuft.> Deswegen entprellen im Interrupt, nicht gut.
Äh, nein. Die Interrupt Funktion ist nur 60s außer Funktion. Ist sie
aber eh, weil ich nach der ersten fallenden Flanke den Interrupt
deaktiviere.
1
detachInterrupt(digitalPinToInterrupt(PIN_DOOR_SWITCH));// Disable Interrupt Function
> befindet sich der Container auf einem Schiff?
Nein, feste Position in D. Keine Erschütterungen.
> Dann könnte das eine Einstreuung von Radarsignalen sein. Nicht wirklich vom
eigenen Schiff, aber wenn man z.B. dicht an anderen Schiffen vorbei fährt (z.B. in
Meerengen, Kanälen), können die Radarsignale vom anderen Schiff doch recht stark
rein ballern.
Eher nicht.
#############################
Folgende Aktionen werde ich jetzt mal einleiten.
1. Leitung kürzen. Von 2m auf 50cm
2. Kondensatoren parallel zum Schalter hinzufügen (100nF und ggf. 10nF)
3. ggf. Nutzung externe Pullup mit kleinerem Widerstand
4. ggf. Einbau Clamp-Dioden
5. ggf. Umstellung von Interrupt auf Polling mit Abfrage, dass der
Sensor z.B. 50ms geschaltet haben muss bevor ein Alarm ausgelöst wird.
Um ehrlich zu sein verstehe ich nicht bzw. finde es faszinierend, warum
ein einfacher Schalter dermaßen gestört wird.
Ich bin mir aber sicher, mit den oben genannten Maßnahmen, das Problem
in den Griff zu bekommen.
Heinz M. schrieb:> Um ehrlich zu sein verstehe ich nicht bzw. finde es faszinierend, warum> ein einfacher Schalter dermaßen gestört wird.
Der Schalter wird nicht gestört. Es ist der Interrupt, der
sauempfindlich ist. Bei 16MHz Takt, reagiert der Interrupt auf Pulse
>63ns sicher. Störungen von 16MHz entstehen verdammt leicht.
Daher nimmt niemand bei Verstand einen externen Interrupt für
mechanische Kontakte. Bzw. nur zum Aufwachen, aber nicht zum Auswerten.
Die Totzeit von 60s bewirkt absolut nichts. Nach den 60s reicht wieder
eine 0,00000006s kurze Störung, um Dich zu täuschen.
Heinz M. schrieb:> Also im Moment ist gar kein RC Glied verbaut.
Ist auch nicht nötig, wenn ein sauber funktionierende Entprellung
implementiert wurde.
Heinz M. schrieb:> Also im Moment ist gar kein RC Glied verbaut. Es ist einfach nur der> Schalter am PIN und GND und der Pullup ist aktiviert.
So geht das nur in der Theorie auf einem Blatt Papier. In der Praxis ist
da garantiert irgendein Störer unterwegs und koppelt Müll ein.
Heinz M. schrieb:> Folgende Aktionen werde ich jetzt mal einleiten.
Zuallererst als ersten Punkt 1a: eine vernünftige Hardware für diesen
Schaltereingang. Die sieht etwa so aus:
1
2
Vcc
3
|
4
2k2
5
|
6
.--------------------o---2k2---o----| µC Eingang
7
| |
8
Reed / 100n ===
9
| |
10
'------------------------------o----| µC GND
11
|
12
GND
Dieser Kondensator ist übrigens der eigentliche Knackpunkt, denn er hält
irgendwelche kurzen Störungen vom Eingang fern.
> Äh, nein. Die Interrupt Funktion ist nur 60s außer Funktion. Ist sie> aber eh, weil ich nach der ersten fallenden Flanke den Interrupt> deaktiviere.
Hantiere nicht so viel an den Interrupts herum. Ein Interrupt wird
entweder gebraucht (dann ist er aber sicher nicht 60s inaktiv), oder er
wird eben wie hier nicht gebraucht (und dann macht er nur Probleme, weil
er so pfeilschnell reagiert). Lass den Interrupt einfach weg. Er ist
absolut unnötig für so ein schnarchlangsames Signal.
BTW: wenn du einen ungünstigen Aufbau und eine schlechte Verdrahtung
hast, kannst du die beste Schaltung schlecht machen.
Ich denke auch, das RC Glied am Eingang ist essentiell um eventuell über
das Kabel eingefangene Störungen zu reduzieren. Den extra 2,2k halte ich
dagegen für überflüssig. Was scheinbar alle übersehen, der Eingang hängt
nicht in der Luft, sondern liegt über den geschlossenen Reedkontakt
dauerhaft auf GND. Nur im Alarmfall öffnet der Kontakt, und um den
Eingang dann hochzuziehen reicht der interne Pullup.
Holger schrieb:> Den extra 2,2k halte ich dagegen für überflüssig.
Den zusätzlichen 2k2 würde ich schon deshalb reinbauen, dass ich den
Frittstrom sicher erreiche.
> Nur im Alarmfall öffnet der Kontakt, und um den Eingang dann> hochzuziehen reicht der interne Pullup.
Ich mache den zusätzlichen Pullup einfach deshalb rein, dass der ganze
Klimbim insgesamt niederohmiger wird. Nur mit den undefinierten internen
40k würde ich mich nie raus in die freie Natur trauen. Die taugen
bestenfalls zur Tasterabfrage auf der µC-Leiterplatte.
Lothar M. schrieb:> Holger schrieb:>> Den extra 2,2k halte ich dagegen für überflüssig.> Den zusätzlichen 2k2 würde ich schon deshalb reinbauen, dass ich den> Frittstrom sicher erreiche.
Sollte bei einem hermetisch gekapselten Reedkontakt keine Rolle spielen.
Aber wenn ich das folgende hier lese, dann würde ich mir die Versorgung
genauer anschauen.
Heinz M. schrieb:> Ich war vorhin nochmal 1,5h am Container und bin auf Fehlersuche> gegangen. Das Problem ist definitiv am Sensor bzw. Leitung.> Im Container ist eine Leuchtstoffröhre. Bei geöffneter Tür schaltet der> Türschalter wenn das Licht eingeschaltet wird. Anscheinend ist das lange> Kabel eine Antenne oder der Sensor nimmt das Stör-Signal direkt auf.Heinz M. schrieb:> Der Arduino hängt im Moment an einem normalen USB Hub als> Stromversorgung. Der Hub wird von einem raspberry benutzt (als USB Hub).> Ich denke nicht dass das von dort kommt.
Ich halte das inzwischen für sehr wahrscheinlich. An irgendwelche HF
Einkopplungen innerhalb eines Stahlcontainers glaube ich eher nicht.
Heinz M. schrieb:> In unregelmäßigen Abständen, meistens jedoch Vormittags, bringt der> Reedkontakt eine Fehlmeldung. Das heißt, der Status in der SW ändert> sich, obwohl die Tür verschlossen ist.
Vielleicht schaltet da jemand eine dicke Maschine ein, und die Störungen
kommen über das Netz. Das Einschalten deiner Leuchtstoffröhre kann
ebenfalls über das Netz einkoppeln.
Holger schrieb:> Ich halte das inzwischen für sehr wahrscheinlich.
Ich hatte nicht ganz grundlos auf den Aufbau hingewiesen.
Heinz M. schrieb:> Das zweite Problem ist, dass das der Status mittels Lora zum TTN (The> Things Network) gesandt wird. Nach ca. einer Woche stellt der Arduino> aber seine Arbeit ein. Warum? keine Ahnung
Auf dem Labortisch läuft das Ding aber monatelang ohne jegliche(!!)
Probleme, das hast du sicher schon ausprobiert, oder? Und wenn das da
tadellos läuft, welche Versorgung hast du da dran?
Heinz M. schrieb:> Der Arduino hängt im Moment an einem normalen USB Hub als> Stromversorgung.
Mit "normal" meinst du so ein nomales billiges China-Ding? Wenn die
Stromversorung wacklig sein könnte, dann kommt erst mal ein richtig
gutes Netzteil ran, was nicht nach
> Der Hub wird von einem raspberry benutzt (als USB Hub).
Ein Schaltplan oder ein Foto vom Aufbau wäre doch ganz hilfreich...
> Ich denke nicht dass das von dort kommt.
Da muss man nichts denken. Das kann man messen. Hast du das mal probiert
und mit einem Oszi die Stabilität der Versorgung kontrolliert?
Ohne Filterung des Eingangssignals können Vibratioben und Schockwellen
Interrupts auslösen. Es reichen schon bruchteile von Mikrosekunden aus.
Stahl leitet Schockwellen sehr gut (man denke an eine Glocke). Was sagt
das Datenblatt über die Vibrations- und Schockwellenfestigkeit des
Reedkontaktes aus? Was passiert bei einem Hammerschlag gegen die
Containertür?
Eine Abhilfe ist ein Tiefpass am Eingang zur Elektronik.
Wenn ich weiter oben lese, dass noch anderer Klimbim an der
Stromversorgung hängt, würde ich später noch ein anderes Netzteil zum
Test in Betracht ziehen?
Du bist ja offensichtlich in einer rauhen industriellen Umgebung
unterwegs. Für solche Umgebungen werden üblicherweise Stromschleifen
eingesetzt, da sie extrem widerstandsfähig gegen Störungen sind. Das
bedeutet zwar für dich höheren Verschaltungsaufwand, ist aber sicher die
auf lange Sicht beste Lösung.
Außerdem hast du leider deine Anwendung nicht genug vorbereitet und
vorher überlegt, welche Zeiten und Wertebereiche realistisch sind. Es
ist ein Türkontakt, kein Tastaturschalter oder Motorencoder. Der
schaltet langsam. Du kannst ihn bequem aus Energiespargründen alle 500ms
abfragen und bei Statusänderung das Abfrageintervall auf 100ms setzen;
bei Übereinstimmung von 5 aufeinanderfolgenden Werten wird dann der
Status auf den neuen Wert gesetzt. Dadurch erkennst du im worst case
Türöffnungen von 1s Länge nicht.
Und nun zum LoRaWAN: Überprüfe bitte auch, ob Du LMIC mit einem Arduino
überhaupt noch einsetzen kannst. Soweit ich mich richtig erinnern kann,
hatte man mit Arduino und LMIC Probleme mit manchen MAC-Kommandos; TTNv3
erwartet aber mittlerweile wie jedes andere einigermaßen
standardkonforme LoRaWAN, dass diese vom Knoten aber ordentlich
verarbeitet werden. TTNv2 war da deutlich nachlässiger, aber es ist ja
Quatsch, die Netzwerkperformance künstlich einzuschränken, damit man
irgendwelche Bastelhardware betreiben kann, wenn es mittlerweile
wirklich kostengünstige standardkonforme Lösungen gibt. Ich weiß nicht,
ob LMIC mit Arduino mittlerweile funktioniert, es gibt aber sicher
andere LoRaWAN-Hardware, die unproblematischer ist, da LMIC schon extrem
viel Speicher des Arduino verbraucht.
an einen Schaltkreis Eingang,GND schliest mann nur lange Dräte an wenn
mann ein radio oder ähnliches basteln will.Ansonsten kommt auf der
platine Ein Relais oder ein Optokoppler.Damit Am Eingang der
Schaltkreise Definierte Signale Sind.Und selbst an Relais, Optokoppler
eingängen gehören noch Filter und Schutzkomponenten.
Gruß Torsten
Entprelle einfach vernünftig, dazu kannst du Peter D's Code aus der
Artikelsammlung nehmen und verlängere die Zeit auf ca. 1s.
Oder nimm eine Arduino Lib, die richtig entprellt, dann ist Ruhe.
Hör auf die Profis, dann hast du am schnellsten Erfolg.
Und verinnerliche die Erklärungen zu Polling und Interrupt. Die Kollegen
haben alle recht.
Moin alle zusammen,
Ui der Thread ist ja förmlich explodiert.
Ich bin noch eine Rückmeldung schuldig und ich muss mich erstmal bei
euch bedanken.
> Someone> Du bist ja offensichtlich in einer rauhen industriellen Umgebung unterwegs.
Ich weiß nicht ob das eine rauhe Industrieumgebung ist. Der Container
steht auf einem Hof, nur dass das Stromhäuschen (Kein Trafo) in ca.
10-20 Metern Entfernung steht.
> Zum Thema Eingangspannung:
Aufbau:
230V -----> USB HUB (Lindy) -----> Arduino Programmer FTDI FT232 USB zu
TTL ---> Arduino Pro Mini 3,3V
Am HUB hängt noch ein Rasperry mit Tastatur, Maus und WLAN USB Stick.
Die Problematik mit der Eingangsspannung würde ich komplett
ausschließen, da das Problem auch mit mein Laptop, das ich zum
einspeisen benutzt habe, aufgetreten ist.
HP EliteBook -----> Arduino Programmer FTDI FT232 USB zu TTL --->
Arduino Pro Mini 3,3V
Das Ergebnis ist das selbe --> Fehlalarme.
Es liegt an dem empfindlichen Interrupt und der fehlenden Entprellung
> Zum Thema Entprellung:
Folgendes habe ich gestern geändert:
1. Leitung auf ca. 40cm gekürzt.
2. Programmcode auf Polling umgestellt.
(https://github.com/CK1-CK/Arduino-Pro-Mini-LoRa-Sensor-Node/commit/fc8b6b95b4d82cb3d711ebc98c9e0d9f16ee0715)
3. Einfache Entprellung implementiert.
Ergebnis: Keine Fehlalarme mehr. Vielen Dank dafür!!
An die Hardware habe ich mich gestern nicht herangetraut weil alles
schon fest verbaut ist und ich keinen Lötkolben dabei hatte.
> Brain Fog:
Ich habe mittlerweile einen totalen Knoten im Kopf. Was mich im Moment
total verwirrt und ich nicht weiß wo es herkommt:
Der Schalter ist vom EingangsPin Richtung Ground angeschlossen.
Der Schalter ist, wenn der Magnet in Reichweite ist, geschlossen.
Wenn ich, bei geschlossenem Schalter, per SW den Zustand abfrage kommt
allerdings ein High/1 zurück. Eigentlich müsste der geschlossene
Schalter den Eingang ja auf null/Gnd ziehen.
IST Zustand:
Tür zu (Schalter geschlossen): Wert=1
Tür offen (Schalter geöffnet): Wert=0
Someone schrieb:
> Und nun zum LoRaWAN: Überprüfe bitte auch, ob Du LMIC mit einem Arduino
überhaupt noch einsetzen kannst. Soweit ich mich richtig erinnern kann, hatte man
mit Arduino und LMIC Probleme mit manchen MAC-Kommandos; TTNv3 erwartet aber
mittlerweile wie jedes andere einigermaßen standardkonforme LoRaWAN, dass diese
vom Knoten aber ordentlich verarbeitet werden. TTNv2 war da deutlich
nachlässiger, aber es ist ja Quatsch, die Netzwerkperformance künstlich
einzuschränken, damit man irgendwelche Bastelhardware betreiben kann, wenn es
mittlerweile wirklich kostengünstige standardkonforme Lösungen gibt. Ich weiß
nicht, ob LMIC mit Arduino mittlerweile funktioniert, es gibt aber sicher andere
LoRaWAN-Hardware, die unproblematischer ist, da LMIC schon extrem viel Speicher
des Arduino verbraucht.
Es gibt eine weiterentwickelte Lib für Lora und TTN für Arduino
https://github.com/mcci-catena/arduino-lmic
Es gibt aber auch ein paar Einschränkungen.
Heinz M. schrieb:> Eigentlich müsste der geschlossene Schalter den Eingang ja auf null/Gnd> ziehen.
Tut er das auch tatsächlich? Hast du das am uC-Pin nachgemessen?
Heinz M. schrieb:> Was mich im Moment> total verwirrt und ich nicht weiß wo es herkommt:
Wo die Störung her kommt?
Das kann ich dir sagen:
Das gesamte Universum schreit elektromagnetisch auf deine Konstruktion
ein!
Jeder Fetzen Metall, ist eine Antenne, auch die Kabel zum Reed und
selbst der Container.
Lothar M. schrieb:> Heinz M. schrieb:>> Eigentlich müsste der geschlossene Schalter den Eingang ja auf null/Gnd>> ziehen.> Tut er das auch tatsächlich? Hast du das am uC-Pin nachgemessen?
Gemessen habe ich nicht. Aber
1
Serial.println(digitalRead(PIN_DOOR_SWITCH),DEC);
gibt mir ein 0 aus wenn der Magnet entfernt ist.
Ist ja eigentlich auch egal. Es läuft.
Vielen Dank nochmal.
Heinz M. schrieb:> Wenn ich, bei geschlossenem Schalter, per SW den Zustand abfrage kommt
Bei geschlossenem Schalter, oder bei geschlossener Tür? Der Abus ist ein
Normaly Closed (NC) Typ. Das heisst, unbetätigt (ohne Magnet)
geschlossen, wenn ich das richtig verstanden habe.
Eduard I. schrieb:> Bei geschlossenem Schalter, oder bei geschlossener Tür? Der Abus ist ein> Normaly Closed (NC) Typ. Das heisst, unbetätigt (ohne Magnet)> geschlossen, wenn ich das richtig verstanden habe.
Ich verstehe das anders:
"Der Stromkreis dieses NC-Öffnungsmelders ist im Ruhezustand
geschlossen. Vergrößert sich der Abstand zwischen Reed und Magnet, wird
der Stromkreis unterbrochen und ein Alarm gemeldet."
Etwas verwirrend ist allerdings die Bezeichnung "NC". Das ist wohl der
Ruhezustand des Gesamtsystems, wenn Tür/Fenster geschlossen ist und
damit der Magnet den Reedkontakt schließt.
Der Reedkontakt alleine wäre dann "NO".