Ich entwerfe Sensormodule mit geringem Stromverbrauch, die auf einer relativ kleinen Fläche verteilt werden. Die Module sind alle batteriebetrieben und sollten eine anständige lange Zeit arbeiten, ohne dass die Batterien aufgeladen / ausgetauscht werden müssen (je länger desto besser, denken Sie mindestens ein paar Wochen, wenn nicht Monate oder Jahre nach). Die Idee ist, dass das Modul jede halbe Stunde oder Stunde aus dem Energiesparmodus aufwacht, einige Proben entnimmt und die Daten an einen zentralen Datenlogger überträgt. Der zentrale Datenlogger wird wahrscheinlich an der Wand betrieben, 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:
- ALPHA-TRX433S, 433 MHz
- ALPHA-TRX915S, 915 MHz
- Mikrochip MRF89XAM8A, 868 MHz
- Mikrochip MRF89XAM9A, 915 MHz
Nach dem, was ich gelesen habe, arbeiten diese Module alle in ungeregelten FCC-Bändern und sollten sicher zu verwenden sein. Die Alpha-Module bieten eine Reichweite von 300 m, aber ich kann nicht herausfinden, wie hoch die erwartete maximale Reichweite der Microchip-Module sein würde. Wie würde ich das berechnen?
Da ich eine Auswahl an Bändern habe, welche soll ich auswählen und warum (dh was bekomme ich von 915 MHz über 433 MHz und was verliere ich)? In der Reihenfolge der Parameter würde ich am wichtigsten betrachten:
- Geringer Strom
- Übertragungsreichweite (mehr ist besser, im Rahmen der Vernunft)
- Immunität gegen andere Umweltfaktoren (z. B. WLAN- / Zellennetzwerke, laufende Mikrowellenherde, Wände / physikalische Hindernisse, Temperatur usw.). Die Zielverwendung erfolgt in einer Wohnumgebung, und es wird wahrscheinlich erhebliche Temperaturschwankungen geben (z. B. -20 ° C bis 50 ° C).
- Datenrate. Dies ist nicht besonders wichtig, da ich sehr wenig Daten pro Probe erwarte (höchstens wenige Bytes).
Eine andere Frage, die ich habe, ist, wie man mit mehreren Modulen umgeht, die versuchen, Daten gleichzeitig 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:
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 die geringste Leistung. Dies garantiert jedoch nicht, dass es zu keinen Kollisionen kommt. Das Erhalten einer guten Zufallsquelle oder eines eindeutigen Pseudozufalls-Seeds kann ebenfalls Probleme verursachen, ist jedoch nicht unlösbar.
Überprüfen Sie beim Aufwecken und beim Versuch zu senden, ob gerade eine Übertragung stattfindet. Warten Sie einfach bis zum 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 wurde und beide gleichzeitig mit der Übertragung beginnen.
Eine andere Lösung.
quelle
Antworten:
Ich habe einen Open Source- und einen offenen Hardware-Sensor , der Ihnen einen funktionierenden Ausgangspunkt bietet: Er ist mit dem Internet verbunden und überträgt seine Temperatur, Luftfeuchtigkeit und Batteriespannung alle zwei Minuten und hält 3-5 Jahre lang mit 2xAA-Batterien. Es basiert auf dem M12 6LoWPAN-Modul .
Ich werde mein Bestes geben, um alle Ihre Fragen zu beantworten:
In Bezug auf den Bandkompromiss:
433 MHz, 915 MHz, 2,4 GHz
Reichweite vs. Antennengröße ist hier der klare Kompromiss. Der Pfadverlust im freien Raum ist eine Funktion der Wellenlänge, sodass niedrigere Frequenzen bei gleicher Dämpfung viel weiter wandern. ABER, um dies zu nutzen, benötigen Sie auch eine geeignete Antenne, die auch mit der Wellenlänge skaliert. Die 2,4-GHz-Antenne des M12 benötigt etwa 2 cm² Leiterplattenfläche.
Ein zweiter Faktor ist die Lizenzierung. 2,4 GHz können weltweit nicht lizenzierte Sender haben. 915 MHz ist nur in den USA nicht lizenziert (es ist überall ein GSM-Band). Ich bin mir nicht sicher, welche Einschränkungen für 433 MHz gelten.
Die Datenrate wird auch durch Frequenzwahl gemäß dem Shannon-Hartley-Theorem beeinflusst ; Sie können mehr Daten in ein höheres Frequenzband packen. Dies wird jedoch nicht immer für eine endgültigere Datenrate verwendet. 802.15.4 verfügt beispielsweise über 4 Redundanzbits für jedes echte Bit, das auf der Datenschicht angezeigt wird. Die 32 Symbole sind pseudo-orthogonal, sodass Sie mehrere Low-Level-Bits beschädigen müssen, um einen Fehler zu verursachen. Dies ermöglicht den Betrieb von 802.15.4 unter dem Grundrauschen (Untersuchungen legen ein SNR von -5 dB nahe) und macht es relativ robust gegenüber Interferenzen.
Nun zum nächsten schwierigen Thema:
Funkbetrieb mit geringem Stromverbrauch :
Im Vergleich zu Haushaltsbatteriequellen (z. B. AA-Alkalien) sind selbst SoCs mit "geringem Stromverbrauch" wie der mc13224v nicht sehr stromsparend . Die Sender haben ungefähr 30 mA bei 2-3,5 V und die Empfänger haben ungefähr 25 mA. Ohne das Radio auszuschalten und die CPU in den Ruhezustand zu versetzen, werden durch diese Last in wenigen Tagen 2 AAs entladen. Der hohe Stromverbrauch des Empfängers ist für Menschen oft überraschend und wahrscheinlich der größte Schmerz bei der Entwicklung von Funksystemen mit geringem Stromverbrauch. Die Implikation ist, dass man, um jahrelang zu laufen, fast nie senden oder hören kann.
Das Ziel, einen "einjährigen" Betrieb mit 2xAA-Alkalien zu erreichen, besteht darin, den durchschnittlichen Strom des Systems auf <50 uA zu bringen. Wenn Sie dies tun, sind Sie jahrelang den Sekundäreffekten der Batterien wie Selbstentladung und der 7-jährigen Lebensdauer von Haushaltsbatterien ausgesetzt.
Der beste Weg, um unter einen Durchschnitt von <50 uA zu gelangen, ist, wenn Ihr Transceiver nicht empfangen muss. Wenn dies zutrifft, können Sie die Daten so schnell wie möglich "zwitschern" und das System die meiste Zeit in einen Energiesparmodus (z. B. ca. 10 uA) versetzen. Der TH12 sendet beispielsweise etwa 10 ms lang , es gibt jedoch einen anderen Overhead im System hinsichtlich der Verarbeitungszeit und der Rüstzeiten für den betreffenden Sensor. Die Details können mit einer aktuellen Sonde und einer Tabelle ausgearbeitet werden:
Anhand 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 Seite mit geringem Stromverbrauch empfangen müssen (z. B. um einen schläfrigen Router in einem Mesh-Netzwerk zu erstellen), konzentriert sich der aktuelle Stand der Technik auf Zeitteilungstechniken. Einige synchronisieren das Netzwerk eng, wie z. B. 802.15.4-Beacons, andere verwenden ein "loses" System wie ContikiMAC (das einfacher zu implementieren ist, insbesondere wenn Ihre Hardware keine stabile Zeitbasis hat).
Unabhängig davon zeigt meine Erfahrung, dass diese Methoden im Durchschnitt bei 400 uA liegen, was Sie in die Laufzeit von "Monaten bis vielleicht einem Jahr" mit 2xAAs versetzt.
Kollisionen :
Mein Rat: Mach dir vorerst keine Sorgen. Mit anderen Worten, machen Sie "aloha" (Ihre Option Nr. 1), wenn Sie Daten haben, senden Sie diese. Wenn es kollidiert, senden Sie es möglicherweise 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 schlafen Sie sofort ein.
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 Sie es nur versuchen, wird es wahrscheinlich durchkommen. Wenn dies nicht der Fall ist, können Sie es später jederzeit erneut versuchen.
Wenn Sie tun müssen , um sicherzustellen , bekommt jeder Datagramm durch , dann werden Sie irgendeine Art von ACK - Schema zu tun haben. In der 6LoWPAN-Welt können Sie TCP verwenden, das es so lange wiederholt, bis der Akku leer ist. Es gibt auch CoAP , das UDP verwendet und über einen Wiederholungsmechanismus verfügt (aber keine Zustellung verspricht). Aber jede Auswahl hier wirkt sich auf die Laufzeit aus. Wenn Sie jahrelang arbeiten, werden die Auswirkungen in Monaten sein.
Ihre Option 2 ist als CCA in 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, rasieren Sie sich mehr Wochen vor der Laufzeit. Deshalb schlage ich vor, vorerst einfach anzufangen. Es wird ganz gut funktionieren, wenn Sie lange Laufzeiten anstreben.
quelle
Möglicherweise interessieren Sie sich für JeeNodes, bei dem es sich im Grunde um ein Arduino Uno handelt, 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. problemlos Monate aus einem Satz Batterien herausholen.
Schauen Sie sich seine Website an, der Stromverbrauch ist gut dokumentiert. Eine ideale Sache dabei ist, dass Sie Standard-Arduino-Bibliotheken für Ihre Sensoren verwenden oder die Sensoren im Jeelabs-Store verwenden und die JeeLib-Bibliothek verwenden können, was alles sehr einfach macht.
Ich habe eine kleine Fernbedienung für eine Lampe aus einem JeeNode v6 hergestellt und einen alten Nokia-Akku ausgeschaltet (ca. 1 Ah, aber jetzt wahrscheinlich weniger). Er ist seit 3 Monaten in Betrieb und die Akkuspannung liegt immer noch über 3,9 V (dh immer noch ziemlich voll). Es befindet sich nur im Energiesparmodus und wacht alle paar ms auf, um zu überprüfen, ob die Tasten gedrückt wurden.
Ich habe die Leiterplatten im JeeLabs-Laden gekauft, aber alle Komponenten von Orten wie ebay, element14 usw. erhalten. Auf diese Weise wurde es etwas billiger.
Mit ein wenig Aufmerksamkeit für das Antennendesign können Sie anscheinend einige hundert Meter aus der Sichtlinie herausholen. Mit einem einfachen vertikalen Draht bekomme ich leicht eine hausweite Abdeckung.
quelle
DATENRATE "Die Datenrate wird auch durch die Frequenzauswahl gemäß dem Shannon-Hartley-Theorem beeinflusst. Sie können mehr Daten in ein höheres Frequenzband packen." Falsch!!!
Die Datenrate hat mit der Bandbreite zu tun, nicht mit der Trägerfrequenz. Sie können eine niedrige Trägerfrequenz, aber eine hohe Bandbreite und eine hohe Datenrate haben.
TRÄGERFREQUENZ Eine niedrigere Trägerfrequenz ist gut für die Reichweite. Wenn die Frequenz halbiert wird, würde sich der Bereich vervierfachen. Aber auch die Antennengröße würde zunehmen. Typischerweise sind Antennen Lamba / 2 oder Lambda / 4 (Lambda ist die Wellenlänge in Metern).
KANALINHALT Dies scheint auf den ersten Blick ziemlich offensichtlich, kann aber schwierig werden. Wie andere betont haben, wäre die einfachste Strategie, einmal aufzuwachen und zu übertragen und dann einzuschlafen. Wenn die Anzahl der Sender nicht so groß ist und die Schlafdauer viel länger als die Übertragungsdauer ist, würde dies funktionieren. In seltenen Fällen müssen Sie jedoch bereit sein, einige Daten zu verlieren.
quelle