Archiv der Kategorie: Sonstiges

Was ist ein IoT-Gateway

Ein IoT-Gateway ist ein Bauteil, dass zur Anbindung von Maschinen oder GrĂ€ten an das Internet der Dinge (IoT) geeignet ist und nicht-smarte GerĂ€te ĂŒberwachen und steuern kann.

Ein IoT-Gateway dient als Schnittstelle zwischen einem nicht-smarten GerĂ€ten und dem IoT-Netzwerk. Es ermöglicht die Erfassung und Übertragung von Daten dieser GerĂ€te an die IoT-Plattform, ohne dass die GerĂ€te selbst smart sein mĂŒssen.

Sie bieten meist eins oder mehrere der folgende Merkmale:

1. KonnektivitÀt:
Das Bauteil kann verschiedene KonnektivitÀtsoptionen bieten um eine Verbindung zu den nicht-smarten GerÀten herzustellen. Dazu gehören drahtlose Technologien wie Wi-Fi, Bluetooth, Zigbee, Z-Wave oder sogar kabelgebundene Schnittstellen wie Ethernet.

2. Datenprotokolle und -formatierung:
Das Bauteil sollte in der Lage sein, Daten von den nicht-smarten GerĂ€ten zu erfassen und in das geeignete Format fĂŒr die Übertragung an die IoT-Plattform zu konvertieren. Dies kann bedeuten, dass Protokolle wie MQTT, CoAP oder REST verwendet werden, um die Daten zu ĂŒbertragen.

3. Datenaufbereitung und Verarbeitung:
Das Bauteil kann grundlegende Aufgaben der Datenaufbereitung und Verarbeitung ĂŒbernehmen, um die Daten vor der Übertragung zu filtern, aggregieren oder zu transformieren. Dies ermöglicht eine effiziente Nutzung des Netzwerks und reduziert die DatenĂŒbertragungsmenge.

4. Sicherheit:
Ein IoT-Gateway sollte Sicherheitsmechanismen implementieren, um die Kommunikation und die ĂŒbertragenen Daten zu schĂŒtzen. Dies kann die Verwendung von VerschlĂŒsselung, Authentifizierung und Autorisierung umfassen, um sicherzustellen, dass nur autorisierte GerĂ€te auf das Gateway zugreifen können und dass die Daten wĂ€hrend der Übertragung geschĂŒtzt sind.

5. Skalierbarkeit und FlexibilitÀt:
Das Bauteil sollte skalierbar sein, um eine grĂ¶ĂŸere Anzahl von nicht-smarten GerĂ€ten zu unterstĂŒtzen. Es sollte auch flexibel genug sein, um mit verschiedenen Arten von GerĂ€ten und Kommunikationsprotokollen zu arbeiten.

6. Cloud-KonnektivitÀt:
Das Gateway sollte in der Lage sein, eine Verbindung zur IoT-Cloud-Plattform herzustellen, um die erfassten Daten an die Plattform zu senden. Dadurch können die Daten analysiert, visualisiert und weiterverarbeitet werden.

7. Lokale Verarbeitung:
Einige IoT-Gateways können auch ĂŒber eingebettete Rechenleistung verfĂŒgen, um eine lokale Verarbeitung und Analyse der Daten zu ermöglichen. Dadurch können bestimmte Aufgaben direkt am Gateway ausgefĂŒhrt werden, ohne dass alle Daten an die Cloud gesendet werden mĂŒssen.

Diese Merkmale können je nach den spezifischen Anforderungen und AnwendungsfÀllen variieren.

Wir bieten ein flexiebles IoT-Gateway dessen Firmware je nach Kundenanforderung angepasst werden kann.

Ee besitzt bis zu drei 24V EingĂ€nge und einen Highside Schaltausgang. Weiterhin verfĂŒgt es ĂŒber einen FRAM-Speicher (ferroelektrischer RAM). Diesr ermöglicht es dem GerĂ€t, wichtige Informationen wie ZĂ€hlerwerte oder StĂŒckzahlen zu erfassen und zu speichern und selbst nach einem Stromausfall diese gespeicherten Daten zu behalten.

DarĂŒber hinaus ist das GerĂ€t in der Lage, die gespeicherten Daten oder Informationen per Messenger-Dienst zu versenden. Dies ermöglicht es, die erfassten Daten an andere GerĂ€te oder an Benutzer zu ĂŒbertragen, die ĂŒber den Messenger-Dienst verbunden sind. Dadurch können wichtige Informationen schnell und effizient an einen bestimten Personenkreis ĂŒbermittelt werden.

Um eine genaue Zeitreferenz fĂŒr die Datenerfassung und die Kommunikation sicherzustellen, ist das GerĂ€t mit einem NTP-Client (Network Time Protocol) ausgestattet. NTP ist ein Protokoll, das die Synchronisierung der Uhren in einem Computernetzwerk ermöglicht. Durch den NTP-Client kann das GerĂ€t die genaue Zeitinformation von einem NTP-Server abrufen und diese zur Zeitsynchronisation verwenden. Dies gewĂ€hrleistet die Konsistenz und Genauigkeit der Zeitstempel fĂŒr die erfassten Daten.

