Hallo, ich habe vor, einen Prototypen für ein zukünftiges Produkt zu basteln. Dabei gibt es (hoffentlich) nur einen Aspekt von dem ich nicht weiß, ob das so easy geht. Die Idee ist es, ein Modul zu haben, den man mit Bluetooth an mit dem Smartphone verbinden kann, um dann vom Smartphone aus Daten zu übertragen(par Befehle). Ich will dann aber auch weitere von dem gleichen Modul an das erste befestigen/damit verbinden über USB. Die verbundenen Module sollen dann aber dann, wenn ein USB Kabel im Empfang-Abschnitt verbunden ist, das Bluetooth abstellen und nur auf die Daten ausm USB hören. Das heißt, wenn ich 2 von den Modulen per USB verbinde, dann hat nur eins von beiden das Bluetooth aktiviert, bekommt die Daten vom Smartphone und gibts sie auch dann ans 2. Modul über due USB Verbindung. So will ich erreichen dass theoretisch eine unbegrenzte Anzahl von Modulen verbunden werden können(die Grenze sollte aber vermutlich im Markt nicht 10 überschreiten). Ich habe vor, dies erst mal mit nem Arduino und nem BLE adapter zu testen. Geht sowas aber grundsätzlich, und ist es schwer, oder ist sowas echt super einfach? Wäre vielleicht auch eine Möglichkeit, einen Schalter an das Modul zu befestigen.. Kann so ein Bluetooth Empfänger also einfach ausgeschaltet werden, ohne Probleme? Wie würdet ihr das Problem lösen? Bin echt neu, wenn es un Mikrocontroller geht, aber ich hoffe, dass das Problem nicht so schwer ist und ich eure Hilfestellung verstehen kann :) Vielen Dank!
>dann, wenn ein USB Kabel im Empfang-Abschnitt verbunden ist, das >Bluetooth abstellen und nur auf die Daten ausm USB hören entweder die 5V der USB-Verbindung erfassen / prüfen, ... ode in irgendwechen Registern erkennen, ob USB enummeriert wurde. Modul1 -> Modul2 -> Nodul3 -> ... da braucht dann aber jedes Modul USB-Host und Device?
Percival Y. schrieb: > Ich habe vor, dies erst mal mit nem Arduino und nem BLE adapter zu > testen. > Geht sowas aber grundsätzlich, und ist es schwer, oder ist sowas echt > super einfach? Wenn du z.B. einen Arduino Leonardo oder Mikro verwenden würdest, dann könntest du beides parallel betreiben. Zudem, jederzeit mit if(Serial) prüfen ob eine serielle Verbindung besteht und dann per Software das BT Modul abschalten
Ja also das ziel ist, dass jedes Modul identisch ist, aber einen USB Eingang und einen USB Ausgang hat. Das heißt, Host und Device ist. Wenn im Eingang ein Kabel angeschlossen ist, hören wir nur auf das Kabel und schalten das Bluetooth aus. Ich werde am Wochenende mal ein wenig daran basteln. Gibt sicherlich etliche Möglichkeiten, sowas umzusetzen..
Hmm ich muss mal schauen. Hab noch nie mit USB Daten gearbeitet am Arduino, bin da aber auch ehrlich gesagt ein super Anfänger. Programmiere sonst nur Apps und so. Hab ein par Arduino Nano‘s rumliegen. Und ein Elegoo UNO R3. Die Bluetooth Module heißen HC-06. Werde mir morgen mal ein pr Tutorials anschauen wie man mit USB zwischen Arduinos Kommuniziert und wie man Bluetooth an/ausschaltet. Mit ner If(Schleife) klingt eig. wie ein no-brainer. Werde mich mal hier melden falls ich irgendwo hängen bleibe 🙌
Percival Y. schrieb: > Die verbundenen Module sollen dann > aber dann, wenn ein USB Kabel im Empfang-Abschnitt verbunden ist, das > Bluetooth abstellen und nur auf die Daten ausm USB hören. Das Thema interessiert mich auch. Wäre es so möglich? Gruß, Martin
Percival Y. schrieb: > If(Schleife) Nee... Sowas gibts nicht. Meinte if(Serial) Und das tuts nur bei Arduinos mit nativem USB. Also nicht beim UNO oder Nano
>Das Thema interessiert mich auch. Wäre es so möglich?
Was ist das für ei USB-Block?
falls da UART RX TX kommt ja, falls da DP DM kommt nein.
ggf würde ich noch ein paar pull-ups an die jeweiligen TX RX hängen
(47k)
>USB zwischen Arduinos
einer ist host, der andere device. Geräteklasse ist üblicherweise
USB-VCP
Für deine Anordnug:
Der erste (mit Funk) ist immer Host. Die anderen sind sowohl Host als
auch Device. Und damit weden deine Probleme anfangen.
Du braucst dann entweder Arduinos mit 2 voneinander unabhängigen
USB-Einheiten, mindestens eine davon mit Host-Features.
In der Regel haben die aber nur maximal eine USB-Einheit. Host oder
Device(USB-OTG).
In der STM-Welt würde ich da 2 µC pro Modul:
STM4xx Host, STM3xx(oder MSPF55x) als Device.
Host: je nach was du mit deinen Daten machen willst + Bis zum anderen
(UART/I2C/SPI).
Device: aus dem UART/I2C/SPI USB-VCP machen.
Du könntest statt STM3xx(oder MSPF55x) als Device eventuell auch fertige
USB<->RS232 nehmen (CP2103,...) da brauchst du aber im Host die
entsprechenden Treiber.
Das ist ein CP2102 MICRO USB to UART TTL Modul. Mir ging es um die Beschaltung dass ich mit der Versorgungsspannung vom Modul den 4052 schalte.
Ich würde die Sache mit dem USB nochmal überdenken. Vermutlich wird das Ganze mit I²C oder RS232 um Welten einfacher. Es sei denn du (Percival) kennst dich schon gut mit USB Programmierung aus, aber das ist wohl nicht der Fall.
>Das ist ein CP2102 MICRO USB to UART TTL Modul
ja, sollte so funzen
@stefanus Ja du hast recht, ich habe tatsächlich gar keine Ahnung von irgendwas was mit Mikrocontrollern zu tun hat. Ich habe lediglich mal einen Laser Projektor gebastelt dem ich über bluetooth sagen konnte, was er malen soll. Aber das ist dann auch wieder total lange her. Alles was ich bisher habe ist tatsächlich nur die Idee. Es sollen am Ende Arrays zwischen den Controllern verschickt werden die pro Einheit eine Map mit 3 ints enthalten(für RGB). Es soll für eine Größe von bis zu 5000 Elementen ausreichen, das heißt 8x3x5000 byte= 120 kbyte.. Ich lese mir jetzt mal in Ruhe alle Antworten durch und google mal rum, da ich echt keine Ahnung habe was die Kürzel bedeuten. Sehe aber schon, dass ich nach einem proof of concept sicherlich einen Experten zu rate ziehen muss, der mir das dann alles für das Produkt vernünftig macht..
Wäre es vielleicht möglich, gerade einfach 2 Arduinos zu benutzen? 1. Ein 'Master', welcher Daten über Bluetooth empfängt und verarbeitet. 2. Ein 'Slave' welcher Daten vom Master empfangen kann. Ein einfacher Schalter kann dann angeben, welcher von beiden nun die Kontrolle hat. Da eine Einheit einen eingehenden Anschluss und einen ausgehenden Anschluss hat, würde also jedes mal, wenn der eingehende Anschluss verwendet wird, das Slave Arduino benutzt, ansonsten der Master. (hab echt keine Ahnung ob die Begriffe so Sinn ergeben, aber ich hoffe das ist trotzdem verständlich) Schließe ich nun 4 Module aneinander an, so habe ich am Ende immer einen Master, und 3 Slaves, welche jeweils die Daten vom Master erhalten. Das ist anscheinend mit I2C zu erreichen. Ist das vielleicht die "einfachste" Lösung für das Projekt?
Bei den USB-UART Adaptern gibt es einen Haken, den man hier berücksichtigen sollte. Du kannst zwar erkennen, wenn das USB Kabel eingesteckt wurde (Spannung hat), aber du weißt nicht, ob am anderen Ende auch ein Programm gestartet wurde, dass den virtuellen seriellen Port wirklich geöffnet hat. Deswegen würde ich eher überdenken, ob die sonst übliche Rangfolge nicht besser ist: USB wird verwendet, wenn Bluetooth nicht verbunden ist. Denn die Bluetooth Module haben einen Ausgang, der anzeigt, ob die Verbindung geöffnet wurde, oder nicht. Daran könnte man ganz einfach ein Relais oder einen Multiplexer (z.B. CD4053) anschließen.
Stefan ⛄ F. schrieb: > Bei den USB-UART Adaptern gibt es einen Haken, den man hier > berücksichtigen sollte. > > Du kannst zwar erkennen, wenn das USB Kabel eingesteckt wurde (Spannung > hat), aber du weißt nicht, ob am anderen Ende auch ein Programm > gestartet wurde, dass den virtuellen seriellen Port wirklich geöffnet > hat. > > Deswegen würde ich eher überdenken, ob die sonst übliche Rangfolge nicht > besser ist: USB wird verwendet, wenn Bluetooth nicht verbunden ist. > > Denn die Bluetooth Module haben einen Ausgang, der anzeigt, ob die > Verbindung geöffnet wurde, oder nicht. Daran könnte man ganz einfach ein > Relais oder einen Multiplexer (z.B. CD4053) anschließen. Für meine Verwendung ist es notwendig, dass es gerade so funktioniert, wie ich es formuliert habe. Es ist tatsächlich kein Problem, wenn nicht geprüft wird, ob wirklich Daten ankommen. In dem Verwendungszweck ist es nur notwendig, dass Bluetooth ausgeschaltet wird, sobald ein USB im eingangs port verwendet wird.
Percival Y. schrieb: > n dem Verwendungszweck ist es > nur notwendig, dass Bluetooth ausgeschaltet wird, sobald ein USB im > eingangs port verwendet wird. Dann würde ich diese CD4053 als Umschalter verwenden und mit der 5V Leitung vom USB Kabel ansteuern.
Percival Y. schrieb: > Das heißt, wenn ich 2 von den Modulen per USB verbinde, dann hat nur > eins von beiden das Bluetooth aktiviert, bekommt die Daten vom > Smartphone und gibts sie auch dann ans 2. Modul über due USB Verbindung. > Ich habe vor, dies erst mal mit nem Arduino und nem BLE adapter zu > testen. > Geht sowas aber grundsätzlich, und ist es schwer, oder ist sowas echt > super einfach? In Prinzip geht das. Vergiss aber Arduino, das taugt dafür nicht. Ich würde so etwas wie das hier nehmen: https://www.st.com/en/microcontrollers-microprocessors/stm32f722re.html Der hat zwei separate USB-Ports. Jeder USB-Port kann ohne extra Beschaltung Fullspeed 12 MBit/s, was ausreichen sollte. Und jeder USB-Port kann entweder als Device oder als Host betrieben werden. Das ist wichtig! Damit Du zwei Module verbinden kannst, muss eines Host sein (Typ A, rechteckig), das andere Device (Typ B, quadratisch). Das Modul, das an seinem Device Port nichts angeschlossen hat, ist Master. Das zweite Modul weiß ja, dass es das zweite ist, weil es sich mit seinem Device-Port am Host-Port des ersten enumeriert hat und damit eine Verbindung besteht. Sobald die Enumeration stattgefunden hat, schaltet er sein Bluetooth aus. Das dritte Modul machts wie das zweite, usw. Technisch funktioniert das, keine Frage. Aber ohne langjährige Erfahrung mit Mikrocontrollern im Allgemeinen und mit USB im speziellen wirst DU scheitern. Sorry dass ich das so klar sagen muss, aber ich denke, dass das zwei Nummern zu viel ist, wenn Du nicht einmal dem Arduino-Stadium entwachsen bist. USB ist komplex. Sehr komplex. Du solltest das ganze mit seriellen Schnittstellen machen. Dazu brauchst Du einen Mikrocontroller, der drei Hardware-UARTs hat: eine für BT, eine für den Uplink und eine für den Downlink. Damit scheiden auch schon mal die meisten Arduinos aus. Ein Mega 2560 oder ein Due kämen in Frage. Mikrocontroller mit 4 oder 6 oder 10 seriellen Schnittstellen gibts aber, kein Problem. fchk
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.