Ich habe mir das Bluetooth Modul HC-05 zugelegt und jetzt mal getestet. Zum testen habe ich mir einen einfachen Arduino-Sketch im Inet draufgepackt und geguckt was passiert. Mit dem Ergebnis bin ich zufrieden aber es kommt mir sehr langsam vor. Ich benutze den Arduino Uno. Ist das HC-05 Modul so langsam oder liegt es am Uno? Ich möchte mit einem anderen, deutlich besseren µC, über Bluetooth ein Modellauto steuern. Ist dafür das HC-05 Modul geeignet? (wollte es gerne nehmen, weil es sich leicht in Arduino bzw Raspy implementieren lässt). Kann man das HC-05 empfehlen oder gibt es bessere Alternativen? Bzw ist es überhaupt relevant welches BT Modul man verwendet?
1) woher sollen wir das ohne Code wissen 2) ist langsam = kleine Datenrate oder hohe Latenz 3) nimm zum Fernsteuern ein nrf24
> Ist das HC-05 Modul so langsam oder liegt es am Uno?
Wie langsam ist es denn? Wie sieht dein Programm aus?
Stefan U. schrieb: >> Ist das HC-05 Modul so langsam oder liegt es am Uno? > > Wie langsam ist es denn? Wie sieht dein Programm aus? Woher soll er das wissen? > Zum testen habe ich mir einen einfachen Arduino-Sketch im Inet > draufgepackt Es wird einfach was runtergeladen und dann rumgeschrien weil es angeblich den eigenen, völlig unbekannten, Anforderungen nicht genügt. Aber weder das Eine noch das Andere ist irgendwie sauber gemessen oder festgelegt. Das ist ne typische Arduino vorgehensweise, völlig unbeschwert von jeglichem Wissen an eine Sache ranzugehen und diesen Müll dann hier ins Forum zu kippen.
Ben B. schrieb: > Ist das HC-05 Modul so langsam oder liegt es am Uno? Default Baudrate: 9600 Baud. Das heisst ~1ms pro Zeichen. Vorsicht: Wenn man das deutlich schneller haben will, bräuchte man Datenflusskontrolle (Hardware Handshake), die kann der AVR im Uno aber AFAIK nicht (oder nur in Software). Außerdem gibt es bei so ca. 460800 Baud ein "hartes" Limit im Bluetooth SPP, d.h. Bluetooth wäre dann langsamer als der UART. Das habe ich allerdings nie mit einem HC-05 getestet.
Baudrate ist 9600 Der Code hat die Lib SoftwareSerial.h von Arduino eingebunden. Es geht mir allerdings nicht um die Verbesserung des Codes sondern um eine grundsätzliche Aussage zum HC05. Habe mit Bluetooth noch nie gearbeitet und will da nur mal wissen worauf man achten muss. Ob ich schon beim Modul auf Geschwindigkeitsproblematiken achten muss.
1 | #include <SoftwareSerial.h> |
2 | #define ledPin 13 |
3 | #define rxPin 10 |
4 | #define txPin 11 |
5 | SoftwareSerial btSerial(rxPin, txPin); |
6 | String btData; |
7 | void setup() |
8 | { |
9 | btSerial.begin(9600); |
10 | btSerial.println("bluetooth available"); |
11 | pinMode(ledPin,OUTPUT); |
12 | } |
13 | void loop() |
14 | { |
15 | if (btSerial.available()){ |
16 | btData = btSerial.readString(); |
17 | if(btData=="on"){ |
18 | digitalWrite(ledPin,1); |
19 | btSerial.println("LED on Pin 13 is on"); |
20 | } |
21 | if (btData=="off"){ |
22 | digitalWrite(ledPin,0); |
23 | btSerial.println("LED on Pin 13 is off"); |
24 | } |
25 | } |
26 | delay(100); |
27 | } |
Die Ursache für Verzögerung ist offensichtlich der delay(100) Befehl.
Stefan U. schrieb: > Die Ursache für Verzögerung ist offensichtlich der delay(100) Befehl. Den hatte ich schon rausgenommen und das ausprobiert. Keine sichtbare Verbesserung.
> Wie langsam ist es denn?
Und: Um welche Daten geht es, einzelne Zeichen oder längere
Zeichenfolgen? Wie lang?
Was für ein Gerät verwendest du auf der anderen Seite der Funkstrecke?
Falls es Windows ist, mit welchem Bluetooth Stack?
Konkurriert dein Funknetz eventuell mit einem hoch ausgelasteten WLAN?
Ben B. schrieb: > Stefan U. schrieb: >> Die Ursache für Verzögerung ist offensichtlich der delay(100) Befehl. > > Den hatte ich schon rausgenommen und das ausprobiert. > Keine sichtbare Verbesserung. Na Stefan, kommst du dir jetzt schön verarscht vor? Da wird Code präsentiert welcher gar nicht aktuell ist. Darum höre meine Worte im Umgang mit solchen Arduino-Zombies: Auslachen -> Umdrehen -> Wegghen.
:
Bearbeitet durch User
Ich frage nach dem Bluetooth Stack, weil der von Microsoft erfahrungsgemäß beim SPP Protokoll mal unzuverlässig und mal gar nicht funktioniert. Die Hersteller von Bluetooth Sticks bzw. Laptops bieten oft einen besseren Ersatz (häufig von Widcomm) an.
Geringe Latenzen und hohe Geschwindigkeit bekommst du mit den Nrf24l01 Modulen. Werden auch direkt von arduino unterstützt und kosten nur 70 Cent
@Stefan Us Ich sende mit meinem Handy. 'Bluetooth Terminal' heißt die App. Eigentlich sende ich nur kurze Strings mit 'on' bzw 'off' Wie gesagt, ich habe das ganze nur kurz zuhause ausprobiert und bemerkt, dass es eine gewisse Verzögerung hatte. Die Frage die ich mir gestellt hatte war, ob das an dem Modul liegt (weil es halt ein Arduino-Modul ist) oder ob das andere Gründe hat. Wenn es am Modul liegt würde ich mich erstmal damit beschäftigen welches Modul am besten geeignet ist. Wenn das keine Rolle spielt kann ich mich näher mit diesem Modul beschäftigen. @Timmo H. Das ganze soll auf jeden Fall über Bluetooth laufen @Cyblord Wenn du nichts beizutragen hast halt den Mund.
Ben B. schrieb: > @Timmo H. > Das ganze soll auf jeden Fall über Bluetooth laufen Wie lang ist die Verzögerung und wie lang darf sie maximal sein > @Cyblord > Wenn du nichts beizutragen hast halt den Mund. Wenn du so lieb bist helfen bestimmt alle
Zum 100. mal:
> Wie langsam ist es denn?
Und beantworte bitte auch die anderen Fragen, falls du ernsthaft Hilfe
erwartest.
BT sendet in Packeten. Das bedeutet das ihre serial input erst in ein puffer kommt, wen diese puffer foll ist, oder nach eine bestimmte zeit wird das packet gesendet ueber bt. An die empfangstelle ist das auch wieder so. Damit hasst du eine "Verzogerung". Wie Laenge kann ich nicht sagen, aber eine hohere baudrate und mit eine langere Zeichenkette verbessert sich das wahrscheinlich. Ich verwende duese HC05 mit 38400 baud, und sende jede 100 ms ueber die 100 Zeichen, geht problemlos.
Ben B. schrieb: >> Die Ursache für Verzögerung ist offensichtlich der delay(100) Befehl. > Den hatte ich schon rausgenommen und das ausprobiert. Serial.readString() reads characters from the serial buffer into a string. The function terminates if it times out (see setTimeout()). Default == 1000ms. Auch wenn Arduino Sch***e ist, in der Doku steht alles, was Du brauchst ;-) Ja, HC-05 taucht hervorragend für Deine Zwecke. Ob Dein Handy oder Deine Software das auch tut, wäre eine ganz andere Frage. Und ja, es gibt dumme Fragen.
Ben, würdest du bitte mal die Frage beantworten oder erklären, warum du
das verweigerst?:
> Wie langsam ist es denn?
ca 1-2s. Die Verzögerung ist wahrnehmbar, gemessen habe ich sie nicht. Aber meine Frage hat Dauergast jetzt beantwortet. Ich wollte nur wissen ob das HC05 Modul theoretisch für meine Zwecke geeignet ist. Das Handy oder der PC spielen erstmal keine wesentliche Rolle. Die Software ist wie gesagt auch nur zum ausprobieren da. Auch der Arduino Uno war nur zur Probe, weil er sich halt schneller testen lässt, da. Ansonsten arbeiten wir mit einem F28335 von TI.
Ich bin es gewohnt, dass eine kurze Nachricht binnen viel weniger als 1 Sekunde beantwortet werden kann.
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.