Das IoT-Gateway verfĂŒgt zudem ĂŒber eine WLAN-Anbindung, die ihm ermöglicht, drahtlos mit einem Netzwerk zu kommunizieren. Die WLAN-Verbindung erlaubt eine flexible Installation des Gateways, da es nicht an eine physische Verbindung wie Ethernet gebunden ist. Es kann drahtlos mit dem Internet und anderen GerĂ€ten innerhalb des WLAN-Netzwerks kommunizieren, was die KonnektivitĂ€t und Integration erleichtert.

Die Kombination aus FRAM-Speicher, Messenger-Dienst, NTP-Client und WLAN-Anbindung erweitert die FunktionalitĂ€t des IoT-Gateways. Es ermöglicht das zuverlĂ€ssige Speichern von Daten, die Kommunikation ĂŒber Messenger-Dienste, die prĂ€zise Zeitsynchronisation und die drahtlose Verbindung zu Netzwerken. Diese Eigenschaften tragen zur LeistungsfĂ€higkeit des Gateways bei und eröffnen weitere Möglichkeiten fĂŒr die Anwendung in verschiedenen IoT-Szenarien.

Hier finden Sie eine Auswahl der verfĂŒgbaren Produkte zu diesem Thema:

IOT-Gatway MessageBot

Kapazitiver Regensensor Funktionsweise

Zum Blogbeitrag MQTT-Regensensor Modul

Allgemeines:

Im Internet wird eine Vielzahl von verschiedenen Regensensoren angeboten. Die meisten davon kommen aus Fernost und arbeiten nach dem Resistance Prinzip.

Trifft ein Regentropfen auf die nicht isolierten Kontakte des Sensors, werden die nebeneinanderliegenden kammförmigen Kontakte durch den Regen verbunden, was letztendlich zu einer Reduzierung des Sensorwiderstandes fĂŒhrt.

Diese WiderstandsÀnderung ist abhÀngig vom Verschmutzungsgrad des Regenwassers, sowie der bereits eingetretenen Oxidation des Regensensors.

Über eine Komparator Schaltung kann hierbei meist der Schaltpegel eingestellt werden, bei dem Regen detektiert wird und der dann ein digitales Ausgangssignal setzt.

Manche Sensoren stellen zusĂ€tzlich zu diesem Digitalausgang noch ein Analogsignal zur VerfĂŒgung, was eine Lösung fĂŒr eine zeitweilige Kalibrierung des Sensors durch die Software erlauben wĂŒrde.

Das große Problem bei dieser Messmethode ist es, dass selbst bei Sensoren mit vergoldeten KontaktoberflĂ€chen immer parasitĂ€re Ströme fließen.

Da praktisch immer ein kleiner Gleichstrom an beiden Polen des Sensors anliegt, fĂŒhrt dies unabhĂ€ngig von der QualitĂ€t des Sensors zu einem elektrochemischen Prozess und damit ĂŒber kurz oder lang zu einer schrittweisen Zerstörung des Sensors.

Eine bessere Lösung stellt dieser Sensor dar, da er auf einem anderen Prinzip, dem kapazitiven Prinzip beruht.

Das Funktionsprinzip bei einem kapazitiven Sensor ist dem oben vorgestellten Messverfahren durchaus Àhnlich. Es unterscheitet sich jedoch in einem wesentlichen Punkt, bei Regen wird hier keine leitende Verbindung hergestellt. Durch die Wassertropfen auf der OberflÀche wird lediglich die KapazitÀt des Sensors verÀndert, das Wasser wirkt als Dielektrikum.

Der Vorteil bei diesem Lösungsansatz liegt darin, dass keine blanken LeiterbahnoberflĂ€chen der Witterung ausgesetzt sind und dadurch auch kein elektrochemischer Prozess ausgelöst wird, der den Sensor auf Dauer irreversibel beschĂ€digt. Alle leitenden Teile sind durch eine Lackschutzschicht vor WitterungseinflĂŒssen geschĂŒtzt.

Die KapazitĂ€t des Sensors betrĂ€gt im trockenen Zustand ca. 170pF. Tritt eine Betauung ein oder trifft Regen auf den Sensor, steigt die KapazitĂ€t an. Durch das ermittelte Delta C, lĂ€sst sich sogar eine Aussage ĂŒber die Art des Regens und dessen IntensitĂ€t treffen. Ist es Neblig oder es handelt sich um einen feinen Nieselregen, der die SensoroberflĂ€che benetzt, bilden sich viele kleine Wasser Tröpfchen auf dem Sensor, was wiederrum zu einem großen Delta C fĂŒhrt.
Bei einem Durchschnittlichen Regen Ereignis sind es vorwiegend grĂ¶ĂŸere Tropfen, die zu einem großen Teil sofort wieder abrutschen, so ergibt sich ein kleineres Delta C.

Um schnell festzustellen zu können, ob der Regen zu Ende ist, besitzt der Sensor eine Heizung an der Platinen Unterseite. Diese besteht aus zwanzig 15 Ohm HeizwiderstÀnde, die es bei einer Versorgungsspannung von 5V immerhin auf eine Heizleistung von knapp 1,8 W bringen.
Sie sorgen fĂŒr eine zĂŒgiges verdunsten der FlĂŒssigkeit bzw. einer Eisbildung auf der SensoroberflĂ€che.

