Hallo an alle, habe mir ein Seeedstudio Bluetooth Shield V2.0 geholt und möchte nun per Serial Monitor die AT Command eingeben. Leider bekomme ich keine Antwort vom BT Shield.
Habe das Shield auf einem normalen Mega2560 gesteckt. Hier mal mein Code:
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(11, 10); // RX | TX
void setup() {
Serial.begin(9600);
Serial.println("Enter AT commands:");
BTSerial.begin(38400);
}
void loop() {
if (BTSerial.available())
Serial.write(BTSerial.read());
if (Serial.available())
BTSerial.write(Serial.read());
}
Evtl. sieht ja einer von Euch wo mein Fehler liegt.
LG
Chris
Software Serial ist zu hoch. Auf 9600 oder kleiner setzen
Ich wollte gerade AltSoftSerial vorschlagen, aber das geht auf dem Mega nicht auf den UNO Pins (0-13), da die Macher idiotischerweise das Layout vor allem bei den Timern völlig versaut haben. Der Input Capture Pin von Timer1 ist da nicht zugänglich.
Dann bleibt nur eine niedrigere Baudrate
Angeblich muss für den At Mode die Baudrate so hoch sein. Hab Sie mal auf 9600 gemacht aber da passiert auch nix!
:o
Ich checks nicht
Es gibt eine ganze einfache Lösung wenn ich das richtig sehe
Shield hier:
http://www.seeedstudio.com/wiki/Bluetooth_Shield_V2.0
Da sind Jumper drauf mit denen man bestimmt welche Pins mit RX und TX verbunden sind. Das heißt man kann die Verbindung komplett weglassen und statt dessen zwei Kabel nehmen und auf eine der Hardware Schnittstellen des Mega gehen.
Apropos Jumper: sind die richtig gesteckt für deinen Code?
Hab da jetzt auch Kabel statt der Jumper genommen aber gute Idee mit dem Hardware Serial muss ich mal versuchen.
Geht leider auch nicht, hab auch alle Baudraten durch.
Is der Code so richtig?
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(57600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
Serial.println("Enter AT Commands!");
// set the data rate for the Serialport
Serial1.begin(38400);
}
void loop() { // run over and over
if (Serial1.available()) {
Serial.write(Serial1.read());
}
if (Serial.available()) {
Serial1.write(Serial.read());
}
}
Ich kenne dieses Shield nicht, habe aber letztens mit meinem Bluetooth HC-05 gekämpft und bin zu folgender Lösung gekommen:
- 38.400 Baud
- Im Serial Monitor unten LC+CR (oder so ähnlich) aktivieren
- Eingabe der AT-Commands wurden teilweise nur bei Drücken eines Buttons übernommen.
(manche gehen ohne, manche nicht)
Der Befehl AT sollte auf jeden Fall bei dir eine Rückmeldung geben. ("ok")
Gibt das Shield nur wirre Zeichen aus, dann ist definitiv die Baudrate falsch aber zumindest schonmal das Shield erkannt.
Kommt gar nichts, dann einmal prüfen ob man es in verschiedene Modi mit einem Switch oder ähnliches schalten kann. (Das war bei mir ein Problem, da es bereits gekoppelt war und somit keine AT-Commands mehr annahm).
Hoffe ein bisschen geholfen zu haben.
Gruß,
Stefan
Hallo Stefan, vielen Dank für Deine Hilfe. 1-2 hab ich abgearbeitet aber ich denke das ich irgendwie in den AT Mode kommen muss. Das Shield hat halt nur einen Resetknopf und das war es.
Bei den Billigmodulen HC-05 und Co muss man den Reset-Knopf eine bestimmte Zeit gedrückt halten, damit er in den Modus kommt. Allerdings zieht man dort vorher VCC (5V) ab, was bei einem Shield ja nicht geht. Versuch mal den Arduino vom Strom zu ziehen, den Knopf zu drücken und dann dem Arduino, während du immer noch den Knopf drückst, Strom zu geben. Wenn die Blinkfrequenz geändert ist, dann hast du einen anderen Modus ...
... keine leider das Shield nicht so gut, allerdings scheint dies bei Bluetooth relativ gängig zu sein. Bei den Billigmodulen bis ca. 1 Sekunde nachdem diese wieder Strom erhalten.
Edit: Schau auch mal hier:
http://forum.arduino.cc/index.php?topic=360969.0
Gruß,
Stefan
Danke theFreak, hat geholfen mit dem Resetknopf drücken. Juhuuuu