This is a classic 40 columns moving message display enhanced to incorporte a SIM300Z GSM modem so that the message can be communicated using SMS.

This can be quite useful e.g. installed at backside of a classroom the principal can commnicate with the teacher without disturbing the class. I know you are quite intelligent and will find even better uses.

[I sure hope my display goes viral on the web :-).]

The photo (that I created using MS paint) is just a representative of the final look of the thing because I did not take any photos or videos of the project at the time I built it.

Because the message enters the the controller (AT89C52) using the built in asynchronous serial port so it can come from any source off course including the SIM300Z.

First of all the design is to be entered in some schematic capture program. Although I directly built this one (i.e. without any schematiccapture) I usually use ORCAD10 capture for the purpose and have especially made a schematic for this instructable.

The things required to build this project are,

  1. Two large vero / strip boards for the assymbly of the circuit
  2. An AT89C52 (infact any µ-controller with enough IO lines and a serial port) as the main computer
  3. One serial EPROM AT93C46B to hold the number from which we recieve the SMS
  4. One SIM300Z or copmatible TTL GSM Modem.
  5. A programmer for the AT89C52
  6. 7 Nos. ULN2803 buffer IC to drive the rows and columns of the display.
  7. 6 Nos of (2SA683) PNP transistors to drive the rows
  8. 8 Nos 5 × 7 (cathode column) or 5 nos 8 × 8 LED matrix displays giving us the 40 columns.
  9. One 7805 regulator for the µController
  10. I gave the GSM modem its own battery so a regular mobile phone battery will be needed too.
  11. Soldering equipment
  12. A PC with a serial or USB port (to configure the MODEM)
  13. The list goes on ............ ;-)

Step 1: The Hardware Circuit Schematic

I built the circuit directly from my own mind. Don't worry I creadted a schematic afterwards just for this instructable.

It should be downloadable at this step. But this being my first instructable, I don't know whether PDF files can or cannot be attached. So i have uploaded it to the filehosting website too and here is the link. The Schematic in PDF format

Still just in case the link does not work here is the address: http://www.filehosting.org/file/details/616354/SCHEMATIC1%20_%20PAGE1.pdf

copying and pasting it in the address bar of your browser should do the trick.

Step 2: The Program

Well I made the choice of the AT89C52 because of its cheap price and the fact that it has a built in RS232 compatible UART. The GSM modem here used (the SIM300Z) communicates through a standard serial port.

My Algorithm required a master number to send the SMSs so that unauthenticated use of the display can somewhat be proteced.

The program has been written in the C51 language using a KEIL µVision2 IDE.

There are a total of 3 files:

I have delibrately not included the hex / bin file beacuse then where is the fun? Besides hex files can't be modified.

All the files are maximum documented inside so open them and try to make some sense out of the embedded comments.

  1. MOVING_MESSAGE-1 (1-on).c Download Main file here .
    This file has the main code i.e. the actual algorithm that manages full functionality of the display
  2. LUT_1_ON.C Download the Font table file here
    This file holds the lookup table for converting ASCII characters in the message to LED display font
  3. 93C46B.C The Serial EEPROM interface file
    This file implements a general purpose code for interfacing with the AT93C46B EEPROM.

Step 3: GSM MODEM Configuration

The GSM modem needs to be preconfigured for using with the display. This involves sending a few AT commands to it. Besides it provides an oppertunity to play with the modem and learn the AT commands for it. This also provides a quick check if the modem is working correctly. Here is how it will go.

Connect the modem to PC. using a USB to TTL or Serial to TTL gadget commonly available for arduino.

Power it up.

Send at least the following AT commands to it using a terminal software. (I use Hyperterminal)

  1. [AT+IPR=9600] set the communication baud rate to 9600bps to match with our µC.
  2. [AT+CMGF=1] for setting the message format to text (default is binary)
  3. [AT+CNMI=1,1,0,0] for making it send all recieved SMS directly to the serial port (by default it stores them and only alerts)
  4. [ATE0] Sets serial port echo to OFF(default is ON) so it disturbs us only when a message or call comes in.
  5. [AT&W] Write down this configuration pemanently.

There is huge amounts of information on the WEB about the AT commands. Do not hesitate in learning.

Step 4: Usage of the Gadget

Build the hardware. (It took me a nighter) (the coding took 2 days and 2 nighters) and writing this instructable has taken even longer (guess I am becoming old ;-))

Build the hex or bin file using the three provided .C files (you'll need a keil IDE or similar software tool)

Program an AT89C52 or compatible microcontroller

Check and double check power connections of the board. (Wrong connections can damage any thing)

Plug in the preconfigured GSM modem on board

Plug in the microcontroller keep the DEFAULTS jumper inserted and Power up.

Now remove the DEFAULTS jumper.

A moving Message saying "WAITING A MESSAGE FROM "NEW PHONE NUM " should appear.

Try sending some text messages of your own. If the modem was properly configured the messages will show on the display.

to set a master number type a message like $+923211234567 make sure the number is 13 digit long including the + sign. if your country uses a different length you will need to modify the code (thats why i gave you the code). once a master number has been properly set messages coming only from it will go on display and all others will be discarded.

Anyhow you may never like to set a master and any one knowing the number in the GSM modem may be allowed to send a message. This can be achieved using the DEFAULTS jumper.

<p>There is a Small Error in the Moving Message .c file in Line 82</p><p>The variable &quot;MESSAGE&quot; has been typed in small and the right parenthesis of the &quot;if&quot; statement is missing</p><p>replace: if (Message[i]&lt;'0'||message[i]&gt;'9'</p><p>with : if (MESSAGE[i]&lt;'0'||MESSAGE[i]&gt;'9')</p><p>and the code compiles.</p><p>sorry for inconviniences</p>
Please send me hex for this project. Am having difficulties compiling it
did you build and test the Hardware?<br>where to send the hex?<br>
<p>Thanks for sharing :)</p>

About This Instructable




Bio: Computer Engineer, Electronics Professional
More by Muzammal Baig:Port Hyperterminal to Windows 7 SMS to Moving Message Display With an 8051 
Add instructable to: