Thank you for visiting → Compete For Nothing.com ←
If you find anything useful leave me a comment and share.
Interested in Rapberry Pi, Arduino, C#, Unity3D, Game Creation, VB.NET, learning and most important of all Sharing!.

146 Comments

Hello. I am using a Arduino Mega 2560 R3 with an IcomSat V1.1 Shield and i cannot get it to communicate to serial port. I tried your example with the library in your post and the sitatuations remains the same (answers IDLE).
When i follow the instructions in the instructions folder (UNO to Mega), i am unable to compiie.
Seems that the library is not working properly, do you have any tips?
Thanks in advance,
Tiago

hi, i am using arduino UNO and icomsat v1.1. I’ve downloaded the library and installed it. I also use an external 1A power supply to boot up the gsm shield. But it wouldnt work, it still shows “idle” and no response. Is there anything im missing out? thanks

I’m feeding the arduino with a power 12V 2A and early in the IcomSat button you SIM900-POWER. The bibioteca when I make changes gives error while compiling, I do not understand why it does not work, you can send me one to test? Thank you.

i had the same issue, the only way i managed to make it work is, to use the official library, from icomsat website, DO NOT use newsoft serial with the mega as it is limited and will not work well, any way you have 4 serial ports on the mega so why not spare 1 for the shield !!, i have connected pin 19 of the mega to the rx of the shield and pin 18 of the mega to the tx of the shield,

Open the file gsm shield and make the replacements of the newsoft serial to serial1.

// if defined – debug print is enabled with possibility to print out
// debug texts to the terminal program
//#define DEBUG_PRINT

// if defined – debug print is enabled with possibility to print out
// the data recived from gsm module
//#define DEBUG_GSMRX

// if defined – debug LED is enabled, otherwise debug LED is disabled
//#define DEBUG_LED_ENABLED

// if defined – SMSs are not send(are finished by the character 0x1b
// which causes that SMS are not send)
// by this way it is possible to develop program without paying for the SMSs
//#define DEBUG_SMS_ENABLED

enum comm_line_status_enum
{
// CLS like CommunicationLineStatus
CLS_FREE, // line is free – not used by the communication and can be used
CLS_ATCMD, // line is used by AT commands, includes also time for response
CLS_DATA, // for the future – line is used in the CSD or GPRS communication
CLS_LAST_ITEM
};

Hello,
I have some problem with the beta library for the icomsat v1.1
I discover that pins for GSM_ON and GSM_REST are not initialized as OUTPUT with the pineMode function.
I add it and i am now able to switch on and of the SIM 900 module.

For now, the example furnished inside the folder of the library send SMS sent, I never receive the SMS. I just know the connection with the SIM900 is OK. I want to work inside the library and I activated the compiler switch “DEBUG_PRINT”. With this variable defined, the library doesn’t compile any more because the method DebugPrint is not implemented yet.
In fact, can you explain me what is the argument last_debug_print ?
If i understand what is it, I can try to implement it by myself.
Can you send me the core of the DebugPrint methode or a new version of the library (I have the beta version 3).

I dont really follow what your asking, I have’nt looked at the Debug_PRINT code… but the data sheet is pretty useless iteadstudio.com/store/images/produce/Shield/IComSat/icomsat_DS1.2.pdf . I will have a read of the library in a few days and see if I can make sense from it.

I have Uno SMD Rev3 (original) and IComSat 1.1
Jumpers were set as pictured on image at the beginning of the topic, and connected to regular USB 2.0 port from my old PC. At first, output was like this: (for those who don’t know how to see output – there is small magnifier icon in the top right corner of Arduino IDE where you write program)

Hi mate I actually don’t have the library and sketch with me and I won’t get back home for about 10 days. But the whole sketch is posted into this post and under the images there is a link to the library. Come back and let us know when you get it going.