Durch die sehr kleine Bauform des Sensors, kann selbst mit dieser relativ geringen  Leistung ein schnelles (ca. 5 MinĂŒtiges) Abtrocknen sichergestellt werden.
Energetisch gesehen ist es sinnvoll, die Sensorheizung nur fĂŒr die Dauer einer Regenerkennung zu betreiben. Das bedeutet, wird keine Feuchtigkeit oder Regen mehr detektiert, soll die Sensorheizung abgeschaltet werden!
HierfĂŒr ist ein Transistor auf der Sensorplatine vorgesehen.
Wird hier ein Mosfet bestĂŒckt und ist der Pin in dieser Hardware Version 1.00 fĂŒr dessen Ansteuerung nicht angeschlossen, muss dieser auf Masse gelegt werden.
Da der Mosfet bei einem offenem Gate in einem Halbleitenden Zustand gehen könnte, was zur einer Zerstörung des Bauteils fĂŒhren wĂŒrde.

Diese Bild zeigt die BestĂŒckung der Unterseite des Sensors. Es ist gut zu erkennen, das im Layout zwar Pats fĂŒr eine Befestigung der Sensorplatine vorgesehen sind, diese jedoch keine Bohrung besitzen. Weshalb hier auch kurz auf die Befestigung des Sensors eingegangen werden soll.

Wie zu sehen ist befinden sich die AnschlĂŒsse annĂ€hernd mittig auf der Sensorplatine.

Verwandt man z.B. eine feste wasserdichte Hensel Anschlussdose um die Elektronik darin zu verstauen, genĂŒgt es in den Deckel ein passendes rundes Loch zu bohren, damit die AnschlĂŒsse nach innen geleitet werden können. Der Regensensor selbst wird am besten mit Silikon wasserdicht mit dem Deckel verklebt.
Sollten dennoch Befestigungslöcher benötigt werden, so können diese nachtrÀglich ausgebohrt werden.

Es bietet sich an die Platine fĂŒr die Auswertung mit dem entsprechenden GegenstĂŒck auszustatten, so dass diese von der Innenseite aufgesteckt werden kann.

Die Befestigung dieser Platine kann mit Distanzbolzen, die am Deckel eingeschraubt werden, erfolgen. Werden die Schrauben nicht vom Sensor (mit Silikon) ĂŒberdeckt, sollte hier auf Edelstahlschrauben zurĂŒckgegriffen werden.

Im Unteren Bild ist der Schaltplan der Sensorplatine zu sehen.
Bei der Steckverbindung wurde wert daraufgelegt, dass die Signale fĂŒr alle möglichen Anschlussvarianten an den Pins herausgefĂŒhrt wurden.

Somit stehen dem Endanwender auch alle möglichen Messverfahren zur VerfĂŒgung, die zur KapazitĂ€tsmessung angewandt werden können.

Kapazitiver Regensensor V1.01

Pin Belegung:

  1.  VDD +5V / 3,3V
  2. NC
  3. Sensorheizung
  4. Ladewiderstand
  5. Analog wert (Ladezustand)
  6. Entladewiderstand
  7. GND
  8. GND

KapazitÀtsmessung durch Laden- und Samplen der Kondensatorspannung

Die Platine des kapazitiven Regensensors wurde fĂŒr verschieden Anwendungsbereiche entwickelt, deshalb gibt es auch verschieden BestĂŒckungsvarianten.

Wenn man z.B. einen PIC Mikrokontroller mit einem Komperatoreingang verwnden, kann eine Messmethode angewendet werden, bei die KapazitĂ€t des Sensor ĂŒber den Pin 6, R23 entladen wird (Pin auf LOW) und der Pin anschließend wieder als Komperator Eingang umgeschaltet wird.
Der Pin 4, der zu diesem Zeipunkt im Tristate (hochohmig) war, wird nun als Ausgang programmiert und auf LOW geschaltet. Dieser lĂ€d nun die die KapazitĂ€t des Regensensors ĂŒber R22 auf, bis der Komperatoreingang kippt.
Die ermittelte Zeit dient dann als Grundlage fĂŒr die KapazitĂ€tsbestimmung.
Beim MQTT-Regensensormodul wird ein anderes Messvervahren angewannt, da dieser nicht ĂŒber einen Komperatoreingang verfĂŒgt.

Hier wird der AOUT (der gegen GND direkt die KapazitÀt des Sensors dartellt) als KapazitÀt eines Multivibrators genutzt, der abhÀngig von dieser KapazitÀt seine Ausgangsfrequenz Àndert. Diese Ausgangsfrequenz wird an einem digitalen Eingang des ESP8266 gemessen und die SensorkapazitÀt aus der Frequenz berrechnet.

Da fĂŒr dieses Messverfahren der C1, R22 und R23 nicht benötigt werden, mĂŒssen diese Bauteile bei diesem Messverfahren nicht mit bestĂŒckt werden.

