SPI: proxy Client/Server mit Raspberry + Arduino

Gast #5408070
Lesenswert?

Hallo liebe Bastler,

ich Zerbreche mir schon länger den Kopf und komm zu keinem Ergebnis:

Übergeordnetes Ziel: mit dem Raspberry auf einem RGB LED Strip ein VU 
meter realisieren. (über SPI)

Mommentan benutze ich den Arduino als AD Wandler der über Serial mit dem 
Raspberry verbunden ist. Leider ist das ganze aber mit meiner genutzten 
Programmiersprache so langsam dass es kein Spaß macht sich den Strip 
anzusehen, und Echtzeit ist auch was anderes...

Zu meiner Schande muss ich zugeben nodejs (javascript) ist auch nicht 
gerade die erst wahl bei Echtzeit Anwendungen. Das ganze ist aber Teil 
eines etwas "größeren" Projekts, und der Rest funktioniert echt gut, nur 
mit dem VU Meter komm ich nicht so recht weiter.

Mein Gedanke: Raspberry und Arduino irgendwie über SPI verbinden, dass 
wenn der Raspberry kein Master mehr ist bzw. kein Clock signal mehr 
generiert, dass der Arduino dann Master spielt und ich mein VU meter in 
C oder C++ auf dem Arudino ausführe.

Sprich: Raspberry MOSI -> Arduino MISO, Arudino MOSI -> RGB Strip
So sollte dann der Arduino als Proxy dienen und alles vom Raspberry 1:1 
durch reichen und wie oben gennant einsprichen wenn der Raspberry nix 
mehr sendet bzw. keine Clock mehr generiert.

Frage: Würde das so gehen ?
Oder kann ich mir den Arduino als Proxy sparen und alles auf dem 
Raspberry machen (Ausnahme Analog input), z.B. in Python

Zusammenfassung:
Raspberry als haupt Controller für RGB strip über SPI,
VU meter realisieren, über/mit Raspberry .
Da aber schon Zig effekte exisiteren würde ich den ungern über Board 
werfen.

Für Antworte und Anregungen bin ich sehr dankbar.
#5408466
Lesenswert?

Bleib nur beim raspi oder nur beim Adruino. Oder was soll der eine 
können was der andere nicht kann?

Es gibt in hardware realisierte A/D Wandler die per i2c an den Raspi 
angeschlossen werden können. Die muss man nicht extra programmieren und 
libs gibt es in c wie in python.
Was für einen LEDstrip hast du? So einen typischen wo die leds einzeln 
angesteuert werden können?
Das kann man auch mit dem raspberry benutzen! Google einfach nach dem 
chipnamen + Raspberry.
Wegen dem nichy-Echtzeit OS kann zwar mal was dazwischen funken aber 
auffällig ist das höchstens wenn man riesige 2D Muster darstellen will.

Wenn du beim Arduino bleiben willst geht das natürlich auch. Was für 
eine Aufgabe soll der Raspi in dem Fall überhaupt erfüllen? Soll das 
ganze online gehen (da du nodejs erwähnst)?
Gast #5410158
Lesenswert?

Danke für die Antwort.

Ich wollte Arduino + Raspberry benutzen weil ich beide schon da habe.
Werde mir aber einen AD Wandler für i2c oder SPI mal besorgen.

Beim strip handelt es sich um einen ws2801.
In nodejs habe ich halt schon etliche Effekte programmiert, die ich 
bequem  über ein Webinterface auswählen kann.

Allerdings bin ich mit der Hardware Ansteuerung nicht zu Frieden.
Entweder ist nodejs im allgemeinen zu langsam oder die Bibliothek zur 
Ansteuerung ist es (natives c++ Addon, "spi-device" 
https://github.com/fivdi/spi-device), tippe eher auf nodejs, da ich die 
"transfer" funktion immer wieder manuelle triggern muss (rekursiv im 
callback), hier flackert der Strip am Anfang, läuft dann aber. Wie 
gesagt: das ganze ist zu langsam.

Würde es jetzt mal mit python probieren.
AD Auslesen und auf Strip schreiben.
#5410276
Lesenswert?

Hmm, ich kenn mich mit NodeJS leider nicht aus. Du musst einen Weg 
finden den Thread des webdienstes, von einem Thread der sich nur um die 
LED-Ansteuerung kümmert, zu trennen. Also kein wiat-konzept auf Antwort 
des jeweiligen Programms, sondern sie sollen unabhängig voneinander 
laufen.
Eine Standardübertragungsmethode für die Information sind dann "pipes" 
(oft einfach als IO bezeichnet). Die kann man jeder Zeit abfragen, ohne 
das Programm warten zu lassen.
Gast #5410396
Lesenswert?

nodejs ist auf jeden Fall ein blick wert.
Allerdings nichts für Mikrocontroller oder "echtzeit".

Werde jetzt versuchen mein VU meter in python zu programmieren und alles 
über den Raspberry zu machen.

Das Programm spawn ich dann einfach von node aus.
Leider kann ich noch kein Python.

Hat jemand eine gut Einstiegsseite ?
bzw. eine SPI/i2c lib ?

Blöde frage, aber ist mit python besser gewährleistet dass die VU 
Ansteuerung funktioniert ?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren