Kommunikation zwischen Arduino, Raspberry und PC + Debugging

Hallo alle zusammen,

ich habe folgendes, doch sehr spezifisches, Problem.

Ich habe folgende Ausgangslage:

  • Ein Raspberry Pi, der Touchinputs auswertet.
  • Ein Arduino UNO, der einen AdaFruit Neopixel Lichtstreifen ansteuert. (diret über einen OutputPin Angeschlossen)

Problemstellung:
Ich muss eine Verbindung zwischen dem Arduino und dem RPI herstellen. Sprich: Der Raspberry empfängt die Inputs des Touch-feldes und leitet diese an den Arduino weiter. Dieses Signal wird im Arduino verarbeitet und anhand dessen ändert sich die Farbe des Lichtstreifens etc.

Nun weiß ich nicht, wie ich den Arduino und den RPI am besten miteinander verknüpfen kann. Kommunikation muss auf jeden Fall in beide Richtungen möglich sein. Erschwerend kommt dazu die Frage, wie sich am besten Debuggen lässt. Der Arduino hat anscheinend keine Möglichkeit konkret gedebuggt zu werden sondern nur über Prints. Könnte ich das nicht über einen JTag lösen und darüber BreakPoints setzen?

Idealerweise kann ich alles miteinander Verkabeln / Verlöten und habe ein USB Kabel vom Arduino in den PC, womit ich zur Laufzeit debuggen kann und das Programm updaten kann.

Hoffe das Problem wird ersichtlich, nirgends finde ich anleiten wo mehrere Geräte miteinander gleichzeitig verschalten werden.

MfG

Peter

Das Projekt aufteilen und die einzelnen Teile debuggen. Das gilt für alle Projekte.

Ob JTAG für das Herumstochern im Nebel hilfreich ist, kann ich nicht sagen. Gerade in der Kommunikation kann man keine Breakpoints setzen, wenn der andere Rechner nicht ebenfalls gestoppt werden kann.

Also einmal die Kommunikation testen, die Ansteuerung des Neopixels testen, und dann beide Programmteile zusammenfügen. Am besten von Anfang an alles in einem Programm entwickeln und mit #defines die einzelnen Teile und den Debug-Code ein/aus schalten.

Wozu?

Wie meinst du einzeln Debuggen? Meine Kernaufgabe im Debuggen ist nur der Arduino selbst. Aber ich muss diesen zur Laufzeit Debuggen können(die Funktionen die ich auf den Arduino geladen habe.)
Habe mir gedacht ob ein ATMEGA328P-XMINI als reines Programmierdevice und debuggingdevice guten Dienst leisten würde, der hat aber kein UART. Macht UART überhaupt sinn zwischen Arduino und RPI?

Die Kommunikation untereinander muss halt möglich sein, damit der Arduino z.B dem RPI sagen kann, dass eine Sequenz durchgelaufen ist, oder auch nicht.

Reicht dafür nicht ein Pin?
Ich arbeite noch / ich bin frei

Die Anforderung müsste ich mir konkret überlegen, aber es kann gut sein, dass das auch ausreicht.

Da würde ich die UART Schnittstelle (TXD/RXD am Raspb) und SoftSerial auf der Uno Seite nehmen.
Ob da ein Spannungsteiler für den 5.0 -> 3.3V Pegel reicht, oder mehr Hardware dazwischen muss (RS232), wegen Leitungslänge/Geschwindigkeit, bleibt zu klären.

Würde auf jeden Fall ein textbasiertes Protokoll machen, um es leichter testen zu können, und da ja nicht allzu viele Daten anfallen.

Serial am Uno für die PC-Verbindung via USB (Debug-Print / Upload)

1 Like

Debuggen sollte nur dem Aufspüren aufgetretener Fehler dienen, nicht der Verifizierung eines Programms. Die Funktion kann man mit Testdaten prüfen, die systematisch alle Zweige eines Programmteils testen.

Da würde ich einen Mega nehmen, der hat mehrere serielle Schnittstellen, mehr RAM und Pins für viele LED oder andere Anzeigen von Testsignalen.

Warum steuerst Du die WS2812 nicht direkt mit dem Raspberry PI an und läßt den Arduino weg?
Grüße Uwe

Ist leider eine Vorgabe meines Bildungsbetriebs. Leider kann mir in meiner o.g. Frage auch keiner vom Kollegium helfen. In Zukunft soll der Arduino und der RPI durch einen eigens gebauten µC ersetzt werden, bis dahin gibt es aber noch Haufenweise testphasen, für die ich momentan entwickle.

Danke für den Beitrag! Über TXD/RXD müsste ich vermutlich die Kontakte miteinander verlöten, würde sich aber trotzdem zur Laufzeit zumindest über den Serial Monitor alles einsehen lassen. Frage mich ob die Informationsmenge insgesamt für den Arduino zu viel wird. Habe mal testweise den NeoPixel bei voller Brightness angesteuert und da stürzt der Arduino ab. Fehlerquelle ist bislang nicht gefunden, jedoch gehe ich von mangelnder Stromversorgung aus. Danke

Ja aber das hat ja dann wohl kaum etwas mit der zu verarbeitenden Datenmenge zu tun, wenn Du mit dem Neopixel den Spannungsregler des Arduinos überlastest. Das hat dann eher mit mangelndem Nachdenken über Strombedarf der einzelnen Peripherie-Komponenten zu tun und sollte nicht dem armen Arduino in die schuhe geschoben werden. Es wird doch sicher keine Betriebs-Vorgabe sein, dass alles aus dem Arduino gespiesen wird.