mit Uno R3 Und HM-10 Geräte suchen.

Hallo

ich habe gerade erst damit begonnen mich für den Arduino zu interessieren, da ich damit eine Art Anwesenheitsüberwachung basteln will.

Ich habe den Arduino R3 mit dem Bluetoothmodul HM-10 verbunden und es funktioniert auch soweit.
Sprich ich kann mich mit meinen Handy verbinden und Texte senden, die ich dann am Arduino Terminal sehen kann. So weit so gut.

Nun möchte ich die Umgebung des HM-10 vom Arduino aus nach Geräten mit Bluetooth absuchen.
Dafür habe ich mir folgenden Sketch zusammen gebastelt.

#include <SoftwareSerial.h>
SoftwareSerial mySerial(2,3); // RX, TX
// Connect HM10 Arduino Uno
// TXD Pin 2
// RXD Pin 3
void setup() {
pinMode(8, OUTPUT);  
Serial.begin(9600);

mySerial.begin(9600);
Serial.print("AT");
Serial.print("AT+ROLE1");
Serial.print("AT+RESET");
Serial.print("AT+SHOW1");
Serial.print("AT+IMME1");

}
void loop() {
char c;
if (Serial.available()) {
c = Serial.read();
mySerial.print(c);
}
if (mySerial.available()) {
c = mySerial.read();
Serial.print(c);
}
}

Das Programm scheint auch soweit zu arbeiten.
Nach dem Start kann ich weitere AT Befehle über den seriellen Monitor senden und erhalte auch Antworten.
Wenn ich aber AT+DISC? eingebe erhalte ich zuerst DISCS für den Start des Scans und am Ende OK*DISCE für das Ende des Scans.
Es erscheinen aber keine gefunden Geräte.
Verstehe ich da etwas komplett falsch, oder wo liegt der Fehler?

Ich hoffe es kann mir jemand einnen Tipp in die richtige Richtung geben.

Auf dem HM-10 ist die Version 545

BYe André

Hallo

ich habe einmal etwas weiter geforscht und konnte für's erste das Problem lösen.
Wenn ich auch mit dem Scanergebnis nicht ganz zufrieden bin, hier mal mein aktueller Stand.

/****************************************/
#include <SoftwareSerial.h>
SoftwareSerial meinSerial(2,3); // RX, TX
// Verbindungzwischen HM10 Arduino Uno
// TXD Pin 2
// RXD Pin 3
void setup() {  
Serial.begin(9600);                 
meinSerial.begin(9600);
Serial.println("AT+NameMaster gesendet");   //Adapter den Namen Master vergeben
meinSerial.print("AT+NAMEMASTER");          //Befehl wird gesendet
delay(300);
antwort ();                                 //im Unterprogramm wird die Antwort empfangen
Serial.println("AT+ROLE1 gesendet");    //Adapter als Master programmieren
meinSerial.print("AT+ROLE1");
delay(3000);
antwort ();
Serial.println("AT+RESET gesendet");    //Adapter neu gestartet
meinSerial.print("AT+RESET");
delay(300);
antwort ();
Serial.println("AT+SHOW1 gesendet");    //Adapter soll bei Scans Namen mit anzeigen
meinSerial.print("AT+SHOW1");
delay(300);
antwort ();
Serial.println("AT+IMME1 gesendet");    //Adapter kann nach Power Up AT Kommandos verarbeiten
meinSerial.print("AT+IMME1");
delay(300);
antwort ();
Serial.println("AT+DISC? gesendet");    //Adapter sucht nach Geräten in der Umgebung
meinSerial.print("AT+DISC?");
//delay (300);
//antwort ();
}
void loop() {
  char c;
  if (Serial.available()) {
    c = Serial.read();
    meinSerial.print(c);
    Serial.print (c);
    }
  if (meinSerial.available()) {
    c = meinSerial.read();
    Serial.print(c);
    }
}
void antwort () {
  char c;
  String E;
  while (meinSerial.available()) {
    c = meinSerial.read();
    E.concat(c);
    }
  Serial.print(E);
  E="";
  Serial.println("");
  Serial.println("-----------");
  delay (100);
}
/****************************************/

Das Ergebnis sieht dann wie folgt aus.

AT+NameMaster gesendet
OK+Set:MASTER
-----------
AT+ROLE1 gesendet
OK+Set:1
-----------
AT+RESET gesendet
OK+RESET
-----------
AT+SHOW1 gesendet
OK+Set:1
-----------
AT+IMME1 gesendet
OK+Set:1
-----------
AT+DISC? gesendet
OK+DISCSOK+DIS0:7C2F80C3912COK+NAME:Gigaset G-tag
OK+DISCE

Was mich stört ist, dass der Scan zwar das eigentliche Ziel den G-TAG findet aber die Smartphones und den Notebook ignoriert. Die Smartphones hätte ich aber schon gerne auf dem Schirm.
Hat dazu jemand eine Idee?

BYe André