سلام و درود
من یه چند وقتی هستش که به یه مشکل در پروژم برخورد کردم که قبلا اینطوری نبوده من یه برد uno و یه sim900a mini v 3.9.2 رو از افتاب رایانه خریده ام با دستوراتی که در زیر اورده شده هیچ موردی با ارسال و دریافت پیامک با هر سیم کارتی رو نداشتم ولی جدیدا هر اس ام اسی که به برد میفرستم توی serial Monitor به صورت مربع نشونش میده و و ارسال اس ام اس به مشکل برخورده دوستانی چه پیشنهادی میتونین به من بدین ( راستیتش به همه چی شک کردم به خاطره همین با دو عدد sim900a mini v3.9.2 و uno تست کردم بازم همین جواب رو گرفتم ) ممنون میشم راهنمایی کنید .
کد:
/*THIS TUTORIAL USED GSM SIM900A MINI V3.9.2
Connect 5VT to D9 and 5VR to D10
Feed GSM SIM900A with Arduino's 5V
Code by IDAYU SABRI - MYBOTIC
*/
#include <SoftwareSerial.h>
SoftwareSerial mySerial(9, 10);
char msg;
char call;
void setup()
{
mySerial.begin(9600); // Setting the baud rate of GSM Module
Serial.begin(9600); // Setting the baud rate of Serial Monitor (Arduino)
Serial.println("GSM SIM900A BEGIN");
Serial.println("Enter character for control option:");
Serial.println("h : to disconnect a call");
Serial.println("i : to receive a call");
Serial.println("s : to send message");
Serial.println("c : to make a call");
Serial.println("e : to redial");
Serial.println();
delay(100);
}
void loop()
{
if (Serial.available()>0)
switch(Serial.read())
{
case 's':
SendMessage();
break;
case 'c':
MakeCall();
break;
case 'h':
HangupCall();
break;
case 'e':
RedialCall();
break;
case 'i':
ReceiveCall();
break;
}
if (mySerial.available()>0)
Serial.write(mySerial.read());
}
void SendMessage()
{
mySerial.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode
delay(1000); // Delay of 1000 milli seconds or 1 second
mySerial.println("AT+CMGS=\"+60XXXXXXXXX\"\r"); // Replace x with mobile number
delay(1000);
mySerial.println("sim900a sms");// The SMS text you want to send
delay(100);
mySerial.println((char)26);// ASCII code of CTRL+Z
delay(1000);
}
void ReceiveMessage()
{
mySerial.println("AT+CNMI=2,2,0,0,0"); // AT Command to recieve a live SMS
delay(1000);
if (mySerial.available()>0)
{
msg=mySerial.read();
Serial.print(msg);
}
}
void MakeCall()
{
mySerial.println("ATD+60XXXXXXXXX;"); // ATDxxxxxxxxxx; -- watch out here for semicolon at the end!!
Serial.println("Calling "); // print response over serial port
delay(1000);
}
void HangupCall()
{
mySerial.println("ATH");
Serial.println("Hangup Call");
delay(1000);
}
void ReceiveCall()
{
mySerial.println("ATA");
delay(1000);
{
call=mySerial.read();
Serial.print(call);
}
}
void RedialCall()
{
mySerial.println("ATDL");
Serial.println("Redialing");
delay(1000);
}