RX unt TX des Raspi unter Debian jessie

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo zusammen,

    erstmal, ich bin neu hier. Ich habe einige Erfahrung mit dem Arduino und mit dem Raspberry Pi (b) gemacht. Nun habe ich eine kleine Steuerung meiner Modellbahn vor, die Modellbahn läuft über den Arduino Uno über das CANDiy Shield und Railuino. Ein Arduino Mega dient zur Positionsbestimmung der Züge. Den Raspberry Pi würde ich gerne mit einer GUI-Anwendung in C/C++ ausstatten (Gleisplan und Lokansteuerung). Mit dem Programmieren sollte das eigentlich kein Problem sein, aber mir macht der RX und TX Pin des Raspberry Pi's Schwierigkeiten. Ich kann diesen leider gar nicht ansteuern, ich arbeite mit der neuesten Version von Debian Jessie, da ich Debian Wheezy gar nicht mehr finde (für Wheezy gibt es einfache Beispiele im Internet, für Jessie nicht).

    TX vom Arduino ist so geschaltet, dass über den Poti 1,7V abfallen, und dann auf den RX des Raspi's, der TX vom Raspi ist direkt mit dem RX vom Arduino verbunden.
    Hier ein Bild: https://www.dropbox.com/s/s8xo9vf7jfmbqgy/DSC_0096.JPG?dl=0
    Elektronik wie Schieberegister, L293D's usw. kommen auch noch da rein.

    Mit freundlichen Grüßen,
    Ludwig Müller

  • Hallo Ludwig,


    aber mir macht der RX und TX Pin des Raspberry Pi's Schwierigkeiten. Ich kann diesen leider gar nicht ansteuern

    bedeutet WAS?

    Sind die Baudraten von Sender und empfänger abgestimmt?
    Sind Anzahl der Stopbits von Sender und Empfänger abgestimmt?
    Sind die Paritätsbits aufeinander abgestimmt?
    Sendet der Sender irgendwelche Bits, die auf Seiten des Empfängers erst ermöglicht werden müssten, weil damit Sonderfunktionen verbunden sind?

    Ist die serielle Schnittstelle überhaupt eingerichtet? Wie hast Du das gemacht?

    Wie heißt Deine serielle Schnittstelle? /dev/ttyAMA0 oder /dev/tty ACM0? Oder ganz anders?

    Hast Du Tools wie cuteCom mal eingesetzt? Was wird dort angezeigt?

    Hast Du mal TXD des Raspberry mit RXD des Raspberry verbunden und geprüft, ob das Gesendete auch empfangen wird? (sog. Null-Verbindung)

    Kannst Du ausschließen, dass der RXD des RPi mal mehr als 3,3 Volt abbekommen hat? Dann kann es nämlich schon vorbei sein...


    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (15. Mai 2016 um 18:36)

  • Hallo Andreas,

    die Schnittstelle einrichten müsste doch über sudo raspi-config gehen oder?
    auf den Befehl sudo nano /dev/ttyAMA0 bekomme ich ein bereits existierendes File, aber es ist leer.
    Ist meine Einrichtung falsch?
    Hast du mir vielleicht ein einfaches Beispiel?
    Ich brauche nur wie ich RX und TX ansteuere (in C), den Rest bekomme ich selber hin!

    Gruß,
    Ludwig

  • Hallo Ludwig,

    verbinde mal RXD mit TXD (beides am RPi).

    Dann öffnest Du zwei Teminal-Fenster.

    In das eine gibst Du ein

    Code
    cat /dev/ttyAMA0

    In das andere gibst Du ein

    Code
    echo "oöihasnrgöoiznuad öorgihnasrdöoighasöo m oihg öouhaerg oierg öoehrgnöoiamc" > /dev/ttyAMA0

    Dann lässt Du beläufig Deine Augen auf das erste Fenster schweifen... Was siehst Du?

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Hallo Ludwig,

    dann setze ein [font="Courier New"]sudo[/font] vor das entsprechende Kommando...


    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Hallo Ludwig,

    was hast Du denn jetzt gemacht, dass Du Dir sicher bist, dass es nichts gebracht hat?

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Hallo Ludwig,

    Dein Erfolg kann nur so gut sein, wie Du die Ratschläge befolgst, die Du hier erhältst.

    Wir wissen noch nicht, ob Dein RPi überhaupt serielle Datenübertragung erlaubt - oder dies nicht eingestellt oder ganz defekt ist. Deswegen hatte ich Dich gebeten, RXD des RPi mit TXD des RPi als Nullverbindung zu verbinden. Hast Du gemacht? Wie hast Du es gemacht? Bitte Photo posten...


    Dann solltest Du in einem Terminalfenster auf der seriellen Schnittstelle lauschen. Hast Du gemacht? Wie hast Du es gemacht? Bitte Screenshot posten...

    Und in einem anderen Fenster solltest Du auf die seriellen Schnittstelle schreiben. Hast Du gemacht? Wie hast Du es gemacht? Bitte Screenshot posten...

    Wenn dieses nicht funktioniert, dann funktioniert auch nichts anderes. Weshalb es bei anderen Problemen auch nichts bringt, etwas Höheres zu probieren, wie ein anderes Gerät als Sender einzusetzen.


    Mit dem Arduino kann ich aber z.B. das Wort Raspberry PI problemlos übertragen, nicht aber vom Raspi auf den Arduino.

    Das liegt vieleicht daran, dass HIGH des RPi auf 3,3V-Basis kein HIGH auf dem Arduino erzeugt. Ist zwar beliebig unwahrscheinlich, habe ich auch noch nicht so beobachtet. Aber da wäre ein Pegelwandler / Levelshifter oder eine Bastellösung aus zwei Transistoren BC547B und drei Widerständen eine Lösung, die dann aus 3,3V des RPi 5V für Arduino macht.


    Beste Grüße

    Andreas

  • Hallo Andreas,

    hier mal das was ich eingebe:

    Code
    pi@raspberrypi:$ sudo echo "asfsdnafna" > /dev/ttyAMA0

    Zurück kommt:

    Code
    bash: /dev/ttyAMA0: Permission denied

    Aber wenn ich mir im anderen Fenster anzeigen lasse, was ich z.B. mit dem Arduino sende (Aufbau wieder zurückgeändert), kann ich die gesendeten Daten vom Arduino problemlos auslesen. Nicht aber geht das Senden von Daten vom Raspberry Pi aus.

    Gruß,
    Ludwig
    Automatisch zusammengefügt:
    Hallo Andreas,

    ich habe es wie folgt verkoppelt:
    DSC_0097.JPG?dl=0

    Es ist etwas unschön, aber meine Komponenten die ich bestellt habe werden erst am Dienstag/Mittwoch geliefert. Ich habe RX und TX vom Raspi direkt kurzgeschlossen.

    Die zwei Fenster sehen so aus:

    DSC_0098.JPG?dl=0

    Gruß,
    Ludwig

  • Ich kenne die Netzmafia nicht, aber eine serielle Schnittstelle unter Linux ist wirklich kein Hexenwerk. Es scheint auch QtSerialPort zu geben.


  • Es läuft! Vielen Dank,

    in C also mit Qt creator sollte das dann ähnlich gehen, da gibt es ja teilweise schon von z.B. Netzmafia Projekte oder?

    Gruß,
    Ludwig

    ich hatte mit dieser Anleitung sofort Erfolg

    http://kampis-elektroecke.de/?page_id=1544

    und für PI an Arduino oder AVR geht dieses

    RaspiDo
    23. November 2013 um 20:54

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

    Einmal editiert, zuletzt von jar (16. Mai 2016 um 01:27)

  • Hallo jar,

    das ist ein cooler Link. Das Anfangsprogramm funktioniert ja problemlos, nun habe ich den Code vom UART übernommen, Kompilierung ist problemlos, aber wenn ich das Programm dann ausführen möchte kommt:

    Fehler beim öffnen von /dev/ttyAMA0

    Ich vermute im Code einen Fehler, da ich schon über die Konsolen RX und TX ansprechen konnte.

    Gruß,
    Ludwig

  • Fuehrst du das Programm mit SUDO aus? Oder besser noch, pack den Benutzer in die Gruppe "dialout" oder welche auch immer genau /dev/ttyAMA0 gehoert (ls -alF /dev/ttyAMA0 verraet das).

    Und "geht nicht" ohne Quellcode kann man nichts zu sagen. Niemand hier hat Zeit und Lust, irgendwelche verlinkten Forenbeitraege durchzuarbeiten, um rauszufinden, welchen Code du tatsaechlich benutzt. Also bitte posten, in code-tags.


  • Hallo jar,
    das ist ein cooler Link.

    grrrrr. welcher? ich hatte mehr als einen gepostet und wenn ich hellsehen könnte würde ich Lotto spielen.
    Gewöhnt euch alle endlich mal an einen Kontext zu euren Antworten herzustellen!


    Fehler beim öffnen von /dev/ttyAMA0

    kann man googeln

    http://www.netzmafia.de/skripten/hardw…sPi_Serial.html

    hättest du weitergelesen wärst du hierauf gekommen

    http://kampis-elektroecke.de/?page_id=1682

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Hallo,

    das bezog sich auf den ersten Link mit den Beispielprogrammen.

    Und ja, natürlich habe ich über google auch deinen Link gefunden, nur ich nutze Debian Jessie, hier finde ich keine Datei namens /etc/inittab
    Ich habe mal wie beschrieben aus der Datei /boot/cmdline.txt das entfernt, was man entfernen sollte, lauft dieser Homepage und jetzt bootet mein Raspi gar nicht mehr.

    Ich stehe hier völlig auf dem Schlauch.

    Gruß,
    Ludwig
    [font="Arial, Helvetica, sans-serif"]/etc/inittab[/font] [font="Arial, Helvetica, sans-serif"]/etc/in[font="Arial, Helvetica, sans-serif"]/etc/inittab[/font]it[font="Arial, Helvetica, sans-serif"]/etc/inittab[/font]tab[/font]

  • Servus,
    unter Jessie ist der getty-Prozess ein service des systemd.
    Um den login abzustellen in der bash:

    Code
    sudo systemctl stop serial-getty@ttyAMA0.service


    eingeben.
    Um den Dienst komplett abzuschalten in der bash:

    Code
    sudo systemctl disable serial-getty@ttyAMA0.service


    eingeben.

    cu,
    -ds-

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!