Servusla an alle,
erster Post, also seid gnädig :D
Ich habe seit einigen Tagen ein Problem mit der Verbindung zwischen den
oben genannten BT-Modulen und ich wette ihr könnt mir dabei helfen..
Dieser Post richtet sich besonders an diejenigen, die selbst auch mit
diesen Modulen experimentieren.
Ich hoffe nur, es ist kein 0815-Fehler, den ich mal wieder übersehen
habe :(
Der Aufbau :
An einem Arduino Mega 2560 hängt ein Joystick und das HC-05 im Master
Mode, von dem die Signale des Joysticks an ein HC-06 im Slave Mode, der
an einem Arduino Uno hängt, sendet. Am Uno ist ein kleiner DC-Motor und
eine LED, die gesteuert werden sollen. Die Verbindung von den beiden
klappt auch perfekt, aber es gibt ein Problem.
Das Problem :
Wie im angehängten Bild "Kommunikationsprotokoll" zu sehen ist, sende
ich vom Mega (COM4) einen Datenstring der Form *0,0# zum HC-05 Master.
Ob der auch genauso beim Master ankommt, ist auch fraglich. Der
empfangene Datenstring am HC-06 bzw. am Uno (COM3) ist leider nur
Zahlenerbrochenes in der Form 0325687539047349383686235067407680 :)
Damit kann der Uno natürlich nichts anfangen..
Die Lösungsversuche :
Sieht meiner Meinung stark nach nem Baudrateproblem aus, also
-Baudrates erstmal beide auf 9600 gestellt. Allerdings klappte dann das
Pairing nicht mehr. Hab dem HC-05 nochmal den Befehl mit der Baudrate
9600 und diesmal einem Stopbit gegeben ( AT+UART=9600,0,0 )
danach funktionierte zumindest das Pairing wieder, mehr nicht..
-Danach Baudrates von beiden Modulen auf 38400 gestellt, dh HC-05
einfach auf Originaleinstellungen und Mastermode gesetzt. Problem ist
immernoch da.
-Alle anderen Versuche haben es nicht verdient, hier aufgezählt zu
werden :D
Der Status :
Zur Zeit spreche ich die Module mit einer SoftwareSerial-Verbindung
(Baud:38400) und die "normalen" Serials mit dem PC (Baud:9600).
Kann das Problem daran liegen? Verschiebung wegen den Geschwindigkeiten?
Oder kann es an den Einstellungen der BTModulen liegen, speziell an den
stop bits und parity bits? Da kenn ich nicht so aus..
Die Codes füge ich unten ein, evtl. ist das Problem auch dort zu finden.
Wenn ich jetzt noch etwas vergessen hab, was ihr braucht, schreibt kurz
:)
Bin aufgeschlossen für jeden Tipp, Lösungsversuch und Link, wo sowas
beschrieben ist.
Offensichtlich weiß Google nämlich doch nicht alles ;)
Danke für eure Zeit und Adeela,
Martin
Codes:
A. Mega ( HC-05 Master )
1
#include<SoftwareSerial.h>
2
#define START_CMD_CHAR '*'
3
#define END_CMD_CHAR '#'
4
5
SoftwareSerialBTSerial(10,11);// RX, TX
6
7
StringoutText;
8
intMotorPin=A15;
9
intLedPin=52;
10
11
intmotorspeed,old_motorspeed;
12
intreference;
13
intledstatus,old_ledstatus;
14
15
voidsetup(){
16
Serial.begin(9600);
17
BTSerial.begin(38400);
18
pinMode(MotorPin,INPUT);
19
pinMode(LedPin,OUTPUT);
20
digitalWrite(LedPin,HIGH);
21
reference=analogRead(MotorPin);
22
}
23
24
voidloop()
25
{
26
motorspeed=analogRead(MotorPin);
27
motorspeed=map(motorspeed,reference,0,0,255);
28
motorspeed=constrain(motorspeed,0,255);
29
30
if(digitalRead(LedPin)==LOW){
31
ledstatus=HIGH;
32
}
33
else{
34
ledstatus=LOW;
35
};
36
//Test ob sich daten geändert haben und gesendet werden muss
Hey Chris,
danke für die schnelle Antwort. Deinen Blog werde ich morgen genauer
studieren.
Also der Master sendet genau dass, was er soll.
Ich musste allerdings für die Verbindung am Handy auf Baud:9600 direkt
am Master direkt gehen. Im Arduino Code auch auf Baud:9600 und der
Master sendet, was er soll.
Morgen werde ich den Slave auch auf Baud:9600 stellen und kucke, was
herauskommt. Eigentlich hatte ich die Einstellungen schon einmal alle
auf 9600 und da ging es nicht..
Grüße
Martin
Hi an alle nochmal,
den Slave (HC-06) habe ich nun auch auf die Baudrate 9600 gestellt. Der
Master (HC-05) kann sich nun auch mit ihm verbinden, allerdings kommt am
Arduino Uno, der am Slave hängt, immer noch nur Zahlensalat heraus.
Es muss doch auf jeden Fall möglich sein, eine ordentliche Verbindung
zwischen den beiden Modulen aufzubauen!
Kann es z.B. auch an den SoftwareSerials liegen, vll. kommt es da zu
Unregelmäßigkeiten?
Bzw. dann die Frage, wie baut ihr drahtlose Verbindungen auf?
Über die 433 Mhz RF Sender/Empfänger?
oder ist zu raten, gleich die 2.4GHz NRF24L01 Module zu benutzen?
Grüße
Martin
Hallo die Interessierten,
also das Problem ist zwar weg, aber eigentlich nur umgangen und nicht
gelöst.
Wenn ich die Module mit den Arduinos nicht mit der generierten
SoftwareSerial Verbindung verbinde, sondern mit den Rx, Tx Pins (0,1),
dann klappt alles perfekt. Das Problem liegt also an der SoftwareSerial
Verbindung, habe allerdings keine Ahnung, was es genau ist :(
Evtl. weiß es ja Jemand, ich würde mich freuen, doch noch die Ursache zu
erfahren.
Grüße
Martin
glaube hab mal gelesen das ein SoftwareSerial nur zuverlässig über einen
Interrupt arbeitet.. sonst gibt das mit Geräten die es genau nehmen ein
problem.
Habe das hiermit gelöst.
https://www.pjrc.com/teensy/td_libs_NewSoftSerial.html
Hi Philipp,
leider hat die Library von dir keine ParseInt Funktion, allerdings hat
mir dein Stichwort Interrupt geholfen.
Habe die SoftwareSerial Pins einfach auf 2,3 gesetzt und schon klappt
alles =)
Pin 2 ist ja Interruptfähig .
Vielen Dank an die Mitwirkenden!
Martin
Hi Martin S.,
ich arbeite gerade auch an diesen Versuch und bin nun auch soweit, das
ich auf der Slaveseite nur "Zahlenerbrochenes" bekomme.
Könntest du bitte deinen fertigen code neu reinstellen und mir verraten
wie du es mit dem Interrupt gemacht hast.
Vielen Dank im vorraus.
Freundliche Grüße.
Patrick C.
Hi Patrick,
wenn du 2 Arduino Megas einsetzt, kann ich dir auf die Schnelle raten,
es über die anderen vordefinierten seriellen Verbindungen zu versuchen.
Stichwort RX1 TX1, bzw Serial1 im Sketch.
Hab bei anderen Sachen immer irgendwelche Probleme mit dem
SoftwareSerial..
Codes kann ich Mitte nächster Woche reinstellen, falls dann noch
benötigt.
Martin
Habe dasselbe Problem und habe es bislang mit aller Hilfe die hier
geposted wurde noch nicht lösen können. Versuche inzwischen mit exakt
demselben programm Daten von einem Arduino Mega auf einen Arduino Uno zu
senden und es kommt nur eine Zahlen reihe an, die der im Beitrag oben
beschriebenen sehr ähnlich ist. Hat noch jemand eine Idee oder eine
Lösungsbeschreibung?
Bin inzwischen schon fast verzweifelt weil ich seit wochen an diesem
Problem festhänge.
Vielen Dank im Vorraus!
Justus