Verwenden Sie interne Drähte des Netzwerkkabels für Arduino-Projektverbindungen

Ich bin neu bei Arduino und Raspberry Pi und habe außerhalb davon keine Elektronikkenntnisse. Ich habe einen guten Programmierhintergrund.

Ich habe gerade gelernt, wie man lötet (Grundkenntnisse), mein LCD funktioniert, mein Regensensor, externer Temperatursensor, barometrischer Sensor und Kamera funktionieren. Sie sind verbunden und protokollieren Daten.

Jetzt möchte ich das Ding nach draußen stellen. Ich brauche lange Kabel für meinen Regensensor und Temperatursensor. Kann ich ein Netzwerkkabel (Furukawa Cat 6) demontieren und die darin enthaltenen Paare verwenden?

Ich brauche zwei Drähte für den Regensensor und drei für den Temperatursensor. Ein Netzwerkkabel hat mehr als genug Paare, also muss ich nur ein Kabel weitergeben.

Ich plane, beide Enden zu demontieren und zu löten.

Ist das okay? Was ist die maximale Entfernung?

Die Entfernung würde etwa 20 Meter betragen.

Die Protokolle und die Schnittstelle - ich weiß es nicht, aber ich werde in die Datenblätter schauen. Der barometrische Drucksensor ist Bmp180, der Temperatursensor ist der DS18B20 und der Regensensor ist der YL-83.

Wie lang ist „lang“? Von welchen Protokollen sprechen wir?
Sie müssen uns mitteilen, welche Art von Schnittstelle Sie zu den Sensoren haben (analog, digital und sogar es gibt verschiedene Protokolle). Jedes Protokoll / jede Schnittstelle hat ihre eigenen Anforderungen.
Was auch immer Sie tun, verwenden Sie kein Twisted Pair für die I2C-Takt- und Datenleitungen. Verdrillen Sie notfalls Uhr mit Masse und Daten mit Strom.

Antworten (3)

Okay, du hast also:

  • BMP180 = I 2 C
  • DS18B20 = 1-Draht
  • YL-83 = Analogspannung

Über 20 m sind all dies schwierig (wenn auch nicht unmöglich)

  • I 2 C ist für kurze Verbindungen (inter-integrierte Schaltung!) und nicht für lange Strecken ausgelegt. Es ist besonders problematisch bei Twisted-Pair, da das Übersprechen zwischen den Leitungen es vollständig zerstört. Es gibt eine Methode namens dI 2 C oder Differential I 2 C, die den PCA9615-Chip verwendet, aber das ist nur für etwa 3 Meter ausgelegt.

  • Analog ist schrecklich, es sei denn, Sie puffern es (und wahrscheinlich sogar, wenn Sie es tun) - Spannungsabfall über dem Kabel durch jede vom ADC vermittelte Last und vor allem Rauschen, das unter anderem durch Übersprechen mit den digitalen Leitungen verursacht wird.

  • 1-Draht hat ähnliche Einschränkungen von I 2 C. Obwohl ich mich wieder mit der Spezifikation vertraut gemacht habe, könnte dies die einzige der drei sein, die zuverlässig über 20 Meter verbinden könnte, solange Sie auf Übersprechen und Rauschen achten. Gemäß diesem Maxim-Anwendungshinweis sollte 1-Draht mit etwas Sorgfalt über diese Länge möglich sein (danke @Passerby für den Hinweis) .

Mein Vorschlag wäre dann, eine MCU am Ende des Kabels hinzuzufügen, um eine Schnittstelle mit allen Sensoren herzustellen. Etwas wie das ATTiny85 wäre ziemlich kompakt, da es nur ein 8-Pin-Gehäuse ist, aber Sie müssten sich ansehen, wie viele E / A-Pins erforderlich sind. Sie benötigen mindestens 4 Pins für Ihre Eingänge (1 ist ein ADC, 2 für die I 2 C-Schnittstelle und 1 für den 1-Draht-Bus). Aber dann bräuchte man auch eine Schnittstelle über das Kabel. Der ATTiny85 hat nur 6 E/A-Pins, sodass Sie noch 2 übrig hätten, um mit dem anderen Ende des Kabels zu verbinden.

