Bonjour,
Cela fait quelques jours que je me suis penché sur ce problème, j'essaie d'utiliser le shield arduino gsm/gprs pour envoyer un message mais il ne fonctionne pas avec l'arduino MEGA. Alors qu'avec un arduino UNO, il fonctionne parfaitement sans effectuer de changement de soft ou d'hardware.
En effectuant des recherches (merci google) j'ai vu que pour faire fonctionner le shield avec un arduino MEGA, il suffisait de connecter la pin 2 à la pin 10 ou bien de changer la ligne rxpin dans le GSM3SoftSerial.cpp cependant aucune des deux solutions ne semble fonctionner je reste bloqué à "SMS Messages Sender" et ne me demande donc pas d'entrer un numéro de téléphone.(Je précise encore que le programme fonctionne avec l'arduino UNO.
Ai-je oublier quelque chose ?
/*
SMS sender
This sketch, for the Arduino GSM shield,sends an SMS message
you enter in the serial monitor. Connect your Arduino with the
GSM shield and SIM card, open the serial monitor, and wait for
the "READY" message to appear in the monitor. Next, type a
message to send and press "return". Make sure the serial
monitor is set to send a newline when you press return.
Circuit:
* GSM shield
* SIM card that can send SMS
created 25 Feb 2012
by Tom Igoe
This example is in the public domain.
http://arduino.cc/en/Tutorial/GSMExamplesSendSMS
*/
// Include the GSM library
#include <GSM.h>
#define PINNUMBER ""
// initialize the library instance
GSM gsmAccess;
GSM_SMS sms;
void setup()
{
// initialize serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.println("SMS Messages Sender");
// connection state
boolean notConnected = true;
// Start GSM shield
// If your SIM has PIN, pass it as a parameter of begin() in quotes
while(notConnected)
{
if(gsmAccess.begin(PINNUMBER)==GSM_READY)
notConnected = false;
else
{
Serial.println("Not connected");
delay(1000);
}
}
Serial.println("GSM initialized");
}
void loop()
{
Serial.print("Enter a mobile number: ");
char remoteNum[20]; // telephone number to send sms
readSerial(remoteNum);
Serial.println(remoteNum);
// sms text
Serial.print("Now, enter SMS content: ");
char txtMsg[200];
readSerial(txtMsg);
Serial.println("SENDING");
Serial.println();
Serial.println("Message:");
Serial.println(txtMsg);
// send the message
sms.beginSMS(remoteNum);
sms.print(txtMsg);
sms.endSMS();
Serial.println("\nCOMPLETE!\n");
}
/*
Read input serial
*/
int readSerial(char result[])
{
int i = 0;
while(1)
{
while (Serial.available() > 0)
{
char inChar = Serial.read();
if (inChar == '\n')
{
result[i] = '\0';
Serial.flush();
return 0;
}
if(inChar!='\r')
{
result[i] = inChar;
i++;
}
}
}
}
Edit [13/05/2015 14:00] : Plier la broche de la pin 2 du shield m'a permis de pouvoir communiquer en utilisant un jumper entre la broche 2 et la broche 10 mais je souhaite le faire par programme et non avec un jumper car le shield ethernet utilise de base la broche 10 si quelqu'un sait comment l'effectuer ?