Das obengenannte Messverfahren, dass sich jedoch nur fĂŒr grĂ¶ĂŸere KapazitĂ€ten im Bereich zwischen 10 nF und 2000 uF eigent, beschreibt der folgende Source Code von von Matthias Busse

Quellenverweis :
KapazitÀten von 10nF bis 2000uF einfach messen mit dem Arduino

// KapazitÀt MessgerÀt 10nF bis 2000uF
//
// Matthias Busse 22.2.2015 Version 1.1

#define messPin 0            // Analog Messeingang
#define ladePin 13           // Kondensator lade Pin ĂŒber einen 10kOhm Widerstand
#define entladePin 11        // Kondensator entlade Pin ĂŒber einen 220 Ohm Widerstand 
#define widerstand  9953.0F  // 10 kOhm > gemessen 9,953 kOhm

unsigned long startZeit;
unsigned long vergangeneZeit;
float microFarad;
float nanoFarad;

void setup() {
  pinMode(ladePin, OUTPUT);     // ladePin als Ausgang
  digitalWrite(ladePin, LOW);  
  Serial.begin(9600);           // Serielle Ausgabe
  Serial.println("Kapazitaetsmesser Version 1.1");
}

void loop() {
  // Kondensator laden
  digitalWrite(ladePin, HIGH);            // ladePin auf 5V, das Laden beginnt
  startZeit = micros();                   // Startzeit merken
  while(analogRead(messPin) < 648){}      // 647 ist 63.2% von 1023 (5V) 
  vergangeneZeit= micros() - startZeit - 114; // 0-Messung abziehen (112-116 us)
  if(vergangeneZeit > 4294960000) vergangeneZeit = 0; // Minuswerte auf 0 setzen (ist long deshalb der hohe Wert)
 // Umrechnung: us zu Sekunden ( 10^-6 ) und Farad zu mikroFarad ( 10^6 ),  netto 1  
  microFarad = ((float)vergangeneZeit / widerstand);   
  Serial.print(vergangeneZeit);           // Zeit ausgeben
  Serial.print(" nS    ");         

  if (microFarad > 1){
    if(microFarad < 100) {
      Serial.print(microFarad,2);         // uF.x ausgeben
      Serial.println(" uF     ");
    }
    else {
      Serial.print((long)microFarad);     // uF ausgeben
      Serial.println(" uF     ");
    }
  }
  else {
    nanoFarad = microFarad * 1000.0;     // in nF umrechnen
    if(nanoFarad > 10) {
      Serial.print((long)nanoFarad);     // nF ausgeben
      Serial.println(" nF     ");
      }
    else
      Serial.println("kleiner 10 nF");  
  }

  /* Kondensator entladen */
  digitalWrite(ladePin, LOW);             // ladePin auf 0V 
  pinMode(entladePin, OUTPUT);            // entladePin wird Ausgang 
  digitalWrite(entladePin, LOW);          // entladePin auf 0V 
  while(analogRead(messPin) > 0){}        // bis der Kondensator entladen ist (0V)
  pinMode(entladePin, INPUT);             // entladePin wird Eingang
  
  while((micros() - startZeit) < 500000){}   // bis 500ms warten, d.h. max 2 Ausgaben pro Sekunde
}

KapazitÀtsmessung sehr kleiner KapazitÀten

Da bei sehr kleien KapazitĂ€ten die Ladezeit des Kondensators ebenfalls sehr klein wird, mĂŒsste beim oben vorgestellten Messverfahren der Ladewiederstand im VerhĂ€ltnis hierzu entsprechend vergrĂ¶ĂŸert werden, um mit der Samplingrate des AD-Wandlers im Mikrokontroller immer noch ein akzeptables Messergebnis erzielen zu können.

Das Problem bei einem sehr großen Ladekondensator liegt darin, dass natĂŒrlich auch der analoge Eingang des Mikrokontrollers den Kondensator belastet und entlĂ€d. Der Messfehler wird also umso grĂ¶ĂŸer, je grĂ¶ĂŸer der Ladewiderstand wird, bis das System am Ende kippt und der Ladewiderstand die benötigte Ladung nicht mehr liefern kann.

Da sich die KapazitĂ€t des Regensensors in einem Bereich von 170pF – max. 400 pF bewegt, wird hier fĂŒr auf eine anderes Messverfahren zurĂŒckgegriffen werden.

Das Frequenzmessverfahren

Bei diesem Messverfahren wird keine ADC benötigt, es kommt mit einem Digitaleingang des Mikrokontrollers aus.
HierfĂŒr kommt der hochgenaue Langzeittimer NE555 zum Einsatz.
Dieser Timer seht sowohl in einer 5V Variante als NE555, als auch fĂŒr Mikrokontroller die nicht 5V tolerant in einer 3V Variante ICM7555 zur VerfĂŒgung.

Arbeitet der Mikrokontroller mit 3,3,V und stehen nur ein NE555 zur VerfĂŒgung, kann natĂŒrlich auch ein Spannungsteiler am Ausgang den Levelshift ĂŒbernehmen.

Der NE555 wird in dieser Schaltung als Multivibrator eingesetzt, der abhÀngig von angeschlossenen Kondensator seine Ausgangsfrequenz verÀndert.

