Collegamento shield SIM900

Ragazzi ho questa shield e vorrei collegarla ad un arduino mega usando la seriale Hardware usando questo ssketch

//ERFINDER CODE
#include <SoftwareSerial.h>

SoftwareSerial mySerial(14, 15);

void setup()
{
  mySerial.begin(9600);   // Setting the baud rate of GSM Module  
  Serial.begin(9600);    // Setting the baud rate of Serial Monitor (Arduino)
  delay(100);
}


void loop()
{
  if (Serial.available()>0)
   switch(Serial.read())
  {
    case 's':
      SendMessage();
      break;
    case 'r':
      RecieveMessage();
      break;
  }

 if (mySerial.available()>0)
   Serial.write(mySerial.read());
}


 void SendMessage()
{
  mySerial.println("AT+CMGF=1");    //Sets the GSM Module in Text Mode
  delay(1000);  // Delay of 1000 milli seconds or 1 second
  mySerial.println("AT+CMGS=\"+91xxxxxxxxxx\"\r"); // Replace x with mobile number
  delay(1000);
  mySerial.println("I am SMS from GSM Module");// The SMS text you want to send
  delay(100);
   mySerial.println((char)26);// ASCII code of CTRL+Z
  delay(1000);
}


 void RecieveMessage()
{
  mySerial.println("AT+CNMI=2,2,0,0,0"); // AT Command to recieve a live SMS
  delay(1000);
 }

ma non riesco a ottenere comunicazione, cosa sbaglio?
Collego il

  • pin D1 (RX) della shield al pin 15 (RX3) del mega
  • pin D0 (TX) della shield al pin 14 (Tx3) del mega

Consigli?

  1. Se vuoi usare la seriale HW mi spieghi perché usi la SoftwareSerial ? ? ? :o :o :o Usa le VERE seriali di Arduino/Genuino MEGA (Serial1, Serial2, Serial3) !

  2. Hai sbagliato il collegamento …

TX GPS -----> RX di Arduino
RX GPS <----- TX di Arduino

Guglielmo

Collego il

  • pin D1 (RX) della shield al pin 15 (RX3) del mega
  • pin D0 (TX) della shield al pin 14 (Tx3) del mega

Devi rimuovere i due ponticelli di selezione della Serial Port e collegare i due pin centrali (Rx sopra e Tx sotto) alla porta Serial3 della MEGA (TX3 = 14 e RX3 = 15), con l'inversione suggerita dal buon Guglielmo.

Vi ringrazio ragazzi, purtroppo sono molto inesperto in questo ambito.

A mio fratello serve il mega per cui ho dovuto riprendere in mano l’Arduino UNO e mi trovo costretto ad usare la software serial.

Uso quindi questo codice:

//ERFINDER CODE
#include <SoftwareSerial.h>

SoftwareSerial mySerial(6, 7);

void setup()
{
  mySerial.begin(9600);   // Setting the baud rate of GSM Module  
  Serial.begin(9600);    // Setting the baud rate of Serial Monitor (Arduino)
  delay(100);
}


void loop()
{
  if (Serial.available()>0)
   switch(Serial.read())
  {
    case 's':
      mySerial.println ('s');
      SendMessage();
      break;
    case 'r':
      RecieveMessage();
      break;
  }

 if (mySerial.available()>0)
   Serial.write(mySerial.read());
}


 void SendMessage()
{
  mySerial.println("AT+GSV");    //Sets the GSM Module in Text Mode
  delay(1000);  // Delay of 1000 milli seconds or 1 second
  mySerial.println("AT+CMGS=\"3384359123\"\r"); // Replace x with mobile number
  delay(1000);
  mySerial.println("Sono un test");// The SMS text you want to send
  delay(100);
   mySerial.println((char)26);// ASCII code of CTRL+Z
  delay(1000);
}


 void RecieveMessage()
{
  mySerial.println("AT+CNMI=2,2,0,0,0"); // AT Command to recieve a live SMS
  delay(1000);
 }

Mettendo i connettori in questo modo:

Ovvero in “Software serial” (quindi coi connettori messi a “sinistra”) collego i pin 7(TX) e 8(RX) della shield gps rispettivamente ai pin 6(RX) e 7(TX) dell’Arduino.

Ho provato anche a cambiare la velocità di trasferimento ma niente.
Devo collegare anche altro tra arduino e shield?
Secondo me faccio qualche errore davvero stupido.
Grazie per la pazienza

Il GND spero bene tu l'abbia connesso tra le due schede ... ::slight_smile:

Guglielmo

Non lo avevo fatto... doh

Grazie infinite Guglielmo =)