Sim900 werid symbols

So I recently bought a sim900 gprs shield v2.1 from Seeed. I’ve been following tutorials to get it up and running to receive SMS but whenever I boot it up having it broadcast to a serial monitoring program, all I get are weird symbols. Usually }¾üüüüüüüüüü or þþþþþþÿ. I’ve read that the ÿ is somewhat common but there are a few different answers out there. Never seen the }¾üüüüüüüüüü or þ in any other posts though. No idea how to troubleshoot or anything. The real kicker though is sometimes it works fine. Once in a blue moon I’ve gotten it to boot correctly and it was able to send and receive SMS just fine. The LEDs function correctly too, regardless of serial output. The program I’m using is an example program copied straight from the seeed wiki allowing for AT commands to be used. Also, on a side note, What’s the button cell battery socket for? Powering just the sim900? What’s the point in using a battery for the sim900 instead of just using the power supply from the arduino? I doubt you could get enough power anyway from a tiny battery. Thanks in advance.

If you’d like, the program:

//Serial Relay - Arduino will patch a 
//serial link between the computer and the GPRS Shield
//at 19200 bps 8-N-1
//Computer is connected to Hardware UART
//GPRS Shield is connected to the Software UART 
 
#include <SoftwareSerial.h>
 
SoftwareSerial GPRS(7, 8);
unsigned char buffer[64]; // buffer array for data recieve over serial port
int count=0;     // counter for buffer array 
void setup()
{
  GPRS.begin(19200);               // the GPRS baud rate   
  Serial.begin(19200);             // the Serial port of Arduino baud rate.
 
}
 
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
}
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
}

That type of corruption usually suggests the is bitrate wrong, or there maybe wiring errors.

Also - is your serial monitor/terminal set to 19200, or some other bit rate? The corruption may be between the Arduino and serial monitor, not the Arduino and modem...

lastchancename: That type of corruption usually suggests the is bitrate wrong, or there maybe wiring errors.

Also - is your serial monitor/terminal set to 19200, or some other bit rate? The corruption may be between the Arduino and serial monitor, not the Arduino and modem...

I am very sure the problem is not the serial monitor or the cable. Other serial reading and writing works perfectly fine, including when the sim900 board is attached and on and with multiple serial pc programs. I have used more than 1 cable as well. Also, if what you suggest were the case, why would it have worked previously? I believe the problem is something I have done wrong.

ok, to eliminate the environment, create a Comms loop back... first, simply in the serial monitor cable (no sketch running), then by modifying your sketch to perform a [u]software[/u] loopback to Serial.

Remove as many elements as possible, then start adding them back. Troubleshooting 101

Good luck !