Low-Power-Wireless-Modul-Strategie

Ich entwerfe Low-Power-Sensormodule, die über eine relativ kleine Fläche verteilt werden. Die Module sind alle batteriebetrieben und sollten für eine anständig lange Zeit funktionieren, ohne dass die Batterien aufgeladen/ausgetauscht werden müssen (je länger, desto besser, denken Sie an mindestens ein paar Wochen, wenn nicht Monate oder Jahre). Die Idee ist, dass das Modul jede halbe Stunde oder Stunde aus dem Energiesparmodus aufwacht, einige Proben nimmt und die Daten an einen zentralen Datenlogger überträgt. Der zentrale Datenlogger wird wahrscheinlich über die Steckdose mit Strom versorgt, sodass ein geringer Stromverbrauch nicht unbedingt erforderlich ist. Ich erwarte nicht, dass Module weiter als 100 m vom zentralen Logger entfernt sind, wahrscheinlich viel weniger.

Ich habe einige mögliche Transceiver-Module identifiziert, die möglicherweise funktionieren könnten:

  1. ALPHA-TRX433S, 433 MHz
  2. ALPHA-TRX915S, 915 MHz
  3. Mikrochip MRF89XAM8A, 868 MHz
  4. Mikrochip MRF89XAM9A, 915 MHz

Soweit ich gelesen habe, arbeiten diese Module alle in FCC-unregulierten Bändern und sollten sicher zu verwenden sein. Die Alpha-Module werben mit einer Reichweite von 300 m, aber ich kann nicht herausfinden, wie hoch die erwartete maximale Reichweite der Microchip-Module wäre. Wie würde ich das berechnen?

Da ich meine Auswahl an Bändern habe, welches sollte ich wählen und warum (dh was bekomme ich von 915 MHz über 433 MHz und was verliere ich)? In der Reihenfolge, welche Parameter ich für die wichtigsten halten würde:

  1. Geringer Strom
  2. Übertragungsreichweite (mehr ist besser, im Rahmen des Zumutbaren)
  3. Immunität gegenüber anderen Umweltfaktoren (z. B. WLAN/Mobilfunknetze, laufende Mikrowellenherde, Wände/physische Hindernisse, Temperatur usw.). Die Zielanwendung ist eine Wohnumgebung und es wird wahrscheinlich erhebliche Temperaturschwankungen geben (z. B. -20 ° C bis 50 ° C).
  4. Datenrate. Dies ist nicht besonders wichtig, da ich sehr wenige Daten pro Sample erwarte (höchstens wenige Bytes).

Eine andere Frage, die ich habe, ist, wie man mit mehreren Modulen umgeht, die gleichzeitig versuchen, Daten zu übertragen. Ich habe ein paar Gedanken darüber, wie ich dies abmildern kann, bin mir aber nicht sicher, mit welcher Lösung ich fortfahren soll:

  1. Verwenden Sie einen zufälligen Zeitversatz für die Datenübertragung. Die Hoffnung ist, dass Kollisionen einfach vermieden werden. Dies wäre wahrscheinlich am einfachsten zu implementieren und verbraucht möglicherweise am wenigsten Strom. Dies garantiert jedoch nicht, dass es keine Kollisionen gibt. Auch das Erhalten einer guten Zufallsquelle oder eines eindeutigen Pseudozufallsstartwerts kann Probleme verursachen, die jedoch nicht unlösbar sind.

  2. Prüfen Sie nach dem Aufwachen und dem Sendeversuch, ob gerade eine Übertragung stattfindet. Warten Sie einfach auf das Ende der Übertragung, bevor Sie Daten senden. Das Problem wird dann, wie ich mit mehreren Sensoren im Wartezustand umgehe, da sie möglicherweise beide entscheiden könnten, dass die letzte Übertragung beendet ist, und beide gleichzeitig mit der Übertragung beginnen.

  3. Irgendeine andere Lösung.

