Hallo allerseits, Ich kenne mich leider nicht so super mit Elektronik aus und hätte daher eine Frage bezüglich eines Mikrocontrollers. Der Plan ist einen Arduino selbst zu erstellen auf Grundlage des ATmega328P-AU. Ich habe vor dabei einen CP2102N zu verwenden um die Kommunikation über einen COM Port zu gewährleisten. Grund hierfür ist, dass auf dem Mikrocontroller ein Github Projekt laufen soll welches leider nur über COM Port mit dem PC kommunizieren kann. So weit ich das im Datenblatt des CP2102N richtig gelesen habe baut der ja einen COM Port auf oder? Und eine weitere Frage bezüglich Grundlagen der Elektronik (wie gesagt kenne ich mich leider nicht so gut aus): Am Ende soll neben dem ATmega328 noch ein weiterer Mikrocontroller auf dem PCB laufen welcher ein anderes Programm erhält. Da beide mit dem PC kommunizieren wird das Board auch zwei USB Anschlüsse haben. Kann ich dann einfach beide USB 5V und GND Leitungen verbinden? So würde ich mir eine zweite Sicherung und ein zweitges Ferrite Bead sowie einige Kondensatoren sparen weil ich das dann ja zwei mal bräuchte. Ich weiß wohl nicht, ob ich das einfach so verbinden darf. Insbesondere falls beide USB Kabel an verschiedene PCs angeschlossen werden oder sowas. Vielen Dank für eure Zeit und Antworten. - Jannis
Und warum genau laufen nicht einfach beide Programme auf einem uC?
N. M. schrieb: > Und warum genau laufen nicht einfach beide Programme auf einem uC? Ich brauche tatsächlich zwei da das eine Projekt auf einem ATmega32U4 läuft. Dieser unterstützt leider nicht den Code den ich von dem Github Projekt habe (wusste ich zwar vorher aber ich habe extra mal versucht den Code auf einen Arduino Leonardo zu laden. Erfolglos). Und es wäre auch eine ziemliche Qual beide Projekte zusammen zu führen. Daher ist es für mich viel einfacher direkt zusätzlich einen ATmega328P zu nehmen da das Github Projekt für diesen erstellt wurde.
:
Bearbeitet durch User
J. schrieb: > ein weiterer Mikrocontroller auf dem PCB laufen welcher ein anderes > Programm erhält. Da beide mit dem PC kommunizieren wird das Board auch > zwei USB Anschlüsse haben. Kann ich dann einfach beide USB 5V und GND > Leitungen verbinden? So würde ich mir eine zweite Sicherung und ein > zweitges Ferrite Bead sowie einige Kondensatoren sparen weil ich das > dann ja zwei mal bräuchte. Ich weiß wohl nicht, ob ich das einfach so > verbinden darf. Insbesondere falls beide USB Kabel an verschiedene PCs > angeschlossen werden oder sowas. Wenn beide uC elektrisch verbinden sind, kann es bei der Verbindung zu zwei PC ein Problem geben. Zwar selten, denn Laptops sind meist SELV und PC meist PELV aber schon 2 PC bilden dann über GND und Schutzleiter eine Brummschleife, die zunächstmal Audio stören kann, massiver dann die USB Kommunikation. Aber wenn du Pech hast gibt es sogar einen satten Kurzschluss, z.B.bwenn Laptops schon mit anderen Geräten elektrisch verbinden sind und von dort Potentialdifferenzen übernehmen. Ich würde mir also eine andere Lösung überlegen. Für mich klingt dein Vorhaben arg zusammengeflickt.
Vielen Dank für die Antwort Michael B. Jep ich kenne mich nicht wirklich aus daher ist mein Plan tatsächlich etwas zusammengeflickt. In dem Fall werde ich einfach beide seperat über den jeweiligen USB Anschluss versorgen so dass beide 5V und GND Verbindungen getrennt bleiben. Aber nochmal kurz zu meiner anderen Frage: Ich verstehe das Datenblatt des CP2102N richtig und der baut einen COM Port auf oder?
:
Bearbeitet durch User
Es gibt auch USB -> Dual UART Umsetzer, d.h. Du hättest einen USB-Anschluss zum PC hin aber zwei UARTs (also serielle Schnittstellen) für die beiden Controller. Dann musst Du da nicht rumfrickeln mit zwei USB Ports. Der FT2232D wäre soetwas. Ist aber schon etwas anspruchsvoller zu löten mit 48 Pins.
:
Bearbeitet durch User
J. schrieb: > Aber nochmal kurz zu meiner anderen Frage: Ich verstehe das Datenblatt > des CP2102N richtig und der baut einen COM Port auf oder? Der COM-Port wird durch den Treiber auf dem PC bereitgestellt. Der CP2102N stellt eine USB-to-UART Bridge dar, d.h. der setzt vom UART auf USB um.
J. schrieb: > Daher ist es > für mich viel einfacher direkt zusätzlich einen ATmega328P zu nehmen da > das Github Projekt für diesen erstellt wurde. Zukunftsweisender wäre es allerdings, das Projekt soweit verstehen zu lernen, daß es auch auf dem ATmega32U4 läuft. Dann entfällt der ganze Hassle. Vorteilhaft ist dabei der USB-Bootloader. Ein Projekt als geheime Black-Box zu betrachten, gibt irgendwann Ärger. Der eigentliche Spaß am Programmieren entsteht ja erst dann, wenn man ein Projekt anpassen und erweitern möchte. Prinzipiell könnte sogar der ATmega32U4 als USB-UART Bridge dienen, aber dazu braucht man auch Programmierkenntnisse.
J. schrieb: > In dem Fall werde ich einfach beide seperat über > den jeweiligen USB Anschluss versorgen so dass beide 5V und GND > Verbindungen getrennt bleiben. Ich würde Mouse Bites oder V-Scoring vorsehen, dann kann man beide Schaltungen später trennen, wenn man besser programmieren kann.
J. schrieb: > Ich brauche tatsächlich zwei da das eine Projekt auf einem ATmega32U4 > läuft. Dieser unterstützt leider nicht den Code den ich von dem Github > Projekt habe Doch, das tut er mit allerhöchster Wahrscheinlichkeit. Du musst einfach nur noch ein wenig Arbeit in die SW stecken. Ich bin da aus langjähriger Erfahrung zu 100% bei peda: es ist immer ungeschickt, Softwareprobleme in Hardware zu lösen. > aber ich habe extra mal versucht den Code auf einen Arduino Leonardo zu > laden. Erfolglos "Programmieren" ist dann doch etwas mehr als nur "irgendwo herkopieren und compilieren". Peter D. schrieb: > aber dazu braucht man auch Programmierkenntnisse. Ja, so ist es. J. schrieb: > So weit ich das im Datenblatt des CP2102N richtig gelesen habe baut der > ja einen COM Port auf oder? Ja, so wie es eine USB-RS232 Bridge machen soll. > So würde ich mir eine zweite Sicherung und ein zweitges Ferrite Bead > sowie einige Kondensatoren sparen Wenn es dann noch ums "Sparen" geht: du könntest dir vermutlich den kompletten zweiten uC mit allem Klimbim drumrum sparen. > Insbesondere falls beide USB Kabel an verschiedene PCs angeschlossen > werden oder sowas. Dann must du dir sowieso Gedanken um Potentialverhältnisse und Ausgleichströme machen.
Alternativ zu zwei CP2102N, kannst du einen STM32F103C8T6 mit der Firmware von Niklas verwenden, dann hast du 3 COM ports in einem Chip. Das wäre etwas billiger und funktioniert ohne Treiber-Installation. https://www.mikrocontroller.net/articles/USB-Tutorial_mit_STM32 http://stefanfrings.de/stm32/3-Fach-USB-UART.zip
Monk schrieb: > Alternativ zu zwei CP2102N, kannst du einen STM32F103C8T6 ... nehmen Oha, ein Multiprozessorsystem. Mich beeindrucken solche Ansätze mit technischem Overkill: als tumber Schnittstellenbaustein tut dann der potenteste Rechner im Trio seine langweilige Arbeit.
J. schrieb: > wird das Board auch zwei USB Anschlüsse haben. Keine gute Idee. Ist einerseits von der Handhabung her blöd (wer will schon zwei USB-Kabel in ein Gerät stöpseln müssen) und kann andererseits elektrische Probleme machen. Lässt sich aber einfach lösen: Nimm einen USB-Hub und pack' den ebenfalls auf Deine Platine drauf. Dann gibt es PC-seitig nur einen USB-Anschluss. J. schrieb: > Ich brauche tatsächlich zwei da das eine Projekt auf einem ATmega32U4 > läuft. Dieser unterstützt leider nicht den Code den ich von dem Github > Projekt habe (wusste ich zwar vorher aber ich habe extra mal versucht > den Code auf einen Arduino Leonardo zu laden. Erfolglos). Was für ominöse "Github-Projekte" sind das denn, die Du da zusammenklicken willst? Ich denke, der Ansatz, zu verstehen, was da geschehen soll, und die Firmware zusammenzuführen, daß sie in einem (geeigneten) µC läuft, ist definitiv der wertvollere.
Lothar M. schrieb: > "Programmieren" ist dann doch etwas mehr als nur "irgendwo herkopieren > und compilieren". J. schrieb: > den Code auf einen Arduino Leonardo zu laden. Erfolglos compilieren. Ich befürchte fast, hier wurden garnicht die notwendigen Anpassungen für einen anderen µC und das andere Board vorgenommen und alles neu kompiliert. Sondern eher versucht ein fertiges Binary für ganz andere Hardware zu verwenden? Wenn man schon unbedingt fehlendes Softwarewissen durch Hardware zu erschlagen will, dann würde ich wenigstens eine/zwei USB-Isolator(en) zur galvanischen Trennung verwenden. z.B.: - https://www.ti.com/lit/ds/symlink/isousb111.pdf?ts=1719560852634&ref_url=https%253A%252F%252Fwww.google.com%252F
J. schrieb: > Ich kenne mich leider nicht so super mit Elektronik aus und hätte daher > eine Frage bezüglich eines Mikrocontrollers. Wenn ich mich nicht super auskennen würde, würde ich bei meinem ersten Projekt auf fertige Hardware zurückgreifen und in möglichst kleine Unterprojekte aufsplitten. Und nicht erst lernen wollen, wie man ein Multiprozessorboard baut. Keep It Simple, Stupid!
Lothar M. schrieb: > Mich beeindrucken solche Ansätze mit technischem Overkill: als tumber > Schnittstellenbaustein tut dann der potenteste Rechner im Trio seine > langweilige Arbeit. Tja, ist doch total oft so. USB-Serial-Bridges haben vermutlich oft mehr Leistung als angeschlossene Controller. Sowas wie Mobilfunk-Modems, WiFi-Module, Ethernet-Controller, USB-Host-Controller, welche per AT-Commands angesteuert werden, enthalten oft potente ARM-Controller (teilweise sogar Cortex-A oder -R), die man dann z.B. mit einem AVR steuert... Man könnte auf dem STM32F1 einfach 2 AVRs emulieren und diese mit den 2 Datenströmen der 2 VCPs füttern 🤣
Du wirst dir hier leider von allerlei Leuten, die meinen, die Weisheit mit Löffeln gefressen zu haben, anhören müssen, dass du zu unfähig bist, um irgendwas auf die Reihe zu kriegen. Das ist hier leider üblich und die Leute haben die Entwicklungen der letzten Jahrzehnte verschlafen und sind nun sauer, dass jemand ohne jahrelange Erfahrung auch ein Projekt umsetzen kann. Also einfach ignorieren. Eine Frage habe ich dennoch: Warum muss es eine eigene Platine für dich sein? Du willst zwei getrennte Projekte haben, die ggf. an zwei separate Computer angeschlossen werden. Kommunizieren diese Projekte miteinander? Wenn ja, wie? Warum eine eigene Platine? Das lohnt sich bei deinem Kenntnisstand kaum, da du ja nur wenig bis keine eigenen Anpassungen vornehmen willst, da bist du mit fertigen Platinen besser beraten. Natürlich ist es nicht unmöglich, eigene Platinen herzustellen, aber die Fehlerquellen sind vielfältig, das würde ich ohne gutes Verständnis der eingesetzten Chips nicht machen wollen. Dein Beitrag macht mir aber eher den Eindruck, dass du ein paar fertige Funktionalitäten zusammenpacken willst, also mach das doch auch bei der Hardware so: Greife auf möglichst fertige Bausteine zurück, damit erreichst du dein Projektziel schnell und musst dich nicht um Details kümmern. Klar, für die industrielle Massenfertigung ist das nichts. Natürlich gibt es auch bei Einzelstückzahlen gute Gründe, da gleich was Eigenes zu konstruieren, ich kann bisher aber keine erkennen.
J. schrieb: > Ich habe vor dabei einen CP2102N zu verwenden um die > Kommunikation über einen COM Port zu gewährleisten. Bist du dir sicher mit dem CP2102N? Ich habe kurz gesucht, aber den nur im QFN-Package gefunden. Das ist, was das Löten angeht, schon einigermaßen fortgeschritten. Definitiv nichts für Anfänger. Such' besser nach einer (Dual-)UART-Bridge im SOIC-Gehäuse. Oder zumindest QFP.
Tilo R. schrieb: > Such' besser nach einer (Dual-)UART-Bridge Ist eigentlich schon jemandem aufgefallen, daß die zweite Schaltung einen Atmega32U4 verwenden soll, der selbst ein USB-Device ist? Solange der Threadstarter nicht seine geheimen "Github-Projekte" nennt, kann man im Kreise herumraten.
Harald K. schrieb: > Ist eigentlich schon jemandem aufgefallen, daß die zweite Schaltung > einen Atmega32U4 verwenden soll, der selbst ein USB-Device ist? Aber sicher doch! Natürlich kann man den CP2102 (für den m328p) nutzen! Aber sonst, kann ich wenig zu dem Problem sagen, denn zu viele Unbekannte. Außer: Warum nicht einen Nano und einen Micro nebeneinander auf einer selbst gebastelten Platine?
:
Bearbeitet durch User
Lothar M. schrieb: > Mich beeindrucken solche Ansätze mit technischem Overkill: als tumber > Schnittstellenbaustein tut dann der potenteste Rechner im Trio seine > langweilige Arbeit. In etlichen meiner Produkte arbeiten 32-Bit-Hochleistungsprozessoren, mit denen man in den 1980er Jahren High-End-Workstations gebaut hätte. Und was machen sie? Ein paar Spannungswerte abfragen, in Abhängigkeit davon irgendwelche sehr langsame Schaltfunktionen ausführen und gelegentlich noch ein paar Statusmeldungen per UART absondern. Selbst ein i4004 würde sich da langweilen.
J. schrieb: > Kann ich dann einfach beide USB 5V und GND Leitungen verbinden? Mal abgesehen von den möglichen elektrischen Problemen, die andere schon erwähnt haben, kann es auch Probleme mit der USB-Logik geben. Bei dir können ja Betriebszustände auftreten, die nicht vorgesehen sind: 5 V liegen an, aber an dem einen CP2102N ist kein PC angeschlossen (die 5 V kommen dann von dem zweiten USB-Anschluss). Was dieser CP2102N und der Host-Controller dann machen, weiß man nicht so genau.
Wow hier sind ja einige Antworten zusammen gekommen. Ich bin zumindest froh darüber, dass meine beiden Fragen vollständig beantwortet wurden. Zum verlöten: Ich selbst werde nur die THT Komponenten löten. Alle SMD Komponenten werde ich bei JLCPCB per Maschine löten lassen. Ich bin einfach nicht gut genug im Löten um SMD zu verwenden. Da viele gefragt haben um was für Projekte es sich handelt: Auf dem ATmega32U4 läuft das Raphnet gc_n64_usb_v3 Projekt. Dabei handelt es sich um einen Adapter für Nintendo 64 / Gamecube Controller zu USB. https://github.com/raphnet/gc_n64_usb-v3 Auf dem ATmega328P soll das NintendoSpy (bzw. die Fork RetroSpy) laufen. Dabei handelt es sich um ein Input Display. Also ein Programm, dass am PC anzeigt welche Knöpfe am N64/GC Controller gedrückt werden. https://github.com/jaburns/NintendoSpy Beide Controller (N64/GC) nutzen jeweils nur eine Datenleitung welche auf 3V3 gezogen wird (über 1k Widerstand). Die beiden uC sind also quasi komplett voneinander getrennt bis auf die Tatsache, dass beide an der N64/GC Datenleitung "mithören". Zum PCB selbst: Ich habe bereits einen funktionierenden Prototypen für das Raphnet Projekt erstellt. Das klappt wunderbar. Das NintendSpy Projekt auf Hardware umzusetzen sollte ebenfalls kein Problem sein, da hier nur die nötigsten Komponenten für den ATmega328P vorhanden sein müssen und an zwei Pins werden dann die Datenleitungen angelegt. Also an sich braucht der nur Strom. Sollte also recht leicht umzusetzen sein. Ich teste natürlich alles vorher mal mit einem Arduino Nano. Habe tatsächlich keinen ATmega328P hier und muss daher ein paar Tage warten bis der ankommt. Will das einfach mal testen bevor ich dann das PCB erstelle.
:
Bearbeitet durch User
J. schrieb: > Dabei handelt es sich um ein Input Display. Also ein Programm, dass am > PC anzeigt welche Knöpfe am N64/GC Controller gedrückt werden. Aber der gc_n64_usb_v3 überträgt doch schon die gedrückten Knöpfe auf den PC? Warum musst du die nochmal übertragen?
Niklas G. schrieb: > J. schrieb: >> Dabei handelt es sich um ein Input Display. Also ein Programm, dass am >> PC anzeigt welche Knöpfe am N64/GC Controller gedrückt werden. > > Aber der gc_n64_usb_v3 überträgt doch schon die gedrückten Knöpfe auf > den PC? Warum musst du die nochmal übertragen? Das ist richtig. Ich habe nur keine Ahnung, wie das am PC ausgelesen wird. Ich müsste mich quasi durch den Project64 Code arbeiten (ein Nintendo64 Emulator) sowie durch den Raphnet Code und den NintendoSpy Code um alles zusammen zu führen. Es ist für mich definitiv einfacher direk einen zweiten uC zu verwenden mit zweitem USB Anschluss und mir über diesen gewaltigen Haufen Code keine Gedanken zu machen.
J. schrieb: > Ich müsste mich quasi durch den Project64 Code arbeiten (ein Nintendo64 > Emulator) sowie durch den Raphnet Code und den NintendoSpy Code um alles > zusammen zu führen. Alles nicht nötig. Das Teil meldet sich per HID an. Du brauchst nur eine Anwendung die Input-Ereignisse vom Betriebssystem entgegen nimmt und anzeigt (eine Art Keylogger). Ist dann sogar Hardware-Unabhängig. Eine schnelle Google-Suche liefert: https://github.com/djlastnight/HidRawDataWatcher https://www.inputlog.net/ Unter Linux dürfte "xev" das auch erfüllen. NintendoSpy unterstützt sogar XInput. Eventuell kann das sogar direkt ohne Modifikation die Daten vom gc_n64_usb_v3 abrufen, je nachdem wie gc_n64_usb_v3 die Eingaben als Controller-Events reinschickt. Und selbst wenn nicht, der Code für XInput ist total simpel, da müsste man relativ leicht stattdessen einen HID-Reader einpflanzen können: https://github.com/jaburns/NintendoSpy/blob/master/Readers/XInputReader.cs
:
Bearbeitet durch User
Wow daran habe ich gar nicht gedacht Niklas. Danke dir das sollte tatsächlich gehen. Da werde ich mich mal rein arbeiten. Ist definitiv einfacher. Eine kurze Frage hätte ich aber noch zum Thema Brummschleife. Eine der ersten Antworten hier war ja dass wenn ich zwei uC auf einem Board habe und von zwei USB Ports 5V und GND verbinde und dann die USB Ports mit verschiedenen Computern verbinde dann entsteht eine Brummschleife. Im NintendoSpy Projekt gibt es eine kurze Anleitung (https://github.com/jaburns/NintendoSpy/blob/master/docs/tutorial-n64.md) die zeigt, dass hier ein N64 Verlängerungskabel aufgeschnitten wird und das Signal sowie GND beide ein weiteres Kabel angelötet bekommen welches zum Arduino UNO führt. Dabei wird der N64 GND einfach am UNO GND Pin verbunden. Meine Frage ist einfach: kommt es hier denn nicht auch zu einer Brummschleife? Weil das Verlängerungskabel ja eigentlich vom N64 zum Controller führt und gleichzeitig wird GND vom N664 und das Signal am uC angeschlossen. Ist eine einfach Interessensfrage da ich jetzt den Ansatz von Niklas weiter verfolgen werde und das lieber über einen HID Reader lösen will. Alles Gute - Jannis ps.: Der N64 scheint nur SELV und kein PELV zu sein. Liegt das dann daran, dass es funktioniert? pps.: Habe mich mal mit NintendoSpy befasst und der XInput Reader kann tatsächlich den Raphnet Adapter auslesen. Ich muss dann nur einen eigenen Skin erstellen. Ist aber ja nur ein wenig XML und das ist recht gut dokumentiert. Sollte innerhalb von kurzer Zeit gehen. Vielen Dank für deinen Tip Niklas.
:
Bearbeitet durch User
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.