HC-05 AT modus

Hallo

Ich habe ein BT Shield von Itead V1.2 mit dem HC-05 Modul.
Hier der Link zum Shield:

Nur für ein HC-05 Modul gibt es diverse Hilfestellungen. Ich kriege aber nicht heraus wie ich mit meinem Shield V1.2 in den AT Modus gelangen kann. (Den Schalter habe ich auf H gesetzt und die Pins D0 und D1 verbunden).
Ich wäre sehr froh über Hilfe.

Grüsse und ein schönes Wochenende

Hallo,

hast du die Baudrate auf 38400 eingestellt?
Rx/Tx mal gekreuzt?

Weil über 0 und 1 dein Arduino schon mit der USB Schnittstelle kommuniziert solltest du für die Kommunikation zum Modul eine andere Verbindung und SoftwareSerial verwenden. Außerdem muss im Serial Monitor unten rechts CR +LF angewählt sein sonst antwortet das Modul nicht.

Gruß

Ich habe die Baudrate mal auf 38400 eingestellt aber das ändert nichts, trotzdem Danke.

Verstehe ich das falsch, dass der SerialMonitor mit dem Arduino kommuniziert und der Arduino UNO mit dem BT Shield kommuniziert über UART? Was meinst du also mit einer anderen Verbindung?

Was bedeutet CR +LF und wo kann ich das anwählen? Um über SoftwareSerial zu kommunizieren müsste ich doch ein Programm hochladen oder nicht?

Grüsse

Hallo,

so wie sich das jetzt darstellt, hängt dein Arduino mit USB am Rechner.
Und an Pin 0/1 hast du dein BT Modul dran?
Annahme richtig oder falsch?

Nebenbei. die 38400 Baud sind im Command Modus Standardeinstellung. Das muss sowieso eingestellt werden. CR+LF wäre unten rechts im IDE Monitor. Falls du denn verwendest. Ist aber bei obiger Annahme sinnlos und falsch.

Ja deine Annahme ist richtig, da ich ja ein Shield benutze, werden Pin 1 und 0 sowieso verbunden.

Aber kann ich überhaupt ohne Programm in den AT Modus gelanden?

Grüsse

Hallo,

wenn die Annahme stimmt funktioniert das so nicht. Dein serieller Monitor der IDE hängt über USB und dem kleinen Schnittstellenwandler IC neben dem Quarz, genau auf den Pins 0/1. An eine serielle Schnittstelle darf aber nur ein "Gerät". Bei dir hängen jetzt 2 dran. Das heißt du müßtest dir erstmal ein Programm schreiben was deine Serial.0 Daten an eine software serielle weiterleitet woran dann dein BT Modul klemmt. Hast du einen Uno oder Mega?

Oder du kaufst ein Schnittstellenkabel mit Wandler IC drin. USB auf seriell. Dann kannst direkt am PC ohne Arduino das BT Modul umkonfigurieren.

Ich weiß nicht wie es bei HC-05 ist aber bei anderen Modulen mit AT Comands (z.b. GSM Shield von Cooking Hacks) ging es nur mit abschließendem LF/CR...

Falls du einen Uno benutzt könntest du zum Testen den Mikrocontroller vom Bord entfernen und mit Hilfe deiner Verdrahtung direkt über deinen PC mit dem HC-05 kommunizieren. Dann benutzt du den Arduino als reinen USB/Seriell-Wandler und die Daten werden einfach durchgereicht.

vielen Dank schon mal für die interessanten Inputs!

Meinst du ich könnte den Microcontroller vom Arduino UNO überbrücken oder wie soll ich den Microcontroller "entfernen"?

Wenn ich über ein Programm kommunizieren möchte, meint ihr dann etwas in der Art:

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX

void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}

// set the data rate for the SoftwareSerial port
mySerial.begin(9600);
mySerial.write("AT \n");
delay(100);
Serial.write(mySerial.read());
mySerial.write("AT+CREG? \n");
delay(50);
if (mySerial.available()) {
Serial.write(mySerial.read());
}

mySerial.write("AT+CIPSHUT \n");
delay(50);
if (mySerial.available()) {
Serial.write(mySerial.read()+"\n");
}

mySerial.write("AT+CGATT=1 \n");
delay(50);
if (mySerial.available()) {
Serial.write(mySerial.read());
}

mySerial.write("AT+SAPBR=3,1,"CONTYPE","GPRS" \n");
delay(50);
if (mySerial.available()) {
Serial.write(mySerial.read());
}

mySerial.write("AT+SAPBR=3,1,"APN","myconnection" \n");
delay(50);
if (mySerial.available()) {
Serial.write(mySerial.read());
}

mySerial.write("AT+SAPBR=1,1 \n");
delay(50);
if (mySerial.available()) {
Serial.write(mySerial.read());
}
mySerial.write("AT+HTTPINIT \n");
delay(50);
if (mySerial.available()) {
Serial.write(mySerial.read());
}
mySerial.write("AT+HTTPPARA="CID",1 \n");
delay(50);
if (mySerial.available()) {
Serial.write(mySerial.read());
}
mySerial.write("AT+HTTPPARA="URL","http:///api/v1//" \n");
delay(50);
if (mySerial.available()) {
Serial.write(mySerial.read());
}
mySerial.write("AT+HTTPDATA=100,10000\n");
delay(50);
if (mySerial.available()) {
Serial.write(mySerial.read());
}
mySerial.write("username=
&password=****&");
delay(50);
if (mySerial.available()) {
Serial.write(mySerial.read());
}

mySerial.write("AT+HTTPACTION=1 \n");
delay(50);
if (mySerial.available()) {
Serial.write(mySerial.read());
}
mySerial.write("AT+HTTPTERM \n");
delay(50);
if (mySerial.available()) {
Serial.write(mySerial.read());
}
}

void loop() {
if (mySerial.available()) {
Serial.write(mySerial.read());
}
if (Serial.available()) {
mySerial.write(Serial.read());
}
}

Grüsse

Beim Uno steckt das IC auf einem Sockel und kann herausgehebelt werden, z.b. vorsichtig mit einem kleinen Schlitzschraubendreher oder einen entsprechenden Zange.

Das Programm kannst du zum testen nutzen aber lass mal im setup() nach mySerial.begin(); alles andere weg. Also nur Serial.begin(); und die loop(). Wenn du dann dein Modul an Pin 10 und 11 anschließt solltest du kommunizieren können. Denk dran die Baudrate auf 38400 zu stellen und schau mal ob du Antwort bekommst beim Eingeben von Comands

Direkt auf das Board kann ich kein Programm laden und nicht kommunizieren.

Wenn ich es über den Arduino versuche, hängt sich der Serial Monitor auf. (Wäre das dann wegen den zwei angeschlossenen Geräten?)

Ich kann auf dem Board I/O oder SW anschliessen, ich habe jetzt immer SW gewählt, wäre das richtig?