Wenn am Ausgang gleiche Ein- und Ausschaltzeiten erzeugt werden sollen, muss die Standardschaltung (siehe oben) mit einer Diode parallel zum Widerstand R2 aufgebaut werden. Andernfalls kann diese Diode einfach entfallen. In der obigen Bauteilauslegung ist das TastverhÀltnis annÀhernd 1:1 was auch hier die Diode unnötig macht.
Im Programm des Regensensors werden beide Varianten berĂŒcksichtigt. Da sowohl die Zeitdauer der negativen als auch der positive Halbwelle gemessen und anschließend addiert werden. Und damit die ganze Periodendauer berechnet wird.

FĂŒr die Messung wird vom Regensensor nur der Pin 5 (Analogwert) und Pin 7 (GND) benötigt.
Soll die Heizung genutzt werden kommen noch der Pin 1 (VDD) und Pin 3 (Sensorheizung aktivieren) hinzu.

Die Ein- Zeit berechnet sich wie folgt:
T1= 0,694 * (R1 + R2) * C

Die Aus- Zeit berechnet sich wie folgt:
T2= 0,694 * R2 * C

Die gesamte Periodendauer ist die Summe aus T1 +T2
T = 0,694 * C * (R1 +(2 * R2))
f = 1 / T

Die Frequenz ist 1 / T1 + T2, damit ergibt sich die Ausgangsfrequenz nach folgender Formel:
f = 1 / (0,694 * C * (R1 +2 * R2))

Da bei dieser Anwendung fĂŒr uns nicht wichtig ist, welche KapazitĂ€t der Sensor hat, kann bereits die gemessene Frequenz fĂŒr eine Regenauswertung verwendet werden.

Der VollstÀndigkeit halber hier trotzdem noch die kurz die nach C umgestellte Formel:
C =1 / ( f * 0,694 * (R1 + 2 * R2))

Programaufbau fĂŒr die KapazitĂ€tsmessung des Regensensors

/* Capacitivemeasurement (c) by Dillinger-Engineering 10/2020

   Funktionsweise:
   Um die kleinen KapazitÀtsverÀnderungen des Regensensors (pF-Bereich)
   mit einer hohen Genauigkeit zu messen, wird hier ein NE555/3V verwendet.
   Dieser arbeitet als Multivibrator mit einer Frequenz im KHz Bereich.
   Ändert sich die MesskapazitĂ€t, Ă€ndert (sinkt) auch die
   Frequenz. Je nach Auslegeung der Schaltung kann ĂŒber die
   FrequenzÀnderung dann die entsprechende KapazitÀt errechent werden. 
   Je gröer der Parameter "MeasuringCycleleTime" gewÀhlt wird,
   um so genauer wird auch die Messung. Zu beachten ist dabei jedoch,
   dass sich, sollte ein Sensor Fehler (kein Signal vom Eingang) vorliegt, damit
   auch die Timeoutzeit entsprechnde verlÀngert !
*/

const byte InputPin = 5;                       // Wemos D1 mini (Pin D1)
const unsigned int MeasuringCycleleTime = 1e6; // 1000000 us
const long R1 = 10000;   //  10 KOhm
const long R2 = 100000;   // 100 KOhm


float GetFrequeny(){  // Ergebnis in Hz
  float fsum = 0.0;
  unsigned int counts = 0;
  double f, T;
  unsigned long SartTtime = micros();
  bool Fail = false;
  do {
    T = pulseIn(InputPin, HIGH, MeasuringCycleleTime) + pulseIn(InputPin, LOW, MeasuringCycleleTime);
    if(T==0){
      Fail = true;
    }
    f=1/T;      
    counts++;    
    fsum += f * 1e6;
  } while(micros() < (SartTtime + MeasuringCycleleTime) && !Fail); // 1 Sekunde mitteln
  if(Fail){
    return(0);
  }else{
    f = fsum / counts * 0.9925;    //Korrekturwert ermitteln und einrechnen
    return(f);
  }
}

float GetCapacity(){  // Ergebnis in pF
  return(1/(GetFrequeny() * 0.694 * (R1 + 2 * R2))* 1e12);
}

void setup() {
  pinMode(InputPin, INPUT);
  Serial.begin(115200);
}

void loop() {
  char CharStr[30];
  
  // Show Data on Serial if available
  sprintf(CharStr,"Capacity: %.3f pf", GetCapacity()); 
  Serial.println(String(CharStr));
  sprintf(CharStr,"Frequenz: %.3f Hz", GetFrequeny()); 
  Serial.println(String(CharStr));
}

 

KR1204 12v RF 4-Kanal 433Mhz Funkfernbedienung und Schalter Modul

Technisch Daten:

  1. Arbeitsspannung: DC12V
  2. Ruhestrom: 5mA
  3. Arbeitsfrequenz: 433 MHz / 315 MHz
  4. Empfangsempfindlichkeit: -104 dBm
  5. Funktionsoption: Momentary / Toggle / Latching
  6. Modulationsmodus: ASK
  7. Matching-Modus: Intelligenter Lerncode
  8. Ausgangsmodus: potentialfreier Kontakt / Spannungsausgang
  9. Shell: Ja
  10. Arbeitstemperatur: -30 ~ + 80
  11. Leiterplattenabmessung: 68,2 x 48,2 (mm)

