added arduino, modified build
This commit is contained in:
100
arduino/libraries/GSM/examples/GsmWebClient/GsmWebClient.ino
Normal file
100
arduino/libraries/GSM/examples/GsmWebClient/GsmWebClient.ino
Normal file
@@ -0,0 +1,100 @@
|
||||
/*
|
||||
Web client
|
||||
|
||||
This sketch connects to a website through a GSM shield. Specifically,
|
||||
this example downloads the URL "http://www.arduino.cc/asciilogo.txt" and
|
||||
prints it to the Serial monitor.
|
||||
|
||||
Circuit:
|
||||
* GSM shield attached to an Arduino
|
||||
* SIM card with a data plan
|
||||
|
||||
created 8 Mar 2012
|
||||
by Tom Igoe
|
||||
|
||||
http://www.arduino.cc/en/Tutorial/GSMExamplesWebClient
|
||||
|
||||
*/
|
||||
|
||||
// libraries
|
||||
#include <GSM.h>
|
||||
|
||||
// PIN Number
|
||||
#define PINNUMBER ""
|
||||
|
||||
// APN data
|
||||
#define GPRS_APN "GPRS_APN" // replace your GPRS APN
|
||||
#define GPRS_LOGIN "login" // replace with your GPRS login
|
||||
#define GPRS_PASSWORD "password" // replace with your GPRS password
|
||||
|
||||
// initialize the library instance
|
||||
GSMClient client;
|
||||
GPRS gprs;
|
||||
GSM gsmAccess;
|
||||
|
||||
// URL, path & port (for example: arduino.cc)
|
||||
char server[] = "arduino.cc";
|
||||
char path[] = "/asciilogo.txt";
|
||||
int port = 80; // port 80 is the default for HTTP
|
||||
|
||||
void setup() {
|
||||
// initialize 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
|
||||
}
|
||||
|
||||
Serial.println("Starting Arduino web client.");
|
||||
// connection state
|
||||
boolean notConnected = true;
|
||||
|
||||
// After starting the modem with GSM.begin()
|
||||
// attach the shield to the GPRS network with the APN, login and password
|
||||
while (notConnected) {
|
||||
if ((gsmAccess.begin(PINNUMBER) == GSM_READY) &
|
||||
(gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD) == GPRS_READY)) {
|
||||
notConnected = false;
|
||||
} else {
|
||||
Serial.println("Not connected");
|
||||
delay(1000);
|
||||
}
|
||||
}
|
||||
|
||||
Serial.println("connecting...");
|
||||
|
||||
// if you get a connection, report back via serial:
|
||||
if (client.connect(server, port)) {
|
||||
Serial.println("connected");
|
||||
// Make a HTTP request:
|
||||
client.print("GET ");
|
||||
client.print(path);
|
||||
client.println(" HTTP/1.1");
|
||||
client.print("Host: ");
|
||||
client.println(server);
|
||||
client.println("Connection: close");
|
||||
client.println();
|
||||
} else {
|
||||
// if you didn't get a connection to the server:
|
||||
Serial.println("connection failed");
|
||||
}
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// if there are incoming bytes available
|
||||
// from the server, read them and print them:
|
||||
if (client.available()) {
|
||||
char c = client.read();
|
||||
Serial.print(c);
|
||||
}
|
||||
|
||||
// if the server's disconnected, stop the client:
|
||||
if (!client.available() && !client.connected()) {
|
||||
Serial.println();
|
||||
Serial.println("disconnecting.");
|
||||
client.stop();
|
||||
|
||||
// do nothing forevermore:
|
||||
for (;;)
|
||||
;
|
||||
}
|
||||
}
|
||||
113
arduino/libraries/GSM/examples/GsmWebServer/GsmWebServer.ino
Normal file
113
arduino/libraries/GSM/examples/GsmWebServer/GsmWebServer.ino
Normal file
@@ -0,0 +1,113 @@
|
||||
/*
|
||||
GSM Web Server
|
||||
|
||||
A simple web server that shows the value of the analog input pins.
|
||||
using a GSM shield.
|
||||
|
||||
Circuit:
|
||||
* GSM shield attached
|
||||
* Analog inputs attached to pins A0 through A5 (optional)
|
||||
|
||||
created 8 Mar 2012
|
||||
by Tom Igoe
|
||||
*/
|
||||
|
||||
// libraries
|
||||
#include <GSM.h>
|
||||
|
||||
// PIN Number
|
||||
#define PINNUMBER ""
|
||||
|
||||
// APN data
|
||||
#define GPRS_APN "GPRS_APN" // replace your GPRS APN
|
||||
#define GPRS_LOGIN "login" // replace with your GPRS login
|
||||
#define GPRS_PASSWORD "password" // replace with your GPRS password
|
||||
|
||||
|
||||
// initialize the library instance
|
||||
GPRS gprs;
|
||||
GSM gsmAccess; // include a 'true' parameter for debug enabled
|
||||
GSMServer server(80); // port 80 (http default)
|
||||
|
||||
// timeout
|
||||
const unsigned long __TIMEOUT__ = 10 * 1000;
|
||||
|
||||
void setup() {
|
||||
// initialize 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
|
||||
}
|
||||
|
||||
// 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) &
|
||||
(gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD) == GPRS_READY)) {
|
||||
notConnected = false;
|
||||
} else {
|
||||
Serial.println("Not connected");
|
||||
delay(1000);
|
||||
}
|
||||
}
|
||||
|
||||
Serial.println("Connected to GPRS network");
|
||||
|
||||
// start server
|
||||
server.begin();
|
||||
|
||||
//Get IP.
|
||||
IPAddress LocalIP = gprs.getIPAddress();
|
||||
Serial.println("Server IP address=");
|
||||
Serial.println(LocalIP);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
|
||||
|
||||
// listen for incoming clients
|
||||
GSMClient client = server.available();
|
||||
|
||||
|
||||
|
||||
if (client) {
|
||||
while (client.connected()) {
|
||||
if (client.available()) {
|
||||
Serial.println("Receiving request!");
|
||||
bool sendResponse = false;
|
||||
while (char c = client.read()) {
|
||||
if (c == '\n') {
|
||||
sendResponse = true;
|
||||
}
|
||||
}
|
||||
|
||||
// if you've gotten to the end of the line (received a newline
|
||||
// character)
|
||||
if (sendResponse) {
|
||||
// send a standard http response header
|
||||
client.println("HTTP/1.1 200 OK");
|
||||
client.println("Content-Type: text/html");
|
||||
client.println();
|
||||
client.println("<html>");
|
||||
// output the value of each analog input pin
|
||||
for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
|
||||
client.print("analog input ");
|
||||
client.print(analogChannel);
|
||||
client.print(" is ");
|
||||
client.print(analogRead(analogChannel));
|
||||
client.println("<br />");
|
||||
}
|
||||
client.println("</html>");
|
||||
//necessary delay
|
||||
delay(1000);
|
||||
client.stop();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
105
arduino/libraries/GSM/examples/MakeVoiceCall/MakeVoiceCall.ino
Normal file
105
arduino/libraries/GSM/examples/MakeVoiceCall/MakeVoiceCall.ino
Normal file
@@ -0,0 +1,105 @@
|
||||
/*
|
||||
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 ""
|
||||
|
||||
// initialize the library instance
|
||||
GSM gsmAccess; // include a 'true' parameter for debug enabled
|
||||
GSMVoiceCall vcs;
|
||||
|
||||
String remoteNumber = ""; // 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 native USB port 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
93
arduino/libraries/GSM/examples/ReceiveSMS/ReceiveSMS.ino
Normal file
93
arduino/libraries/GSM/examples/ReceiveSMS/ReceiveSMS.ino
Normal file
@@ -0,0 +1,93 @@
|
||||
/*
|
||||
SMS receiver
|
||||
|
||||
This sketch, for the Arduino GSM shield, waits for a SMS message
|
||||
and displays it through the Serial port.
|
||||
|
||||
Circuit:
|
||||
* GSM shield attached to and Arduino
|
||||
* SIM card that can receive SMS messages
|
||||
|
||||
created 25 Feb 2012
|
||||
by Javier Zorzano / TD
|
||||
|
||||
This example is in the public domain.
|
||||
|
||||
http://www.arduino.cc/en/Tutorial/GSMExamplesReceiveSMS
|
||||
|
||||
*/
|
||||
|
||||
// include the GSM library
|
||||
#include <GSM.h>
|
||||
|
||||
// PIN Number for the SIM
|
||||
#define PINNUMBER ""
|
||||
|
||||
// initialize the library instances
|
||||
GSM gsmAccess;
|
||||
GSM_SMS sms;
|
||||
|
||||
// Array to hold the number a SMS is retreived from
|
||||
char senderNumber[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 native USB port only
|
||||
}
|
||||
|
||||
Serial.println("SMS Messages Receiver");
|
||||
|
||||
// connection state
|
||||
boolean notConnected = true;
|
||||
|
||||
// Start GSM connection
|
||||
while (notConnected) {
|
||||
if (gsmAccess.begin(PINNUMBER) == GSM_READY) {
|
||||
notConnected = false;
|
||||
} else {
|
||||
Serial.println("Not connected");
|
||||
delay(1000);
|
||||
}
|
||||
}
|
||||
|
||||
Serial.println("GSM initialized");
|
||||
Serial.println("Waiting for messages");
|
||||
}
|
||||
|
||||
void loop() {
|
||||
char c;
|
||||
|
||||
// If there are any SMSs available()
|
||||
if (sms.available()) {
|
||||
Serial.println("Message received from:");
|
||||
|
||||
// Get remote number
|
||||
sms.remoteNumber(senderNumber, 20);
|
||||
Serial.println(senderNumber);
|
||||
|
||||
// An example of message disposal
|
||||
// Any messages starting with # should be discarded
|
||||
if (sms.peek() == '#') {
|
||||
Serial.println("Discarded SMS");
|
||||
sms.flush();
|
||||
}
|
||||
|
||||
// Read message bytes and print them
|
||||
while (c = sms.read()) {
|
||||
Serial.print(c);
|
||||
}
|
||||
|
||||
Serial.println("\nEND OF MESSAGE");
|
||||
|
||||
// Delete message from modem memory
|
||||
sms.flush();
|
||||
Serial.println("MESSAGE DELETED");
|
||||
}
|
||||
|
||||
delay(1000);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
/*
|
||||
Receive Voice Call
|
||||
|
||||
This sketch, for the Arduino GSM shield, receives voice calls,
|
||||
displays the calling number, waits a few seconds then hangs up.
|
||||
|
||||
Circuit:
|
||||
* GSM shield
|
||||
* Voice circuit. Refer to to the GSM shield getting started guide
|
||||
at http://www.arduino.cc/en/Guide/ArduinoGSMShield#toc11
|
||||
* SIM card that can accept voice calls
|
||||
|
||||
With no voice circuit the call will connect, but will not send or receive sound
|
||||
|
||||
created Mar 2012
|
||||
by Javier Zorzano
|
||||
|
||||
This example is in the public domain.
|
||||
|
||||
http://www.arduino.cc/en/Tutorial/GSMExamplesReceiveVoiceCall
|
||||
|
||||
*/
|
||||
|
||||
// Include the GSM library
|
||||
#include <GSM.h>
|
||||
|
||||
// PIN Number
|
||||
#define PINNUMBER ""
|
||||
|
||||
// initialize the library instance
|
||||
GSM gsmAccess;
|
||||
GSMVoiceCall vcs;
|
||||
|
||||
// Array to hold the number for the incoming call
|
||||
char numtel[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 native USB port only
|
||||
}
|
||||
|
||||
Serial.println("Receive 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);
|
||||
}
|
||||
}
|
||||
|
||||
// This makes sure the modem correctly reports incoming events
|
||||
vcs.hangCall();
|
||||
|
||||
Serial.println("Waiting for a call");
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// Check the status of the voice call
|
||||
switch (vcs.getvoiceCallStatus()) {
|
||||
case IDLE_CALL: // Nothing is happening
|
||||
|
||||
break;
|
||||
|
||||
case RECEIVINGCALL: // Yes! Someone is calling us
|
||||
|
||||
Serial.println("RECEIVING CALL");
|
||||
|
||||
// Retrieve the calling number
|
||||
vcs.retrieveCallingNumber(numtel, 20);
|
||||
|
||||
// Print the calling number
|
||||
Serial.print("Number:");
|
||||
Serial.println(numtel);
|
||||
|
||||
// Answer the call, establish the call
|
||||
vcs.answerCall();
|
||||
break;
|
||||
|
||||
case TALKING: // In this case the call would be established
|
||||
|
||||
Serial.println("TALKING. Press enter to hang up.");
|
||||
while (Serial.read() != '\n') {
|
||||
delay(100);
|
||||
}
|
||||
vcs.hangCall();
|
||||
Serial.println("Hanging up and waiting for the next call.");
|
||||
break;
|
||||
}
|
||||
delay(1000);
|
||||
}
|
||||
|
||||
|
||||
101
arduino/libraries/GSM/examples/SendSMS/SendSMS.ino
Normal file
101
arduino/libraries/GSM/examples/SendSMS/SendSMS.ino
Normal file
@@ -0,0 +1,101 @@
|
||||
/*
|
||||
SMS sender
|
||||
|
||||
This sketch, for the Arduino GSM shield,sends an SMS message
|
||||
you enter in the serial monitor. Connect your Arduino with the
|
||||
GSM shield and SIM card, open the serial monitor, and wait for
|
||||
the "READY" message to appear in the monitor. Next, type a
|
||||
message to send and press "return". Make sure the serial
|
||||
monitor is set to send a newline when you press return.
|
||||
|
||||
Circuit:
|
||||
* GSM shield
|
||||
* SIM card that can send SMS
|
||||
|
||||
created 25 Feb 2012
|
||||
by Tom Igoe
|
||||
|
||||
This example is in the public domain.
|
||||
|
||||
http://www.arduino.cc/en/Tutorial/GSMExamplesSendSMS
|
||||
|
||||
*/
|
||||
|
||||
// Include the GSM library
|
||||
#include <GSM.h>
|
||||
|
||||
#define PINNUMBER ""
|
||||
|
||||
// initialize the library instance
|
||||
GSM gsmAccess;
|
||||
GSM_SMS sms;
|
||||
|
||||
void setup() {
|
||||
// initialize 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
|
||||
}
|
||||
|
||||
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) {
|
||||
if (gsmAccess.begin(PINNUMBER) == GSM_READY) {
|
||||
notConnected = false;
|
||||
} else {
|
||||
Serial.println("Not connected");
|
||||
delay(1000);
|
||||
}
|
||||
}
|
||||
|
||||
Serial.println("GSM initialized");
|
||||
}
|
||||
|
||||
void loop() {
|
||||
|
||||
Serial.print("Enter a mobile number: ");
|
||||
char remoteNum[20]; // telephone number to send sms
|
||||
readSerial(remoteNum);
|
||||
Serial.println(remoteNum);
|
||||
|
||||
// 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(remoteNum);
|
||||
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++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
/*
|
||||
Band Management
|
||||
|
||||
This sketch, for the Arduino GSM shield, checks the band
|
||||
currently configured in the modem and allows you to change
|
||||
it.
|
||||
|
||||
Please check http://www.worldtimezone.com/gsm.html
|
||||
Usual configurations:
|
||||
Europe, Africa, Middle East: E-GSM(900)+DCS(1800)
|
||||
USA, Canada, South America: GSM(850)+PCS(1900)
|
||||
Mexico: PCS(1900)
|
||||
Brazil: GSM(850)+E-GSM(900)+DCS(1800)+PCS(1900)
|
||||
|
||||
|
||||
Circuit:
|
||||
* GSM shield
|
||||
|
||||
created 12 June 2012
|
||||
by Javier Zorzano, Scott Fitzgerald
|
||||
|
||||
This example is in the public domain.
|
||||
*/
|
||||
|
||||
// libraries
|
||||
#include <GSM.h>
|
||||
|
||||
// initialize the library instance
|
||||
GSMBand band;
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
// Beginning the band manager restarts the modem
|
||||
Serial.println("Restarting modem...");
|
||||
band.begin();
|
||||
Serial.println("Modem restarted.");
|
||||
|
||||
};
|
||||
|
||||
|
||||
void loop() {
|
||||
// Get current band
|
||||
String bandName = band.getBand(); // Get and print band name
|
||||
Serial.print("Current band:");
|
||||
Serial.println(bandName);
|
||||
Serial.println("Want to change the band you’re on?");
|
||||
String newBandName;
|
||||
newBandName = askUser();
|
||||
// Tell the user what we are about to do…
|
||||
Serial.print("\nConfiguring band ");
|
||||
Serial.println(newBandName);
|
||||
// Change the band
|
||||
boolean operationSuccess;
|
||||
operationSuccess = band.setBand(newBandName);
|
||||
// Tell the user if the operation was OK
|
||||
if (operationSuccess) {
|
||||
Serial.println("Success");
|
||||
} else {
|
||||
Serial.println("Error while changing band");
|
||||
}
|
||||
|
||||
if (operationSuccess) {
|
||||
while (true);
|
||||
}
|
||||
}
|
||||
|
||||
// This function offers the user different options
|
||||
// through the Serial interface
|
||||
// The user selects one
|
||||
String askUser() {
|
||||
String newBand;
|
||||
Serial.println("Select band:");
|
||||
// Print the different options
|
||||
Serial.println("1 : E-GSM(900)");
|
||||
Serial.println("2 : DCS(1800)");
|
||||
Serial.println("3 : PCS(1900)");
|
||||
Serial.println("4 : E-GSM(900)+DCS(1800) ex: Europe");
|
||||
Serial.println("5 : GSM(850)+PCS(1900) Ex: USA, South Am.");
|
||||
Serial.println("6 : GSM(850)+E-GSM(900)+DCS(1800)+PCS(1900)");
|
||||
|
||||
// Empty the incoming buffer
|
||||
while (Serial.available()) {
|
||||
Serial.read();
|
||||
}
|
||||
|
||||
// Wait for an answer, just look at the first character
|
||||
while (!Serial.available());
|
||||
char c = Serial.read();
|
||||
if (c == '1') {
|
||||
newBand = GSM_MODE_EGSM;
|
||||
} else if (c == '2') {
|
||||
newBand = GSM_MODE_DCS;
|
||||
} else if (c == '3') {
|
||||
newBand = GSM_MODE_PCS;
|
||||
} else if (c == '4') {
|
||||
newBand = GSM_MODE_EGSM_DCS;
|
||||
} else if (c == '5') {
|
||||
newBand = GSM_MODE_GSM850_PCS;
|
||||
} else if (c == '6') {
|
||||
newBand = GSM_MODE_GSM850_EGSM_DCS_PCS;
|
||||
} else {
|
||||
newBand = "GSM_MODE_UNDEFINED";
|
||||
}
|
||||
return newBand;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
/*
|
||||
|
||||
GSM Scan Networks
|
||||
|
||||
This example prints out the IMEI number of the modem,
|
||||
then checks to see if it's connected to a carrier. If so,
|
||||
it prints the phone number associated with the card.
|
||||
Then it scans for nearby networks and prints out their signal strengths.
|
||||
|
||||
Circuit:
|
||||
* GSM shield
|
||||
* SIM card
|
||||
|
||||
Created 8 Mar 2012
|
||||
by Tom Igoe, implemented by Javier Carazo
|
||||
Modified 4 Feb 2013
|
||||
by Scott Fitzgerald
|
||||
|
||||
http://www.arduino.cc/en/Tutorial/GSMToolsGsmScanNetworks
|
||||
|
||||
This example code is part of the public domain
|
||||
*/
|
||||
|
||||
// libraries
|
||||
#include <GSM.h>
|
||||
|
||||
// PIN Number
|
||||
#define PINNUMBER ""
|
||||
|
||||
// initialize the library instance
|
||||
GSM gsmAccess; // include a 'true' parameter to enable debugging
|
||||
GSMScanner scannerNetworks;
|
||||
GSMModem modemTest;
|
||||
|
||||
// Save data variables
|
||||
String IMEI = "";
|
||||
|
||||
// serial monitor result messages
|
||||
String errortext = "ERROR";
|
||||
|
||||
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("GSM networks scanner");
|
||||
scannerNetworks.begin();
|
||||
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
|
||||
// get modem parameters
|
||||
// IMEI, modem unique identifier
|
||||
Serial.print("Modem IMEI: ");
|
||||
IMEI = modemTest.getIMEI();
|
||||
IMEI.replace("\n", "");
|
||||
if (IMEI != NULL) {
|
||||
Serial.println(IMEI);
|
||||
}
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// scan for existing networks, displays a list of networks
|
||||
Serial.println("Scanning available networks. May take some seconds.");
|
||||
Serial.println(scannerNetworks.readNetworks());
|
||||
|
||||
// currently connected carrier
|
||||
Serial.print("Current carrier: ");
|
||||
Serial.println(scannerNetworks.getCurrentCarrier());
|
||||
|
||||
// returns strength and ber
|
||||
// signal strength in 0-31 scale. 31 means power > 51dBm
|
||||
// BER is the Bit Error Rate. 0-7 scale. 99=not detectable
|
||||
Serial.print("Signal Strength: ");
|
||||
Serial.print(scannerNetworks.getSignalStrength());
|
||||
Serial.println(" [0-31]");
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,146 @@
|
||||
/*
|
||||
|
||||
This example enables you to change or remove the PIN number of
|
||||
a SIM card inserted into a GSM shield.
|
||||
|
||||
Circuit:
|
||||
* GSM shield
|
||||
* SIM card
|
||||
|
||||
Created 12 Jun 2012
|
||||
by David del Peral
|
||||
|
||||
This example code is part of the public domain
|
||||
|
||||
http://www.arduino.cc/en/Tutorial/GSMToolsPinManagement
|
||||
|
||||
*/
|
||||
|
||||
// libraries
|
||||
#include <GSM.h>
|
||||
|
||||
// pin manager object
|
||||
GSMPIN PINManager;
|
||||
|
||||
// save input in serial by user
|
||||
String user_input = "";
|
||||
|
||||
// authenticated with PIN code
|
||||
boolean auth = false;
|
||||
|
||||
// serial monitor result messages
|
||||
String oktext = "OK";
|
||||
String errortext = "ERROR";
|
||||
|
||||
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("Change PIN example\n");
|
||||
PINManager.begin();
|
||||
|
||||
// check if the SIM have pin lock
|
||||
while (!auth) {
|
||||
int pin_query = PINManager.isPIN();
|
||||
if (pin_query == 1) {
|
||||
// if SIM is locked, enter PIN code
|
||||
Serial.print("Enter PIN code: ");
|
||||
user_input = readSerial();
|
||||
// check PIN code
|
||||
if (PINManager.checkPIN(user_input) == 0) {
|
||||
auth = true;
|
||||
PINManager.setPINUsed(true);
|
||||
Serial.println(oktext);
|
||||
} else {
|
||||
// if PIN code was incorrected
|
||||
Serial.println("Incorrect PIN. Remember that you have 3 opportunities.");
|
||||
}
|
||||
} else if (pin_query == -1) {
|
||||
// PIN code is locked, user must enter PUK code
|
||||
Serial.println("PIN locked. Enter PUK code: ");
|
||||
String puk = readSerial();
|
||||
Serial.print("Now, enter a new PIN code: ");
|
||||
user_input = readSerial();
|
||||
// check PUK code
|
||||
if (PINManager.checkPUK(puk, user_input) == 0) {
|
||||
auth = true;
|
||||
PINManager.setPINUsed(true);
|
||||
Serial.println(oktext);
|
||||
} else {
|
||||
// if PUK o the new PIN are incorrect
|
||||
Serial.println("Incorrect PUK or invalid new PIN. Try again!.");
|
||||
}
|
||||
} else if (pin_query == -2) {
|
||||
// the worst case, PIN and PUK are locked
|
||||
Serial.println("PIN & PUK locked. Use PIN2/PUK2 in a mobile phone.");
|
||||
while (true);
|
||||
} else {
|
||||
// SIM does not requires authetication
|
||||
Serial.println("No pin necessary.");
|
||||
auth = true;
|
||||
}
|
||||
}
|
||||
|
||||
// start GSM shield
|
||||
Serial.print("Checking register in GSM network...");
|
||||
if (PINManager.checkReg() == 0) {
|
||||
Serial.println(oktext);
|
||||
}
|
||||
// if you are connect by roaming
|
||||
else if (PINManager.checkReg() == 1) {
|
||||
Serial.println("ROAMING " + oktext);
|
||||
} else {
|
||||
// error connection
|
||||
Serial.println(errortext);
|
||||
while (true);
|
||||
}
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// Function loop implements pin management user menu
|
||||
// Only if you SIM use pin lock, you can change PIN code
|
||||
// user_op variables save user option
|
||||
|
||||
Serial.println("Choose an option:\n1 - On/Off PIN.");
|
||||
if (PINManager.getPINUsed()) {
|
||||
Serial.println("2 - Change PIN.");
|
||||
}
|
||||
String user_op = readSerial();
|
||||
if (user_op == "1") {
|
||||
Serial.println("Enter your PIN code:");
|
||||
user_input = readSerial();
|
||||
// activate/deactivate PIN lock
|
||||
PINManager.switchPIN(user_input);
|
||||
} else if (user_op == "2" & PINManager.getPINUsed()) {
|
||||
Serial.println("Enter your actual PIN code:");
|
||||
String oldPIN = readSerial();
|
||||
Serial.println("Now, enter your new PIN code:");
|
||||
String newPIN = readSerial();
|
||||
// change PIN
|
||||
PINManager.changePIN(oldPIN, newPIN);
|
||||
} else {
|
||||
Serial.println("Incorrect option. Try again!.");
|
||||
}
|
||||
delay(1000);
|
||||
}
|
||||
|
||||
/*
|
||||
Read input serial
|
||||
*/
|
||||
String readSerial() {
|
||||
String text = "";
|
||||
while (1) {
|
||||
while (Serial.available() > 0) {
|
||||
char inChar = Serial.read();
|
||||
if (inChar == '\n') {
|
||||
return text;
|
||||
}
|
||||
if (inChar != '\r') {
|
||||
text += inChar;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
190
arduino/libraries/GSM/examples/Tools/TestGPRS/TestGPRS.ino
Normal file
190
arduino/libraries/GSM/examples/Tools/TestGPRS/TestGPRS.ino
Normal file
@@ -0,0 +1,190 @@
|
||||
/*
|
||||
|
||||
This sketch test the GSM shield's ability to connect to a
|
||||
GPERS network. It asks for APN information through the
|
||||
serial monitor and tries to connect to arduino.cc.
|
||||
|
||||
Circuit:
|
||||
* GSM shield attached
|
||||
* SIM card with data plan
|
||||
|
||||
Created 18 Jun 2012
|
||||
by David del Peral
|
||||
|
||||
This example code is part of the public domain
|
||||
|
||||
http://www.arduino.cc/en/Tutorial/GSMToolsTestGPRS
|
||||
|
||||
*/
|
||||
|
||||
// libraries
|
||||
#include <GSM.h>
|
||||
|
||||
// PIN Number
|
||||
#define PINNUMBER ""
|
||||
|
||||
// initialize the library instance
|
||||
GSM gsmAccess; // GSM access: include a 'true' parameter for debug enabled
|
||||
GPRS gprsAccess; // GPRS access
|
||||
GSMClient client; // Client service for TCP connection
|
||||
|
||||
// messages for serial monitor response
|
||||
String oktext = "OK";
|
||||
String errortext = "ERROR";
|
||||
|
||||
// URL and path (for example: arduino.cc)
|
||||
char url[] = "arduino.cc";
|
||||
char urlproxy[] = "http://www.arduino.cc";
|
||||
char path[] = "/";
|
||||
|
||||
// variable for save response obtained
|
||||
String response = "";
|
||||
|
||||
// use a proxy
|
||||
boolean use_proxy = false;
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
void loop() {
|
||||
use_proxy = false;
|
||||
|
||||
// start GSM shield
|
||||
// if your SIM has PIN, pass it as a parameter of begin() in quotes
|
||||
Serial.print("Connecting GSM network...");
|
||||
if (gsmAccess.begin(PINNUMBER) != GSM_READY) {
|
||||
Serial.println(errortext);
|
||||
while (true);
|
||||
}
|
||||
Serial.println(oktext);
|
||||
|
||||
// read APN introduced by user
|
||||
char apn[50];
|
||||
Serial.print("Enter your APN: ");
|
||||
readSerial(apn);
|
||||
Serial.println(apn);
|
||||
|
||||
// Read APN login introduced by user
|
||||
char login[50];
|
||||
Serial.print("Now, enter your login: ");
|
||||
readSerial(login);
|
||||
Serial.println(login);
|
||||
|
||||
// read APN password introduced by user
|
||||
char password[20];
|
||||
Serial.print("Finally, enter your password: ");
|
||||
readSerial(password);
|
||||
|
||||
// attach GPRS
|
||||
Serial.println("Attaching to GPRS with your APN...");
|
||||
if (gprsAccess.attachGPRS(apn, login, password) != GPRS_READY) {
|
||||
Serial.println(errortext);
|
||||
} else {
|
||||
|
||||
Serial.println(oktext);
|
||||
|
||||
// read proxy introduced by user
|
||||
char proxy[100];
|
||||
Serial.print("If your carrier uses a proxy, enter it, if not press enter: ");
|
||||
readSerial(proxy);
|
||||
Serial.println(proxy);
|
||||
|
||||
// if user introduced a proxy, asks him for proxy port
|
||||
int pport;
|
||||
if (proxy[0] != '\0') {
|
||||
// read proxy port introduced by user
|
||||
char proxyport[10];
|
||||
Serial.print("Enter the proxy port: ");
|
||||
readSerial(proxyport);
|
||||
// cast proxy port introduced to integer
|
||||
pport = (int) proxyport;
|
||||
use_proxy = true;
|
||||
Serial.println(proxyport);
|
||||
}
|
||||
|
||||
// connection with arduino.cc and realize HTTP request
|
||||
Serial.print("Connecting and sending GET request to arduino.cc...");
|
||||
int res_connect;
|
||||
|
||||
// if use a proxy, connect with it
|
||||
if (use_proxy) {
|
||||
res_connect = client.connect(proxy, pport);
|
||||
} else {
|
||||
res_connect = client.connect(url, 80);
|
||||
}
|
||||
|
||||
if (res_connect) {
|
||||
// make a HTTP 1.0 GET request (client sends the request)
|
||||
client.print("GET ");
|
||||
|
||||
// if use a proxy, the path is arduino.cc URL
|
||||
if (use_proxy) {
|
||||
client.print(urlproxy);
|
||||
} else {
|
||||
client.print(path);
|
||||
}
|
||||
|
||||
client.println(" HTTP/1.0");
|
||||
client.println();
|
||||
Serial.println(oktext);
|
||||
} else {
|
||||
// if you didn't get a connection to the server
|
||||
Serial.println(errortext);
|
||||
}
|
||||
Serial.print("Receiving response...");
|
||||
|
||||
boolean test = true;
|
||||
while (test) {
|
||||
// if there are incoming bytes available
|
||||
// from the server, read and check them
|
||||
if (client.available()) {
|
||||
char c = client.read();
|
||||
response += c;
|
||||
|
||||
// cast response obtained from string to char array
|
||||
char responsechar[response.length() + 1];
|
||||
response.toCharArray(responsechar, response.length() + 1);
|
||||
|
||||
// if response includes a "200 OK" substring
|
||||
if (strstr(responsechar, "200 OK") != NULL) {
|
||||
Serial.println(oktext);
|
||||
Serial.println("TEST COMPLETE!");
|
||||
test = false;
|
||||
}
|
||||
}
|
||||
|
||||
// if the server's disconnected, stop the client:
|
||||
if (!client.connected()) {
|
||||
Serial.println();
|
||||
Serial.println("disconnecting.");
|
||||
client.stop();
|
||||
test = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
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';
|
||||
return 0;
|
||||
}
|
||||
if (inChar != '\r') {
|
||||
result[i] = inChar;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
70
arduino/libraries/GSM/examples/Tools/TestModem/TestModem.ino
Normal file
70
arduino/libraries/GSM/examples/Tools/TestModem/TestModem.ino
Normal file
@@ -0,0 +1,70 @@
|
||||
/*
|
||||
|
||||
This example tests to see if the modem of the
|
||||
GSM shield is working correctly. You do not need
|
||||
a SIM card for this example.
|
||||
|
||||
Circuit:
|
||||
* GSM shield attached
|
||||
|
||||
Created 12 Jun 2012
|
||||
by David del Peral
|
||||
modified 21 Nov 2012
|
||||
by Tom Igoe
|
||||
|
||||
http://www.arduino.cc/en/Tutorial/GSMToolsTestModem
|
||||
|
||||
This sample code is part of the public domain
|
||||
|
||||
*/
|
||||
|
||||
// libraries
|
||||
#include <GSM.h>
|
||||
|
||||
// modem verification object
|
||||
GSMModem modem;
|
||||
|
||||
// IMEI variable
|
||||
String IMEI = "";
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
// start modem test (reset and check response)
|
||||
Serial.print("Starting modem test...");
|
||||
if (modem.begin()) {
|
||||
Serial.println("modem.begin() succeeded");
|
||||
} else {
|
||||
Serial.println("ERROR, no modem answer.");
|
||||
}
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// get modem IMEI
|
||||
Serial.print("Checking IMEI...");
|
||||
IMEI = modem.getIMEI();
|
||||
|
||||
// check IMEI response
|
||||
if (IMEI != NULL) {
|
||||
// show IMEI in serial monitor
|
||||
Serial.println("Modem's IMEI: " + IMEI);
|
||||
// reset modem to check booting:
|
||||
Serial.print("Resetting modem...");
|
||||
modem.begin();
|
||||
// get and check IMEI one more time
|
||||
if (modem.getIMEI() != NULL) {
|
||||
Serial.println("Modem is functoning properly");
|
||||
} else {
|
||||
Serial.println("Error: getIMEI() failed after modem.begin()");
|
||||
}
|
||||
} else {
|
||||
Serial.println("Error: Could not get IMEI");
|
||||
}
|
||||
// do nothing:
|
||||
while (true);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
/*
|
||||
Basic Web Server
|
||||
|
||||
A simple web server that replies with nothing, but prints the client's request
|
||||
and the server IP address.
|
||||
|
||||
Circuit:
|
||||
* GSM shield attached
|
||||
|
||||
created
|
||||
by David Cuartielles
|
||||
modified 21 Nov 2012
|
||||
by Tom Igoe
|
||||
|
||||
http://www.arduino.cc/en/Tutorial/GSMToolsTestWebServer
|
||||
|
||||
This example code is part of the public domain
|
||||
*/
|
||||
#include <GSM.h>
|
||||
|
||||
// PIN Number
|
||||
#define PINNUMBER ""
|
||||
|
||||
// APN data
|
||||
#define GPRS_APN "GPRS_APN" // replace your GPRS APN
|
||||
#define GPRS_LOGIN "login" // replace with your GPRS login
|
||||
#define GPRS_PASSWORD "password" // replace with your GPRS password
|
||||
|
||||
|
||||
// initialize the library instance
|
||||
GPRS gprs;
|
||||
GSM gsmAccess; // include a 'true' parameter for debug enabled
|
||||
GSMServer server(80); // port 80 (http default)
|
||||
|
||||
// timeout
|
||||
const unsigned long __TIMEOUT__ = 10 * 1000;
|
||||
|
||||
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("starting,..");
|
||||
// connection state
|
||||
boolean connected = true;
|
||||
|
||||
// Start GSM shield
|
||||
// If your SIM has PIN, pass it as a parameter of begin() in quotes
|
||||
while (!connected) {
|
||||
if ((gsmAccess.begin(PINNUMBER) == GSM_READY) &
|
||||
(gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD) == GPRS_READY)) {
|
||||
connected = true;
|
||||
} else {
|
||||
Serial.println("Not connected");
|
||||
delay(1000);
|
||||
}
|
||||
}
|
||||
|
||||
Serial.println("Connected to GPRS network");
|
||||
|
||||
// start server
|
||||
server.begin();
|
||||
|
||||
//Get IP.
|
||||
IPAddress LocalIP = gprs.getIPAddress();
|
||||
Serial.println("Server IP address=");
|
||||
Serial.println(LocalIP);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
GSMClient client = server.available();
|
||||
|
||||
if (client) {
|
||||
if (client.available()) {
|
||||
Serial.write(client.read());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user