Hallo Zusammen, ich wollte euere Meinungen einholen. es geht um folgendes: ich steuere einen Arduino über Python mit Hilfe von serieller Schnittstelle, aber das Problem liegt daran, dass man den Arduino dann nicht über Seriell Monitor im Arduino IDE nicht stewueren kann, da die serielle Kommunikation schon vom Python beleget. meine Frage, weißt jemand wie man damit umgehen kann?, könnt Serial CAN-BUS Modul alternative sein ? vielen Dank im Voraus
Neben der Berufswahl "Gärtner" könnte auch noch die Verwendung von einzelnen Portpins als emulierte serielle Schnittstelle helfen... Beispiele dazu sind im Netz Massenhaft zu finden!
das Problem ist, dass ich dafür eine Software brauche, aber ich darf nur Python auf dem Rechner installieren.
samuel522 schrieb: > das Problem ist, dass ich dafür eine Software brauche, aber ich darf nur > Python auf dem Rechner installieren. Eben doch Gärtner...
samuel522 schrieb: > könnt Serial CAN-BUS Modul > alternative sein ? Und wie willst du das verbinden?! Schreib doch dein Python Programm so, dass es Steuern und Messwerte aufnehmen kann. Dann brauchst den den Serial Monitor nicht mehr.
Samuel schrieb: > ...nicht über Seriell Monitor im Arduino IDE nicht stewueren kann, >da die serielle Kommunikation schon vom Python beleget. meine Frage, >weißt jemand wie man damit umgehen kann?, könnt Serial CAN-BUS Modul >alternative sein ? Vielleicht könnte Dir das https://www.arduino.cc/en/Reference/SoftwareSerial und ein zweiter FTDI-Adapter helfen. >Cyblord schrieb >Werde Gärtner. Ach Cybi, den Erfolg der Arduinos entgegen deiner Prognosen wirst Du nie überwinden. Für deine eigene Gesundheit: Gib auf!
Verstehe ich dich richtig, dass du deinen Arduino seriell sowohl mit einem Python Programm als auch mit dem Monitor der Arduino IDE steuern möchtest? Falls ja, schau mal ob dieser Ansatz für Dich geeignet ist: Du fügst eine zweite Serielle Schnittstelle zu deinem Arduino Board hinzu:
1 | ____________ ______________ |
2 | | | | | |
3 | | Tx|-----|<|------|Rx | |
4 | USB o=====| USB-UART | | Arduino |======o USB |
5 | | Adapter Rx|--------------|Tx Uno/Nano | |
6 | |____________| |______________| |
Das funktioniert mit allen Arduino Boards, die selbst einen USB-UART Chip enthalten und zwischen diesem und dem AVR µC einen Schutzwiderstand. Ich weiß mit Sicherheit, dass es mit originalen Arduino Nano und Uno so funktioniert. Bei chinesischen Arduino Nano Clones musst du unter Umständen die Rx LED entfernen um gültige Signalpegel zu erhalten. Wenn du das so machst, kannst du ABWECHSELND beide USB Anschlüsse benutzen, um Kommandos an deinen Mikrocontroller zu senden. Gleichzeitig geht aber nicht. Die Antworten des Mikrocontroller werden dupliziert an beide USB Kabel gesendet. Nun kannst du das linke USB Kabel für dein Python Programm verwenden, und das rechte USB kabel für die Arduino IDE. Entspricht das ungefähr deiner Erwartung?
Software Probleme durch mehr Hardware lösen... Und da gibt's hier Leute die sich darüber beschweren, dass Software schneller langsamer wird, als Hardware schneller wird!
Wenn du einen anderen Mikrocontroller (ATmega328PB ATmega2560) mit mehr echten seriellen Ports verwendest, oder die SoftwareSerial Klasse, kannst du beide Ports wirklich gleichzeitig benutzen. Aber dann musst du auch deinen Sketch entsprechend erweitern. So oder so brauchst du zwei USB-UART Adapter, denn es ist ohne spezielle Software nicht möglich, dass zwei Programme sich einen seriellen Port teilen.
Stefanus F. schrieb: > So oder so brauchst du zwei USB-UART Adapter, denn es ist ohne spezielle > Software nicht möglich, dass zwei Programme sich einen seriellen Port > teilen. Oder man schreibt die eine Software so, dass sie alles bietet, was die beiden Softwares können. Das was der Arduino Serial Monitor macht lässt sich doch wohl simpel in ein Python Programm übernehmen. Das kann man dann auch mit einer schöneren Oberfläche versehen.
> Software Probleme durch mehr Hardware lösen... Und da gibt's hier Leute > die sich darüber beschweren, dass Software schneller langsamer wird, > als Hardware schneller wird! Völlig unpassend. Mein Lösungsvorschlag kommt ganz ohne Softwareänderung aus. Also wird da nichts langsamer. Wenn Du schon so schlau bist, dann schreibe dem Samuel bitte einen Windows Treiber, der die Nutzung eines virtuellen seriellen Portes mehreren Programmen gleichzeitig erlaubt. Aber so, dass es mit jedem beliebigen USB-UART funktioniert. Kannst du nicht? Dann halt die .... Die ganzen anderen unqualifizierten Lästereien der anderen Gäste nerven mich auch. Aber das ist typisch, sowas kommt fast immer von Gästen. Ich finde das feige. > Das was der Arduino Serial Monitor macht lässt > sich doch wohl simpel in ein Python Programm übernehmen Mag sein, aber der Samuel hat klar verständlich gemacht, dass diese Option für ihn nicht in Frage kommt. Er wird dafür seine Gründe haben, akzeptiere sie.
Stefanus F. schrieb: > Völlig unpassend. Mein Lösungsvorschlag kommt ganz ohne Softwareänderung > aus. Also wird da nichts langsamer. Aber braucht mehr Hardware-Ressourcen. Ob mehr USB-Ports/Strom/Komponenten oder mehr Rechenleistung ist gleiches Prinzip. Stefanus F. schrieb: > Wenn Du schon so schlau bist, dann schreibe dem Samuel bitte einen > Windows Treiber, der die Nutzung eines virtuellen seriellen Portes > mehreren Programmen gleichzeitig erlaubt Das wäre wieder nur ein unnötiger Workaround um das Fehldesign, unbedingt zwei Programme nutzen zu wollen. Stefanus F. schrieb: > Mag sein, aber der Samuel hat klar verständlich gemacht, dass diese > Option für ihn nicht in Frage kommt. Wo? Er müsste nur sein Python-Script anpassen.
Warum wird hier eigentlich immer alles tot diskutiert? Er soll einfach einen Arduino Mega nehmen mit mehr Hardware Serial Ports und alle seine Probleme sind gelöst.
Guest schrieb: > Warum wird hier eigentlich immer alles tot diskutiert? Es gibt halt Leute die haben gewisse Ansprüche an technische Lösungen, und würden gerne auch anderen dazu verhelfen einigermaßen ordentliche Dinge zu bauen. Ist man bei deutschen Industrieprodukten nicht gewohnt, ich weiß :) USB-Serial-Adapter sind eh eine Krücke, und dann auch noch zwei COM-Ports am PC richtig konfigurieren, in der richtigen Zuordnung, Baudrate usw. ... Der Nutzer dankt.
Ich sehe da dennoch keine andere Lösung... Python muss er haben. Das war die Vorgabe. Wenn er jetzt also noch Befehle per Seriellen Monitor senden möchte, na dann braucht er einen weiteren Port. Er könnte natürlich auch einen SoftwareSerial Port nehmen.
Guest schrieb: > Python muss er haben. Das war die Vorgabe. Das ist ja in Ordnung. Er könnte ja in seinem Python Programm zusätzlich über den dort bereits geöffneten Port Befehle senden. Was ist daran so kompliziert?! Kann Python keine Daten senden? Ist das Python Programm schreibgeschützt?
Guest schrieb: > Warum wird hier eigentlich immer alles tot diskutiert? > > Er soll einfach einen Arduino Mega nehmen mit mehr Hardware Serial Ports > und alle seine Probleme sind gelöst. Quatsch. Damit fangen seine Probleme erst an. Solche talentfreie Leute müssen direkt vor Ort gebrochen werden. Ihnen muss jeder Wille zur weiteren Beschäftigung mit der Materie von Grund auf ausgetrieben werden. Dann können sie (falls sie danach je wieder anfangen zu sprechen) ein neues Leben mit ihren echten Talenten führen. Ansonsten hast du den irgendwann als Kollegen, oder schlimmer, als Entwickler deiner Herz-Lungen Maschine bei deiner nächsten Herz OP oder programmierer der Fly-By-Wire Steuerung bei deiner nächsten Flugreise. Willst du das riskieren?
Ich würde dir ja einen Psychiater raten, aber der Arme müsste sich das dann ja anhören.
Dr.Sommer schrieb: >Software Probleme durch mehr Hardware lösen... Und da gibt's hier Leute >die sich darüber beschweren, dass Software schneller langsamer wird, als >Hardware schneller wird! Früher sah ich das auch immer so, aber mittlerweile bin ich der Meinung, das ist zu dogmatisch. So lange man keine Massenprodukte oder nur kleine Stückzahlen baut, kann es durchaus pragmatisch sein, eine mögliche Softwarelösung durch Hardware zu ersetzten. Man spart sich manchmal ziemlich viel Programmieraufwand. Ein Kollege hatte immer zwei serielle Schnittstellen verwendet: Eine als Debug-Schnittstelle und die andere als Standart-Output. Das hat sich auf Dauer als ziemlich pratktisch erwiesen und einfach handhabbar erwiesen.
Beitrag #5506583 wurde von einem Moderator gelöscht.
Dr. Sommer schrieb: > Stefanus F. schrieb: >> So oder so brauchst du zwei USB-UART Adapter, denn es ist ohne spezielle >> Software nicht möglich, dass zwei Programme sich einen seriellen Port >> teilen. > > Oder man schreibt die eine Software so, dass sie alles bietet, was die > beiden Softwares können. Das was der Arduino Serial Monitor macht lässt > sich doch wohl simpel in ein Python Programm übernehmen. Das kann man > dann auch mit einer schöneren Oberfläche versehen. Dr. Sommer schrieb: > Stefanus F. schrieb: >> So oder so brauchst du zwei USB-UART Adapter, denn es ist ohne spezielle >> Software nicht möglich, dass zwei Programme sich einen seriellen Port >> teilen. > > Oder man schreibt die eine Software so, dass sie alles bietet, was die > beiden Softwares können. Das was der Arduino Serial Monitor macht lässt > sich doch wohl simpel in ein Python Programm übernehmen. Das kann man > dann auch mit einer schöneren Oberfläche versehen. ja stimmt, aber sowas geht leider nicht.
> Keine Frau Zuhause? Lass dich mal durchvögeln damit du klar kommst.
Alles klar, und wenn der Moderator den ganzen Scheiß hier löscht, kommen
genau diese Gäste und jammern wegen Zensur herum. Ihr seid so feige.
Stefanus F. schrieb: > der die Nutzung eines virtuellen seriellen Portes > mehreren Programmen gleichzeitig erlaubt das ist genau was ich haben möchte.
samuel522 schrieb: > ja stimmt, aber sowas geht leider nicht. Warum nicht? Wieso ist die offensichtliche Lösung nicht machbar? samuel522 schrieb: > das ist genau was ich haben möchte Und bestimmt 100x komplizierter als das Programm anzupassen. Wenn es unbedingt absolut zwei Programme sein müssen, könnte man einen Server schreiben der den Port an einen TCP Port weiter leitet. Dann müsste man das Python Programm anpassen und einen eigenen "Serial" TCP Monitor bauen.
sogar mit einem Mega braucht man da Serial enabled device, was 15 € kostet
Dr. Sommer schrieb: > Wenn es unbedingt absolut zwei Programme sein müssen, könnte man einen > Server schreiben der den Port an einen TCP Port weiter leitet. Dann eigentlich geht es nicht um Eingabe über seriell Monitor. das war nur zum Vereinfachen. Die Python wird in einem anderen Anwendungsprogramm durchgeführt. und Python-Oberfläche extra also insgesammt 2 Programme.
samuel522 schrieb: > Die Python wird in einem anderen Anwendungsprogramm durchgeführt. und > Python-Oberfläche extra also insgesammt 2 Programme. Dann kombiniere beides in ein Programm, oder lasse die Programme miteinander reden (Fifo, TCP). Oder nimm einen Arduino der einen echten USB hat (Uno?) und simuliere 2 serielle Schnittstellen. Dann hast du endlich die Nachteile zweier Schnittstellen erreicht ohne 2 Kabel zu brauchen, Hurra.
Guest schrieb im Beitrag #5506583:
> Keine Frau Zuhause? Lass dich mal durchvögeln damit du klar kommst.
Tja, micht jeder kann sich ne Grosspackung 'blaue Pillen' pro Woche
leiste so wie Du :-)
Zurück zum Ernst der Sache:
Wir benutzen für 'auf die schnelle Projekte' auschliesslich Teensy
Module ( 3.2 / 3.6) die sind sau schnell und besitzen Peripherie im
Überfluss ( z.b. bis zu 4 USART)
Und sind obendrein voll Arduino kompatible ! - Herz was willst du mehr.
> Und bestimmt 100x komplizierter als das Programm anzupassen. Sorry, da muss ich mal widersprechen. Eine Diode und ein USB-UART Modul sind genau zwei Bauteile. Die hinzuzufügen kann gar nicht 100x komplizierter sein, als eine Programmänderung (ganz egal wie klein sie sein mag). Du übertreibst maßlos (schade dass man dieses Wort nicht steigern kann). > Teensy ... sind obendrein voll Arduino kompatible Leider gilt das nur, solange man keine Libraries einbindet, die nur für AVR geschrieben wurden. Und davon gibt es viele. Diese Dinger sich sicher nicht schlecht, aber keine Option für "mal eben schnell austauschen". Abgesehen davon lösen sie den genannten Konflikt nicht, zwei Programme auf einem seriellen Port nutzen zu wollen, bzw. auf den zusätzlichen USB-UART verzichten zu können.
Samuel ist ein Sommertroll, der anstatt Freitags nun Mittwochs schreibt! Es ist da alles abgebildet: Arduino, Python, VirtualCom, CAN und Busfahrer...
Stefanus F. schrieb: > Eine Diode und ein USB-UART Modul sind genau zwei Bauteile. Und sind kein Windows Treiber für gleichzeitigen Zugriff. Und darauf bezog sich das 100x komplizierter.
> ich steuere einen Arduino über Python mit Hilfe von serieller > Schnittstelle, aber das Problem liegt daran, dass man den Arduino dann > nicht über Seriell Monitor im Arduino IDE nicht stewueren kann, > da die serielle Kommunikation schon vom Python beleget. meine Frage, > weißt jemand wie man damit umgehen kann?, könnt Serial CAN-BUS Modul > alternative sein ? Mir sind deine Anforderungen immer noch nicht klar. Zu welchem Zeitpunkt benötigst Du den Ser.Monitor und wann das Py.Programm? Gleichzeitig? Welche Programme kannst Du anpassen? Nur den Arduino Sketch? Im "Normalfall" wo ein Steuerprogramm auf dem PC mit einem Sketch auf dem Arduino kommuniziert, muss um z.B. einen neuen Sketch auf den Arduino zu laden sowohl der Arduino angehalten werden (Resetbutton -> der Bootloader im Arduino nimmt den neuen Download vom AvrDude entgegen) als auch das Steuerprogramm am PC (um überhaupt die Schnittstelle f. AvrDude frei zu geben). Zu beachten ist dabei dass die Arduino IDE die zeitliche Koordination zw. Ser.Monitor, AvrDude und bei gewissen Arduinomodellen dessen Reset übernimmt. Das mitkoordinieren beliebigen weiteren (py oder nicht py) Programmen ist da nicht. Das funktioniert nichtmal mit anderen Seriellen Programme statt des in der Arduino IDE integrierten. Um der Bequemlichkeit wegen das zu ändern wird es auf diese oder jene Art aufwändig. Am transparentesten ist es die "haupt" USB/Serielle Schnittstelle ausschließlich für Sketch laden und Ein-/Ausgaben am Ser.Monitor zu belassen und für die Kommunikation des Sketches mit einem anderen (py-)Programm eine weitere Schnittstelle zu verwenden.
> Am transparentesten ist es die "haupt" USB/Serielle Schnittstelle ausschließlich für > Sketch laden und Ein-/Ausgaben am Ser.Monitor zu belassen und für die Kommunikation > des Sketches mit einem anderen (py-)Programm eine weitere Schnittstelle zu verwenden. D.h. 2 Schnittstellen am PC und 2 Schnittstellen am Arduino! Natürlich mit 2 separaten Kabel korrekt zugeordnet verbunden.
Dr. Sommer schrieb: > Oder nimm einen Arduino der einen echten USB hat (Uno?) und simuliere 2 > serielle Schnittstellen. Dann hast du endlich die Nachteile zweier > Schnittstellen erreicht ohne 2 Kabel zu brauchen, Hurra. Lustige Idee! Fix mit einem ATMega32U4 getestet.
1 | Serial_ SerialA; |
2 | Serial_ SerialB; |
3 | |
4 | void setup() |
5 | {
|
6 | SerialA.begin(9600); |
7 | SerialA.println("Start"); |
8 | SerialB.begin(9600); |
9 | SerialB.println("Start"); |
10 | }
|
11 | |
12 | void loop() |
13 | {
|
14 | SerialA.println("A"); |
15 | SerialB.println("B"); |
16 | }
|
So einfach gehts nicht. Es wird nur 1 COM Port etabliert Die Ausgaben von A und B kommen beide dort an. Da ist also noch (erhebliche?) Nacharbeit in den Libraries nötig, damit das so schön, wie gewünscht, klappt.
Arduino Fanboy D. schrieb: > Da ist also noch (erhebliche?) Nacharbeit in den Libraries nötig, damit > das so schön, wie gewünscht, klappt. Kann sein. Je nachdem wie sauber die geschrieben sind. Bei diesem Projekt wurde es geschafft: https://GitHub.com/Erlkoenig90/f1usb USB-UART ist aber letztendlich super hässlich. Wenn man auf Controller Seite schon USB programmiert kann man auch direkt ein vernünftiges Protokoll bauen...
> Wenn man auf Controller Seite schon USB programmiert > kann man auch direkt ein vernünftiges Protokoll bauen... Traust du das dem TO zu?
Stefanus F. schrieb: > Traust du das dem TO zu? Mit den richtigen Bibliotheken gar nicht so schwierig. Schließlich entfällt die Paketierung, Flusskontrolle, Paket-Anfang-Erkennung, Einstellung der Baudrate... und zum Kenntnisstand wurde nichts gesagt.
Cyblord -. schrieb: > Willst du das riskieren? Einen, wie du sprichst "talentfreien" Kollegen hätte ich zehnmal lieber als dich. Bei ihm ist die Chance groß, daß er nicht so arrogant und überheblich ist. Schon rein statistisch :-)
>> Traust du das dem TO zu? > zum Kenntnisstand wurde nichts gesagt. Die Frage des TO lässt einiges durchblicken. Die offensichtliche Lösung (wurde ja schon mehrfach genannt) bestände darin, die Programme auf dem PC so umzuschreiben, dass sie mit einem seriellen Port klar kommen oder einen Windows Treiber zu programmieren, der doppelte Verwendung ermöglicht. Wenn das für den TO so einfach wäre, wie es klingt, hätte er es längst gemacht. Ich sehe das so: Ich kann keine Hosen schneidern, und Maßanfertigungen kann ich nicht bezahlen. Also kaufe ich fertige Produkte von der Stange. Die entsprechen zwar nicht exakt meiner Idealvorstellung, aber sie sind immer noch besser, als Kleider zu tragen oder nackt herum zu laufen. Damit käme ich nicht weit. So sehe ich das auch mit den USB-UART Adaptern. Sie sind nicht ideal, aber ich komme damit zurecht. Darauf kommt es für mich an.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.