Beachten Sie, dass die Reichweite von 300 m für die Kommunikation mit „Clear Line of Sight“ gilt und normalerweise in Innenräumen auf 50 oder 100 m (oder sogar weniger) sinken kann, je nachdem, nein. und Art der Wände zwischen Tx/Rx. Ich habe ein 433-MHz-ASK/OOK-Tx/Rx-Paar in einem Projekt mit einem ähnlichen Nutzungsprofil über 6 Monate lang mit 4 x 1,5 VDC AA (standardmäßig quecksilberfrei) verwendet.
Was den Umgang mit mehreren gleichzeitigen Übertragungen betrifft, kommen Ihre ersten Lösungen dem nahe, was ich verwende. In meinem Fall verwendet mein Sender einen unkalibrierten Temperatursensoreingang als PRNG-Seed, um in einen Offset von bis zu 3000 ms umzuwandeln, und dann verwende ich auch Neuübertragungen.

Antworten (3)

Ich habe einen Open-Source- und Open-Hardware-Sensor , der Ihnen einen funktionierenden Ausgangspunkt bieten würde: Er ist mit dem Internet verbunden und überträgt alle zwei Minuten seine Temperatur, Luftfeuchtigkeit und Batteriespannung und hält mit 2xAA-Batterien 3-5 Jahre. Es basiert auf dem M12 6LoWPAN Modul .

Ich werde mein Bestes tun, um alle Ihre Fragen zu beantworten:

Bezüglich des Band-Kompromisses:

433 MHz, 915 MHz, 2,4 GHz

Reichweite vs. Antennengröße ist hier der klare Kompromiss. Die Dämpfung des Freiraumpfads ist eine Funktion der Wellenlänge, sodass sich niedrigere Frequenzen bei gleicher Dämpfung viel weiter ausbreiten. ABER, um davon zu profitieren, benötigen Sie auch eine geeignete Antenne, die auch mit der Wellenlänge skaliert. Die 2,4-GHz-Antenne des M12 nimmt etwa 2 cm² PCB-Fläche ein.

Ein zweiter Faktor ist die Lizenzierung. 2,4 GHz kann weltweit unlizenzierte Stationen haben. 915 MHz ist nur in den USA nicht lizenziert (es ist überall sonst ein GSM-Band). Ich bin mir nicht sicher, ob die Beschränkungen auf 433 MHz bestehen.

Die Datenrate wird auch durch die Frequenzwahl gemäß dem Shannon-Hartley-Theorem beeinflusst ; Sie können mehr Daten in ein höheres Frequenzband stopfen. Dies wird jedoch nicht immer für eine endgültigere Datenrate verwendet. 802.15.4 hat zum Beispiel 4 Bits Redundanz für jedes echte Bit, das auf der Datenschicht gesehen wird. Die 32 Symbole sind pseudo-orthogonal, sodass Sie mehrere Low-Level-Bits beschädigen müssen, um einen Fehler zu verursachen. Dadurch kann 802.15.4 unter dem Grundrauschen arbeiten (Forschungsergebnisse deuten auf -5 dB SNR hin) und macht es relativ robust gegenüber Störungen.

Nun zum nächsten schwierigen Thema,

Low-Power-Funkbetrieb :

Im Vergleich zu Haushaltsbatteriequellen (z. B. AA-Alkalibatterien) sind selbst die „Low-Power“-SoCs wie der mc13224v nicht sehr stromsparend. Die Sender haben etwa 30 mA bei 2-3,5 V und die Empfänger etwa 25 mA. Ohne das Radio auszuschalten und die CPU in den Ruhezustand zu versetzen, verbraucht diese Last in wenigen Tagen 2 AAs. Der hohe Stromverbrauch des Empfängers ist oft überraschend für die Menschen und wahrscheinlich der größte Schmerz bei der Entwicklung von Funksystemen mit geringer Leistung. Die Implikation ist, dass Sie, wenn Sie jahrelang laufen, fast nie senden oder hören können.

