SIM800L Library for Proteus V1.1: two Arduino UNOs, the SIM800L Advance pop-up with an SMS chat and the TEP Serial Monitor showing the SMS replies

SIM800L Library for Proteus V1.1 (GSM Module + Arduino)

2.5K Views
40
700
60
25
60
PCBWay

Hello friends, I hope you all are doing great. Today, I am going to share the new SIM800L GSM Library for Proteus V1.1. The SIM800L is the small GSM module that lets an Arduino send and receive SMS and make phone calls, so it is used in almost every "control it from my phone" project: home automation, alarms, trackers and remote switches. With this SIM800L Library for Proteus, you can build and test those projects on your PC, without a SIM card, a 2 A power supply or a 2G network.

In this new version, you get two devices in one library: SIM800L Simple, which draws a virtual smartphone on the schematic, and SIM800L Advance, which opens a pop-up window with the phone and four real GSM test tools (network registration, SMS round trip, call test and AT check). I am also sharing a complete Arduino SIM800L Proteus simulation: two Arduino UNOs that switch an LED by SMS, reject calls and take AT commands from our TEP Serial Monitor.

NOTICE: This library is very special to our team. Our SIM800L model does not replay a fixed script: it learns the baud rate like the real module, registers on a simulated network, delivers SMS between modules and phones by their numbers, rings with the caller's number and pulses the RING pin, right inside Proteus. It took our team a lot of hard work, many test runs and many design changes, and this library is a tribute to that effort. Your feedback is the fuel that keeps us going, so please tell us what you think in the comments below or in the Proteus Libraries category of our forum. And if our free libraries help you in your studies or work, you can buy us a coffee (our donation page is coming soon). So, let's get started with the SIM800L Library for Proteus:

SIM800L Library for Proteus V1.1: two Arduino UNOs, the SIM800L Advance pop-up with an SMS chat and the TEP Serial Monitor showing the SMS replies
Figure: The SIM800L demo in Proteus 8.5: the circuit, the SIM800L Advance pop-up and Serial Monitor U4.

What is the SIM800L GSM Module?

The SIM800L is a quad-band GSM / GPRS module made by SIMCom. Most people buy it on the tiny red breakout board with a micro-SIM holder, a spring antenna and a NETLIGHT LED. You put a SIM card in it, and your microcontroller controls it over a UART (the two-wire TX / RX serial port) with AT commands: short text commands that start with "AT", such as AT+CSQ (how strong is the signal?) or AT+CMGS (send an SMS).

With a SIM800L, an Arduino can:

  • send and receive SMS text messages,
  • make, answer and reject phone calls and see the caller's number,
  • read the signal strength, the network operator and the network time,
  • use GPRS data (not simulated in this library, see the limitations).

GSM Terms You Will See in This Article

GSM terms
TermMeaning
AT commandA text command to the module, ending with a carriage return. The module answers OK or ERROR.
URC"Unsolicited result code": a line the module sends by itself, for example RING or +CMT for a new SMS
RegistrationThe module has found the network and logged in with its SIM (+CREG: 0,1)
CSQSignal quality from 0 to 31 (99 = no signal). 20 and more is good.
dBmThe same signal as a power level; -69 dBm is a good signal, -100 dBm is weak
Auto-baudingThe SIM800L learns your UART speed from the first "AT" it receives
SMS centreThe network part that stores an SMS until the receiving module can be reached
NETLIGHTThe module's status LED: fast blinks while searching, one blink every 3 s when registered

What's New in SIM800L Library for Proteus V1.1

  • Two devices: SIM800L Simple (SIM800LTEP, phone on the sheet) and SIM800L Advance (SIM800LADVTEP, pop-up window), on one model (TEPSIM800L.DLL).
  • Close and reopen the Simple phone: a red X in its app bar, a PANEL button on the board.
  • Board: a red PWR LED, and a ring LED round the antenna plus a lamp in its tip that light orange while the module sends and green while it receives. The NETLIGHT LED keeps its real blink patterns.
  • Four GSM test tools in the Advance pop-up: Network, SMS round trip, Call and AT check.
  • A better model: the network search now takes 2.2 - 3.2 s (2.8 - 3.4 s with a weak signal); AT+CFUN=1,1 answers OK before it restarts; a fixed baud rate no longer survives into the next run; the phone shows 60 characters per message.
  • TEP Serial Monitor in the demo instead of the Virtual Terminal, and a smarter sketch that takes AT commands from the monitor and sets the module up again after a restart.
  • Lighter package: about 1.5 MB, without the C++ source code.

