نوشته اصلی توسط
tanha71
تو کد شما از دستور ارسال اس ام اس استفاده شده :
void sms(String text, String phone) {
Serial.println("SMS send started");
mySerial.println("AT+CMGS=\"" + phone + "\"");
delay(1000);
mySerial.print(text);
delay(300);
mySerial.print((char)26);
delay(300);
Serial.println("SMS send finish");
delay(3000);
}
شما اس ام اس فارسی نمی تونید ارسال کنید دقت داشته باشید.
کل برنامه را بزارید ببینم چه تغییرات ی بهش دادید؟!
یه اس ام اس هم فکر کنم دریافتی دارید.
من توی ارسال پیام هیچ مشکلی ندارم پیام کاملن درست ارسال میشه
بله همونی که زیرش خط قرمز کشیدم اس ام اس دریافتی هست
من سه تا کلید میکروسوییچ گذاشتم که که با فشار دادن هر کلید،پین های 8 یا 9 یا 10 مساوی 1 میشن و مثلن اس ام اس ارسال میشه یا تماس میگیره(برای تست)
این هم کدی که من ازش استفاده میکنم
کد:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
void setup() {
Serial.begin(9600); //Скорость порта для связи Arduino с компьютером
Serial.println("Goodnight moon!");
mySerial.begin(115200); //Скорость порта для связи Arduino с GSM модулем
mySerial.println("AT");
pinMode(8, INPUT);
pinMode(9, INPUT);
pinMode(10, INPUT);
//-----------------------------------------------------------
mySerial.write("AT+CMGF=1\r"); //set GSM to text mode
delay(1500);
mySerial.write("AT+CPMS=\"SM\"\r"); //Preferred SMS Message Storage
delay(1000);
mySerial.write("AT+CMGR=1\n\r"); //list the first message from SIM Memory
/*while(1)
{
if(mySerial.available())
{
Serial.write(mySerial.read());
}
}*/
//-------------------------------------------------------
}
void loop() {
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
if(digitalRead(8) == 1){
sendCommand("AT+CMGF=1", 30);
sendCommand("At+CSCS=\"GSM\"", 30);
sendCommand("AT+CMGS=\"09350000000\"", 500);
sendCommand("Message for test", 10);
mySerial.write((char)26);
delay(1000);}
if(digitalRead(9) == 1){
sendCommand("AT+CMGF=1", 30);
sendCommand("At+CSCS=\"GSM\"", 30);
sendCommand("ATD09350000000;", 10);
delay(1000);}
if(digitalRead(10) == 1){
sendCommand("AT+CMGF=1", 30);
sendCommand("At+CSCS=\"GSM\"", 30);
sendCommand("ATH", 10);
delay(1000);
}
}
void sms(String text, String phone) {
Serial.println("SMS send started");
mySerial.println("AT+CMGS=\"" + phone + "\"");
delay(1000);
mySerial.print(text);
delay(300);
mySerial.print((char)26);
delay(300);
Serial.println("SMS send finish");
delay(3000);
}
void sendCommand(String cmd, int t)
{
mySerial.println(cmd);
delay(t);
readSerial();
}
void readSerial() {
while (mySerial.available())
Serial.write(mySerial.read());
}
باز هم ممنون و متشکر