good evening my dear friends,
i need your HELP, trying to communicate arduino MEGA 2560 – icomsat 1.1.
I will prescribe the steps one by one like a revision, in order to be clear every step.
STEP_1:
Procedure:
• connect MEGA2560 to pc with usb cord
• upload the scetch of this article
observations
• only the MEGA and NOT the icomsat must be connected
• the only power supply of the MEGA is the USB cord of the connection with the pc
questions
– are the observations right
– is the procedure right

STEP_2:
Procedure:
• connect MEGA2560 to icomsat (as the first picture of this article)
observations
• MEGA is still connected to the pc via usb cord
• To my arduino software by the time I connect icomsat to MEGA the COM port my pc and MEGA communicate (COM24) evanished
questions
– are the observations right
– is the procedure right
– we must have power supply to icomsat?
– Because COM24 is evanisthed is there any other way for me to communicate serial with MEGA
– How can I understand if icomsat is turned on???
– How it is possible to turn on icomsat without using the four digit password of SIM card??

That’s for now. I understand that for you who Know all this, are tiring and boring these questions, but believe me for us is too too important Knowledge. Thanks anyway.

Warren
First of all let me thank you for such a great work making tutorials for all of us who want to learn and use Arduino.
I am new to arduino and new to GSM/GPRS world. I have purchased a IComSat V1.1 and a Arduino UNO and want to use the shield to send serial data collected by the Arduino to a website so that information can be processed there (basically, I am sensing the temperature in different areas of a home and want to send them to a server for further analysis).
I see your example of the SMS and I think that perhaps with some changes I could make the SIM900 work sending data to the internet via GPRS.
Now the question is: How do I communicate with the SIM900 to set it up with the appropriate AT commands?
I know that this might look as a silly question, but honestly I don’t know how to communicate physically with the SIM900.
Should I use the USB connection in the Arduino? Do you, or anybody, have any idea how to make the connection between my PC and the IComSat for the programming? Is there any special application that I should use?
Thank you in advance for any comment or help.
Best regards
Jorge

