SMS Box project using PIC16F877A Microcontroller


This device acts as interface between your microcontroller project and a GSM phone. It handles all modem data communication between the GSM phone and your micro-project. The best thing is that it decodes PDU into TEXT on the fly!

You can easily SMS-enable your any project without need for learning AT commands and parsing complicated data when talking to AT modem inside the phone.


UPDATE: Source code is now available for download!

If you ever wanted to connect a GSM phone to your microcontroller project you would need to know it’s AT command set, use serial communication, parse all kinds of data to extract what you really need, handle communication errors and all sorts of other stuff. Most of AT commands are standard for every phone but not every phone supports SMS texting in ASCII mode («TEXT-MODE»), instead they use PDU-MODE.
If every phone was like eg. Nokia 6210 life would be pretty nice. Just build a cable to enable its F-BUS ( and that’s it, you can start using SMS messages in text-mode. Other cheaper phones such as Siemens C/M35, S25 and many Ericsson phones do not support text-mode for SMS messaging. Instead, they can only be used in pdu-mode ( The good thing about them is that they are very cheap and do not require any external cables for initialization. They have their RS232 (TX, RX and GND) port and that’s it – you are ready to talk to the modem inside it.

So what do I need SMS Box! for and why did I build it? The answer is pretty simple, I guess… In the past few years I was playing around with building SMS Controller projects for home/car – automation. First there was a «GSM Kontroler v1» with 6 relay-outputs using Siemens S25. It worked great but only for my local GSM – network. It used PDU mode and didn’t decode it, it read it as it was. Okay, the second version (4 digital inputs, 4 relay outputs) used Mitsubishi Trium Mars (this little baby is surprisingly great and does support text-mode for SMS, I just love its firmware). Anyway I found out that it was nowhere available to buy anymore, so that’s the end of version 2, tough luck.
The third version used DLR-3P Nokia phones and it’s still a great little device. It’s working at many locations doing some great stuff such as controlling water level in a pool at one location, resetting many wireless access points, controlling ham-radio repeaters and it’s used as car-alarm (sms and call notify to car owner). I suggest building this device if you ever need it.

The nasty thing about all of these projects above is that I had to re-write the firmware for my microcontroller as 99\% phones return different answer for the same command issued to it. All of this just for sake of additional few commands added to the device and use of another phone that supports text-mode SMS. I do not need to mention that Nokia 6210 is also pretty hard to find and/or is still quite expensive as well as the GSM modems that could replace all this talk about PDU and TEXT modes.

The SMS Box! handles SMS messages in pdu-mode so you don’t need to worry about *many* things. You can talk to it over its «4-wire bus» and can be used for:

– Receiving sms messages (PDU -> TEXT conversion!)
– Sending sms messages (TEXT mode)
– Dialling a telephone number
– Hang-up a call
– Query call status
– Receive CLIP string
– Report a RING to microcontroller project (interrupt your uC program)
– Answer a call
– Set phone’s date and time – not implemented yet
– Get phone’s date and time – not implemented yet
– Check prepaid credit balance

It’s based on PIC16F877A microcontroller running on 16MHz at 5V. It has an onboard level converter for serial communication with the gsm phone because PIC’s UART RX input pin has a Schmitt trigger triggering at 4,5 – 5V while the phone is sending only approx. 3V from it’s TX pin. It also has a zener diode at TX pin so it doesn’t kill the phone’s network connection when talking to it. Firmware is 100\% written in MPASM assembler.

Read more: SMS Box project using PIC16F877A Microcontroller

Leave a Comment

Your email address will not be published. Required fields are marked *