Senden über USB-Kabel und TXD und RXD

  • Hallo zusammen,

    ich beschäftige mich schon seit einiger Zeit mit der Programmierung am RPi, am Arduino und am normalen PC. Elektronikwissen habe ich ebenfalls ein gutes. Ich habe da ein Vorhaben und würde mich über Hilfe sehr freuen.

    Ich will eine Haussteuerung mit meinem RPi, Arduino und ein paar Bauteilen verwirklichen. Das ganze soll dann so sein:

    Am Raspberry ist über TXD und RXD ein GSM-Modul angeschlossen (genauer gesagt dass hier: http://www.amazon.de/SainSmart-Kompatibel-Drahtlos-Module-SIEMENS/dp/B006CHEUSI/ref=sr_1_1?ie=UTF8&qid=1422300868&sr=8-1&keywords=GSM+modul&tag=psblog-21 [Anzeige] ), dass per SMS über wichtige Ereignisse benachrichtigen soll.

    Außerdem ist am Raspberry ein Arduino Uno R3 direkt angeschlossen über einen der beiden USB-Ports. An diesem sollen dann Sachen wie ein 433 MHz Transmitter zur Steuerung von Funksteckdosen, ein Temperatursensor, und evtl. noch anderes angeschlossen werden.

    Meine Fragen:

    1. Ich habe leider noch keine Erfahrung (trotz googlen), wie man in Python gerade in Verbindung RPi und dem Modul das ich habe die Befehle an das Modul über TXD und RXD sendet bzw. RXD empfängt ja. Dadurch dass man "Codes" an das Modul senden muss, damit es weiß welche Aufgabe es zu erledigen hat (SMS, ...). Ein Code für den Arduino werde ich ganz unten am Ende des Beitrags einfügen.

    2. Wie kann ich Daten über den USB-Anschluss mit dem RPi austauschen, wegen dem Temperatur-Sensor und dem Transmitter. Gerade weil ja die Temperatur Daten vom Sensor zum Pi geschickt werden sollen, und dann auch einer Website oder App angezeigt werden sollen. (Website und App ist kein Problem, das hab ich nur zur Information bzw. zum Verständnis geschrieben!!!)

    3. Wenn jemand noch Ideen hat was ich noch in die Haussteuerung einbauen kann, würde ich mich über Ideen sehr sehr freuen. Danke im Vorraus dafür.


    Zum Schluss jetzt noch der Sketch für den Arduino der ich zu Testzwecken verwendet habe (Hat funktioniert). Dieser Sketch bezieht sich allein auf den Inhalt der Frage 1!:

    Vielen Dank im Voraus, über hilfreiche Antworten würde ich mich sehr freuen.

    Viele Grüße

    Florian

  • Hallo Florian,

    vergiss in diesem Zusammenhang Python.

    Die Lösung Deiner Aufgabe besteht meines Erachtens in:
    - Anschließen des Arduino über einen akiven USB-Hub an den Raspberry Pi
    - Programmieren in Process
    - Arduino sendet über die Serielle Schnittstelle
    - Process greift über einen Interrupt alles ab, was Arduino über die serielle Schnittstelle absetzt.

    Alles andere ist eine Krücke umfunktionieren, um eine andere Krücke abzufragen.

    Process ist eine so mächtige Programmiersprache, die in Verbindung mit Arduino sensationell einfach zu unglaublichen Ergebnissen führt.

    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 (26. Januar 2015 um 20:56)

  • Geht des ganze dann auch auf dem Raspberry? Und kann man damit auch eine GUI machen die auf dem Raspberry läuft, denn dass war so als Erweiterung irgendwann evtl. auch mal geplant. Schon mal vielen Dank. Ich werde mich mal informieren.

    Viele Grüße

    Florian

    • Offizieller Beitrag

    Warum soll das nicht über python gehen? PYthon kann gensau so wie jede andere Sprache auf die Serielle Schittstelle des Uno zugreifen. extra ne andere Sprache zu lernen halte für etwas übertrieben, vor allem weil die Support Communitiy hier im Forum größtenteils C/ Python/ Bash spricht.

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.

    Einmal editiert, zuletzt von dbv (26. Januar 2015 um 21:05)

  • Hallo Florian,

    ich habe am Wochenende einen Sonor gebaut, der über einen Servo-Motor zwei Ultraschall-Sender-/Empfänger zusamen um 360 ° rotiert. Winkel und Abstände werden an die serielle Schnittstelle abgesetzt.
    Ein Process-Programm liest per Interrupt die serielle Schnittstelle und erzeugt daraus eine Graphik, in der alle Daten (Winkel und Abstände) dargestellt werden. Sieht aus wie bei der Flugüberwachung (nur kleiner, da mit Ultraschallwellen statt mit Lichtwellen gearbeitet wird).

    Process läuft auch auf dem Raspberry Pi.

    Alles andere musst Du ausprobieren. Process ist aber eine recht mächtige Programmiersprache.

    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,

    ich wollte mal fragen ob du eine Ahnung mit der Programmierung mit TDX/RDX und eben über das USB-Kabel hast? Den im Internet (wie gesagt) habe ich leider nichts nützliches gefunden...

    Den wie gesagt das ist mein eigentliches Problem, und erstmal habe ich mich jetzt an Python gerichtet. Würde mich über eine Antwort sehr freuen.

    Viele Grüße

    Florian

  • Hallo Florian,

    Du meinst jetzt nicht sowas:

    Code
    procedure main()
    	fh := open("/dev/ttyACM0", "r")
    	repeat
    	{	write(read(fh))
    		delay(20)
    	}
    	close(fh)
    end

    Das mit Processing erweitere ich. Du kannst zwar mit der Programmiersprache Processing die serielle Schnittstelle auslesen - es geht aber auch mit der Programmiersprache Icon!
    Deswegen gehe ich davon aus, dass es mit jeder Programmiersprache funktionieren sollte, die flott genug ist.

    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 Florian,

    dieser Code ist in der Programmiersprache Icon geschrieben.
    Er macht nichts anderes, als Daten, die ein anderes Programm an die serielle Schnittstelle schickt, auszulesen.

    Dieser Code war der Beginn einer kleinen Anwendung:
    - Arduino steuert einen Servo-Motor
    - Auf der Achse des Servo-Motors ist eine Platine (6x6 Löcher) über Stifte fixiert
    - Auf der Platine sind 4x4 Präzisionsbuchsenleisten gelötet, wobei je zwei miteinander 1:1 verbunden sind
    - Auf zwei dieser 4er-Buchsenleisten sind Ultraschallsensoren zur Abstandsmessung gesteckt
    - Die anderen 4er-Buchsen enthalten Spannungsversorgung, Masse, Trigger-Signalleitung, Echo-Signalleitung
    - Ein Arduino-Sketch lässt den Servor-Motor um 180 ° drehen
    - Das Arduino-Sketch misst den Abstand für jedes einzelne Grad (nach vorne und nach hinten, also 2 Messwerte je Winkel und Winkel + 180 °)
    - Das Arduino-Sketch sendet die Messwerte (Winkel,Abstand) an die serielle Schnittstelle

    Das Icon-Programm macht dann Folgendes:
    - Auslesen der seriellen Schnittstelle (Auslesen dieser Messwertepaare)
    - Anzeigen der Messwerte in einer Darstellung, wie Du es von der Flugsicherung her kennst
    - Ereignisbasierte Skalierung der Abstandsachse und der Messwerte in Echtzeit

    Der Nutzen besteht darin, eine Anwendung zu haben, in der zwei Komponenten
    1. Arduino über Servo-Motor und Sensoren
    2. Raspberry Pi über ein Icon-Programm
    in Echtzeit über die serielle Schnittstelle kommunizieren und ein spaßiges Programm daraus entstanden ist.

    Beispiel:


    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 (29. Januar 2015 um 18:31)

Jetzt mitmachen!

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