Das Ziel, einen "jahrlangen" Betrieb von 2xAA-Alkalien zu erreichen, besteht darin, den durchschnittlichen Strom des Systems auf < 50 uA zu bringen. Wenn Sie dies tun, müssen Sie jahrelang gegen die Sekundäreffekte der Batterien ankämpfen, wie z. B. Selbstentladung und die 7-jährige Lebensdauer von Haushaltsbatterien.

Der beste Weg, um unter den Durchschnitt von <50 uA zu kommen, ist, wenn Ihr Transceiver nicht empfangen muss. Wenn dies zutrifft, können Sie die Daten so schnell wie möglich "chirpen" und das System die meiste Zeit in einen Energiesparmodus (z. B. ca. 10 uA) versetzen. Der TH12 sendet zum Beispiel etwa 10 ms lang, aber es gibt einen anderen Overhead im System in Bezug auf die Verarbeitungszeit und die Einrichtungszeiten für den beteiligten Sensor. Die Details können mit einer Stromsonde und einer Tabelle ausgearbeitet werden:

Aus dieser Art von Analyse können Sie die Lebensdauer ermitteln (vorausgesetzt, Sie haben eine genaue Entladekurve für Ihre Batterie).

Wenn Sie Daten auf der Low-Power-Seite empfangen müssen (z. B. um einen schläfrigen Router in einem Mesh-Netzwerk zu machen), konzentriert sich der aktuelle Stand der Technik auf Zeitteilungstechniken. Einige synchronisieren das Netzwerk eng, wie z. B. 802.15.4-Beacons, und andere verwenden ein "lockeres" System wie ContikiMAC (das einfacher zu implementieren sein kann, insbesondere wenn Ihre Hardware keine stabile Zeitbasis hat).

Unabhängig davon zeigt meine Erfahrung, dass diese Methoden im Durchschnitt bei etwa 400 uA liegen, was Sie mit 2xAAs in die Laufzeit von "Monaten bis vielleicht einem Jahr" bringt.

Kollisionen :

Mein Rat: Mach dir vorerst keine Sorgen. Mit anderen Worten, tun Sie "Aloha" (Ihre Option Nr. 1), wenn Sie Daten haben, senden Sie sie. Wenn es kollidiert, senden Sie es vielleicht erneut. (Dies hängt von Ihren Zielen ab). Wenn Sie nicht sicherstellen müssen, dass jede Probe empfangen wird, versuchen Sie es einfach einmal und gehen Sie sofort schlafen.

Sie werden feststellen, dass das Problem des Stromverbrauchs so schwerwiegend ist, dass die einzige Lösung ein Netzwerk ist, das überhaupt nicht viel überträgt. Wenn du es einfach versuchst, wird es wahrscheinlich durchkommen. Wenn dies nicht der Fall ist, können Sie es später jederzeit erneut versuchen.

Wenn Sie sicherstellen müssen , dass jedes Datagramm durchkommt, müssen Sie eine Art ACK-Schema durchführen. In der 6LoWPAN-Welt können Sie TCP verwenden, das es immer wieder versucht, bis Ihre Batterie leer ist. Es gibt auch CoAP , das UDP verwendet und einen Wiederholungsmechanismus hat (aber keine Zustellung verspricht). Aber jede Auswahl hier wirkt sich auf die Laufzeit aus. Wenn Sie jahrelang tätig sind, werden die Auswirkungen in Monaten sein.

Ihre Option Nr. 2 ist als CCA in die 802.15.4-Hardware integriert. Die Idee ist, dass der Empfänger für 8 Symbole eingeschaltet wird und wahr oder falsch zurückgibt. Dann können Sie entscheiden, was als nächstes zu tun ist. Sie können den ganzen Tag/die ganze Woche mit diesen Schemata spielen. Aber jedes Mal, wenn Sie so etwas tun, verkürzen Sie die Laufzeit um weitere Wochen. Deshalb schlage ich vor, erstmal einfach anzufangen. Es wird ganz gut funktionieren, wenn Sie versuchen, lange Laufzeiten zu erreichen.

