Go Down

Topic: GSM shield with Arduino Nano (Read 300 times) previous topic - next topic


Hi, I have gotten my SIM900 to work with an arduino mega, but I am struggling to get it to work with arduino Nano. When I use the SendSMS script provided in the GSM library it gives me this error along with other similar ones:

C:\Users\crburke3\Documents\Arduino\libraries\ArduinoGSM\examples\SendSMS\SendSMS.ino:48:34: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

     if (gsmAccess.begin(PINNUMBER) == GSM_READY) {


C:\Users\crburke3\Documents\arduino-1.8.5\libraries\GSM\src\GSM3MobileMockupProvider.cpp: In constructor 'GSM3MobileMockupProvider::GSM3MobileMockupProvider()':

C:\Users\crburke3\Documents\arduino-1.8.5\libraries\GSM\src\GSM3MobileMockupProvider.cpp:44:12: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]


C:\Users\crburke3\Documents\arduino-1.8.5\libraries\GSM\src\GSM3SoftSerial.cpp:273:11: error: '__RXPIN__' was not declared in this scope

   pinMode(__RXPIN__, INPUT);

I can post all the errors but its a substantial list. Ultimately I need to send texts from my Nano.


I have had nearly same problems. As far as I know, you will have to make change inlib GSM.a in order to use other boards than Mega. Would suggest you try this in stead:
Remember to put your number instead of    CCyournumber    where CC is your Contry Code

Code: [Select]
#include <SoftwareSerial.h>

SoftwareSerial GPRS(7, 8);         //7 = TX, 8 = RX
unsigned char buffer[64]; //port
int count=0;     
int i = 1;                         //if i = 0, send SMS. Hvis sat til 0, vil sms med "test" blive sendt ved start op.
void setup(){
  GPRS.begin(19200);               // the GPRS baud rate   
  Serial.begin(19200);             // the Serial port of Arduino baud rate.
  Serial.print("I'm ready ");

void loop(){
  if (GPRS.available()){         // if date is comming from softwareserial port ==> data is comming from gprs shield

    while(GPRS.available()){          // reading data into char array
      buffer[count++]=GPRS.read();     // writing data into array
      if(count == 64)break;
  Serial.write(buffer,count);            // if no data transmission ends, write buffer to hardware serial port
  clearBufferArray();              // call clearBufferArray function to clear the storaged data from the array
  count = 0;                       // set counter of while loop to zero

if (Serial.available())            // if data is available on hardwareserial port ==> data is comming from PC or notebook
  GPRS.write(Serial.read());       // write it to the GPRS shield
  if(i == 0){
    GPRS.print("AT+CMGF=1\r"); //sending SMS in text mode
    GPRS.print("AT+CMGS=\"+CCyournumber"); // phone number
    GPRS.print("Test\r"); // message
    GPRS.write(0x1A); //send a Ctrl+Z(end of the message)
    Serial.println("SMS sent successfully");

void clearBufferArray(){              // function to clear buffer array
  for (int i=0; i<count;i++){
    buffer[i]=NULL;                  // clear all index of array with command NULL

Go Up