Forum >BLUNO How To Switch Mode Programmatically
Bluno General Arduino

BLUNO How To Switch Mode Programmatically

userHead visualxl 2014-05-23 01:16:16 4809 Views4 Replies
I know that you can issue
[code]
+++
AT+EXIT
[/code]

But, how do you do that from sketch?

According to your documentation, the Serial Monitor has to be switched to [b]newline[/b] only before it can enter the AT mode. But what if I don't even want to open the Serial Monitor and just enter the AT mode?
[code]
Serial.println("+++"); //this won't enter the AT mode.
[/code]

The full codes as below. I was trying to send SMS. And the GSM can only be initialised after I enter the AT mode, and exit the AT mode. Please assist.

[code]
/*
* Send SMS
* Written by Syahmul on 22/5/2014
* Memory consumed: 15Kb
* Need to active AT command first before it can work
* Ref: http://arduino.cc/en/Tutorial/GSMExamplesSendSMS
*/

// libraries
#include <GSM.h>

#define PINNUMBER ""

// initialize the library instance
GSM gsmAccess; // include a 'true' parameter for debug enabled
GSM_SMS sms;

void setup()
{
// initialize serial communications
Serial.begin(9600);

Serial.println("SMS Messages Sender");

// connection state
boolean notConnected = true;

// Start GSM shield
// If your SIM has PIN, pass it as a parameter of begin() in quotes
while(notConnected) {
Serial.println("+++"); //how to do this??
Serial.println(gsmAccess.begin());
if(gsmAccess.begin()==GSM_READY) {
notConnected = false;
}else {
Serial.println("Not connected");
delay(1000);
}
}
Serial.println("AT+EXIT\r\n"); //and this??
Serial.println("GSM initialized");
}

void loop()
{

Serial.print("Enter a mobile number: ");
char remoteNumber[20]; // telephone number to send sms
readSerial(remoteNumber);
Serial.println(remoteNumber);

// sms text
Serial.print("Now, enter SMS content: ");
char txtMsg[200];
readSerial(txtMsg);
Serial.println("SENDING");
Serial.println();
Serial.println("Message:");
Serial.println(txtMsg);

// send the message
sms.beginSMS(remoteNumber);
sms.print(txtMsg);
sms.endSMS();
Serial.println("\nCOMPLETE!\n");
}

/*
Read input serial
*/
int readSerial(char result[])
{
int i = 0;
while(1)
{
while (Serial.available() > 0)
{
char inChar = Serial.read();
if (inChar == '\n')
{
result[i] = '\0';
Serial.flush();
return 0;
}
if(inChar!='\r')
{
result[i] = inChar;
i++;
}
}
}
}

[/code]
2014-11-06 18:45:04 Oh my god
It is a delay issue?
userHeadPic Grey.CC
2014-11-05 18:47:57 Oh, you need to throw in some delay.

Try something like this

[code]
void masterConfiguration() {
  Serial.print("+++");
  delay(150);
  Serial.println("AT+SETTING=DEFCENTRAL");
  delay(250);
  Serial.println("AT+ROLE=ROLE_CENTRAL");
  delay(150);
  Serial.println("AT+NAME=BabyRealMaster");
  delay(150);
  Serial.println("AT+BIND=0xD0FF50676DFD"); //Destination MAC to bind to
  Serial.println("AT+EXIT");
}
[/code]
userHeadPic visualxl
2014-11-03 00:47:34 I have tried Serial.print("+++"); to enter AT mode but in vain. Should I be aware of any "AT" settings, so that the code below might work? Since, the name of Bluetooth by default is "BlunoV1.8", the LED 13 should blink for 3 seconds continuously. But, currently, I am not able to receive any response even after checking out Serial Monitor.

[code]char charReceived;

void setup()
{
  pinMode(13, OUTPUT);
  Serial.begin(115200);
  Serial.print("+++");
  Serial.println("AT+NAME=?");
}

void serialEvent()
{
  while (Serial.available())
  {
    charReceived = Serial.read();
    if(charReceived == 'B') {
      digitalWrite(13, HIGH);
      delay(3000);
      digitalWrite(13, LOW);
      delay(3000);
    }
  }
}

void loop()
{
  delay(1000);
  Serial.println("AT+NAME=?");
  }
}[/code]
userHeadPic mukhtar89
2014-05-23 01:25:44 [quote="visualxl"]
[code]
Serial.println("+++"); //this won't enter the AT mode.
[/code]
[/quote]

Try Serial.print("+++"); // to enter AT mode
then
Serial.println("yourATcommand");
userHeadPic Jose