Hello guys,
I am trying to scan ibeacons using HM10 bluetooth module and arduino. When i pass "AT+DISI?" command from the serial monitor, the module responds positively and scans the BLEs around me, everytime I type in that command. However when I try to enter the command through a code using looping for continuous scanning, it scans only twice or thrice and then stops scanning. I have added my code here too. Please help.
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(10,11);
char disi_result[400];
int top=0;
int d1=0;
int i=0;
struct devices {
unsigned int major=0;
unsigned int minor=0;
unsigned int power=0;
int rssi=0;
};
devices device[4];
void setup()
{
Serial.begin(38400);
BTSerial.begin(9600);
start_at();
}
void loop(){
if(d1==0)
{
Serial.println("Scanning started");
BTSerial.write("AT+DISI?");
d1=1;
}
if(d1==1){
if (BTSerial.available() ){
while(BTSerial.available()){
disi_result*=char(BTSerial.read());*
-
i++;*
-
}*
-
}*
-
int j;*
-
String str="";*
-
for(j=i-8;j<=i;j++)*
-
{*
-
str=str+disi_result[j];*
-
}*
-
if(str=="OK+DISCE" ){*
-
d1=2;*
-
}*
-
}*
-
if(d1==2)*
-
{*
-
int j=0;*
-
for(j=0;j<=i;j++)*
-
{*
-
Serial.print( disi_result[j]);*
-
}*
-
i=0;*
d1=0; -
delay(1000);*
-
}*
}
void start_at(){ -
String c="";*
-
do{*
-
BTSerial.print("AT");*
-
delay(500);*
-
if (BTSerial.available())*
-
{*
-
while(BTSerial.available())*
-
{*
-
c=c+char(BTSerial.read());*
-
}*
-
}*
-
}while(c!="OK");*
}