یه عکس آپلود کنید از صفحه سریال مانیتور خود. با تشکر.
وقتی اس ام اس دریافت کنید تو سریال مانیتور خوانا نمی باشد ولی اگر at را ارسال کنید باید جواب ok را خوانا دریافت کنید
میتونه از وجود نویز در اطراف برد بورد شما باشه...
نمایش نسخه قابل چاپ
جواب اوکی و at کامند ها بعضی مواقع خوانا و بعضی مواقع ناخوانا هست اما جواب اس ام اس....
فایل پیوست 2057
این رو هم اضافه کنم که من از کدی که دوست عزیزمون magmagmary و سینای عزیز گذاشتن نتونستم جواب بگیرم و از کدی که در http://www.2150692.ru/faq/46-sim800l-arduino این صفحه بود تونستم جواب بگیرم (که این کد توش پایه ی ریست تعریف نشده)
باز هم ممنون
تو کد شما از دستور ارسال اس ام اس استفاده شده :
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());
}
یه سوالی
آیا اگر یک برد سخت افزار و درایور مطمئن و مجزا برای تست SIM800L باشه.استقبال میشه ؟:rolleyes:
دوستان من میخام یه sms دریافت کنم و محتویاتشو توی یه متغیر save کنم هرچی نگاه کردم لیست AT command ها رو متوجه نشدم شاید خوب نگاه نکردم از دوستان کسی میتونه کمک کنه؟
من هم دقیقا دنبال راهی میگردم که متن اس ام اس و توی یه مقدار رشته ذخیره کنم
فکر میکنم باید سریال و بخونیم و هروقت اس ام اس اومد کامند at+cmgr=1 و بفرسته و و بعدش متن پیام و بخونه
اما با این روش توی خواندن سریال مشکل دارم کسی کمک کنه خیلی ممنون میشم
من از این کد برای خواندن سریال و تبدیل اون به رشته استفاده کردم ولی مشکل اینجاس وقتی میخوام اتکامند بفرستم ارسال نمیشه و فقط حرف اولش نوشته میشه روی سریال
مثلن مینویسم AT مینویسه توی سریال A
کد:String readString;
void setup() {
Serial.begin(9600);
}
void loop() {
while (Serial.available()) {
delay(3);
char c = Serial.read();
readString += c;
}
if (readString.length() >0) {
if (readString == "example") {
//do somethings
}
readString="";
}
}
String Buffer;
String number;
String text;
if (Serial.available()) {
Buffer = Serial.readString();
if (Buffer.indexOf("+CMT") != -1){
Buffer.replace("+CMT: \"+98", "");
number = Buffer.substring(2, 12);
text = Buffer.substring(41, 51);
}
}