GSM library
The GSM library is included with 86Duino Coding 103 and later.
(See also the tutorial for how to connect 86Duino with the Arduino GSM shield.)
With the Arduino GSM Shield, this library enables an 86Duino board to do most of the operations you can do with a GSM phone: place and receive voice calls, send and receive SMS, and connect to the internet over a GPRS network.
The GSM shield has a modem that transfers data from a serial port to the GSM network. The modem executes operations via a series of AT commands. The library abstracts low level communications between the modem and SIM card. It relies on the Software Serial library for communication between the modem and 86Duino.
Typically, each individual command is part of a larger series necessary to execute a particular function. The library can also receive information and return it to you when necessary.
Library structure
As the library enables multiple types of functionality, there are a number of different classes.
- The
GSM
class takes care of commands to the radio modem. This handles the connectivity aspects of the shield and registers your system in the GSM infrastructure. All of your GSM/GPRS programs will need to include an object of this class to handle the necessary low level communication. - Voice call handling, managed by the
GSMVoiceCall class
. - Send/receive SMS messages, managed by the
GSM_SMS
class. - The
GPRSClass
is for connecting to the internet. GSMClient
includes implementations for a client, similar to the Ethernet and WiFi libraries.GSMServer
includes implementations for a server, similar to the Ethernet and WiFi libraries. NB : A number of network operators do not allow for incoming connections from the public internet, but will allow them from inside their own. Check with your operator to see what restrictions there are on data use.- A number of utility classes such as
GSMScanner
andGSMModem
.
Ethernet library compatibility
The library tries to be as compatible as possible with the current Ethernet library. Porting a program from an Arduino Ethernet or WiFi library to an Arduino with the GSM Shield should be fairly easy. While it is not possible to simply run Ethernet-compatible code on the GSM shield as-is, some minor, library specific, modifications will be necessary, like including the GSM and GPRS specific libraries and getting network configuration settings from your cellular network provider.
GSM class
This class prepares the functions that will communicate with the modem.
GSMVoiceCall class
Enables voice communication through the modem. A microphone and speaker need to be added for full use.
- GSMVoiceCall
- getVoiceCallStatus()
- ready()
- voiceCall()
- answerCall()
- hangCall()
- retrieveCallingNumber()
GSM_SMS class
Facilitates sending and receiving Short Message Service (SMS) messages.
- GSM_SMS
- beginSMS()
- ready()
- endSMS()
- available()
- remoteNumber()
- read()
- write()
- print()
- peek()
- flush()
GPRS class
This class is responsible for including the files that are part of the library that involve TCP communication.
- GPRS
- attachGPRS()
GSMClient class
The client class creates clients that can connect to servers and send and receive data.
- GSMClient
- ready()
- connect()
- beginWrite()
- write()
- endWrite()
- connected()
- read()
- available()
- peek()
- flush()
- stop()
GSMServer class
The Server class creates servers which can send data to and receive data from connected clients (programs running on other computers or devices).
- GSMServer
- ready()
- beginWrite()
- write()
- endWrite()
- read()
- available()
- stop()
GSMModem class
The GSMModem
class facilitates diagnostic communication with the modem.
- GSMModem
- begin()
- getIMEI()
GSMScanner class
The GSMScanner
class provides diagnostic information about the network and carrier.
- GSMScanner
- begin()
- getCurrentCarrier()
- getSignalStrength()
- readNetworks()
GSMPIN class
The GSMPIN
class has utilities for communicating with the SIM card.
- GSMPIN
- begin()
- isPIN()
- checkPIN()
- checkPUK()
- changePIN()
- switchPIN()
- checkReg()
- getPINUsed()
- setPINUsed()
GSMBand class
The GSMBand
class provides information about the frequency band the modem connects to. There are also methods for setting the band.
- GSMBand
- begin()
- getBand()
- setBand()
Example
The following are examples of the GSM library from the Arduino Tutorial that can work on the 86Duino boards:
-Make Voice Call: get your shield to make phone calls from the Serial Monitor
-Receive Voice Call: check the status of the modem while getting voice calls
-Send SMS: use the Serial Monitor to type in SMS messages to different phone numbers
-Receive SMS: read SMS messages and prompt them to the Serial Monitor
The text of the 86Duino reference is a modification of the Arduino reference, and is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.