J'ai récemment fait l'acquisition d'un module GSM (Modèle: SIM900A)
Mais je n'ai cependant toujours pas réussi à le faire fonctionner, malgré de nombreux essais qui furent tous un échec. C'est pourquoi je me tourne vers vous, je n'ai pas réussi à trouver de câblage précis sur internet, le module dispose, de deux GND, trois VCC (VCC5,VCC4 et VCCMCV), un SIMR (RX), SIMT (TX), et RST (RESET).
Je ne sais pas comment dois-je la câbler ?
Je précise que j'utilise une carte SIM FREEMOBILE, dont j'ai enlevé le code PIN pour plus de simplicité.
Oui le SIM900A est bien allumé, j'ai un voyant qui reste allumé et un autre qui clignote.
J'ai utilisé un des exemples de code disponible dans la librairie sur la lien que tu m'as envoyé
#include "SIM900.h"
#include <SoftwareSerial.h>
//If not used, is better to exclude the HTTP library,
//for RAM saving.
//If your sketch reboots itself proprably you have finished,
//your memory available.
//#include "inetGSM.h"
//If you want to use the Arduino functions to manage SMS, uncomment the lines below.
#include "sms.h"
SMSGSM sms;
int numdata;
boolean started=false;
char smsbuffer[160];
char n[20];
void setup()
{
//Serial connection.
Serial.begin(9600);
Serial.println("GSM Shield testing.");
//Start configuration of shield with baudrate.
//For http uses is raccomanded to use 4800 or slower.
if (gsm.begin(2400)){
Serial.println("\nstatus=READY");
started=true;
}
else Serial.println("\nstatus=IDLE");
if(started){
//Enable this two lines if you want to send an SMS.
//if (sms.SendSMS("3471234567", "Arduino SMS"))
//Serial.println("\nSMS sent OK");
}
};
void loop()
{
if(started){
//Read if there are messages on SIM card and print them.
if(gsm.readSMS(smsbuffer, 160, n, 20))
{
Serial.println(n);
Serial.println(smsbuffer);
}
delay(1000);
}
};
Je viens de récupérer ta librairie, et apparemment il y a une détection automatique (AUTOBAUD) de la vitesse .
Par contre, il faut décommenter 2 lignes dans GSM.cpp afin de configurer les pins utilisés pour la liaison série.
Il y a 2 versions de shield et 2 config possibles.
TX D4 et RX D5
ou
TX D2 et RX D3
commence par ça ! Sais-tu quelle version tu as ?
la librairie semble très "verbeuse" et fait pas mal (trop) de choses. Tout dépend de ce que tu vas en faire, mais je te conseille de te passer de librairie et écrire tes propres commandes, tu maîtriseras mieux ton shield.
Inverse les pour voir s'il n'y a pas simplement un problème de câblage.
Si la LED ne change pas de rythme, c'est que le shield ne s'enregistre pas sur le réseau. J'ai vu que cette carte ne semble pas compatible avec les réseaux GSM européens..
Il faudra peut-être flasher le soft !
Dans l'immédiat, il faut que tu arrives à dialoguer avec la bête...
Pour ma part, n'y connaissant rien à l'Arduino ni au SIM900 il y a encore un mois, je me suis basé sur les scripts et les explications trouvées ici
En écrivant soit même les commandes, on comprend mieux et on maîtrise tout.
Entre temps, mon Arduino m'envoie des SMS et met à jour une page Web avec des données récoltées depuis plusieurs capteurs.
Oui j'ai aussi lu sur internet qu'il fallait flasher le soft car celui-ci n'était pas compatible avec les réseaux européens, cependant je ne sais pas comment m'y prendre, car cette opération m'a l'air assez difficile ?
Edit: après de nombreuses autres recherches, je ne pourrais pas être en mesure de flasher le module avec l'une de mes cartes Arduino car elles ne sont pas compatible avec l’outil de flash. (Yùn et Uno), de plus j'ai lu sur internet, que le problème pouvait aussi provenir de l'antenne ?
Ensuite le 900A est réservé au marché asiatique, et est restreint en conséquence. Visiblement un flash du firmware permet de rattraper le coup. Mais la question n'est pas la encore puisque visiblement il n'y a pas de dialogue.
Si la réponse à ma question est "Arduino Mega" alors je sais où est le problème. Sinon va falloir reprendre plus basique
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX, à modifier suivant tes branchements
void setup()
{
Serial.begin(9600);
Serial.println("Goodnight moon!");
mySerial.begin(9600);
}
void loop() // run over and over
{
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
}
Ensuite tu fais tes branchement, allume le GSM, ouvres ton moniteur série. Dans le menu déroulant en bas de celui ci tu sélectionnes "retour charriot et nouvelle ligne" (ou un truc du genre je fais de mémoire).
La normalement tu dialogue directement avec le module, donc essaye de lui envoyé AT, la réponse normale est OK. Si tu n'as pas de réponse alors on cherchera ailleurs.
La console me sort un "ÿ" au moment où le module est mis sous tension, et j'obtiens bien le "OK" mais en inversant les PINS en les connectant à l'envers.
T'avais pas croisé RX et TX à la base ? C'était donc la le problème ... En connexion série c'est comme les humains : tu parles avec la bouche et écoute avec les oreilles, et vice versa.
Donc TX de l'un sur le RX de l'autre et vice versa. A moins que le concepteur du module soit tordu ...
Dans tous les cas tu sais où camper maintenant, en configurant correctement la lib GSM et en faisant les bons branchements ça devrait marcher ... En tout cas on aura avancer, restera le fait que c'est un SIM900A
Merci du coup je fais quoi ? j'ai testé plusieurs librairies mais ça n'a pas l'air de fonctionné, il ne trouve pas le réseau je suppose puisque la led clignote très rapidement.
Bin le problème c'est que tu as un SIM900A réservé au marché asiatique ...
Après faut chercher sur le net si un flashage du firmware permet de rattraper la chose ...
J'ai regardé sur le net, mais je n'y comprend pas grand chose au flashage du firmware de la carte, apparemment il faut une carte de type Mega pour faire le flashage