module GSM/GPRS

Bonjour, j'ai entrain de tester le module GPRS/GSM Quadband pour Arduino( de Cooking Hack) SIM900 avec une carte arduino UNO j'ai un probléme quand j'utilise les AT commande dans le serial port pour tester si ce module envoie des messages ou non il y a une erreur quand j'utilise la commande AT+CMGS qui est invalid input (+CME ERROR :765) s'il vous plait répondez moi si quelqu'un a la réponse concernant cet erreur

bonjour, sans code difficile de répondre. mais je serais pas surpris que le pin du gsm utilisent le 0-1 (rx tx) ;)

voici le code
il se bloque en AT+CREG=?
s’il vous plait aidez moi à resoudre ce probléme car je suis débutante en arduino

int8_t answer;
int onModulePin= 2;
char aux_string[30];
char phone_number[]="27730279";

void setup(){

    pinMode(onModulePin, OUTPUT);
    Serial.begin(115200);    
        
    Serial.println("Starting...");
    power_on();
    
    delay(3000);
    
    // sets the PIN code
    sendATcommand("AT+CPIN=0000", "OK", 2000);
    
    delay(3000);
    
    Serial.println("Connecting to the network...");

    while( (sendATcommand("AT+CREG?", "+CREG: 0,1", 500) || 
            sendATcommand("AT+CREG?", "+CREG: 0,5", 500)) == 0 );

    Serial.print("Setting SMS mode...");
    sendATcommand("AT+CMGF=1", "OK", 1000);    // sets the SMS mode to text
    Serial.println("Sending SMS");
    
    sprintf(aux_string,"AT+CMGS=\"%s\"", phone_number);
    answer = sendATcommand(aux_string, ">", 2000);    // send the SMS number
    if (answer == 1)
    {
        Serial.println("Test-Arduino-Hello World");
        Serial.write(0x1A);
        answer = sendATcommand("", "OK", 20000);
        if (answer == 1)
        {
            Serial.print("Sent ");    
        }
        else
        {
            Serial.print("error ");
        }
    }
    else
    {
        Serial.print("error ");
        Serial.println(answer, DEC);
    }

}


void loop(){

}

void power_on(){

    uint8_t answer=0;
    
    // checks if the module is started
    answer = sendATcommand("AT", "OK", 2000);
    if (answer == 0)
    {
        // power on pulse
        digitalWrite(onModulePin,HIGH);
        delay(3000);
        digitalWrite(onModulePin,LOW);
    
        // waits for an answer from the module
        while(answer == 0){     // Send AT every two seconds and wait for the answer
            answer = sendATcommand("AT", "OK", 2000);    
        }
    }
    
}

int8_t sendATcommand(char* ATcommand, char* expected_answer, unsigned int timeout){

    uint8_t x=0,  answer=0;
    char response[100];
    unsigned long previous;

    memset(response, '\0', 100);    // Initialice the string
    
    delay(100);
    
    while( Serial.available() > 0) Serial.read();    // Clean the input buffer
    
    Serial.println(ATcommand);    // Send the AT command 


    x = 0;
    previous = millis();

    // this loop waits for the answer
    do{
        // if there are data in the UART input buffer, reads it and checks for the asnwer
        if(Serial.available() != 0){    
            response[x] = Serial.read();
            x++;
            // check if the desired answer is in the response of the module
            if (strstr(response, expected_answer) != NULL)    
            {
                answer = 1;
            }
        }
    // Waits for the asnwer with time out
    }while((answer == 0) && ((millis() - previous) < timeout));    

    return answer;
}

Tu l'a configuré comment le module au niveau du choix de la liaison série ? http://www.cooking-hacks.com/documentation/tutorials/arduino-gprs-gsm-quadband-sim900 ==> Step 1 "serial com. jumpers"

oui j'ai suivie la même configuration mise au site mais toujours le programme se bloque en AT+CREG? le programme ne sort pas de la boucle : while( (sendATcommand("AT+CREG?", "+CREG: 0,1", 500) || sendATcommand("AT+CREG?", "+CREG: 0,5", 500)) == 0 );

oui j'ai suivie la même configuration mise au site mais toujours le programme se bloque en AT+CREG? le programme ne sort pas de la boucle : while( (sendATcommand("AT+CREG?", "+CREG: 0,1", 500) || sendATcommand("AT+CREG?", "+CREG: 0,5", 500)) == 0 );

Bonjour,

la demande AT : AT+CREG? retourne +CREG:X,Y dans lequel X est à 0 et Y est à 0 lorqu'il n'y a pas de connection au réseau téléphonique et Y est à 1 ou 5 lorsque la connection au réseau est active.

quel shield utilises tu exactement?

as tu essayé d'envoyer des commandes "à la main" à l'aide d'un logiciel de liaison série?

Pour débuter, j'ai suivi ce tuto et cela m'a permis de comprendre le fonctionnement du shield ainsi que des commandes AT :

http://www.geeetech.com/wiki/index.php/Arduino_GPRS_Shield

Pierre

nous avons utilisé le shield sim900 ( by cookingHack)+arduino uno et nous avons tester le shield avec le coolterm tout va bien le shield envoie et recevoir des SMS mais lorsque nous avons essayé de tester des programme arduino il ne se marchera pas .