Arduino Uno + Shield GPRS + Carte SIM Free = ???

Bonsoir à tous,
Je suis en train de coder un petit programme pour commander à distance des radiateurs via le shield GPRS.
Mon programme marche à merveille sauf que... quand je mets ma carte sim Free (qui restera dedans à terme) plus rien de fonctionne.
Tout marche avec ma carte Orange pourtant.
Savez vous si les cartes sim de chez Free sont verrouillées ou si il faut passer par d'autres commande (?)

Bien à vous.

Edit: la carte qui "ne fonctionne pas" est un carte pour un forfait à 2€
J'ai testé avec une carte Free à 20€, tout fonctionne...
Blocage de Free ? :roll_eyes:

Quel forfait Free ? Le 2 € ou le 19 € ?

Pour le 2€ il faut activer l'option Internet à 0.99€

Ne pas oublier aussi de configurer l'APN

J'ai le même système avec une SIM Free à 2 euros, pas de soucis.

Le code PIN peut-être ?

Ok je vais essayer ça !
Qu'est ce que tu appelles APN ?

Pour être précis, je n'utilise que les SMS, tu cherches à faire fonctionner la data ?

Non pas de data, que du texte du genre "on" "off" et retour de commande par sms.
Ne marche pas avec le 2€
Marche avec le 19.99 €
Marche avec Orange (Pro surement)

Je change le code PIN à chaque changement de carte :grin:

Pachole:
Qu'est ce que tu appelles APN ?

Ca commence mal si tu ne sais pas ce qu'est l'APN :slight_smile:

C'est le nom du point d'accès au réseau.
Normalement le shield gprs ne sais pas fonctionner sans cela.
Il y a une commande pour configurer le shield.

SMS ?
Ok, pas besoin d'APN alors, ni d'option data

barbudor:
SMS ?
Ok, pas besoin d'APN alors, ni d'option data

Je me disais aussi, ça fonctionne et j'ai rien touché à tout ça... :slight_smile:

Je me permets de poster le code qui fonctionne pour ma part :

#include <GoGprs.h>
#include <SoftwareSerial.h>
#include <RCSwitch.h>

#define PIN_CODE "0000"

SoftwareSerial mySerial(PIN_GPRS_RX, PIN_GPRS_TX);
GoGprs gsm = GoGprs(&mySerial);

RCSwitch mySwitch = RCSwitch();

void setup()
{
 Serial.begin(19200);
 gsm.begin( PIN_CODE ); 
 mySwitch.enableTransmit(10);
}   

void loop()
{
 gsm.execute();
 if(gsm.isCallReady())
 {
  if(gsm.hasSms())
  {
   String phoneNr = gsm.smsCallee();
   if(phoneNr.substring(0) == "+33612345678")
   {
    mySwitch.switchOn(4, 3);
    delay(20000);
    mySwitch.switchOff(4, 3);
   }
   if(phoneNr.substring(0) == "+33687654321")
   {
    String msg = String( "Laisse tomber Maman.");
    if( gsm.sendSms( phoneNr, msg ))
    {
     Serial.println( "Successfully replied "+msg+" to "+phoneNr );
    }
    else
    { 
     Serial.println( "Reply "+msg+" to "+phoneNr+ "did failed!" );
    } 
   }
   if(phoneNr.substring(0) == "+3311111111")
   {
    String msg = String( "Tu aimes les films d'horreur ?");
    if( gsm.sendSms( phoneNr, msg ))
    {
     Serial.println( "Successfully replied "+msg+" to "+phoneNr );
    }
    else
    { 
     Serial.println( "Reply "+msg+" to "+phoneNr+ "did failed!" );
    } 
   }
   //Serial.println(phoneNr.substring(0));
   gsm.clearSms();
  }
  else
  {
    //Serial.println("Pas de SMS");
  }
 }
delay(500);  
}

Ca reçoit un sms quelconque, si c'est le bon numéro, ça donne envoi une commande RF pour allumer une prise, si c'est ma mère ça lui répond "Laisse tomber Maman" et ça ne fait rien, si c'est un autre ça lui répond "Tu aimes les films d'horreur ?" et ça ne fait rien non plus.

Les numéros de téléphone des protagonistes ont été changés pour préserver leur identité secrète de super-héros. 8)

J'utilise un shield GPRS de Seeedstudio , un arduino UNO R3 et la librairie GoGPRS.

Merci beaucoup pour ce code de super héros mais ça ne marche toujours pas avec ma SIM de super blaireau ... :grin:

bonjour,
la carte est elle activée sur le réseau?
ca donne quoi dans un tel normal?
si tu appelles le gprs, ca donne quoi? messagerie ou ca sonne?

Oui la carte est activée sur le réseau.
Quand je remets la carte dans le téléphone, du coup, je reçoit en bloc tous les messages qui sont pas arrivés sur l'arduino.
Si j'appelle quand la carte est dans le shield, ça sonne, répondeur etc...
Mystère ]:slight_smile:

active le mode debug de gogprs
dans le fichier GoGprs.h change ceci

//#define GG_DEBUG
// Forward GPRS incomming serial data to the debug channel.
//#define GG_DEBUG_GPRS_SERIAL

en

#define GG_DEBUG
// Forward GPRS incomming serial data to the debug channel.
#define GG_DEBUG_GPRS_SERIAL

et indique dans le void setup() le centre de service Free Mobile: +33695000695

mySerial.println("AT+CSCA="+33695000695"");
delay(1000);

cela devrait te renvoyer un OK

Ça marche pas non plus ! :0 =(

Pachole:
Ça marche pas non plus ! :0 =(

ca aide pas beaucoup.
que dit le DEBUG? fait un copier coller.

tant qu'a faire donne le type de carte gprs et ton code, ca sera plus simple.

Dans mon code de base, je n'utilise pas GoGprs.
Pour le debug, j'ai pris le code de DrWax, avec tes recommandations mais dans ma console, rien ne s'inscrit.

#include <GoGprs.h>
#include <SoftwareSerial.h>
int ledPIN = 13;

#define PIN_CODE "1706"

SoftwareSerial mySerial(7, 8 );
GoGprs gsm = GoGprs(&mySerial);

void setup()
{
Serial.begin(19200);
gsm.begin( PIN_CODE );
mySerial.println("AT+CSCA="+33695000695"");
delay(1000);
pinMode(ledPIN, OUTPUT);
}

void loop()
{
gsm.execute();
if(gsm.isCallReady())
{
if(gsm.hasSms())
{
String phoneNr = gsm.smsCallee();
if(phoneNr.substring(0) == "+33615******")
{
digitalWrite(ledPIN, HIGH);
delay(10000);
digitalWrite(ledPIN, LOW);
}
if(phoneNr.substring(0) == "+33687******")
{
String msg = String( "Laisse tomber Maman.");
if( gsm.sendSms( phoneNr, msg ))
{
Serial.println( "Successfully replied "+msg+" to "+phoneNr );
}
else
{
Serial.println( "Reply "+msg+" to "+phoneNr+ "did failed!" );
}
}
if(phoneNr.substring(0) == "+3311111111")
{
String msg = String( "Tu aimes les films d'horreur ?");
if( gsm.sendSms( phoneNr, msg ))
{
Serial.println( "Successfully replied "+msg+" to "+phoneNr );
}
else
{
Serial.println( "Reply "+msg+" to "+phoneNr+ "did failed!" );
}
}
//Serial.println(phoneNr.substring(0));
gsm.clearSms();
}
else
{
//Serial.println("Pas de SMS");
}
}
delay(500);
}

normal

void setup()
{
Serial.begin(19200);
gsm.begin( PIN_CODE );
mySerial.println("AT+CSCA="+33695000695"");
delay(1000);
pinMode(ledPIN, OUTPUT);
}

mets ceci pour voir

void setup()
{
Serial.begin(19200);
mySerial.println("ATZ");
delay(1000);
mySerial.println("AT+CSCA="+33695000695"");
delay(1000);
gsm.begin( PIN_CODE );

pinMode(ledPIN, OUTPUT);
}

tu n'aurais pas des cavaliers sur le shield?
quelle carte gprs?

Si tu reçois tous les SMS quand tu remets la carte dans le téléphone c'est que la carte n'est pas reconnue sur le réseau dans le module GPRS
Je ne vois que 2 raisons possibles :

  • PIN
  • faux contact qui fait que le module GPRS ne voit pas ta carte SIM

@infobarquee:
c'est seeedstudio v1.4

@barbudor:
je pense plutôt à un problème comme ça mais quand j'appelle le numéro, ça sonne donc logiquement le PIN est bon (et puis je le vérifie :stuck_out_tongue: )
quand au mauvais contact... j'ai beau regarder, nettoyer, comparer avec une autre SIM, je vois pas.

Je me vois mal appeler Free et dire "allo ? ça marche pas dans mon shield GPRS" ]:smiley: