ich komme bei einem Projekt momentan nicht weiter und würde mich über eure Hilfe sehr freuen.
Ziel ist es, über einen zentralen Rechner Daten an mehrere Arduinos zu senden, welche diese wiederum weitergeben an E-Paper-Displays (von Waveshare), wo dann bestimmte Text angezeigt werden.
Kann mir jemand sagen, wie ich am besten dafür sorge, dass ein PC die Daten an jeden der angeschlossenen Arduinos (bis zu 12) senden kann? Ich bräuchte quasi ein Bussystem, an das der PC und die Arduinos angeschlossen sind. Ich habe zwar Erfahrungen mit C/C++, kenne mich mit Arduinos aber leider noch nicht so gut aus.
also erst mal allgemein: In allen Varianten, die mir gerade einfallen, würde ein Arduino eine spezielle Funktion einnehmen, als Interface zum PC von dem dann das Bussystem zu den anderen Arduinos abgeht.
Die Bussysteme I2C und SPI, mit denen alle Arduinos ausgestattet sind, können nur kurze Distanzen überbrücken und sind hier eher weniger geeignet. Für I2C gibt es allerdings spezielle ICs, die es erlauben damit über größere Strecken zu gehen. Eventuell gibt es hier jemanden, der sich damit auskennt.
Am ehesten käme für so eine Anwendung wohl RS485 in Betracht. Das braucht im Prinzip nur ein (Software-) Serial und ein zusätzliches IC für jeden Arduino. Dazu sollte es hinreichend Material im Netz geben. Ein Problem dabei ist ein bischen die Software, die Kommunikation zwischen den einzelnen Arduinos muss man selber programmieren.
Eine Alternative wäre eventuell CAN, das würde aber teuer weil die meisten Arduinos dafür ein Shield brauchen. Nur einige wie Teensy 3.2 bis 3.6 und der Arduino Due haben sowas eingebaut, brauchen aber ähnlich wie bei RS485 noch je ein zusätzliches IC. Vorteil wäre das die Hardware direkt mit Botschaften arbeitet und sich selber darum kümmert, dass nicht zwei gleichzeit lossenden können.
ich komme bei einem Projekt momentan nicht weiter und würde mich über eure Hilfe sehr freuen.
Ziel ist es, über einen zentralen Rechner Daten an mehrere Arduinos zu senden, welche diese wiederum weitergeben an E-Paper-Displays (von Waveshare), wo dann bestimmte Text angezeigt werden.
Kann mir jemand sagen, wie ich am besten dafür sorge, dass ein PC die Daten an jeden der angeschlossenen Arduinos (bis zu 12) senden kann? Ich bräuchte quasi ein Bussystem, an das der PC und die Arduinos angeschlossen sind. Ich habe zwar Erfahrungen mit C/C++, kenne mich mit Arduinos aber leider noch nicht so gut aus.
Vielen Dank, Jamal Jaber
Wie wäre es mit Ethernet als Bus-System und TCP/HTTP/UDP für den Datentransfer?
Für UNO-Boards gibt es das Ethernet-Shield, um den Anschluss an ein verkabeltes LAN herzustellen. Alle miteinander kommunizierenden Arduinos müßten sich im selben LAN befinden. Die Entfernung zwischen Router/Switch und Arduino kann dutzende Meter betragen, zu überbrücken mit einem Ethernet-Kabel.
Ethernet hatte ich jetzt gar nicht erwähnt, es wird hier ja meist über jeden Euro gejammert. Da würde dann ja u.a. ein Switch mit mind. 16 Ports (PC und 12 Arduinos) anfallen ...
Danke für die Antworten. Die Kosten und der Aufwand sollten zunächst einmal kein Problem sein, wichtig ist vor allem, dass die Lösung zuverlässig funktioniert. Ich stelle es mir so vor, dass es z.B. 100 verschiedene Variablen auf dem Bus gibt, darunter die Datentypen character, integer, double sowie strings. Jeder Arduino kann diese Daten lesen und entscheidet für sich, welche davon für ihn relevant sind und mit welchen er arbeitet. Die von euch vorgeschlagenen Lösungen klingen interessant, könnt ihr sie vielleicht ein bisschen näher erläutern? Also denkt ihr, dass meine Idee damit umsetzbar wäre?
LG
Die Ausgangssituation ist folgende: Ich möchte ein Regal mit elektronischen Preisetiketten ausstatten. Es soll ein Regal geben mit ungefähr 12 Displays dran. Für jedes Display existiert in einer Datenbank auf dem Hauptrechner ein Datensatz mit den Daten, die auf dem Display angezeigt werden sollen. Die Ansteuerung der Displays erfolgt jeweils über einen Arduino. Nun ist das Problem, dass diese Arduinos die Daten vom Hauptrechner bekommen müssen. Es würden theoretisch also auch 12 Punkt-zu-Punkt-Verbindungen vom Rechner zu jedem Arduino funktionieren, ich weiß aber nicht, ob das umsetzbar ist und habe daher an ein Bussystem gedacht. So können alle Arduinos auf alle Daten zugreifen und entscheiden für sich, welche für sie relevant sind.
Klingt schon ein wenig nach CAN, aber vielleicht bin ich da etwas voreingenommen, weil ich viel damit mache.
Ich denke auch, dass CAN das richtige für mich sein könnte. Ich habe Erfahrungen mit dem CAN-Bus im Automobilbereich, funktioniert das auf einem Arduino ähnlich und vor allem zuverlässig?
Vielen Dank, das ist sehr hilfreich. Kannst du mir abschließend vielleicht noch sagen, warum du eher zu CAN tendierst und nicht zu Ethernet? Habe mir beides mal angeschaut, Ethernet sollte günstiger werden und für diese Anwendung eigentlich völlig ausreichen oder nicht?
Hallo,
"Kann mir jemand sagen, wie ich am besten dafür sorge, dass ein PC die Daten an jeden der angeschlossenen Arduinos (bis zu 12) senden kann? "
Ja, ich.
Du besorgst Dir 13 XBee´s. Einen verbindest Du mit dem PC, und je einen mit einem Arduino.
Die ganze Kommunikation übernehmen die XBee´s. Damit läßt sich sehr einfach ein DigiMeshNetzwerk aufbauen. XBee hier z.B. kaufen
Geiz ist Geil... schade, dann mußt Du Dich nach etwas anderem umsehen.
Ich nutze hier gerade vier XBee´s zum testen. Die funktionieren einwandfrei und man kommt sehr schnell zu
einem Erfolgserlebnis.
Gruß und Spaß
Andreas
jamal106:
Vielen Dank, das ist sehr hilfreich. Kannst du mir abschließend vielleicht noch sagen, warum du eher zu CAN tendierst und nicht zu Ethernet? Habe mir beides mal angeschaut, Ethernet sollte günstiger werden und für diese Anwendung eigentlich völlig ausreichen oder nicht?
Naja, so ein Etikett ist ja eher klein. Ein Teensy 3.2 plus ein Transceiver lägen zusammen bei etwa 24 Euro. Das ganze passt auf eine Briefmarke.
Mit Arduino Ethernetshields und deren Preisen kenne ich mich nicht so aus. Meine mbeds mit Ethernet liegen etwa eher bei 50 Euro. Man kann aber sicher mit STM32 selber was billigeres bauen.
Mein Hauptproblem wären die Ethernet-Patchkabel. 12 Stück wären schon ein armdicker Strang ...
Ethernet kann besser größere und komplexere Daten übertragen. Ist eine Abwägungssache.
SkobyMobil:
Ja, ich.
Du besorgst Dir 13 XBee´s. Einen verbindest Du mit dem PC, und je einen mit einem Arduino.
Die ganze Kommunikation übernehmen die XBee´s. Damit läßt sich sehr einfach ein DigiMeshNetzwerk aufbauen.
Danke für den Tipp, ich schaue mir das mal genauer an
ArduFE:
Naja, so ein Etikett ist ja eher klein. Ein Teensy 3.2 plus ein Transceiver lägen zusammen bei etwa 24 Euro. Das ganze passt auf eine Briefmarke.
Mein Hauptproblem wären die Ethernet-Patchkabel. 12 Stück wären schon ein armdicker Strang ...
Ok du hast Recht, CAN ist wohl besser geeignet. Ich versuch mal mein Glück, vielen Dank für die Hilfe.
Daten als Barcode auf ein E-Paper Display zu bringen, um sie dann zu scannen und wieder zu dekodieren,
erscheint mir unnötig kompliziert (Menschen lesen in der Regel keine Barcodes).
Es fehlen eine Menge an Informationen, welche Geräte müssen das lesen können z.B.
Wenn man das Lesegerät kontrolliert, könnte das mit dem Hauptrechner direkt reden,
nachdem es z.B. eine RF-ID am Regal gelesen hat.
Das würde auch noch die Stromversorgung der Regalstationen entfernen, sowie das E-Paper Display.
Wäre also viiiiiiieeeeel billiger und unkomplizierter, ist aber nicht von Menschen lesbar.
ich würde da auch für wifi und esp8266 plädieren. einen raspberry pi zero W als zentrale, der auch das wlan-netzwerk zur verfügung stellt und fertich.
auf keinen fall würden die kosten bei 15 anzeigen 60 euro übersteigen (ohne displays) und, naja, klar kann man probleme bekommen, wenn was nicht funktioniert, aber ob solche probleme bei einer CAN-anbindung leichter zu lösen sind, wage ich zu bezweifeln...
Eisebaer:
naja, klar kann man probleme bekommen, wenn was nicht funktioniert, aber ob solche probleme bei einer CAN-anbindung leichter zu lösen sind, wage ich zu bezweifeln...
Stimmt, bei drei Drähten kann jede Menge schiefgehen, bei Funk gibt es ja keine.