Langstrecken-Sensormesswerte in einem Sternnetzwerk mit Arduino

Ich plane ein Projekt, bei dem ich etwa ein Dutzend Temperatur- und Feuchtigkeitssensoren im Haus und im Garten platzieren muss. Diese würden sich mit einem zentralen Arduino im Haus verbinden, der die Daten protokollieren und an eine andere Datenbank senden würde.

Ich habe im Internet nach Lösungen gesucht, die für lange Kabelwege funktionieren. Für Temperatursensoren habe ich 1-Wire gefunden, insbesondere DS18B20-Sensoren. Es scheint jedoch keine Feuchtigkeits- und Drucksensoren zu geben, die 1-Wire verwenden.

Was ist der einfachste Weg, um ein solches Netzwerk von Sensoren zu realisieren? RS485 scheint auch mit langen Kabeln gut zu funktionieren (mein längster Lauf wird weniger als 50 Meter betragen, die meisten im Bereich von 5 bis 10 m), aber meines Wissens würde es an jedem Ende einen Mikrocontroller erfordern, was die Komplexität erhöhen würde.

Bei langen Kabeln werden häufig Stromsignale verwendet, da diese sich mit der Entfernung nicht verschlechtern. 4-20 mA Stromschleifen sind der Standard für viele industrielle Prozesse. Für 5-10 m können Sie I2C-Sensoren verwenden, wenn Sie die Datenrate verlangsamen und Puffer in der Leitung verwenden. Siehe die Master-I2C-Bibliothek
Dass "1 Draht" meiner Meinung nach nur Marketingbegriffe ist, in der Praxis benötigt man 3 Anschlüsse, 2 für die Versorgung, 1 für Daten. Sie könnten die Daten auf der Versorgung modulieren, aber das verkompliziert die Schaltungen, die Sie benötigen. Gleiches gilt für RS485, es verkompliziert die Dinge.
Ist Wireless vom Tisch?
Bei langsamen Datenraten (300-1200 Baud) können Sie immense Entfernungen mit 0/5-V-Signalisierung über nicht viel mehr als eine nasse Saite zurücklegen. Für zusätzliche Punkte können Sie 2-Draht-Twisted-Pair mit DC-Einspeisung auf das Paar und eine Diode zu einem Kondensator am fernen Ende verwenden und dann für kleine Prozentsätze der Zeit über das Paar signalisieren, wobei der Kondensator am fernen Ende die Spannung aufrechterhält. | Nehmen Sie 50 Meter Twisted Pair, legen Sie eine 5-V-Rechteckwelle an, fügen Sie am anderen Ende eine leichte Last hinzu und beobachten Sie. Über diese Entfernung haben Sie normalerweise einen Schleifenwiderstand von weniger als 10 Ohm und wahrscheinlich nicht mehr als 5 bis 10 nF Kapazität ....
... Bei 1200 Baud dürfte die Dämpfung minimal sein. Bei einem Schleifenwiderstand von beispielsweise 10 Ohm beträgt der Spannungsabfall, wenn Ihr Sensor 20 mA zieht, V = IR = 0,02 x 10 = 0,2 V.

Antworten (2)

Wenn Sie eine kabelgebundene Option verwenden müssen, klingt es so, als hätten Sie lange Kabellängen und Sie müssen sowohl für eine Fernkommunikation als auch für eine Gleichstromversorgung über große Entfernungen entwerfen.

Für die kabelgebundene Kommunikation ist RS-485, wie Sie erwähnt haben, nicht schlecht und kann von einem UART angesteuert werden, was in der Software einfach ist. CAN ist auch ein guter Kandidat und bringt weitere Vorteile, wenn Sie bereit sind, mehr Software zu entwickeln (oder nicht, je nachdem, welchen Code Sie von der Stange finden). Ich würde SPI oder I2C vermeiden - diese sollen auf einem Board sein und nicht so lange Strecken zurücklegen.

Sowohl für RS-485 als auch für CAN wäre es am besten, wenn Sie ein Twisted-Pair-Kabel in die Hände bekommen könnten, und es wäre ein Bonus, wenn Sie ein Verbundkabel mit einem Twisted-Pair- und einem DC-Strompaar finden könnten. Obwohl es für den Heim- / Hobbygebrauch wahrscheinlich immer noch gut genug funktionieren würde, wenn Sie kein Twisted Pair auf den Datenleitungen hätten.

Für Gleichstrom müssen Sie einen Spannungsabfall und auch einen gewissen Schutz gegen ESD, blitzinduzierte Effekte (Sie haben dort eine lange Antenne) und auch kurzgeschlossene Leiter für den Fall, dass Ihr Kabel beschädigt wird, entwerfen.

Wenn Wireless im Spiel ist, dann ist ein Zigbee-Netzwerk der richtige Weg. XBEE von Digi wäre ein ausgezeichneter Anfang. Sie müssten Ihre Fernbedienungen jedoch separat oder mit Batterien mit Strom versorgen, was möglich ist, aber ein weiterer Designschritt ist. Das XBEE-Netzwerk könnte direkt von Ihrem Datenbank-PC über USB verwaltet werden, wodurch der Arduino-Teil übersprungen wird.

RS-485 wird wirklich für moderate Geschwindigkeiten über lange Distanzen benötigt. Eine Dosis von Feuchtigkeits-/Temperatursensoren wird keine signifikanten Daten erzeugen, um ihre Verwendung zu rechtfertigen.

Für Signale im Bereich von 5-10 Metern würde ich auf jeden Fall einfachen UART bei niedrigen Baudraten ausprobieren: Wenn der Spannungsabfall in den Drähten nicht zu groß ist, funktioniert es einfach. Für längere Verbindungen, die einen Spannungsabfall aufweisen, würde ich RS-232-Treiber für UART ausprobieren: Diese sind billiger als RS-486 und funktionieren gut für Entfernungen von bis zu 300 Metern bei niedrigen Geschwindigkeiten.