Programmietung der Betriebsmodi und Anlernen von Fernbedienungen:

An das KR2014 Modul können mehrere Fernbedienungen angelernt werden. Wichtig: Die Fernbedienung muss vor dem Anlernen frei von Code sein. Ein Überschreiben mit anderen Modi funktioniert nicht. Leider können meines Wissens nur alle Fernbedienungen gemeinsam gemĂ€ĂŸ Punkt 8 (s. u.) gelöscht werden.

Das Anlernen einer neuen Fernbedienung geschieht ĂŒber den Programmiertaster (Learn Key) auf dem EmpfĂ€ngermodul. Eine RĂŒckmeldung des aktuellen Status erfolgt ĂŒber eine kleine LED im EmpfĂ€ngermodul.
Soll eine neue Fernbedienung angelernt werden, wird ĂŒber die Anzahl der TastendrĂŒcke auf den Programmiertaster (Learn Key) festgelegt, welcher Betriebsmodus fĂŒr die Fernbedienung verwendet werden soll.
DrĂŒckt man z.B. einmal auf den Programmiertaster, wĂ€hlt man den Taster-/Puls-Betrieb fĂŒr diese Fernbedienung aus. (Mehrmaliges DrĂŒcken wĂŒrde die entsprechenden Modi gemĂ€ĂŸ der unten aufgefĂŒhrten Nummerierungen 1 bis 7 einleiten.)
Nach DrĂŒcken des Programmiertasters leuchtet die LED heller und ist bereit, eine neue Fernbedienung aufzunehmen. Nun kann eine beliebige Taste der Fernbedienung kurz gedrĂŒckt werden. Die Übernahme wird anschließend durch dreimaliges Blinken der LED im EmpfĂ€ngermodul angezeigt. Danach leuchtet die LED im EmpfĂ€ngermodul wieder schwĂ€cher.

  1. Taster-/Puls-Modus: DrĂŒcken Sie die Lerntaste auf der EmpfĂ€ngerplatine einmal (die LED-Anzeige auf der EmpfĂ€ngerplatine blinkt), drĂŒcken Sie dann eine beliebige Fernbedienungstaste. Die LED-Anzeige blinkt dreimal. Der EmpfĂ€nger zeigt an, dass der Pulsmodus erfolgreich gekoppelt wurde.

  2. Umschalt-/Toggle-Modus: DrĂŒcken Sie die Lerntaste auf der EmpfĂ€ngerplatine zweimal (die LED-Anzeige auf der EmpfĂ€ngerplatine blinkt), drĂŒcken Sie dann eine beliebige Fernbedienungstaste. Die LED-Anzeige blinkt dreimal, und der Receiver zeigt an, dass der Toggle-Modus erfolgreich gekoppelt wurde.

  3. Verriegelungsmodus: DrĂŒcken Sie die Lerntaste auf der EmpfĂ€ngerplatine dreimal (die LED-Anzeige auf der EmpfĂ€ngerplatine blinkt), drĂŒcken Sie dann die erste Fernbedienungstaste. Die LED-Anzeige blinkt dreimal am EmpfĂ€nger Verriegelungsmodus erfolgreich gekoppelt (Einschalten mit der ersten Taste, Ausschalten mit der zweiten Taste). Nachteil: Mit dieser Fernbedienung können nicht alle Relais ausgeschaltet werden. Es bleibt immer das letzte eingeschaltet.

  4. 2CH kurzzeitig + 2CH Umschalten: DrĂŒcken Sie die Lerntaste auf der EmpfĂ€ngerplatine viermal (die LED-Anzeige auf der EmpfĂ€ngerplatine blinkt), drĂŒcken Sie dann eine beliebige Fernbedienungstaste. Die LED-Anzeige blinkt dreimal, und der EmpfĂ€nger zeigt an, dass das Paar erfolgreich verbunden ist.

  5. 2CH Momentary + 2CH Latching: DrĂŒcken Sie die Lerntaste auf der EmpfĂ€ngerplatine fĂŒnfmal (die LED-Anzeige auf der EmpfĂ€ngerplatine blinkt), drĂŒcken Sie dann eine der Fernbedienungstasten. Die LED-Anzeige blinkt dreimal, und der EmpfĂ€nger zeigt an, dass das Paar erfolgreich verbunden ist.

  6. 2CH Toggle + 2CH Latching: DrĂŒcken Sie die Lerntaste auf der EmpfĂ€ngerplatine sechsmal (die LED-Anzeige auf der EmpfĂ€ngerplatine blinkt), drĂŒcken Sie dann eine der Fernbedienungstasten. Die LED-Anzeige blinkt dreimal, und der EmpfĂ€nger zeigt an, dass das Paar erfolgreich verbunden ist.

  7. 2-Kanal-Verriegelung + 2-Kanal-Verriegelung: DrĂŒcken Sie die Lerntaste auf der EmpfĂ€ngerplatine sieben Mal (die LED-Anzeige auf der EmpfĂ€ngerplatine blinkt). DrĂŒcken Sie dann eine der Fernbedienungstasten. Die LED-Anzeige blinkt dreimal, und der EmpfĂ€nger zeigt an, dass das Paar erfolgreich ist.

  8. Löschen vorhandener Daten auf den Fernbedienungen: DrĂŒcken Sie die Lerntaste auf der EmpfĂ€ngerplatine achtmal. Die LED-Anzeige auf der EmpfĂ€ngerplatine blinkt achtmal. Die vorhandenen Daten auf den Fernbedienungen werden erfolgreich gelöscht.

