PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : integrierte drahtlose UART Platine (HC-05 o.ä.) inkl USB-UART (CH341 o.ä.) ?



HaWe
18.06.2018, 19:12
hallo,
kennt jemand eine Art drahtlose UART Platine (HC-05 o.ä.) inkl USB-UART (CH341 o.ä.) , so wie die getrennten Platinen, nur eben integriert auf 1?
Es ist gedacht für eine direkte drahtlose USB/UART-Kommunkation von Arduino zu Arduino (oder zu Raspi), per einfachem "schnellen" Einstecken in die jew. USB Ports, ohne weitere Kabel.

Ceos
19.06.2018, 08:01
Hast du eine Preis und Größenlimitierung?

Sonst gibt es diverse WLAN Module mit integriertem Controller die man dafür bequem missbrauchen kann :D

HaWe
19.06.2018, 08:06
Hast du eine Preis und Größenlimitierung?

Sonst gibt es diverse WLAN Module mit integriertem Controller die man dafür bequem missbrauchen kann :D

hallo,
die Größe sollte in etwa max. so sein wie eines der Module einzeln, also etwa wie ein USB-Stick, max. 5cm lang.

Ceos
19.06.2018, 10:29
Okay ich glaube icn habe mich beim ersten mal gründlich verlesen, du willst Arduino - Ardunio über deren integrierte USB schnittstelle anschließen???

also quasi

Arduino mit integr. USB <-> Modul mit USB Master <-> Funk <-> Modul mit USB Mmaster <-> Arduino mit integr. USB?!

Das ist sportlich! Du bräuchtest als Modul eigentlich einen Raspberry Pi, denn du musst einen USB Slave ansprechen, also einen vollen USB Master Stack auf dem Modul haben, der obendrein auch noch die Treiber für die Arduino USBs geladen hat und die Funkverbindung mit dem Gegenstück automatisch einrichtet!

Das ist äußerst umständlich! Was hindert dich denn daran die TX/RX die zum USB chip geht an z.B. einen ESP anzuschließen den man dann per netzwerk-socket anspricht? Also UART über socket tunnelt?

Wenn meine Beschreibung deiner Anforderung entsprechen sollte ist das ziemlich unmöglich als "fertiges" Modul zu bekommen, da muss man einiges an Arbeit rein stecken. (z.B. das tunneln)

Du könntest auch ein BTtoUART Modul nehmen, das kann man auch ohne irgendwas extra mit einem Raspi pairen ... aber reines UART (ohne USB dazwischen) von Arduino zu Arduino über Funk geht entweder nur mit einem RF-Funkmodul 433 oder 868MHz ... wobei die Distanz und qualität limitiert ist

oder du musst ein passendes Funkmodul mit zugehöriger Arduino lib an den Arduino anschließen und dann darüber zwischen den Arduinos kommunizieren (da geht dann auch stabileres wie BT, WLAN, etc.)

Aber mir ist kein erschwingliches Modul bekannt, dass es dir erlauben würde jeweils einen Arduino anzuschließen und deren UARTs miteinander zu verbinden

Einzig einige Wireless USB Module fallen mir da ein aber die sind schweine teuer und werden i.d.R. über WLAN an den PC angebunden und können kaum von einem Arduino bedient werden.

HaWe
19.06.2018, 10:56
Okay ich glaube icn habe mich beim ersten mal gründlich verlesen, du willst Arduino - Ardunio über deren integrierte USB schnittstelle anschließen???

also quasi

Arduino mit integr. USB <-> Modul mit USB Master <-> Funk <-> Modul mit USB Mmaster <-> Arduino mit integr. USB?!

Das ist sportlich! Du bräuchtest als Modul eigentlich einen Raspberry Pi, denn du musst einen USB Slave ansprechen, also einen vollen USB Master Stack auf dem Modul haben, der obendrein auch noch die Treiber für die Arduino USBs geladen hat und die Funkverbindung mit dem Gegenstück automatisch einrichtet!

Das ist äußerst umständlich! Was hindert dich denn daran die TX/RX die zum USB chip geht an z.B. einen ESP anzuschließen den man dann per netzwerk-socket anspricht? Also UART über socket tunnelt?