Ich würde dazu etwas wie RS-485 vorschlagen, da es als differenzieller E / A-Standard konzipiert ist und mit einem CAT6-Kabel gut funktionieren sollte - Sie müssten einen Abschluss vornehmen 100 Ω ansonsten wären Signalreflexionen recht problematisch. In diesem Setup hätten Sie eine Halbduplex-Kommunikation. Sie hätten zwei (vielleicht mehr) Möglichkeiten, dies zu tun:

  1. Implementieren Sie RS-485 direkt über die 2 freien E / A-Pins der MCU - dies sollte aus elektrischer Sicht machbar sein und ist nicht so schwierig in Software zu implementieren. Außerdem benötigen Sie keinen externen Treiber.

  2. Verwenden Sie einen Treiberchip wie den MAX481. Sie würden die DE- und !RE-Pins zusammen und mit einem I/O-Pin (Sende-/Empfangsmodus auswählen) verbinden und die DI/RO-Pins mit dem anderen freien I/O-Pin verbinden, der ein bidirektionaler Dateneingang wäre. Datenausgangsleitung.

Für beide Optionen könnten Sie beispielsweise im Empfangsmodus bleiben, bis Sie von einem Master am anderen Ende des Kabels zum Senden aufgefordert werden. An welcher Stelle Sie Informationen über die Sensorwerte sammeln und senden. Sobald Sie die Antwort gesendet haben, schalten Sie zurück in den RX-Modus und warten auf weitere Anweisungen des Masters.


Wenn Sie die Sensoren miteinander kombinieren, hätten Sie in jedem Fall nur eine Schnittstelle. Da hier keine großen Datenmengen anfallen, würde eine Verringerung der Übertragungsgeschwindigkeit über diese Entfernung helfen - Sie könnten beispielsweise dI 2 C oder 1-Draht verwenden, um die MCU über das Kabel anzuschließen, solange Sie den Bus langsam betreiben (10 kHz vielleicht), damit sich Signale ausbreiten und absetzen können.

One Wire ist in der Reichweite nicht so begrenzt wie i2c.
@Passerby Es kann wahrscheinlich weiter gehen, aber ich denke, 20 m drücken es immer noch, es sei denn, Sie fahren wirklich langsam - vorausgesetzt, Sie haben nur die Antriebsstärke eines Pull-up-Widerstands. Sie müssten auch eine Verbindung zu einem verdrillten Paar herstellen, was meiner Meinung nach nicht schlimm wäre, wenn Sie beide als 1-Draht-Leitung anschließen würden, aber nicht funktionieren würde, wenn Sie ein anderes Signal auf der anderen Hälfte des Paares hätten (Signalkopplung / Kapazität würde das Signal zerstören).
60 m Hin- und Rückfahrt auf Kat. 5 utp. maximintegrated.com/en/app-notes/index.mvp/id/148
@Passerby hat das gerade durchgelesen. Dies scheint das einzige Protokoll der drei Sensoren zu sein, das alleine eine Chance hätte. Es ist schon eine Weile her, dass ich mich mit 1-Wire befasst habe und nicht gemerkt habe, dass es so weit gehen könnte.
Besonders bei diesen Temperatursensoren, dem am häufigsten verwendeten Eindraht-Geräteaufbau. Sie sind auf lange Sicht sehr langlebig. 6e STP erhöht es mehr.
Hmm, viel besser formatierte Antwort mit im Grunde dem gleichen Ergebnis wie meine (trotzdem würde ich sagen, dass ein einfacher UART mit niedriger Baudrate in der Lage sein sollte, 20 Meter in einem Ethernet-Kabel abzudecken). Ich muss mich in Zukunft an diese Aufzählungslisten erinnern: D
@Arsenal Wie ich sehe, hast du deine Antwort vor meiner eingegeben, aber erst gesehen, nachdem ich meine gepostet hatte (ich habe deiner Antwort +1 gegeben). UART ist eine Option, aber ich habe das Gefühl, dass ein differenzieller Standard eher mit Twisted Pair einhergeht.

Okay, basierend auf den von Ihnen verwendeten Sensoren haben Sie die folgenden Schnittstellen:

BMP180 - I²C

DS18B20 - Eindraht

YL-83 - ähm nur ein digitaler es regnet / es regnet nicht Stift? - oder ein analoger Spannungsausgang (wie viel regnet es)

Für Onewire ist ein Anwendungshinweis verfügbar, der den Betrieb über große Entfernungen beschreibt. Ich bin mir nicht ganz sicher, ob dieses Prinzip auf den genannten Sensor angewendet werden kann, aber ich denke, 20 Meter sollten machbar sein, sie können 200 Meter herausholen davon. Möglicherweise müssen Sie die Software anpassen oder den Pull-up-Widerstand ändern, um mit dem längeren Kabel fertig zu werden.

