Ich plane, Temperaturdaten in meinem ganzen Haus mit mehreren DS18B20 zu lesen und alle Daten an einen Himbeer-Pi zu senden. Ich habe es bereits geschafft, Daten von einem Sensor zu interpretieren, der direkt mit dem Pi verbunden ist, aber ich habe Probleme, einen Weg zu finden, mehrere von ihnen drahtlos zu verbinden.
Ich habe mir Produkte wie dieses RX-Tx-Paar angesehen , aber ich glaube nicht, dass es auf zwei Arten kommunizieren kann, und ich glaube, dass der DS18B20s sowohl senden als auch empfangen muss. Ich habe mir auch diesen Transceiver angesehen , aber es sieht so aus, als ob er viel mehr Ports verwendet, als ich möchte, und ich bin mir nicht sicher, ob er die einzelne Datenleitung übertragen kann, die ich ohne alle anderen Drähte / Ports benötigen . Ich suche im Grunde (glaube ich) nach einem Transceiver, der nur die eine Leitung kommuniziert, die ich brauche, ohne all die Extras (falls dies überhaupt existiert / möglich ist). Ich habe das Gefühl, dass ich etwas vermisse, das sehr offensichtlich ist, aber ich kann nicht herausfinden, was. Hier ist das DS18B20-Datenblatt, wenn es hilft. Vielen Dank im Voraus.
Während das DS18B20-Signalisierungsprotokoll eine Übertragung erfordert, um es abzufragen, möchten Sie dies nicht über eine Funkverbindung weitergeben. Stattdessen würde eine lokale MCU im Knoten den Sensor abfragen und dann das Ergebnis unidirektional übertragen.
An dieser Stelle sei darauf hingewiesen, dass es bereits serienreife drahtlose Temperatursensoren gibt. Zum Beispiel sowohl Geräte mit eigenem LCD-Display, die auch ein OOK-Signal auf 433 MHz senden, als auch displaylose Außenfühler für Indoor-/Outdoor-Systeme. Oft ist die On-Air-Codierung undokumentiert und proprietär, aber oft ist es einfach, sie zurückzuentwickeln, und es wurden mehrere Codebasen für die Decodierung veröffentlicht. Die größte Sorge könnte bestehen, wenn die Knoten eindeutige Seriennummern haben (wahrscheinlich, aber vielleicht nicht alle Modelle). Kollisionen sind dort nicht wirklich ein Problem, solange genügend störungsfreie Pakete vorhanden sind, um eine vernünftige Aktualisierungsrate zu erhalten. Schließlich ist, wie bei benutzerdefinierten Projekten, eine gute Akkulaufzeit etwas, das variieren kann, je nachdem, wie viel Aufwand hineingesteckt wurde.
Wenn Sie sich entscheiden, etwas kundenspezifisches zu machen, suchen Sie nach einer kostengünstigen Lösung für MCU und Funksender. SAW-Resonator-basierte 300-433-MHz-Sender, wie Sie sie verlinkt haben, sind eine Option, und mit einem Pin für den Sensor und einem für das Radio können Sie einige der kleinsten 6- oder 8-Pin-MCUs verwenden. Wenn Sie sich jedoch für diesen Weg entscheiden, sollten Sie die Verwendung eines anspruchsvolleren Empfängers am pi in Betracht ziehen - TI und SiLabs haben beide Angebote, die "echte" abstimmbare Superheterodyn-Datenfunkgeräte sind, die den billigen regenerativen Empfängern weit überlegen sind.
Weit ausgefeiltere 2,4-GHz-Datenfunkgeräte können ebenfalls billig sein, erfordern jedoch normalerweise einen vollständigen SPI-Bus zur Steuerung, was mehr MCU-Pins bedeutet. Einige der BTLE MCU/Radio-Kombinationen können auch in einfacheren proprietären Modi betrieben werden, die manchmal mit den Legacy-Luftprotokollen wie dem des nRF24 kompatibel sind, aber tendenziell mehr kosten als ein billiges Radio und MCU. Auf der positiven Seite können Sie sie bereits in einem Submodul zusammengefügt bekommen. Es gibt auch einige sehr günstige MCU + Funkkombinationen aus China, die in Dingen wie Spielzeugdrohnen zu finden sind, die anwendbar sein könnten - wenn Sie die notwendige Dokumentation erhalten, um mit ihnen zu arbeiten.
ESP8266 und ESP32 werden im Allgemeinen als WiFi-Geräte betrachtet, bieten jedoch einige proprietäre Modi, die nur die Luftsignalisierung auf niedrigerer Ebene ohne die höheren Protokollschichten verwenden, wodurch die Zeit- und Energiekosten für die Verbindung mit einem Netzwerk vermieden werden, nur um einen Messwert zu melden und sofort zu gehen wieder einschlafen.
Obwohl das proprietäre LoRa-Modulationsschema jetzt viel Aufmerksamkeit für Sensorberichte mit größerer Reichweite erhält, ist es erwähnenswert, dass mit zunehmender Popularität die Verfügbarkeit kostengünstiger programmierbarer Hardware-Kits zunimmt, sodass die Semtech-Funkgeräte bis zu einem gewissen Grad in einfacheren OOK oder betrieben werden können FSK-Modi und sprechen Sie mit anderen Geräten, die diese implementieren. Diese liegen jedoch immer noch in der Klasse über 20 US-Dollar pro Knoten, und es scheint, dass es zumindest in der Empfangsrolle möglicherweise nicht möglich ist, eine einfache RSSI-Squelch allein zu aktivieren, sondern vielmehr erforderlich ist, um den Paketpräambeldetektor zu befriedigen oder es vorzutäuschen Festlegen einer Mindestlänge und einer maximalen Fehlertoleranz.
Sie haben Recht, Ihr Thermometer-IC „spricht“ den bidirektionalen Single-Wire-Bus, und das ist nichts, was Sie einfach in diese ultra-vereinfachten (und fragwürdig legalen) Sender einspeisen könnten. Sie müssen nach Daten "gefragt" werden, und das tun Sie in keiner Weise.
Außerdem führen diese Sender nur eine Amplitudenumtastung (ASK) eines kontinuierlich laufenden Oszillators mit fester Frequenz durch. Das bedeutet, dass Sie nicht zwei davon gleichzeitig senden können, da es keine Möglichkeit gibt, die beiden Signale voneinander zu unterscheiden.
Darüber hinaus sind alle Ihre Sensoren identisch. Selbst wenn Sie das auf magische Weise zum Laufen gebracht haben und solche Kollisionen durch reines Glück vermeiden würden, könnten Sie immer noch nicht sagen, welcher Ihrer Sensoren gemeldet hat.
Egal, was Sie tun, Sie benötigen also einen Mikrocontroller , der auf der einen Seite mit Ihrem Sensor und auf der anderen Seite mit einer Art HF-Hardware kommuniziert. Im Idealfall sollte diese HF-Hardware viel besser sein als diese 433-MHz-Abscheulichkeiten.
Diese Transceiver auf Basis von nRF24L01, die Sie gepostet haben, sind viel besser – obwohl sie auf einem Chip basieren, den der IC-Hersteller bereits als „nicht empfohlen für neue Systeme“ gekennzeichnet hat, können sie tatsächlich viel mehr.
Sie könnten einen billigen Mikrocontroller (z. B. ein Arduino oder einen Klon) erhalten, der 1-Draht mit Ihrem Sensor und SPI mit der HF-Platine kommuniziert. Dann verteilen Sie diese herum. Ihr zentraler Arduino-Knoten fragt dann regelmäßig jeden Ihrer Sensorknoten nach Daten, und Ihr Mikrocontroller am Sensorstandort antwortet dann.
Der 1-Draht-Bus benötigt eine MCU, um mit angeschlossenen Geräten zu kommunizieren: -
Ich habe Probleme, eine Möglichkeit zu finden, mehrere von ihnen drahtlos zu verbinden
Jeder 1-Wire-Sensor benötigt eine MCU, und wenn Sie mehrere Sensoren drahtlos verbinden möchten, kann jede MCU auch verwendet werden, um beispielsweise einen lokalen 433-MHz-Sender anzusteuern, den ein einzelner Funkempfänger empfangen kann. Dieser einzelne Empfänger ist allen Sendern gemeinsam.
Ich habe mir Produkte wie dieses RX-Tx-Paar angesehen, aber ich glaube nicht, dass es auf zwei Arten kommunizieren kann, und ich glaube, dass der DS18B20s sowohl senden als auch empfangen muss.
Die lokale MCU kann mit dem DS18B20 kommunizieren und diese lokale MCU kann einen lokalen Funksender steuern. Mit anderen Worten, versuchen Sie nicht, einen 1-Draht-Funksender herzustellen - halten Sie das 1-Draht-System lokal an jeder MCU und verwenden Sie die Reserveleistung der MCU, um den Sender so zu steuern, wie er gesteuert werden muss. Versuchen Sie nicht, diese Protokolle zu mischen, oder Sie werden nach Ärger fragen und es wahrscheinlich nie zum Laufen bringen.
Ich sehe es so; Sie haben mehrere Temperatursensoren in Ihrem Haus und jeder sendet etwa alle zehn Minuten einen Temperaturwert an einen gemeinsamen Empfänger. Dieser gemeinsame Empfänger spricht mit Ihrem RaPi.
Es kommt zu Kollisionen, aber da eine einzelne Übertragung in 100 ms abgeschlossen sein kann, beträgt die Belegung des gemeinsamen Kanals 1 Sekunde in 10 Minuten für 10 Sensoren. Sie können dem Zeitpunkt der Übertragung ein wenig Zufälligkeit hinzufügen, sodass bei Datenkollisionen aufgrund gleichzeitiger Übertragung die Wahrscheinlichkeit gering ist, dass dies erneut auftritt.
Ich habe ein System wie dieses entwickelt, das etwa hundert Gefrierschränke in einem Lagerhaus überwacht. Jeder Sender sendete blind mit etwas Zufälligkeit im Timing. Zwischen den Übertragungen gingen die MCU und der Sender in den Ruhezustand und Sie konnten mit einer kleinen 9-Volt-Batterie etwa 1 Jahr Batterielebensdauer erreichen. Das System suchte nach einer frühzeitigen Erkennung eines defekten Gefrierschranks. Ich habe HF-Material von dieser Firma verwendet , weil sie seriös sind.
Ihr DS18B20-Sensor benötigt eine lokale MCU, um Temperaturwerte über das 1-Wire-Protokoll zu senden/empfangen.
Anstatt das System durch die Verwendung seltsamer und sehr teurer Funktransceiver zu verkomplizieren, sollten Sie die Verwendung von so etwas wie einem ESP8266 in Betracht ziehen, das sich direkt mit einem lokalen WLAN verbindet, was auch vom Raspberry Pi trivial einfach zu handhaben ist. Sie haben wahrscheinlich bereits WLAN (2,4-GHz-fähig) in Ihrem Haus, daher ist es ein Kinderspiel, den Raspberry Pi und Ihre Remote-Sensoren daran anzuschließen.
Folgen Sie einem Springball-Projekt wie diesem , das auf den Großteil des erforderlichen Codes verweist und einfach in der Arduino-Entwicklungsumgebung implementiert werden kann. Es gibt viele GitHub-Projekte, nach denen Sie auch suchen können.
Wenn Sie keine eigenen PCBs entwerfen möchten, können Sie Arduino-kompatible Boards wie dieses kaufen, die nur ein paar Dollar kosten.
Sie werden mehrere Varianten finden, von denen einige als die anderen von Wemos-D1 ohne jegliche Markierungen gekennzeichnet sind.
Die benötigte Leistung ist recht überschaubar:
Sie können in etwa einer Sekunde ohne Probleme einschalten, zuordnen, anmelden, Daten senden und ausschalten.
Sie können Projektfälle erhalten, die dem Arduino-Formfaktor für entweder Netzspannung (hauptsächlich USB-Stromversorgung oder batteriebetriebene Optionen) entsprechen.
Es lohnt sich sicherlich nicht, dies auf irgendeine Weise zu tun, da Sie vorhandene Bibliotheken nicht verwenden können, um das Projekt voranzutreiben ... Ihre Entwicklung wird einfach ein Albtraum sein.
Die NRF24L01+-Module sind einfach zu bedienen und billig, aber Sie benötigen immer noch eine lokale MCU, um sie zu steuern. Sie werden am Ende mehr Geld und Zeit damit verbringen, sie zu verwenden (und ich habe viele davon verwendet), als eine ESP8266-Lösung zu verwenden. Nichts ist einfacher.
Dadurch wird Ihr Projekt zu einem einfachen Webservice auf dem Raspberry Pi und Ihre Remote-Sensoren werden eingeschaltet, verbunden und Zeit-/Temperaturwerte hinterlegt. Was könnte einfacher sein.
Hinweis Wenn Sie dazu neigen, im Wesentlichen sofort einsatzbereite Lösungen zu kaufen, können Sie die Verwendung der TI Simplelink-Sensoren (ARM-basiert) in Betracht ziehen. Diese sind bei mehreren Varianten ($ 30-40) recht günstig, die sich mit Netzwerken wie BLE über WiFi verbinden. Die WiFi-Version beansprucht 3 Monate mit 2 * AAA-Batterien bei einer Aktualisierungsrate von 1 Minute, sollte also bei 5-minütigen Aktualisierungen etwa ein Jahr dauern. Ich habe sie nicht ausprobiert, aber es scheint keinen Grund zu der Annahme zu geben, dass sie nicht zuverlässig sind.
Wenn Sie nicht alles von Grund auf neu machen möchten, können Sie Fibaro Z-Wave-Knoten verwenden. Ich verwende ein paar DS18B20 zusammen mit einem Raspberry in meinem Heimautomatisierungsnetzwerk.
Was du brauchst:
Fibaro Universalsensor (er dient zum Anschluss des DS18B20)
Und eine 5-V-Versorgung für jeden Knoten. Dann können Sie Domoticz oder eine ähnliche Z-Wave-Hausautomatisierungsanwendung für den Raspberry herunterladen.
Am Ende erhalten Sie eine schöne browserfreundliche Oberfläche, um die Sensoren zu beobachten:
Ich habe keinen Feuchtigkeitssensor, daher ist die grüne Linie in der Grafik etwas fehlerhaft.
Tomnexus
Tony Stewart EE75