+ V – Pluspol-Eingang

GND – Negativer Poleingang

1 – KC1 Normal Relais geschlossen
2 – KC1 Relaisrelais
3 – KC1 Normales Öffnen des Relais

4 – KC3 Normal Relais geschlossen
5 – KC3 Relaisrelais
6 – KC3 Normales Öffnen des Relais

7 – KC2 Normal Relais geschlossen
8 – KC2 Relais gemeinsam
9 – KC2 Normales Öffnen des Relais

10 – KC4 Normal Relais geschlossen
11 – KC4 Relais allgemein
12 – KC4 Normales Öffnen des Relais

WARNUNG
Schalten Sie vor der Installation die Stromversorgung ab und ĂŒberprĂŒfen Sie die Spannungsfreiheit!

ANMERKUNGEN
Wechseln Sie die Batterie unverzĂŒglich, wenn Reichweite stark abnimmt.

 

Mathe signifikante Stellen wie gehts …

Die erste signifikante Stelle einer Zahl ist die erste Zahl ungleich 0.

Wenn wir davon ausgehen, dass jede Zahl mit fĂŒhrenden und nachfolgenden Nullen geschrieben werden kann, wie hier in diesem Beispiel zu sehen ist,

…..000000000000000009732,34555000000000000000….

ist die erste Zahl, die NICHT Null ist, also die „9“ die ERSTE Signifikante Ziffer.

Danach wird einfach gezÀhlt:
9732,345550000000000 ….
123456789 daraus folgt, neun signifikante Stellen!

So lautet die Zahl auf drei signifikante Stellen gerundet nun

9730

WĂŒrde zum Beispiel die Folgende Zahl da steht: 2100004, dann wĂ€ren die ersten drei signifikanten Ziffern: 210.

Es werden also wie im Beispiel nur die ersten drei Stellen, die nicht Null sind abzÀhlen und auf die n-te Stelle gerundet.

NMEA nach Dezimalgrad umrechenen und als KML-Datei fĂŒr Google Earth zusammenbauen

Um die Daten eines GPS EmpfĂ€ngers z.B. in Google Earth anzuzeigen benötigt Google Earth die Daten als XML Datei. Die Dateiendung dieser XML Datei lautet „.KML “

In Folgenden finden Sie ein Beispiel fĂŒr den Aufbau einer solchen Datei mit einer Track (Wegeanzeige), hierbei wird eine Textur 10 Meter ĂŒber den Weg nach oben gezogen, um einen besseren Überblick zu erhalten:

<?xml version="1.0" encoding="UTF-8"?>
  <kml xmlns="http://www.opengis.net/kml/2.2">
  <Document>
    <name>KmlFile</name>
    <Style id="transPurpleLineGreenPoly">
    <LineStyle>
    <color>7fff00ff</color>
       <width>4</width>
       </LineStyle>
       <PolyStyle>
         <color>7f00ff00</color>
       </PolyStyle>
    </Style>
    <Placemark>
       <name>Absolute</name>
       <visibility>1</visibility>
       <description>Dillinger-Engineering</description>
       <styleUrl>#transPurpleLineGreenPoly</styleUrl>
       <LineString>
          <tessellate>1</tessellate>
          <altitudeMode>relativeToGround</altitudeMode>
          <coordinates>
            10.8665686666667,49.4601001666667,10
            10.8665698333333,49.4601003333333,10
            10.8665793333333,49.4601003333333,10
            10.8665775,49.4601003333333,10
            10.866586,49.460101,10 
            10.8665888333333,49.4601011666667,10
            10.8665971666667,49.4601015,10 
            10.8665971666667,49.4601015,10
         </coordinates>
       </LineString>
    </Placemark>
  </Document>
</kml>

Von einem GPS EmpfĂ€nger werden die Daten meist im NMEA Format ĂŒbertragen. FĂŒr eine reine Positionsbestimmung genĂŒgt der Daten String „Recommended Minimum Sentence C“ (RMC)
Jeder GNSS-EmpfÀnger muss mindestens den Recommended Minimum Sentence C (empfohlener Mindestdatensatz C, RMC) Datensatz ausgeben können, maximal alle zwei Sekunden.
Er folgt folgendem Aufbau:
Seit NMEA In 2.3, wurden folgende SĂ€tze um ein Feld erweitert (APB, BWC, BWR, GLL, RMA, RMB, RMC, VTG, WCV und XTE) das die SignalintegritĂ€tsinformation laut FAA darstellt. („F“ in untenstehender Tabelle)

