Forum: Mikrocontroller und Digitale Elektronik SPI: proxy Client/Server mit Raspberry + Arduino


von nodejs (Gast)


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.

von Alex G. (dragongamer)


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)?

von nodejs (Gast)


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.

von Alex G. (dragongamer)


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.

von nodejs (Gast)


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 ?

von Harry L. (mysth)


Lesenswert?

Ein Freund von mir hat sowas mit WS2812 und ESP8266 realisiert.
https://www.youtube.com/watch?v=-4rugU9BPT0

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.