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 .