Dein Link funktioniert nicht!
Ich möchte diesen Microchip XLP Estimator ergänzen , der Ihnen die erwartete Laufzeit für verschiedene Konfigurationen von Batterien und Betriebszuständen / -zeiträumen zeigt. Wenn alle Sensoren Transceiver sind, könnten Sie auch ein „Round-Robin“- oder „Token-Ring“-Schema implementieren, bei dem der Master Gerät 0 wiederholt dazu auffordert n "Etwas für mich?" Der Sensor wartet, bis er an der Reihe ist (z. B. 10 ms), sendet und schaltet sich dann aus. Ich würde empfehlen, eine Art CRC-Prüfsumme zu verwenden, um zu vermeiden, dass verstümmelte Daten akzeptiert werden.

Vielleicht interessieren Sie sich für JeeNodes, das im Grunde ein Arduino Uno ist, das mit einem RFM-12B-Funkmodul von HopeRF gekoppelt ist. Wenn Sie Ihren Code direkt auf die entfernten "Knoten" schreiben, können Sie abhängig von Ihren Sensoren usw. leicht Monate aus einem Satz Batterien herausholen.

Schauen Sie sich seine Website an, der Stromverbrauch ist etwas, das gut dokumentiert ist. Eine ideale Sache dabei ist, dass Sie Standard-Arduino-Bibliotheken für Ihre Sensoren verwenden können, oder die Sensoren im Jeelabs-Shop verwenden und die JeeLib-Bibliothek verwenden, was alles sehr einfach macht.

Ich habe aus einem JeeNode v6 eine kleine Fernbedienung für eine Lampe gemacht und einen alten Nokia-Akku ausgeschaltet (etwa 1 Ah, aber jetzt wahrscheinlich weniger), er läuft seit 3 ​​Monaten und die Akkuspannung liegt immer noch über 3,9 V (dh noch ziemlich voll). Es sitzt einfach im Energiesparmodus und wacht alle paar ms auf, um zu überprüfen, ob die Tasten gedrückt werden.

Ich habe die Platinen im JeeLabs-Shop gekauft, aber alle Komponenten von Orten wie ebay, element14 usw. bekommen, so wurde es etwas billiger.

Mit ein wenig Aufmerksamkeit für das Antennendesign können Sie anscheinend einige hundert Meter aus der Sichtlinie herauskommen. Mit einem einfachen vertikalen Kabel bekomme ich problemlos eine hausweite Abdeckung.

DATENRATE "Die Datenrate wird auch durch die Frequenzwahl gemäß dem Shannon-Hartley-Theorem beeinflusst; Sie können mehr Daten in ein höheres Frequenzband stopfen." Falsch!!!

Die Datenrate hat mit der Bandbreite zu tun, nicht mit der Trägerfrequenz. Sie können eine niedrige Trägerfrequenz haben, aber dennoch eine hohe Bandbreite und eine hohe Datenrate.

TRÄGERFREQUENZ Eine niedrigere Trägerfrequenz ist gut für die Reichweite. Wenn die Frequenz halbiert wird, erhöht sich die Reichweite um das Vierfache. Aber auch die Antennengröße würde zunehmen. Typische Antennen sind Lamba/2 oder Lambda/4 (Lambda ist die Wellenlänge in Metern).

CHANNEL CONTENTION Dies scheint auf den ersten Blick ziemlich offensichtlich zu sein, kann aber schwierig werden. Wie andere bereits betont haben, wäre die einfachste Strategie, einmal aufzuwachen und zu senden und dann schlafen zu gehen. Wenn die Anzahl der Sender nicht so groß ist und die Schlafdauer viel größer ist als die Sendedauer, dann würde dies funktionieren. Aber Sie müssen bereit sein, in seltenen Fällen einige Daten zu verlieren.