Introduction: Raspberry Pi With a GSM Module

Some time ago I wrote a few paragraphs about using RPI to monitor your property:

https://www.instructables.com/id/Home-Security-Wit...

I promised to write about using GSM "soon", which in this case has taken 5 months.

The reason I think it might be useful in that context (home security) is obvious - there are

still properties without cable internet access, e.g. that is the case with many holiday cottages in Norway where I now live. 30% of them do not even have grid access - I have been thinking about it too which will take much more time (Arduino consumes too much energy as well to propose a reasonable solution).

Today just a short tutorial about using a GSM module to connect RPI to internet via PPP, leaving the "home security" part as that would require a bit more - RPI has just one serial (?), so maybe you should use USB-to-serial converter to attach RFID reader, if you need it.

Step 1: Wiring

I will try the A-GSM module from itbrainpower.net. That is because I have not had time to solder pins to a SIM800L. I promise I will. A-GSM is just an exaggeration for this simple task, I got this as a gift from my colleagues while I was leaving Orange Poland, I feel obliged to run it.

Ok - just follow the picture. I was worried that the Romanian producer does not suggest any TTL level shifter but I measured the voltage and it sends 3V. When you are ready with cables - press modem power switch for a second or two.

Step 2: Checking Board-to-GSM Connection

I hope your SIM card is not PIN protected. In case it is you may check the wiring and your PIN at a time (it might not be 1234 ;-) ):

sudo apt-get install minicom

sudo minicom -D /dev/ttyAMA0 -b 115200

AT

AT+CPIN=1234

I assumed that modem works at 115200 baud. If it is not the case and you want to change it - you can download a Python script from Itbrainpower.net website (RPi_examples-v0.9-2014.09.30.tar) to set the speed, e.g.:

sudo python setSerial.py 9600 115200

Before you run it comment out all agsm.open() lines, I guess this worked fine in the past or on some other Linux versions.

As you can see on the picture - I had to power off/on the GSM module to make it accept the PIN.

Step 3: PPP Config

The content of the step comes from a-gsm-RPI-examples-py-library-based-v1_2.tar downloaded from manufacturers site. Edit and copy-paste the content below (italic) to locations in bold.

/etc/chatscripts/gprs

ABORT BUSY
ABORT VOICE

ABORT "NO CARRIER"

ABORT "NO DIALTONE"

ABORT "NO DIAL TONE"

ABORT "NO ANSWER"

ABORT "DELAYED"

ABORT "ERROR"

ABORT "+CGATT: 0"

"" AT

TIMEOUT 12

OK ATH

OK ATE1

OK AT+CGDCONT=1,"IP","telia"

OK ATD*99#

TIMEOUT 22

CONNECT ""

You might submit your PIN here too (AT+CPIN...). 'telia' is a name of APN, you have to change it to your operators config!

/etc/ppp/peers/a-gsm

connect "/usr/sbin/chat -v -f /etc/chatscripts/gprs -T telia"
/dev/ttyAMA0

115200

noipdefault

usepeerdns

defaultroute

persist

noauth

nocrtscts

local

Here you have to change the APN too. Be sure the speed is what you have checked earlier! That is a source of hard-to-find PPP fails. BTW - authors claim the directory is 'pears' (wrong).

Step 4: Running PPP

To connect to the internet you just execute:

sudo pon a-gsm

The trouble might be that you have your RPI connected to the Internet already, so to be sure it works just run this before (smart of Romanians to suggest it!):

sudo route del default

Now you should have access to the Internet via the GSM network. Try to ping an address!

To shut down PPP:

sudo poff a-gsm

If unsuccessful you might need to start PPP in debug mode:

sudo pon a-gsm debug dump logfd 2 nodetach

In my case the mistakes were:

a) not setting APN

b) wrong serial speed !

c) something hanging on /dev/AMA0 - see the "Home Security" tutorial to learn how to free the port !

Step 5: To Do

1) send images of intruders via MMS, maybe more stable than PPP (to be tested)

2) check all this with SIM800L

3) PPP, MMS and SIM800L with Orange PI

Stay tuned!