Let see how to integrate GSM/GPRS SIM800A to Raspberry Pi
GSM/GPRS module: SIM800L GSM/GPRS Module is shown in Fig.4.It is used for sending, receiving SMS, making and receiving voice calls.
I assume that you would know how to connect the SIM900A to Pi
Steps
- Install the SimCard in the sim slot
- Connect the SIM800A to Pi GPIO pins
- Configure the ppp deamon in Pi (Steps are explained below)
- Use minicom or similar software to access the device (similar to our old modems) use AT commands to operate (attached the references)
Install and configure PPP in Raspberry PI
dmesg | grep tty #to get to know the terminal interface
sudo raspi-config->Interfacing Options->Serial->Serial login shell disable,Serial interface enabledapt install ppp
vi /etc/ppp/peers/rnet
#imis/internet is the apn for idea connection
connect “/usr/sbin/chat -v -f /etc/chatscripts/gprs -T airtelgprs.com”
# For Raspberry Pi3 use /dev/ttyS0 as the communication port:
/dev/ttyS0
# Baudrate
115200
# Assumes that your IP address is allocated dynamically by the ISP.
noipdefault
# Try to get the name server addresses from the ISP.
usepeerdns
# Use this connection as the default route to the internet.
defaultroute
# Makes PPPD “dial again” when the connection is lost.
persist
# Do not ask the remote to authenticate.
noauth
# No hardware flow control on the serial link with GSM Modem
nocrtscts
# No modem control lines with GSM Modem
localsudo pon rnet
ifconfig # you should be able to see the PPPx interface with an IP assignedtail -f /var/log/syslog | grep pppd
Once you have configured the serial port you can access the device using minicom or similar program. Connect to the Serial Interface using minicom
minicom -D /dev/ttyS0 -b 115200
OPERATOR SELECTION:
AT+COPS=?
AT+COPS?
For voice call
ATD<mobilenumber>; (ATD730100000)Hangup
ATHRedial Last Number
ATDL
Receive Incoming call
ATATO SET A PARTICULAR BAUDRATE:
AT+IPR=? {To view the baud rate values}
AT+IPR=0 {To set the modem to autobauding mode}AT+CLIP=1
SMS
Enable text mode
AT+CMGF=1
AT+CMGS=”0000000000"
CtrlZTo unlock Sim Pin
AT+CPIN=1234Reference
AT+CSQ?
AT+CSQ
AT+IPR
AT+CFUN=1
AT+CRC SET CELLULAR RESULT CODES FOR INCOMING CALL INDICATION:AT+CRC=?
+CRC: (0–1)
OK
AT+CRC?
+CRC: 0
OK
AT+CRC=1
OK
+CRING: VOICEREAD OPERATOR NAMES.
AT+COPN=?
OK
AT+COPN
+COPN: “472001”,”DHIMOBILE”
+COPN: “60500
+COPN: “502012”,”maxis mobile”
+COPN:
+COPN: “502013”,”TMTOUCH”
+COPN
+COPN: “502016”,”DiGi”
+COPN: “502017”,”TIMECel””
+COPN: “502019”,”CELCOM GSM”
GPRS COMMANDS:AT+CGATT ATTACH/DETACH FROM GPRS SERVICE
AT+CGDCONT DEFINE PDP CONTEXT
AT+CGQMIN QUALITY OF SERVICE PROFILE (MINIMUM ACCEPTABLE)
AT+CGQREQ QUALITY OF SERVICE PROFILE (REQUESTED)
AT+CGACT PDP CONTEXT ACTIVATE OR DEACTIVATE
AT+CGDATA ENTER DATA STATE
AT+CGPADDR SHOW PDP ADDRESS
AT+CGCLASS GPRS MOBILE STATION CLASS
AT+CGEREP CONTROL UNSOLICITED GPRS EVENT REPORTING
AT+CGREG NETWORK REGISTRATION STATUS
AT+CGSMS SELECT SERVICE FOR MO SMS MESSAGES
AT+CGCOUNT GPRS PACKET COUNTERS
Gsm Testing Code
#GSM TESTING CODE
import serial
import os, time
# Enable Serial Communication
port = serial.Serial(“/dev/ttyS0”, baudrate=9600, timeout=1)
# Transmitting AT Commands to the Modem
# ‘\r\n’ indicates the Enter key
port.write(‘AT’+’\r\n’)
rcv = port.read(10)
print( rcv)
Serial Testing Code
# Serial.py
import serial
import timeport = “/dev/ttyAMA0” # Raspberry Pi 2
#port = “/dev/ttyS0” # Raspberry Pi 3def readLine(port):
s = “”
while True:
ch = port.read()
s += ch
if ch == ‘\r’:
return sser = serial.Serial(port, baudrate = 1200)
print “starting”
while True:
time.sleep(1)
print “sending synch”
ser.write(“A”)
rcv = readLine(ser)
print “received:”, rcv