Wenn meine Beschreibung deiner Anforderung entsprechen sollte ist das ziemlich unmöglich als "fertiges" Modul zu bekommen, da muss man einiges an Arbeit rein stecken. (z.B. das tunneln)

Du könntest auch ein BTtoUART Modul nehmen, das kann man auch ohne irgendwas extra mit einem Raspi pairen ... aber reines UART (ohne USB dazwischen) von Arduino zu Arduino über Funk geht entweder nur mit einem RF-Funkmodul 433 oder 868MHz ... wobei die Distanz und qualität limitiert ist

oder du musst ein passendes Funkmodul mit zugehöriger Arduino lib an den Arduino anschließen und dann darüber zwischen den Arduinos kommunizieren (da geht dann auch stabileres wie BT, WLAN, etc.)

Aber mir ist kein erschwingliches Modul bekannt, dass es dir erlauben würde jeweils einen Arduino anzuschließen und deren UARTs miteinander zu verbinden

Einzig einige Wireless USB Module fallen mir da ein aber die sind schweine teuer und werden i.d.R. über WLAN an den PC angebunden und können kaum von einem Arduino bedient werden.

nein, das soll mit je 2 CH341- plus HC05-Module über Serial() (Arduino) bzw. alternativ wiringSerial (Raspi) gehen, nur wegen unterschiedlicher Vcc (5V vs. 3.3V) braucht es ne Hand voll zusätzliche Kabel am Raspi. Um schnell und einfach je 2 Module zu verbinden, ist zuviel Kabelsalat nötig, daher suchte ich was ähnliches, was diese Funktionen integriert hat.

Ceos
19.06.2018, 10:58
oookay beschreibe bitte nochmal deine konstruktion genauer, ich habe ein szenario gemalt, bei dem du die fertigen arduino module mit eingebautem USB so benutzen willst dass du ein baord an deren USb ansteckst, weles mit einem baugleichem board über funk kommuniziert und dann auf der anderen seite ebenfalls wieder per USB mit einam arduino verbunden ist

wenn du von PC/Raspi zu Arduino möchtest, wären folgende Optionen drin:

- BTtoUART (gibts i.d.R. in 3.3V und 5V auf der ausgangsseite, brauchte nur das passende Modul zu nehmen) ... du linkst dein Raspi/PC per BT mit dem Modul und dein PC erkennt es als regulären COM Port (ähnlich deines USBtoUART ... nur beim Raspi bin ich nicht 100% sicher ob der das auch als TTY erkennt)

- WLAN Modul ala ESP8266/32 welches einen Netzwerksocket hat über den man die UARt Daten schickt (getunnelt quasi) wobei man dann aber keinen regulären COM Port mehr hat

- Es gibt auch einige Module die Wireless UART erlauben, die müssen dann per UART erstmal das WLAN einprogrammiert bekommen (auch beim ESP müsste man das WLAN erst einmal einrichten) und dann per Treiber am PC einen regulären COM bereitstellen (Diese module sind etwas rar gesäht udn Treiberunterstützung für Win10 ist meist mau)

wenn du von arduino zu arduino über deren integrierten USB gehen willst würde ich sagen, für dich unmöglich ... aber wenn du nur UART per Funk machen willst gingen auch bequem 2 HC05 ohne extra schnickschnack

HaWe
19.06.2018, 11:11
CH341 am Arduino USB Stecker, dann dessen RX/TX verbunden mit HC05 TX/RX (Zusatzkabel für div. Vcc, GND und Level-Shifter)
Gegenseite identisch, beide HC05 natürlich vorher gepairt (einer Master, der andere Slave).
Per Serial() so als wären beide Arduinos direkt per Kabel über Serial RX/TX zu TX/RX verbunden

(edit) Statt mit Arduino-USB funktioniert das bisher mit Raspi-USB.

Ceos
19.06.2018, 11:14
okay ich glaub du bringst mir gerade was neues bei ...

[arduino mit integriertem USB] -über USB> [CH341] -über RXTX> [HC05]