Der digitale Ausgang des Regensensors sollte kein Problem darstellen, er hat eine hohe Antriebsstärke und da es sich um einen einfachen High/Low-Push-Pull-Ausgang handelt. Kann nicht wirklich sagen, was die Grenze der Kabellänge wäre.

Will man den analogen Ausgang des Regensensors nutzen, wird es kniffelig. Basierend auf dem besten Schema aller Zeiten ist der analoge Ausgang nicht gepuffert. Eigentlich ist es nur ein einfacher Widerstandsteiler, der aus dem 10-kOhm-Widerstand und dem Widerstand besteht, den die Regentropfen erzeugen. Um dieses Signal über 20 Meter auch nur aus der Ferne nutzbar zu machen, benötigen Sie mindestens einen Operationsverstärker-Spannungsfolger. Ich habe keine Erfahrung damit, jemand anderes muss dir sagen, was am besten funktioniert.

Mein Ansatz wäre, einen kleinen Mikrocontroller einzubauen, der die Analog-Digital-Umwandlung übernimmt, auch den Wert vom Temperatursensor liest und dann die Daten mit einem UART mit niedriger Baudrate über das 20-m-Kabel zurücksendet (4800 Baud funktioniert gut über größere Entfernungen sowie).


Das war, bevor mir klar wurde, dass Sie den BMP180 nicht wirklich draußen platzieren werden (oder werden Sie?), also lasse ich es hier nur als Bonusinformation ...

I²C über ein 20-Meter-Twisted-Pair-Kabel, ich weiß, dass es möglich ist, wenn Sie wirklich chaotische Sachen machen und das Protokoll auf die Spitze treiben. Tu es nicht. Diese Distanzen soll er nicht überbrücken.

Das Hauptproblem, mit dem Sie bei diesen Kabellängen konfrontiert sind, besteht darin, dass die Kapazität des Kabels die Signale verändert. Da sowohl I²C als auch Onewire Pull-up-Widerstände und Open-Drain-Transistoren verwenden, ist die Kapazität des Busses begrenzt. Beispielsweise begrenzt die Spezifikation von I²C von NXP diesen auf maximal 550pF.

Jetzt hat ein normales Kabel eine Kapazität von etwa 120 pF / m (ich habe das nicht an einem Ethernet-Kabel getestet). Wenn Sie also Glück haben, können Sie ohne "Sonderbehandlung" vielleicht 3 bis 4 Meter erreichen.

Wenn Sie Ihren I²C-Sensor dort platzieren möchten, würde ich vorschlagen, einen kleinen Mikrocontroller zu verwenden, um den Sensor über I²C zu lesen und die Daten mit etwas Brauchbarerem, wie einem UART mit niedriger Baudrate oder sogar etwas Differential für zusätzliches Rauschen, über das lange Kabel zu senden Immunität.

Der Regensensor hat jedoch sowohl einen digitalen als auch einen analogen Ausgang
Uff, das habe ich auf der tollen Shop-Seite, auf der ich gelandet bin, total übersehen.

Da Sie nicht erwähnt haben, wie Sie die Sensorinformationen verwenden werden, gehe ich davon aus, dass Sie über Ethernet mit dem Arduino kommunizieren können. Ich würde vorschlagen, Ihr Denken zu ändern und das Arduino zusammen mit den Sensoren (oder kurzen Signalkabeln zu ihnen) in ein wetterfestes Gehäuse zu legen. Fügen Sie dem Arduino einen Poe-Etherenet-Schild hinzu und schalten Sie ihn über den 20-m-Etherenet-Lauf mit Strom / Schnittstelle darüber. Das bedeutet, dass alles auch innerhalb ihrer Spezifikationen funktionieren wird, und ich vermute, dass dies möglicherweise mehr in Ihren Fähigkeiten liegt?

Ich denke, der Plan von @ddutra war, das Netzwerkkabel zu zerlegen und es als wetterfestes Allzweckkabel im Gegensatz zu Ethernet zu verwenden. Ein Arduino + Ethernet Shield (muss nicht einmal ein Arduino sein) ist zwar eine mögliche Lösung, scheint aber in Bezug auf die Kosten für 3 Sensoren übertrieben zu sein.
Guter Punkt Tom. Ich nahm jedoch an, dass er bereits das Arduino benutzte. Also schlage ich einfach vor, es von innen nach außen zu verschieben. Aber ich bin mit Ihnen einverstanden und habe Ihre Antwort positiv bewertet. Idealerweise ist die Verwendung eines kleinen Mikros am Sensorende die eleganteste Lösung.