Hi Jorge,
sending DATA via GPRS can be done apparently but I was unable to understand how so I gave up :( .

What distance are you planning on being away from you ARDUINO project?
would a APC220 suit your needs? I got about 650 meters using stock antenna(from inside my house, would easy get 1 kilometer los). Also APC230 is meant to get about 1800 meters.

I AM NEW TO ARDUINO. I AM USING ARDUINO MEGA AND ICOMSAT V1.1. I TRIED TO SEND SMS. BUT THE DEVICS IS NOT COMMUNICATING. ANYONE PLEASE TELL ME THE JUMPER SETTING FOR HARDWARE SERIAL COMMUNICATION. I RAED THE DATASHEET. BUT I DON’T UNDERSTAND. AND TELL ME HOW TO CONNECT EXTERNAL POWER SUPPLY…I MEAN TO WHICH PIN? DBG_PORT POWER KEY?

I have three doubts:
1. How to read an sms and use it as an command to make an led glow, can you give me the code for that.

2. This code for sending sms works perfect but, it keeps on sending sms continuously, how should I modify the code to send the sms only once when an event occurs, say, when analog read value goes above the preset value.

3. How should I modify the code to send the analog read value or some floating point variable’s value.

// if the current state is HIGH then the button
// wend from off to on:
button22PushCounter++;
Serial.println(“on”);
Serial.print(“number of button22 pushes: “);
Serial.println(button22PushCounter);

if(started){
if (sms.SendSMS(“+918281458007″,”R900”))// number to which you want to send the sms and the sms text//
Serial.println(“\nSMS sent R900 OK”);
delay(300);

}

else {
// if the current state is LOW then the button
// wend from on to off:
Serial.println(“off”);

}
}

}
lastButtonState22 = buttonState22;
// compare the buttonState to its previous state
if (buttonState23 != lastButtonState23) {
// if the state has changed, increment the counter
if (buttonState23 == HIGH) {
// if the current state is HIGH then the button
// wend from off to on:
button23PushCounter++;
Serial.println(“on”);
Serial.print(“number of button23 pushes: “);
Serial.println(button23PushCounter);

if(started){
if (sms.SendSMS(“+918281458007″,”R500”))// number to which you want to send the sms and the sms text//
Serial.println(“\nSMS sent R500 OK”);
delay(300);

}

else {
// if the current state is LOW then the button
// wend from on to off:
Serial.println(“off”);

}
}
}
lastButtonState23 = buttonState23;
// compare the buttonState to its previous state
if (buttonState24 != lastButtonState24) {
// if the state has changed, increment the counter
if (buttonState24 == HIGH) {
// if the current state is HIGH then the button
// wend from off to on:
button24PushCounter++;
Serial.println(“on”);
Serial.print(“number of button24 pushes: “);
Serial.println(button24PushCounter);

if(started){
if (sms.SendSMS(“+918281458007″,”R100”))// number to which you want to send the sms and the sms text//
Serial.println(“\nSMS sent R100 OK”);
delay(300);

}

else {
// if the current state is LOW then the button
// wend from on to off:
Serial.println(“off”);

}
}
}
lastButtonState24 = buttonState24;
// compare the buttonState to its previous state
if (buttonState25 != lastButtonState25) {
// if the state has changed, increment the counter
if (buttonState25 == HIGH) {
// if the current state is HIGH then the button
// wend from off to on:
button25PushCounter++;
Serial.println(“on”);
Serial.print(“number of button25 pushes: “);
Serial.println(button25PushCounter);

if(started){
if (sms.SendSMS(“+918281458007″,”R50”))// number to which you want to send the sms and the sms text//
Serial.println(“\nSMS sent R50 OK”);
delay(300);

}

else {
// if the current state is LOW then the button
// wend from on to off:
Serial.println(“off”);

}
}
}
lastButtonState25 = buttonState25;
// compare the buttonState to its previous state
if (buttonState26 != lastButtonState26) {
// if the state has changed, increment the counter
if (buttonState26 == HIGH) {
// if the current state is HIGH then the button
// wend from off to on:
button26PushCounter++;
Serial.println(“on”);
Serial.print(“number of button26 pushes: “);
Serial.println(button26PushCounter);

if(started){
if (sms.SendSMS(“+918281458007″,”OV SC”))// number to which you want to send the sms and the sms text//
Serial.println(“\nSMS sent OV SC OK”);
delay(300);

}

else {
// if the current state is LOW then the button
// wend from on to off:
Serial.println(“off”);

}
}
}
lastButtonState26 = buttonState26;
// compare the buttonState to its previous state
if (buttonState27 != lastButtonState27) {
// if the state has changed, increment the counter
if (buttonState27 == HIGH) {
// if the current state is HIGH then the button
// wend from off to on:
button27PushCounter++;
Serial.println(“on”);
Serial.print(“number of button27 pushes: “);
Serial.println(button27PushCounter);

if(started){
if (sms.SendSMS(“+918281458007″,”PO 0”))// number to which you want to send the sms and the sms text//
Serial.println(“\nSMS sent PO 0 OK”);
delay(300);

}

else {
// if the current state is LOW then the button
// wend from on to off:
Serial.println(“off”);

}
}
}
lastButtonState27 = buttonState27;
// compare the buttonState to its previous state
if (buttonState28 != lastButtonState28) {
// if the state has changed, increment the counter
if (buttonState28 == HIGH) {
// if the current state is HIGH then the button
// wend from off to on:
button28PushCounter++;
Serial.println(“on”);
Serial.print(“number of button28 pushes: “);
Serial.println(button28PushCounter);

if(started){
if (sms.SendSMS(“+918281458007″,”PO 1”))// number to which you want to send the sms and the sms text//
Serial.println(“\nSMS sent PO 1 OK”);
delay(300);

}

else {
// if the current state is LOW then the button
// wend from on to off:
Serial.println(“off”);

}
}
}
lastButtonState28 = buttonState28;
// compare the buttonState to its previous state
if (buttonState29 != lastButtonState29) {
// if the state has changed, increment the counter
if (buttonState29 == HIGH) {
// if the current state is HIGH then the button
// wend from off to on:
button29PushCounter++;
Serial.println(“on”);
Serial.print(“number of button29 pushes: “);
Serial.println(button29PushCounter);

if(started){
if (sms.SendSMS(“+918281458007″,”DOL”))// number to which you want to send the sms and the sms text//
Serial.println(“\nSMS sent DOL OK”);
delay(300);

}

else {
// if the current state is LOW then the button
// wend from on to off:
Serial.println(“off”);

}
}
}
lastButtonState29 = buttonState29;
// compare the buttonState to its previous state
if (buttonState30 != lastButtonState30) {
// if the state has changed, increment the counter
if (buttonState30 == HIGH) {
// if the current state is HIGH then the button
// wend from off to on:
button30PushCounter++;
Serial.println(“on”);
Serial.print(“number of button30 pushes: “);
Serial.println(button30PushCounter);

if(started){
if (sms.SendSMS(“+918281458007″,”T HI”))// number to which you want to send the sms and the sms text//
Serial.println(“\nSMS sent T HI OK”);
delay(300);

}

else {
// if the current state is LOW then the button
// wend from on to off:
Serial.println(“off”);

hi warren, i received the error same as what BHC post here. im using the code you provided and the libraries from the link under the image without editing. what i did is just stack the icomsat v1.1 (sim900) to arduino(Uno Rev3) without any wire connection. i had plugged in the usb cable and the 9v/2A adapter. did i missed up anything to solve the error?

================================================================
sketch_mar13a.cpp:1:20: error: SIM900.h: No such file or directory
sketch_mar13a.cpp:3:17: error: sms.h: No such file or directory
sketch_mar13a.cpp:4:2: error: invalid preprocessing directive #SMSGSM
sketch_mar13a.cpp: In function ‘void setup()’:
sketch_mar13a:12: error: ‘gsm’ was not declared in this scope
sketch_mar13a:19: error: ‘sms’ was not declared in this scope
================================================================

Hello! thanks for your codes! they are really useful!
I need help with a sketch, what should i write if i want a pin on the arduino to be HIGH when a Particular SMS is received? and LOW when another Particular SMS is received?

For example, when arduino receives “on” pin 13 is HIGH and when it receives “OFF” pin 13 is LOW

Hello, I new using Arduino, I have Arduino One, and a need send sms, i have de icomsat, but i dont know if I need a external supply for de arduino one as arduine mega. Can you help me please and show me how i can do it.

because i run the coding you provided with the libraries from the link, but i did not received any sms from the shield. i had check the pin and and the country code all are correct. just wonder do i need to set/modify the message service centre number in libraries? the command should be something like this>> AT+CSCA = (number of telecom operator)

hi warren, i found my mistake already. the reason i did not received sms from shield is DO NOT stack the gsm shield onto arduino uno BEFORE uploading the sketch. means that upload coding first, then stack the gsm shield and compile it.
thanks for your coding and libraries.

Hi Warren, im using the UNO with the IcomSat v1.1, pins tx2 rx3. External power of 5v 2A, but still nothing…it cant be more power the problema…the shield specifications says the pulse use 1A and for voltaje uses 3v…so WTF! hahaha…it’s been like six months since i bought this shield and still cant use it.

ps: i uploaded the code before ataching the shield.
ps2: I’m really frustrated…
ps3: Does anybody know for which IDE versión, the original libraries from iteadstudio are made for?

DelayLama I think the voltage you are trying to use is to low, the shield is powered by 3v but the Arduino will supply that voltage. Most people have better luck using a 12v 2A pwer supply connected to the Arduino.
Also did you download the library from the link at the top of the page? because the library from Icomsat doesnt seem to work for most people.

I’m not sure how to pass a SIM PIN number. With using this with the leonardo im not sure as i have had many problems using the leonardo with windows 8 so have shelved it. Emulating a mouse or keyboard was the reason for buying it :)

have a look at the picture in this post and notice the jumpers, make sure they are the same if you are using this library. also most people get better luck with using 9v instead of 12v I dont know why.

Hi,
I manage to send an SMS with you example, but when I try your code for reciving SMS i get some errors. I don`t think it is possible to use this example with the lib. Do you have a example that works?

Hey Ellevs ,
I have not tested the Receive SMS code myself a visitor send me that code (originaly came from arduino.cc), I have not actually tried receiving an SMS yet so im sorry to say i dont have a working example. But it should work just expect pain while trying lol

It’s great to get your kid involved in having some fun while learning
some things; it’s also fun for adults. Try it now, and you will
enjoy and get this game addict. Another changes that can lure the developers for Android development are creation of marketplace by
creating Google Play store so it can give some organized way of marketing for Android application development products by eliminating spam apps as well as useless free apps
and piracy.

i am using sim 900 gsm module shield and arduino mega 2560 for a project.so i am giving a extranal power to mega board 9Vand 0.75A power source.is it enough to properly work this.plz help me.and also what is the pins that we should define for rx and tx in mega 2560?.thank you.

i am using the arduino 1.0.5 version.so has any affetive when we are programming the mega board?and also can we use the receive the sms using sim 900 module properly?if u can send me the code for send sms and receive sms.it will big help.
thank u.

i tried with this literary before but it didnt work.And also i cant see clearly the jumper wires connected pins in the picture.plz shall u tell me how should be the position of jumpers on the sim 900 gsm module. thank u.

Hello Warren,
i am learner of ardiuno and i hadn’t work on gsm, i am using fly sim 900 as a gsm module
My project is like that whatever msg i am sending to ardiuno that is to be displayed on 16*2 lcd.
So i want code for that. Please help me.

I tried to use your code with the libraries you suggested, but got this as response through the serial monitor. Sorry if it chews up too much space, but i fear editing would render it impossible to decipher. I’ve done some stuff with arduino earlier, but this gsm stuff seems to be way over my head. Thx beforehand.

Tuomas.

ps. As you can probably tell, I’m not a native speaker/writer. Sorry for any typos.

Hi Aldinal,
That error means your Icomsat GSM is turned off, what should happen is when trying to make a call or send and SMS the library checks to see if the GSM is OFF and if it is then sends a command to turn it on.

Hey Salva,
1. I am not sure about powering from a 12v 1.8Ah battery for 6-7h because the datasheet is not clear on power requirements, it is very vague as it doesnt specify at what voltage it consumes the amps. Apparently the Icomsat can draw burst up to 2A but im not sure why it would, but if you turn off the icomsat and only use it every so often I cant see why it wouldnt last days.

2. If you are using the library from imall.iteadstudio.com/im120417009.html . The pin 9 of Arduino interface is

connecting to PWRKEY, and a high pulse with 400us wide can power on/off it.

Hey Salva,
I had a quick look at that library and in the GSM.cpp it looks like he is turning on the GMS using this (on line 71)
// generate turn on pulse
digitalWrite(GSM_ON, HIGH);
delay(1200);
digitalWrite(GSM_ON, LOW);
delay(10000);
WaitResp(1000, 1000);

so try that with a button and see if you can toggle on and off, let me know how you go.

Warren, looks like you anre the one to go to when having issues. I know this is kind of stupid, but could you send me a picture or photo of the power connection to the sim900, just to make sure I’m right.

Hey Warren, I have the same problem as the guy above, here’s what I did,
1. Put the jumpers correctly on the board as you did
2. Download all the libraries and source code that you posted
3. Hooked up 12V and 2.5A , as well as USB plug from computer
4. Uploaded the Source Code
5. Connected the GSM Shield onto the Arduino Uno
6. Pressed SIM900-Power Button for 3sec to turn on the SIM900
7. Then Compile the arduino and checked the Serial Monitor
8. But it still says DB:No Response, Forcing baud rate from 1200-115200,
ERROR: SIM900 doesn’t answer. Check power and serial pins in GSM.cpp
status=IDLE

I’m using the same devices as you are with Arduino Uno and ICOMSAT v1.1 GSM Module
Can you give me some help? I have absolutely no idea why this isn’t working

Hi,
When i am uploading the following code in my Arduino UNO , i am getting the final error.
This report would have more information with
“Show verbose output during compilation”
enabled in File > Preferences.
Arduino: 1.0.6 (Windows NT (unknown)), Board: “Arduino Uno”
In file included from sketch_oct02a.ino:36:
C:\Program Files\Arduino\libraries\GSM_Shield/GSM_Shield.h:10:22: error: WProgram.h: No such file or directory
sketch_oct02a.ino:39:18: error: SIM900: No such file or directory
sketch_oct02a.ino:40:15: error: GSM: No such file or directory
sketch_oct02a.ino:43:17: error: sms.h: No such file or directory
In file included from C:\Program Files\Arduino\libraries\GSM_Shield/GSM_Shield.h:11,
from sketch_oct02a.ino:36:
C:\Program Files\Arduino\libraries\GSM_Shield/NewSoftSerial.h:71: error: conflicting return type specified for ‘virtual void NewSoftSerial::write(uint8_t)’
C:\Program Files\Arduino\hardware\arduino\cores\arduino/Print.h:48: error: overriding ‘virtual size_t Print::write(uint8_t)’
In file included from sketch_oct02a.ino:36:
C:\Program Files\Arduino\libraries\GSM_Shield/GSM_Shield.h:149: error: redefinition of ‘class GSM3ShieldV1AccessProvider’
C:\Program Files\Arduino\libraries\GSM/GSM3ShieldV1AccessProvider.h:42: error: previous definition of ‘class GSM3ShieldV1AccessProvider’
sketch_oct02a.ino: In function ‘void setup()’:
sketch_oct02a:53: error: ‘gsm’ was not declared in this scope
sketch_oct02a:60: error: ‘sms’ was not declared in this scope

I bought the Icomsat 1.1 shield and the Arduino Uno board. With this library, I could sent messages and receive messages, but in different programs. Now i want to do both things in one code, in order to send notification, or the posibility of decodificate the message and control outputs of my system. Could you help me? because I tried but I have no success. I hace many errors with the library.

First of all thanks you for this tutorial. Very usefull!! I have sent and received sms but in differents codes, now i want to do all in the same code. could you help me? I tried with a combination of the both code that you have upload, but i get many compilation errors.
Other thing is that you’re not able to send a value of a variable directly with this library. Do you have any idea to solve this issues?

Hi, I tried everything, I change the jumper following the location at the image. but still NO RESP.
I connect RX arduino to TX gsm. TX arduino to RX gsm. Gnd arduino to gnd gsm. and 5v from arduino to P-KEY on the gsm module. Is that correct? Pls help.

i want to ask how to stop sending sms since the code for send sms in the void loop. are there any code to stop the sms from looping?
here my code:
void loop()
{
bb=digitalRead (8);
if (bb==LOW){
Serial.println (“the msg will be send”);
delay(2000);
sms.SendSMS(“3471234567”, txtMsg);
Serial.println(“\nSMS sent OK”);
sms.endSMS;//here this code not suitable with the library************(hope you can give the solution)
delay (10000);

Hi Yura,
Thanks heaps for sharing this info, now I understand why so many of my visitors are having the same issue using the R3. I will make a new tutorial for the R3, thanks alot for the fix many people will be able to complete their projects now :)

I have connected Arduino UNO with the Icomsat and also two sensors. I inserted external power 12V 1A to the Arduino and the Arduino now damaged. Maybe I made a wrong connection. Could you please teach me the connection of the external supply with Arduino and Icomsat? Thank you. :)