O_o das geht???? dann müsste ja sich entweder der arduino oder der CH341 selber als USB Master ausgeben oder es gibt da einen Trick den cih gerade nicht begreife ... das würde auch ganz neue Möglichkeiten erlauben aber glauben kann cihs nicht bis ichs gesehn habe XD

HaWe
19.06.2018, 11:41
Arduino USB ist doch immer schon per Serial nutzbar, genau wie die digital pins 0 und 1, z.B. auch für die serielle Konsole zum PC über USB, nur hängt halt jetzt ein CH341 dran, und dann ggf. ein HC05.
Die beiden HC05 sind ja bereits schon als Master oder Slave gepairt und vorkonfiguriert.

Ich gebe allerdings zu, dass es jetzt nur am Raspi (1x oder 2x) so angeschlossen ist, alternativ am Arduino Due der HC05 per pins, und es nun aber auch mit CH341 am Lilipad USB so funktionieren SOLL, da der keine RX/TX pins hat.
https://store.arduino.cc/lilypad-arduino-usb
Und, sollte es machbar sein, auch mit dem Uno, Due oder Nano.

Ceos
19.06.2018, 11:48
Okay jetzt bin ich vollkommen verwirrt ... ich habe das gefühl dass wir von 2 grundverschiedenen modulen reden


arduino = ein mit arduino programmierbares controller board mit einem darauf integriertem USB zu seriell wandler welches man üblicherweise direkt an den PC anschließ

um die kette der komponenten mal zu skizzieren: PC -> USB -> CH341 oder vergleichbarer USBtoUART bereits integriert auf dem controller board -> UART -> Controller

damit müssten wir eine grundlage haben!

du willst das jetzt über Funk haben, also z.B. USB -> BT/LE -> BTtoUART -> minimaler Verdrahtungsaufwand (+/- T/Rx) -> Controller
als eine Lösung

aber ich habe dich die ganze zeit so verstanden, dass du 2 arduinofähige controllerboards mit integriertem USB jeweils wieder über USB mit einem Funkmodul verbinden willst, daher bin ich die ganze zeit so verwirrt

HaWe
19.06.2018, 12:03
um es zu vereinfachen:
ich suche eine integrierte plug-and play-Lösung, die man am Arduino Lilipad USB und am Raspi so anschließen kann, dass sie sich verhalten wie eine serielle UART Kabelverbindung, nur eben mit Funkstrecke dazwischen.
So ähnlich wie ein USB-UART Konverter (CH341) am USB Port plus nachgeschaltetetem HC05 für den Funk, das ganze 2x für die beiden verbundenen Boards, und so, wie es auch schon an Raspi-USB Ports mit den Einzelmodulen funktioniert.

Am Raspi müsste das Teil tatsächlich als USB slave erkannt werden, am Arduino müssen ja theoretisch nur die USB-Leitungen passend zum CH341 durchgeschleift werden, da der ja bereits UART versteht.

Ceos
19.06.2018, 12:09
ja okay dann haben wir endlich eine gemeinsamen draht gefunden und wir haben auch nur eine ganze seite des topics dafür verbraucht XD

das problem habe ich ja schon beschrieben, wenn du etwas über den im lilipad integrierten USB machen willst, erfordert das meines wissens nach einen USB Host und das bedeutet i.d.R. ein PC/Raspi oder eine spezielle Hardware

das wird eher unmöglich sein fürchte ich! Dein CH431 ist nichts weiter als ein USB Slave der deinem PC eine UART Schnittstelle hinzufügt und ist mit hoher wahrscheinlichkeit der gleiche chip wie er bereits auf dem lilipad verbaut ist (könnte aber auch ein FTDI oder noch was anderes sein, machen aber alle das gleiche USBtoUART)

dir wird also verdrahtungsaufwand nie erspart bleiben, denn du musst immer die TX und RX direkt am lilipad anklemmen, über den USB Port geht da nicht viel ...

https://store.arduino.cc/arduino-usb-host-shield

das wäre eine option, die den USB Host Stack mitbringt und sogar mit den meisten USBtoUART kompatibel ist

aber hinten raus braucht es dann wieder SPI was in deinem fall blöd ist

deine idee über den integrierten USB zu gehen scheint mir zu speziell als dass man da was massentaugliches und kompaktes findet