$GPRMC,162614,A,5230.5900,N,01322.3900,E,10.0,90.0,131006,1.2,E,A*13
$GPRMC,HHMMSS,A,BBBB.BBBB,b,LLLLL.LLLL,l,GG.G,RR.R,DDMMYY,M.M,m,F*PP

Symbol
Bedeutung
HHMMSS
oder
HHMMSS.SSS
Zeit (UTC)
A Status (A fĂŒr OK, V bei Warnungen)
BBBB.BBBB Breitengrad
b Ausrichtung (N fĂŒr North, nördlich; S fĂŒr South, sĂŒdlich)
LLLLL.LLLL L Àngengrad
l Ausrichtung (E fĂŒr East, östlich; W fĂŒr West, westlich)
GG.G Geschwindigkeit ĂŒber Grund in Knoten
RR.R Kurs ĂŒber Grund in Grad bezogen auf geogr. Nord
DDMMYY Datum (Tag Monat Jahr)
M.M magnetische Abweichung (Ortsmissweisung)
m Vorzeichen der Abweichung (E oder W)
F SignalintegritÀt :
A = Autonomous mode,
D = Differential Mode,
E = Estimated (dead-reckoning) mode
M = Manual Input Mode
S = Simulated Mode
N = Data Not Valid
PP Hexadezimale Darstellung der PrĂŒfsumme
(Die PrĂŒfsumme ergibt sich durch eine XOR-VerknĂŒpfung aller Daten-Bytes zwischen (jeweils exklusive) dem Dollar-Zeichen ‚$‘ und dem Stern ‚*‘.)

Um aus den selektierten Lat und Lon Daten den Dezimalgrad zu extrahieren kann folgende Pascal Funktion verwendet werden.

function GMSToDC(Str, Direction : String): String;
{Convert NMEA latitude & longitude to decimal
Here's how you convert latitude & longitude obtained from NMEA's GPGGA to decimal:
N              NMEA             Decimal
latitude       0302.78469    03 + (02.78469/60) = 3.046412
longitude     10141.82531    101 + 41.82531/60) = 101.6971
Notice that for latitude of 0302.78469,
03 ==> degress. counted as is
02.78469 ==> minutes. divide by 60 before adding to degrees above
Hence, the decimal equivalent is:
03 + (02.78469/60) = 3.046412 }
Var Grad, MinSec , DC: Extended;
begin
   if Length(Str)=10 then //BBBB.BBBBB     Breitengrad
   Begin 
      Grad:= StrToInt(Copy(Str,1,2));
      delete(Str,1,2);
   end
   else                 // LLLLL.LLLLL     LĂ€ngengrad
   Begin
      Grad:= StrToInt(Copy(Str,1,3));
      delete(Str,1,3);
   end;
   while Pos('.', Str) > 0 do      // Ersetze den Punkt durch ein komma
   Str[Pos('.', Str)] := ',';
   MinSec:= StrToFloat(Str)/60;
   DC:= Grad + MinSec;
   if (Direction='S') or (Direction='W') then
      DC := -DC;
   Result:= FloatToStr(DC);
   while Pos(',', Result) > 0 do
   Result[Pos(',', Result)] := '.';
end;

  Das Zusammenbauen der KML-Datei erfolgt hier:

Procedure NMEAToKML(VarStringList:TStringList;Name:String;NMEAArray:array of TNMEA);
Var I    : Integer;
Begin
  StringList.Add(''+#13#10+'<kml xmlns="http://www.opengis.net /kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2"xmlns:atom="http://www.w3.org/2005/Atom">'+#13#10+
  '<Document><name>'+Name+'</name>'+#13#10+
  '<Style id="sn_ylw-pushpin">'+#13#10+
  '<IconStyle><scale>1.1</scale><Icon>'+#13#10+ 
  '<href>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png'+#13#10+
  '<hotSpot x="20" y="2" xunits="pixels" yunits="pixels"/>'+#13#10+
   '<LineStyle><color>7f0000ff</color><width>5</width>  </LineStyle>'+#13#10+
  '<PolyStyle><color>7f0000ff</color></PolyStyle></Style>'+#13#10+
  '<StyleMap id="msn_ylw-pushpin"><Pair><key>normal</key>  <styleUrl>#sn_ylw-pushpin</styleUrl></Pair>'+#13#10+
  '<Pair><key>highlight</key><styleUrl>#sh_ylw-pushpin</styleUrl></Pair></StyleMap>'+#13#10+
  '<Placemark><name>'+FStopWatch.VeranstaltungsInfo+'#msn_ylw-pushpin1'+#13#10+
  '<tessellate>1</tessellate><altitudeMode>relativeToGround</altitudeMode><coordinates>');
  For I:= Low(NMEAArray) to High(NMEAArray) do
  StringList.Add(GMSToDC(NMEAArray[I].Lon, NMEAArray[I].NS)+ ',' +
  GMSToDC(NMEAArray[I].Lat, NMEAArray[I].EW) + ',10');
  StringList.Add(''+#13#10+
  '</LineString>'+#13#10+
  '</Placemark>'+#13#10+
  '</Document>'+#13#10+
  '</kml>');
end;