J'essaye d'envoyer un message SMS en utilisant Arduino UNO et le module GSM SIM800L lorsqu'un seuil de niveau sonore est activé. J'ai été capable de faire ceci dans tous les aspects sauf un. J'ai le numéro de téléphone auquel le message texte doit être envoyé stocké dans un fichier CONFIG.BAT sur une carte SD, le problème que je dois résoudre est comment je peux ajouter le numéro de la carte SD dans la commande AT qui spécifie le téléphone numéro auquel le SMS est envoyé. Le code que j'ai maintenant est ci-dessous:Insérer le numéro de téléphone stocké sur la carte SD dans les SMS envoyer commande AT Arduino
Le code suivant est dans une fonction qui est appelée quand le périphérique de départ est choisi, le processus commence par lire la sortie sur la broche A0 pour identifier quand un son dépasse le niveau défini dans le seuil int, cela met alors la broche 13 à haute, puis le processus initie la carte SD, vérifie qu'il y a un CONFIG.BAT sur la carte et s'il n'y a pas de fichier CONFIG.BAT dit à l'utilisateur d'aller à configurer et définir un numéro de téléphone pour les alertes. Si le CONFIG.BAT existe, le processus continue pour lire le contenu du fichier CONFIG.BAT. L'étape suivante consiste à définir le SMS au format ASCII, puis définir le numéro de téléphone, puis le contenu du message.
void sound_detect(){
int sensorValue = analogRead(A0);//use A0 to read the electrical signal
if(sensorValue > thresholdvalue) {
digitalWrite(ledPin1,HIGH);//if the value read from A0 is larger than 400,then light the LED
delay(10);
digitalWrite(ledPin1,LOW);
Serial.print("Initializing SD card...");
pinMode(10, OUTPUT);
if (!SD.begin(SD_CS_PIN)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
if (!SD.exists("CONFIG.DAT")) {
Serial.println("No Number Exists! Please go to Setup Device to add Number for Alert");
}else{
// open the file for reading:
myFile = SD.open("CONFIG.DAT");
if (myFile) {
Serial.println("CONFIG.DAT:");
// read from the file until there's nothing else in it:
while (myFile.available()) {
Serial.write(myFile.read());
}
//Serial.println(myFile);
// close the file:
myFile.close();
} else {
// if the file didn't open, print an error:
Serial.println("error opening CONFIG.DAT");
}
}
//Set SMS format to ASCII
serialSIM800.write("AT+CMGF=1\r\n");
delay(1000);
//Send new SMS command and message number
serialSIM800.write("AT+CMGS=\"+44*************\"\r\n");
delay(1000);
//Send SMS content
serialSIM800.write("TEST SMS NOISE DETECT");
delay(1000);
//Send Ctrl+Z/ESC to denote SMS message is complete
serialSIM800.write((char)26);
delay(1000);
Serial.println("SMS Sent!");
}
}
J'ai besoin de l'aide ou des conseils sur la façon dont je reçois le numéro de téléphone de la carte SD qui est maintenue dans la variable « myFile » dans ce morceau de code
while (myFile.available()) {
Serial.write(myFile.read());
}
pour remplacer le numéro de téléphone la commande AT ici
//Send new SMS command and message number
serialSIM800.write("AT+CMGS=\"+44*************\"\r\n");
J'ai regardé les commandes AT pour voir s'il y a une façon claire de le faire en vain, j'essayé de mettre la variable « myFile » entre accolades {} myFile
//Send new SMS command and message number
serialSIM800.write("AT+CMGS=\"{myFile}\"\r\n");
mais cela n'a pas fonctionné.
Toute aide serait très appréciée
Je l'ai essayé maintenant et obtenir l'erreur aucune fonction correspondante pour l'appel à ''SoftwareSerial :: write (StringSumHelper &)'' sur la ligne de code 'serialSIM800.write (" AT + CMGS = \ "+ 44" + numéro + "\" \ r \ n ");' – Tiny
Vous pourriez envoyer quelque chose si vous codez le numéro en dur? Je veux dire, si vous commettez la partie de lecture de fichier et écrivez la commande AT dans le code. J'écris cette réponse en espérant que vous avez fait un test unitaire. – jabujavi
J'ai eu le numéro de téléphone codé en dur et quand le seuil a été dépassé le sms a été envoyé, avec le code que vous avez offert, je peux voir le nombre est représenté en char (chaque numéro est représenté par son code ASCII, mais d'après ce que je peux dire un ajout à la fin du code qui ne fait pas partie du numéro de téléphone), donc en utilisant 'Serial.println (numéro);' Je peux voir le numéro ASCII. J'ai essayé de comprendre comment écrire le code AT afin qu'il lise le code ASCII et le lise automatiquement comme le numéro de téléphone mais je n'ai pas été en mesure de comprendre ou d'identifier ce processus pour l'instant. – Tiny