HaWe
19.06.2018, 12:16
aha, ok, ich dachte ein CH341 Chip könnte ohne USB master auch am Arduino die USB Signale einfach wieder in UART zurück konvertieren, so wie sie vorher auf dem Arduino durch den Board-eigenen ATmega32u4 (oder CH340 bei Arduino China-Klonen) vorher hineingeschickt wurden, gerade bei der Lilipad Beschreibung klang das so.

Ceos
19.06.2018, 12:26
USB ist immer eine Master-Slave sache, einer muss den Host machen, sonst wird das nix :)

Diverse Handys und auch der Raspberry Pi Zero könnten beides machen, USB Host und Slave ... ich weis jetzt nicht ob das das lilipad auch kann aber du kannst ja mal nachschauen, es muss von USB Host oder USB-OTG die Rede sein, damit man einen USB Slave wie den USBtoUART anzuschließen

obendrein muss man auf der Host Seite (wenns dein Liliy denn kann) auch die Treiberuntrstützung einprogrammiert/integriert sein (ähnlich dem MAX chip von meinem Link)

hier noch ein vergleichbares modul

https://eckstein-shop.de/USB3300-USB-HS-Board?curr=EUR&gclid=EAIaIQobChMI_Jipt8_f2wIVFYjVCh0yTw36EAQYBSAB EgK2LvD_BwE

aber dahinter muss dann etwas logik und eben funk, also keine wirkliche ersparnis im aufwand

HaWe
19.06.2018, 12:39
ok, dann geht nur Plan B, ein USB Stick für ein Arduino USB Host Shield ( vlt sogar auch mit diesem hier aus Platzgründen:
https://www.ebay.de/itm/Arduino-Nano-USB-Host/113073526998?hash=item1a53b518d6:g:DikAAOSw3uFbJuE s )

aber eben auch CH341+HC05 integriert (oder per Funktionsweise vergleichbar).

Ceos
19.06.2018, 12:46
eigentlich schließt man das controller board per USB an das host board, denn das controller board mit seinem integriertem USBtoUART ist der slave

ein arduino board mit integriertem USB ist i.d.R. immer ein USB slave

HaWe
19.06.2018, 13:02
ja, außer man will wie ich einen wireless-USB stick für Serial() anschließen.

Ceos
19.06.2018, 13:06
achsooooo du willst dein lillypad als controller für den host einsetzen, das ist aber auch weider zu kompliziert imho

dann bleib lieber direkt bei einem Radio-Modul und such eine Version die 3.3V macht aber 5V tolerant ist oder beides anbietet

Xbee oder ZigBee hießen die module glaube ich, das ist ein robuster standard und erlaubt auch meshing von mehereren modulen und kann dabei transparent UART übertragen ... aber da fehlt mir leider die erfahrung zu den modulen

HaWe
19.06.2018, 13:18
ja, die XBee habe ich mal gesehen, aber auch die kenne ich nicht als USB Sticks für Arduino-USB Buchsen, und sie sollen ja außerdem sowohl für Arduino-USB als auch Raspi USB funktionieren, einfach per Einstecken.

Ceos
19.06.2018, 13:50
den Gedanken an den Modulen die als reiner UART-Slave arbeiten die Buchse für externe Module zu nutzen würde ich komplett ablegen, das ist mit mehr Aufwand verbunden als dass es sich lohnen würde, weil man in dem externen Modul mehr Logik braucht als im eigentlichen Modul selber, was das Modul an sich überflüssig macht.

Überleg dir mal besser ob es sich nicht eher lohnt in das richtige Funkmodul zu investieren und es direkt anzuschließen ohne Pegelwandler :)

HaWe
19.06.2018, 14:01
das Ziel ist ja gerade, nicht die Pins zu nutzen, sondern USB-Buchsen an Arduinos und Raspberry Pi, um keine Verdrahtungen zu haben und schnell an- und abstöpseln zu können. Außerdem sind meine Routinen für Serial bzw. wiringSerial Kommunikation bereits vorhanden, sie funktionieren sehr schnell und fehlerfrei und selbst nach zwischenzeitlicher Verbindungsunterbrechung, daher möchte ich sie behalten.

