Bonjour, j'aimerai pouvoir envoyer un message entre mon Arduino uno et ma carte sim808. J'ai un programme qui fonctionne il me semble mais je ne sait pas comment définir le code PIN de la carte. J'ai pas envie de forcer pour ne pas la bloquer donc si quelqu'un peut m'aider, je suis preneur ^^.
#include <SoftwareSerial.h>
#include <DFRobot_sim808.h>
#include <sim808.h>
char PHONE_NUMBER[] = "+336********"; // N° de portable à changer
const byte tailleMaxSMS = 60;
DFRobot_SIM808 sim808(&Serial);
void setup() {
Serial.begin(9600);
while (!sim808.init()) {
Serial.print(".");
delay(1000);
}
Serial.println("\nSim808 init success");
Serial.println("Start to send message ...");
}
void loop() {
char gprsBuffer[64];
char messageRecu[tailleMaxSMS];
char reponse[tailleMaxSMS + 1] ;
char * s;
boolean SMSRecu = false;
if (sim808.readable()) {
sim808_read_buffer(gprsBuffer, 32, DEFAULT_TIMEOUT);
s = strstr(gprsBuffer, "+CMTI: \"SM\""); // on recherche dans la réception [+CMTI: "SM"]
if (s != NULL) { //SMS: $+CMTI: "SM",24$
int messageIndex = atoi(s + 12);
sim808.readSMS(messageIndex, messageRecu, tailleMaxSMS);
SMSRecu = true;
}
sim808_clean_buffer(gprsBuffer, 32);
}
// ce code pourrait être directement intégré au dessus sans le booléen SMSRecu, je le sépare juste pour lisibilité ou si le SMS ne doit pas être envoyé tout de suite
if (SMSRecu) {
Serial.print(F("SMS Recu: ")); Serial.println(messageRecu);
Serial.print(F("je renvoie un SMS a ")); Serial.println(PHONE_NUMBER);
// On fabrique le message que l'on veut renvoyer "RECU: <ici le message reçu>"
size_t memoireOccupee;
strncpy(reponse, "RECU: ", tailleMaxSMS); // http://www.cplusplus.com/reference/cstring/strncpy/
memoireOccupee = strlen(reponse); // http://www.cplusplus.com/reference/cstring/strlen/?kw=strlen (pour être générique, je sais bien que "RECU: " fait 6 caractères)
strncat(reponse, messageRecu, tailleMaxSMS-memoireOccupee); // http://www.cplusplus.com/reference/cstring/strncat/?kw=strncat
reponse[tailleMaxSMS] = '\0'; // pour être sûr que le MESSAGE est bien formé
// on l'envoie
sim808.sendSMS(PHONE_NUMBER, reponse);
}
}