Taillieu.Info

More Than a Hobby..

Arduino - GSM - SIM900

Port open

Make Voice Call

GSM initialized.

Enter phone number to call.

That's too long for a phone number. I'm forgetting it

Calling to : 0473990345

 

Call Established. Enter line to end

Call Finished

Enter phone number to call.


/*

 Make Voice Call

 

 This sketch, for the Arduino GSM shield, puts a voice call to

 a remote phone number that you enter through the serial monitor.

 To make it work, open the serial monitor, and when you see the

 READY message, type a phone number. Make sure the serial monitor

 is set to send a just newline when you press return.

 

 Circuit:

 * GSM shield

 * Voice circuit.

 With no voice circuit the call will send nor receive any sound

 

 created Mar 2012

 by Javier Zorzano

 

 This example is in the public domain.

 */

 

// libraries

#include <GSM.h>

 

// PIN Number

#define PINNUMBER "1360"

 

// initialize the library instance

GSM gsmAccess; // include a 'true' parameter for debug enabled

GSMVoiceCall vcs;

 

String remoteNumber = "0473990345";  // the number you will call

char charbuffer[20];

 

void setup()

{

 

  // initialize serial communications and wait for port to open:

  Serial.begin(9600);

  while (!Serial) {

    ; // wait for serial port to connect. Needed for Leonardo only

  }

 

  Serial.println("Make Voice Call");

 

  // connection state

  boolean notConnected = true;

 

  // Start GSM shield

  // If your SIM has PIN, pass it as a parameter of begin() in quotes

  while (notConnected)

  {

    if (gsmAccess.begin(PINNUMBER) == GSM_READY)

      notConnected = false;

    else

    {

      Serial.println("Not connected");

      delay(1000);

    }

  }

 

  Serial.println("GSM initialized.");

  Serial.println("Enter phone number to call.");

 

}

 

void loop()

{

 

  // add any incoming characters to the String:

  while (Serial.available() > 0)

  {

    char inChar = Serial.read();

    // if it's a newline, that means you should make the call:

    if (inChar == '\n')

    {

      // make sure the phone number is not too long:

      if (remoteNumber.length() < 20)

      {

        // let the user know you're calling:

        Serial.print("Calling to : ");

        Serial.println(remoteNumber);

        Serial.println();

 

        // Call the remote number

        remoteNumber.toCharArray(charbuffer, 20);

 

 

        // Check if the receiving end has picked up the call

        if (vcs.voiceCall(charbuffer))

        {

          Serial.println("Call Established. Enter line to end");

          // Wait for some input from the line

          while (Serial.read() != '\n' && (vcs.getvoiceCallStatus() == TALKING));

          // And hang up

          vcs.hangCall();

        }

        Serial.println("Call Finished");

        remoteNumber = "";

        Serial.println("Enter phone number to call.");

      }

      else

      {

        Serial.println("That's too long for a phone number. I'm forgetting it");

        remoteNumber = "";

      }

    }

    else

    {

      // add the latest character to the message to send:

      if (inChar != '\r')

        remoteNumber += inChar;

    }

  }

}