Ceos
19.06.2018, 14:19
Okay, dann beschäftige dich aber nochmal mit dem Aufbau, mir ist noch nciht ganz klar wie du z.B. mit dem Host Board arbeiten möchtest. Du müsstest deinen Lillypad per USB an das Host Board stecken, dann für das Host Board einen Controller programmieren der das Hostboard über SPI ansteuert und dein UART dann über ein Funkmodul (welcher Art auch immer) sendet

Außerdem müsstst du dir eine Pairing Strategie ausdenken und mit implementieren.

Das Schreit in meinen Augen schon förmlich nach einem ESP Modul oder irgend einem kleinen BT Modul als Hirn :)

HaWe
19.06.2018, 14:22
der Lilipad war nur eine Idee, weil ich es so verstanden hatte, dass beim dem der USB bereits so funktioniert wie ich es vorhatte.
Wenn das aber nicht geht, nehme ich z.B. einen Nano etc. mit USB Host Shield zum Aufstecken und stecke dann dort den USB-WL-UART Stick ein, so wie sonst bereits schon am Raspi.
Nur so einen USB-WL-UART Stick suche ich halt immer noch, wie im TOP beschrieben.

Ceos
19.06.2018, 14:30
Nein ich glaube du hast es immernoch nicht verstanden oder ich verstehe nicht was du damit erreichen willst :D

Du schließt das Arduino Board per USB an das Host Board, (sofern ich das richtig verstanden habe,) damit du die UART von dem USB benutzen kannst

das Hostboard braucht aber zusätzlich ein Hirn (Controller), dass per SPI mit dem Host Board redet, die UART Daten vom Arduino nimmt und dann wegfunkt

auf der anderen Seite brauchst du dann das exakt gleiche Gegenstück welches die Daten empfängt und wieder über SPI in das Ziel Host Board als UART einspeist damit das Arduino Board über die USBtoSerial die Daten empfangen kann

Bei dem verwendeten Funkstandard kannst du dir dann einfallen lassen wie du deinen Raspi/PC anbindest (bei ZigBee wäre das ein USB Stick) aber an das Host Board wird kein USB Stick angeschlossen, das ist ja für den USB Port deines Arduino Boards gedacht!

HaWe
19.06.2018, 15:19
Nein ich glaube du hast es immernoch nicht verstanden oder ich verstehe nicht was du damit erreichen willst :D

Du schließt das Arduino Board per USB an das Host Board, (sofern ich das richtig verstanden habe,) damit du die UART von dem USB benutzen kannst

das Hostboard braucht aber zusätzlich ein Hirn (Controller), dass per SPI mit dem Host Board redet, die UART Daten vom Arduino nimmt und dann wegfunkt

auf der anderen Seite brauchst du dann das exakt gleiche Gegenstück welches die Daten empfängt und wieder über SPI in das Ziel Host Board als UART einspeist damit das Arduino Board über die USBtoSerial die Daten empfangen kann

Bei dem verwendeten Funkstandard kannst du dir dann einfallen lassen wie du deinen Raspi/PC anbindest (bei ZigBee wäre das ein USB Stick) aber an das Host Board wird kein USB Stick angeschlossen, das ist ja für den USB Port deines Arduino Boards gedacht!

zumindest war meine Idee einfach wie im TOP beschrieben, nur dass ich jetzt den Arduino vorher auf ein USB Host Shield stecken muss, damit ich eine USB Host Buchse habe.
Dann soll dort, genau wie im TOP beschrieben, und genau wie beim Raspi grundsätzlich möglich, ein USB Stick eingesteckt werden, der einen CH341 Adapter hat und einen internen HC05 o.ä.

So einen USB Stick mit diesen integrierten FTDI- und HC05-Features suche ich jetzt, anstelle der entsprechenden (vorhandenen) CH341 und HC05 Einzelmodule.

Wie jetzt der Arduino mit dem USB Host vom Host Shield reden muss, so wie bisher mit dem eigenen USB client für Serial, damit es hier ganz genau so mit Serial() funktioniert (oder vergleichbar mit dem Raspi-USB und wiringSerial() ), das weiß ich allerdings noch nicht. Immerhin kann man aber ja dort USB-FTDI-Sticks einstecken laut Beschreibung, oder?