SIM800L Library for Proteus: Simple vs Advance

Both devices run the same GSM model; only the panel differs:

SIM800L Simple vs Advance
FeatureSimpleAdvance
Full SIM800L model (AT commands, SMS, calls, network, RING / RST pins)✔✔
NETLIGHT and PWR LEDs, antenna ring and tip lamp, animated waves✔✔
Virtual phone drawn on the schematic✔✘
Phone in a pop-up window you can move, resize and minimise✘✔
MODULE, NETWORK and TRAFFIC cards✘✔
Network registration test (restart, radio off / on)✘✔
SMS round trip test and call test✘✔
AT check with response times✘✔
TEP Dark / Light theme, text size, Help page with Copy diagnostics✘✔
Same device name as v1.0 (old designs keep working)✔✘

Pick Simple when you want the phone on the sheet beside your circuit, and Advance when the sheet is crowded or you want to test your GSM code. The demo uses both.

Download SIM800L Library for Proteus

Click the button below to download SIM800L-GSM-Library-for-Proteus-v1.1.zip:

Download SIM800L GSM Library for Proteus V1.1
  • README.txt: a detailed guide to the files.
  • Proteus Library Files: TEPSIM800L.LIB (both devices), TEPSERIALMON.LIB and our Arduino UNO library ArduinoV3TEP.LIB / ArduinoV3TEP.IDX.
  • Proteus Model Files: TEPSIM800L.DLL and TEPSERIALMON.DLL.
  • Proteus Simulation: the demo project, the .hex file and copies of both DLLs.
  • Arduino Code: the demo sketch and AltSoftSerial 1.4 (MIT licence).

If you don't have Proteus yet, read How to Download and Install Proteus 7 and 8. New to libraries? Follow How to Install a New Library in Proteus.

How to Install SIM800L Library for Proteus

  1. Close Proteus and extract the whole zip file.
  2. Copy the four files from Proteus Library Files into the LIBRARY folder, usually C:\Program Files (x86)\Labcenter Electronics\Proteus 8 Professional\LIBRARY (on some PCs C:\ProgramData\Labcenter Electronics\Proteus 8 Professional\LIBRARY).
  3. Copy TEPSIM800L.DLL and TEPSERIALMON.DLL into the MODELS folder.
  4. Start Proteus, press P and search for SIM800. You get the Simple and the Advance device (category Peripherals > Wireless).

Updating from v1.0? Replace TEPSIM800L.LIB and TEPSIM800L.DLL, and delete any TEPSIM800L.IDX from the LIBRARY folder, or the parts list keeps showing the old device. The library was tested in Proteus 8.5; Proteus 7 is not supported.

SIM800L GSM Module in Proteus

We designed the module as a clean TEP board in the red of the real breakout, with the SIM card holder, the SIMCom SIM800L module, the NET and PWR LEDs, and the spring antenna with its black whip. Here is the SIM800L Advance on the schematic, with its pop-up window closed:

SIM800L Advance board in the SIM800L Library for Proteus with NET and PWR LEDs, the antenna and the OPEN PANEL button
Figure: SIM800L Advance: the board, the OPEN PANEL button and the ADVANCE badge.

Pinout

The six pins are in the same order as on the real breakout:

SIM800L pins
PinFunctionDemo connection
VCCPower supplySupply
RSTReset input: LOW = reset (internal pull-up)Arduino D7
RXDSerial input: AT commands from the ArduinoArduino D9
TXDSerial output: answers and URCsArduino D8
GNDGroundGND
RINGOutput: LOW while a call rings, a 120 ms LOW pulse for each new SMSArduino D2 (INT0)

LEDs, Antenna and Waves

Board animations (the same on both devices)
IndicatorWhat it shows
NETLIGHT LED64 ms on / 800 ms off while searching, 64 ms on / 3 s off when registered
PWR LED (red)On while VCC and GND are powered
Antenna ring LED and tip lampOrange while the module sends (SMS, call set-up), green while it receives
Waves above the antennaRipple out while sending, in while receiving

The board button is PANEL on the Simple (green dot SHOWN, grey dot CLOSED) and OPEN PANEL on the Advance. The SIMPLE or ADVANCE badge tells you which device you placed.

Component Properties

Double-click the module to open Edit Properties. The properties are the same on Simple and Advance:

SIM800L properties
PropertyMeaningDefault
SIMNUMSIM phone number (the module)+15555550101
PHONENUMNumber of its virtual phone+15555550191
OPERATORNetwork operator nameTEP MOBILE
SIGNALSignal at start: GOOD, WEAK or NONEGOOD
CLOCKNetwork time: PC (your PC's time and time zone) or a fixed YYYY-MM-DD HH:MM:SSPC

Every TEP SIM800L and every virtual phone in a design share one simulated network, so give each module its own numbers. In the demo, U2 uses +15555550102 and its phone +15555550192.

The Virtual Phone: SIM800L Simple

This is the part you will play with the most. Beside the Simple module, we have drawn a smartphone with a Messages app, so you can text and call your Arduino inside Proteus. A few seconds after Run, the module registers:

SIM800L Simple with its virtual phone in Proteus: REGISTERED - TEP MOBILE, CSQ 21, no messages yet
Figure: The phone after registration: REGISTERED - TEP MOBILE.

Every Control on the Phone

The SIM800L Simple phone
PartWhat it does
Status barThe network time and the signal bars
Module cardThe module's number, its state (NO POWER, IN RESET, STARTING, SEARCHING FOR NETWORK, NO SIGNAL, RADIO OFF or REGISTERED - operator), CSQ, stored SMS and the phone's own number
ConversationBlue bubbles = sent by the phone, green bubbles = received from the module, plus call events
CALL / ANSWERCalls the SIM800L, or answers a call from it
HANG UPEnds or rejects the call (the module gets NO CARRIER)
SMS: LED ON, LED OFF, STATUS, HELLOText the SIM800L (delivered after 1.5 s)
NETWORKGOOD, WEAK or NO SIGNAL
Red XCloses the phone

Switching the LED by SMS

Tap SMS: LED ON. After 1.5 s the module receives the SMS, the sketch switches LED D1 on and texts back. While the module sends the reply, the antenna's ring and tip light orange and the waves ripple outwards:

SIM800L Library for Proteus: the module sending the reply SMS, antenna ring and tip lamp orange
Figure: The module sends the reply: the antenna lights orange.

About 2 s later, the reply appears on the phone as a green bubble:

SIM800L Simple phone in Proteus: LED ON sent and the reply LED is ON received from the Arduino
Figure: "LED ON" (blue) and the Arduino's reply "LED is ON" (green).

This is exactly how a real GSM remote control works: the phone only sends text, and your sketch decides what each text means and answers by SMS.

Calling the Module

Tap CALL. The module rings with the caller's number (RING and +CLIP), the RING pin goes LOW, and the demo sketch shows the number and rejects the call with ATH. The phone shows "calling +15555550101" and "call rejected (busy)":

SIM800L GSM Proteus simulation: a call from the virtual phone rejected by the Arduino sketch
Figure: CALL: rejected by the sketch.

Closing and Opening the Phone

Need room on the sheet? Click the red X in the phone's green app bar. Only the board stays, and its button says PANEL: CLOSED with a grey dot. Click PANEL to bring the phone back; the conversation is kept, and the module keeps working while the phone is closed.

SIM800L Simple in Proteus with the virtual phone closed and the PANEL CLOSED button
Figure: The phone closed: PANEL: CLOSED.

SIM800L Advance: The Pop-Up Panel

The Advance device keeps only the board on the schematic. At Run, a TEP pop-up window opens with the look of our TEP Serial Monitor. Move it by its header, resize or minimise it, and reopen it with OPEN PANEL after you close it. The header shows the part and its state (for example U2 · REGISTERED), the tabs Phone and Test, and the theme, Settings (gear) and Help (?) icons. The toolbar chips show the module's number, the operator, the UART speed, the signal and the phone's number.

The Phone Page

The Phone page shows the same phone beside three cards. Here it is after I tapped LED ON:

SIM800L Advance pop-up in Proteus: Phone page with MODULE, NETWORK and TRAFFIC cards after LED ON
Figure: The Phone page: LED ON -> LED is ON, with the MODULE, NETWORK and TRAFFIC cards.
  • MODULE: number +15555550102, IMEI 866104021234567, firmware 1418B04SIM800L24, UART "9600 bps (auto-baud, locked)", the settings the sketch made ("text · CNMI 2,2 · CLIP 1 · ATE0") and power "running · 2 start-ups" (the sketch resets the module once at start-up).
  • NETWORK: registered, home network (+CREG 1); CSQ 22 · -69 dBm · GOOD; TEP MOBILE; registered for 26.8 s, and the search took 2.27 s; NETLIGHT 64 ms on / 3 s off.
  • TRAFFIC: 1 SMS sent · 1 received, 0 waiting at the SMS centre, 0 of 30 stored on the SIM, 14 AT commands with 0 ERROR, and the last AT exchange: "SMS text -> +CMGS: 1 OK (2024 ms)".

The TRAFFIC card is a great debugging help: it shows what your sketch really sent to the module and how long each answer took.

No Signal and the SMS Centre

Click NO SIGNAL in the NETWORK row. The module loses the network: the card turns red, CSQ 99, "searching (+CREG 2)", and the NETLIGHT blinks fast again (64 ms on / 800 ms off). Now tap LED OFF: the SMS cannot reach the module, so it waits at the SMS centre, and the TRAFFIC card says "1 waiting at the SMS centre":

SIM800L Library for Proteus: NO SIGNAL, CSQ 99, searching, and an SMS waiting at the SMS centre
Figure: NO SIGNAL: the LED OFF text waits at the SMS centre.

Click GOOD. The module searches again and registers (2.98 s in my run); the SMS centre then delivers the waiting text, LED D2 goes out, and the sketch's reply "LED is OFF" arrives on the phone. U4 prints "SMS from +15555550192: LED OFF" and "-> reply: LED is OFF (sent)":

SIM800L in Proteus: after GOOD the waiting SMS is delivered and the sketch replies LED is OFF
Figure: After GOOD: delivered, answered, 0 waiting at the SMS centre.

This is how a real GSM network behaves: an SMS to a phone without signal is not lost, it is delivered later.

With WEAK, the module stays registered with CSQ 7 - 9, and every SMS takes 5 s instead of 2 s.

The Test Page: GSM Test Tools

The Test page is what makes the Advance device special. It has four tools, and every number on it is measured on the running model, the same way your Arduino sees the module.

1. Network: How Long Until the Module is Ready?

Choose Restart or Radio off / on, then 3, 5 or 10 runs, and click Run test. Restart really restarts the module, like AT+CFUN=1,1 or a brown-out, and times every step. Here is Restart, three times:

SIM800L network registration test in Proteus: restart x 3, registered after 7.97, 7.59 and 7.97 s
Figure: Network, restart x 3: fastest 7.59 s, average 7.84 s, slowest 7.97 s.

Each bar shows the steps: +CPIN READY after 2.50 s, Call Ready after 4.00 s, SMS Ready after 5.00 s and registered after 7.97, 7.59 and 7.97 s. So after a power-up, your sketch must wait about 8 s before it can text or call.

There is a second lesson here. After a restart, the module forgets its settings and waits for "AT" again (auto-bauding). While the test ran, the demo sketch noticed it within 30 s and printed "The SIM800L restarted (settings lost) - setting it up again". A sketch without such a check would simply stop working after a brown-out.

Radio off / on switches only the radio (AT+CFUN=0, then AT+CFUN=1), so the UART and the settings stay. Registration then takes 2.3 - 3.1 s:

SIM800L radio off and on test: registration after 2.28 to 3.06 s
Figure: Network, radio off / on x 5 (PC render of the window).

2. SMS Round Trip

This test checks your sketch. Pick a text (LED ON, LED OFF, STATUS or HELLO) and 3, 5 or 10 runs. The phone texts the module, and the clock stops when the sketch's reply SMS reaches the phone. I picked STATUS and 3 runs:

SIM800L SMS round trip test in Proteus: STATUS x 3, all answered in 3.66 s
Figure: SMS round trip, STATUS x 3: 3 / 3 answered, 3.66 s each.

All three were answered in 3.66 s, split into 1.50 s network in (phone -> module), 0.12 s for the sketch (+CMT -> AT+CMGS) and 2.04 s reply back. The table also shows each reply, for example "LED ON, signal 23/31, up 101 s". Good for: finding a sketch that misses commands or answers slowly. No reply within 30 s counts as "no answer".

3. Call Test

The phone calls the module 1, 3 or 5 times. The tool measures the first RING, the +CLIP caller ID, how often and how long the RING pin went LOW, and whether your sketch answers (ATA) or rejects (ATH) the call:

SIM800L call test in Proteus: 3 calls, first RING after 2.00 s, rejected by the sketch after 0.05 s
Figure: Call test x 3: first RING after 2.00 s, all rejected 0.05 s later.

Every call rang 2.00 s after dialling with +CLIP, the RING pin went LOW once for 52 ms, and the sketch rejected it 0.05 s after the first RING. The timeline shows the dial, RING + CLIP, the RING pin and "ATH (rejected)". With a sketch that answers, the result says "answered (ATA)" and the phone hangs up after 3 s:

SIM800L call test with a sketch that answers the call with ATA
Figure: A call answered with ATA (PC render of the window).

Good for: checking the caller ID, the RING interrupt on D2 and your call handling.

4. AT Check

The AT check shows what the module's read-only queries answer right now, plus the last 8 AT commands your Arduino sent, with the reply and the response time:

SIM800L AT check in Proteus: +CPIN READY, +CSQ, +CREG, +COPS, +CMGF and the Arduino's last AT commands
Figure: AT check: 12 live queries and the Arduino's last AT commands.

In my run: +CPIN: READY, +CSQ: 21,0, +CREG: 0,1, +COPS: 0,0,"TEP MOBILE", +CMGF: 1, +CNMI: 2,2,0,0,0, +CLIP: 1,1, +CMEE: 2, +CFUN: 1, +IPR: 0 (auto-baud), +CBC: 0,80,4000 and the network clock. The Arduino had sent 35 commands with 0 ERROR replies; AT+CSQ took 25.8 ms, ATH 11.2 ms, and the SMS text 2023.8 ms (it includes the 2 s network). Good for: checking that your set-up code really put the module in text mode with the right CNMI.

Settings and Help

These pages work like in our NEO-6M Library for Proteus and HC-05 Library for Proteus. The gear icon opens Settings: theme (TEP Dark or Light), text size, open the panel at Run (On / Off) and the window size, saved for your Windows user.

Settings page of the SIM800L Advance pop-up: theme, text size, open the panel at Run and window size
Figure: The Settings page.

The ? icon opens Help & Support: eight cards (report a bug, suggest a feature, read the article, user guide, check for updates, support / donate, our website, community forum) and Copy diagnostics, which copies the module, network, traffic and test results for a bug report.

Help and Support page of the SIM800L Advance with eight cards and the Copy diagnostics button
Figure: The Help page: version v1.1, build 2026-10-05.

SIM800L with Arduino in Proteus

Now let's look at the demo. Open SIM800L-SMS-Control-ArduinoUnoV3.pdsprj from the Proteus Simulation folder. It has two Arduino UNOs from our Arduino Library for Proteus V3.0, both running the same sketch:

  • UNO 1 (ARD1) with the SIM800L Simple (U1, +15555550101, its phone +15555550191), LED D1 and Serial Monitor U3.
  • UNO 2 (ARD2) with the SIM800L Advance (U2, +15555550102, its phone +15555550192), LED D2 and Serial Monitor U4.
Complete SIM800L Arduino Proteus simulation: two Arduino UNOs, SIM800L Simple with its phone, SIM800L Advance and two TEP Serial Monitors
Figure: The complete simulation: both LEDs switched on by SMS.

Wiring

Demo wiring (the same on both UNOs)
FromToWhy
SIM800L TXDArduino D8AltSoftSerial RX: answers and URCs
SIM800L RXDArduino D9AltSoftSerial TX: AT commands
SIM800L RSTArduino D7The sketch resets the module at start-up
SIM800L RINGArduino D2INT0 interrupt for calls and new SMS
SIM800L VCC / GNDSupply / groundPower
LED + 220 ΩA0 to GNDThe LED switched by SMS
Serial Monitor RXD / TXDArduino D1 / D0Shows what the Arduino prints, sends what you type
Serial Monitor GNDGroundCommon ground (RXD2 is not used in this demo)

Want to know more about these pins? Read our Introduction to Arduino UNO.

Why AltSoftSerial and Not SoftwareSerial?

Most SIM800L examples use SoftwareSerial. In Proteus 8.5, it can send but cannot receive: it needs pin-change interrupts, which the Proteus 8.5 ATmega328P model never runs. AltSoftSerial (Paul Stoffregen, MIT licence) uses Timer1 instead, works in Proteus and on real boards, and always uses D8 (RX) and D9 (TX) on the UNO. Don't use D10 while it runs. The external interrupts INT0 / INT1 (D2 / D3) do work in Proteus, which is why RING goes to D2.

The Arduino Code

The sketch SIM800L_SMS_Control.ino first finds the module. Because the SIM800L auto-bauds, it sends "AT" until the module answers, waits for SMS Ready and sets it up:

  command("ATE0");                     // no echo
  command("AT+CMEE=2");                // errors as text
  command("AT+CMGF=1");                // SMS in text mode
  command("AT+CNMI=2,2,0,0,0");        // print new SMS directly (+CMT:)
  command("AT+CLIP=1");                // show the caller's number (+CLIP:)

Every SMS arrives as a +CMT: line followed by the text. handleSms() switches the LED and prepares the reply:

  if (!strcasecmp(text, "LED ON")) {
    digitalWrite(LED_PIN, HIGH);
    strcpy_P(reply, PSTR("LED is ON"));
  } else if (!strcasecmp(text, "LED OFF")) {

and sendSms() sends it with AT+CMGS, the "> " prompt and Ctrl+Z:

bool sendSms(const char* number, const char* text) {
  gsm.print(F("AT+CMGS=\""));
  gsm.print(number);
  gsm.print(F("\"\r"));
  if (!waitFor(">", 5000)) return false;
  gsm.print(text);
  gsm.write(26);                       // Ctrl+Z sends the message
  return waitFor("+CMGS:", 30000) && waitFor("OK", 2000);
}

Two more things make this sketch robust. It never answers unknown texts (like operator messages), and every 30 s it checks the module with AT+CMGF?; if the module has restarted and forgotten its settings, it sets it up again:

  // every 30 s: is the module still set up? (a restart / brown-out clears its settings)
  if (restarted || millis() - lastCheck > CHECK_EVERY) {

If you change the sketch, compile it and load the new HEX file into the UNOs; see How to get the HEX file from Arduino. New to Arduino? Start with our Arduino Tutorial for Beginners.

Serial Monitor Commands

The sketch also listens to the TEP Serial Monitor. Each monitor has four quick buttons for them:

Serial Monitor commands of the demo sketch
CommandWhat it does
AT...Sent to the SIM800L as typed; the answer lines are printed with " < " (quick buttons AT+CSQ, AT+CREG?)
STATUSLED, signal (CSQ), registered or not, operator, up time
TEXT <message>An SMS to the last number that texted the module (quick button "TEXT Hello from Arduino")
HELPThe command list

How to Run the Demo

  1. Open Proteus Simulation\SIM800L-SMS-Control-ArduinoUnoV3.pdsprj (keep the .hex file and both DLLs beside it).
  2. Press Run. Both Serial Monitors open at 9600 baud, and so does U2's pop-up. This design runs at about real speed.
  3. Wait about 10 s for the start-up, then tap SMS: LED ON on U1's phone and watch D1 and U3.
  4. Try CALL, NO SIGNAL + an SMS + GOOD, and the monitor's quick buttons.
  5. In U2's pop-up, open the Test tab and try the four tools while you watch U4.

Simulation Results

After Run, each monitor shows the start-up. Here is U4 in front of the circuit:

Arduino SIM800L Proteus simulation: TEP Serial Monitor showing SIM800L found, SMS Ready, CSQ 22 and TEP MOBILE
Figure: The start-up on Serial Monitor U4 (Proteus 8.5).
SIM800L SMS remote control v1.1
www.TheEngineeringProjects.com
Resetting the SIM800L...
SIM800L found
Waiting for SMS Ready... ok
Waiting for the network...
Signal:   CSQ 22 (good)
Operator: TEP MOBILE
Time:     26/10/05,16:07:23+20
Ready - SMS commands: LED ON, LED OFF, STATUS, HELLO
Serial Monitor: AT... (to the SIM800L), STATUS, TEXT <message>, HELP

The time comes from the network clock: 26/10/05,16:07:23 is 5 Oct 2026 at 16:07:23, and +20 is the time zone in quarter hours (UTC+5). When the phone texts LED ON, the monitor prints:

(RING pin went LOW)
SMS from +15555550192: LED ON
  -> reply: LED is ON (sent)

A call prints "Incoming call from +15555550192 - rejected (ATH)". And the AT+CSQ quick button sends the command through the sketch to the module:

TEP Serial Monitor in Proteus: rejected calls and the AT+CSQ command answered by the SIM800L with +CSQ: 22,0 OK
Figure: Rejected calls, then AT+CSQ -> +CSQ: 22,0 OK.

Finally, the TEXT Hello from Arduino button sends an SMS from the Arduino to the phone. It appears as a green bubble under the earlier call events:

SIM800L Advance phone in Proteus: the SMS Hello from Arduino sent from the Serial Monitor arrives on the phone
Figure: "Hello from Arduino" sent from the Serial Monitor arrives on the phone.

Read all about the monitor in TEP Serial Monitor Advance for Proteus.

SIM800L AT Commands Supported

AT commands of the SIM800L model
GroupCommands
GeneralAT, ATE0/1, ATI, ATV, ATQ, ATZ, AT&F/&W, AT+CGMI, +CGMM, +CGMR, +GSN, +CCID, +CIMI, +CPIN?, +CFUN (0, 1, 4; 1,1 restarts), +CPAS, +CBC, +CCLK?, +CMEE, +IPR; several commands on one line
NetworkAT+CREG, +CSQ, +COPS?, +CGATT?, +CUSD=1,"*123#" (balance message)
SMS (text mode)AT+CMGF=1, +CSCS, +CSCA?, +CSMP, +CNMI=2,1 (+CMTI) or 2,2 (+CMT), +CMGS with the "> " prompt, Ctrl+Z / ESC, +CMGR, +CMGL, +CMGD, +CMGDA, +CPMS (30 messages)
CallsATD+number;, ATA, ATH, RING + +CLIP every 3 s, AT+CLCC
UnknownERROR, and the command is named in the Simulation Log

Without network, AT+CMGS answers ERROR / +CMS ERROR 331 after 2 s. SMS sent to a module that is not registered wait at the SMS centre and are delivered when it registers.

Troubleshooting

"No answer from the SIM800L"

TXD must go to D8 and RXD to D9; the sketch must use AltSoftSerial and send "AT" first (auto-bauding).

SMS Arrive but the Sketch Sees Nothing

Send AT+CMGF=1 and AT+CNMI=2,2,0,0,0. The phone shows a tip while the module is still in PDU mode.

The Phone Says SEARCHING FOR NETWORK

Wait about 3 s after SMS Ready, and check that NETWORK is not set to NO SIGNAL.

My Sketch Stops Working After a Restart

After the Network test, AT+CFUN=1,1 or a RST pulse, the module auto-bauds again and has forgotten its settings. Send "AT" and set it up again, like the demo sketch does every 30 s.

No Phone, No Pop-Up or No Monitor

TEPSIM800L.DLL or TEPSERIALMON.DLL is missing from MODELS and the project folder. For the Advance, click OPEN PANEL or turn "Open the panel at Run" back on in Settings.

Things to Know Before Using a Real SIM800L

  • Power: the SIM800L needs 3.4 - 4.4 V that can deliver 2 A peaks, typically a Li-ion cell or a buck converter set to 4.0 V. Never use the Arduino's 5 V or 3.3 V pin.
  • 2.8 V logic: put a divider between the Arduino's D9 and RXD: 10 k from D9 to RXD and 12 k from RXD to GND gives about 2.7 V.
  • 2G only: the SIM800L works only on 2G (GSM) networks, which are switched off in some countries.
  • Brown-outs: when the supply dips during a transmission, the real module resets. The Network test's Restart shows what that does to your sketch.

Limitations of the Simulation

  • Not modelled: GPRS / TCP / HTTP / FTP / email, PDU-mode SMS (AT+CMGF=0 commands answer +CMS ERROR 304), audio, DTMF, the SIM phone book, AT+CNUM, sleep modes, the DTR pin and the supply current.
  • The network is a simulation: no real SIM, operator or SMS centre is involved.
  • Tested in Proteus 8.5 (the demo and every Proteus screenshot in this article) and with 758 automatic checks on the PC; Proteus 7 is not supported.

Need GPS too? Try our SIM808 Library for Proteus, which adds a GPS receiver to the GSM module, or our NEO-6M Library for Proteus.

So, that was all about the SIM800L GSM Library for Proteus V1.1. I hope the virtual phone, the test tools and the demo make GSM projects much easier to understand. Please share your feedback in the comments or in our forum, and if you have any questions, ask in the comments and I will help you out. Till the next tutorial, take care and have fun!


Comments

0

Join the conversation