Ceos
19.06.2018, 15:35
ja das geht, ich denke auf der seite steht irgendwo mit sicherheit eine liste, aber die meisten dieser chips folgen einem identischen treiber

HaWe
19.06.2018, 15:48
ja das geht, ich denke auf der seite steht irgendwo mit sicherheit eine liste, aber die meisten dieser chips folgen einem identischen treiber

also wäre dann nur die Frage (wenn ich dich richtig verstanden habe), wie man quasi die Serial() class Befehle "umleitet" oder "splittet", damit sie auch auf dem USB-Host-Shield-Host-USB-Port in identischer Weise wie zuvor mit dem Arduino-eigenen USB-Programming-Port benutzt werden können?

Ceos
19.06.2018, 18:03
korrekt, ich glaube der "print" befehl macht das bereits, weil arduino die USB UART als debug schnittstelle verwendet, quasi wie eine konsole glaube ich, aber damit habe ich mich nicht beschäftigt, nur mal gelesen


EDIT: WICHTIG

ich glaube an der problematik ahben sich auch andere schon die zähne ausgebissen

https://forum.arduino.cc/index.php?topic=380752.0
https://arduino.stackexchange.com/questions/12134/communication-between-arduinos-using-usb-host-shield

aber ohne nennsnwerten erfolge ... ein hinweis war die usb.task() zyklisch aufzurufen wenn es ein controller board OHNE dedizierten USBtoUART chip ist (AT90USB von atmel z.B. aber es gibt wohl auch Atmegas die das könen also vorsicht beim board kauf)

im grunde ist es nichts anderes als eine normale UART schnitstelle wie die serial aber cih glaube die arudino lib ist nicht ausgelöegt diese speziellen pins anzufassen

sorry dass ich dir da nicht weiterhelfen kann



.... technisch gesprochjen könnte ich aber dann verlassen wir ardino und programmieren bare metal XD

HaWe
19.06.2018, 18:13
korrekt, ich glaube der "print" befehl macht das bereits, weil arduino die USB UART als debug schnittstelle verwendet, quasi wie eine konsole glaube ich, aber damit habe ich mich nicht beschäftigt, nur mal gelesen


EDIT: WICHTIG

ich glaube an der problematik ahben sich auch andere schon die zähne ausgebissen

https://forum.arduino.cc/index.php?topic=380752.0
https://arduino.stackexchange.com/questions/12134/communication-between-arduinos-using-usb-host-shield

aber ohne nennsnwerten erfolge ... ein hinweis war die usb.task() zyklisch aufzurufen wenn es ein controller board OHNE dedizierten USBtoUART chip ist (AT90USB von atmel z.B. aber es gibt wohl auch Atmegas die das könen also vorsicht beim board kauf)

im grunde ist es nichts anderes als eine normale UART schnitstelle wie die serial aber cih glaube die arudino lib ist nicht ausgelöegt diese speziellen pins anzufassen

sorry dass ich dir da nicht weiterhelfen kann



.... technisch gesprochjen könnte ich aber dann verlassen wir ardino und programmieren bare metal XD

ok, wenn du eine bare-metal lib schreiben kannst, die dann wieder über Arduino-IDE Serial (oder Serial4 oder Serial10 oder irgendwas derartiges) am USB Host zur Verfügung stellt, geht es ja, ich brauche lediglich die Serialx.write(), Serialx.read(), Serialx.available() etc.

Ceos
19.06.2018, 19:04
genau das ist der punkt, ich kann das alles bare metal schreiben aber ich hab kein plan wie ich eine lib draus mache oder es in die bestehende lib einarbeite :D

HaWe
19.06.2018, 19:07
genau das ist der punkt, ich kann das alles bare metal schreiben aber ich hab kein plan wie ich eine lib draus mache oder es in die bestehende lib einarbeite :D

ok, dann hast du Recht, das macht ntl keinen Sinn - um Serial() geht es ja gerade.
(Link zu github: https://github.com/felis/USB_Host_Shield_2.0 )