ریست آردینو در صورت عدم ارتباط با sim800

1 سال قبل
207 بازدید

0

سلام میخوام یک شرط بذارم که اگر ارتباط ماژول sim800 با آردینو قطع شده بود با استفاده از تایمر واچ داگ یا تابع ریست آردینو ریست بشه اما هر شرطی میذارم یا ریست نمیشه یا مدام ریست میشه, لطفا راهنمایی بفرمایید چطور میتوانم شرطی بذارم که مدام چک کند که اگر آردینو ماژول سیمکارت را گم کرده بود دستور ریست اجرا شود.

ممنون

27 دی 01 در 08:41
مهندس قدیم
7

افزودن دیدگاه

1 پاسخ ثبت شده است
0

با سلام

سمت آردوینو دستور AT را به صورت دوره ای به سمت سیم کارت ارسال کنید. در صورتی که بعد از یک تایم مشخص جواب OK را دریافت نکردید دستور ریست را صادر کنید.

البته بهتر هست از دستور AT+CREG استفاده کنید که ببینید ارتباط خود ماژول سیم کارت نیز قطع شده است یا نه

 

ویرایش اول:

باید پردازش دیتای سریال را به درستی انجام بدهید.

شما وقتی از دستور readStringUntil که استفاده میکنید دیتای شما به صورت String دریافت می شود حالا باید بیاید این دستور را 2-3 بار پشت هم تکرار کنید ببینید که دستور OK در کدام یک می آید (این احتمال نیز وجود دارد به صورت داعم در حال جا به جایی باشد)

در مورد شرط هم از دستور

if (value.startsWith("OK"){
}

استفاده کنید تا در صورتی که اطلاعات جلوتر به هم ریخته بودند متوجه آنها نشود.

بهترین پیشنهاد بنده این می باشد

Serial.println("AT+CREG"); // respond +CREG: 1,1
String value;
delay(5);
for (byte i = 0; i < 5; i++)
{
  value = Serial.readStringUntil('\n');
  if (value.startsWith("+CREG:"))
  {
    if (value.substring(7, 8).toInt() == 1)
    {
      //ok
    }
  }
}
27 دی 01 در 03:12
محمد دمیرچی
3670

ممنون از مهندس دمیرچی عزیز. اتفاقا از همین دستورات استفاده کردم و شرطی گذاشتم که اگر okرا دریافت نکرد ریست کند و اگر دریافت کرد به برنامه ادامه دهد اما درست عمل نکرد و مدام ریست می شود, گویی متوجه دریاف ok نمی شود و اینکه مدام این دستور در سریال مانیتور اجرا میشود چون در تابع لوپ است!  – مهندس قدیم 01-10-28 در 05:45

ویرایش شده  – محمد دمیرچی 01-10-28 در 06:43

سپاس. اما این برنامه 1,1 یا ok را برنمیگردونه و مدام at+creg تکرار میشه!  – مهندس قدیم 01-10-28 در 08:34

در خط Serial.readStringUntil به اشتباه Serial1 خورده بود. اصلاح کردم  – محمد دمیرچی 01-11-01 در 09:09

بله متوجه این مشکل شده بودم و اصلاحش کرده بودم و اینکه عرضکردم 1,1 یاok. نمیدهد بعد از رفع این مشکل بود  – مهندس قدیم 01-11-01 در 11:30

لطفا با اصلاح سوال نقشه سیم کشی خود را قرار بدهید بررسی کنم  – محمد دمیرچی 01-11-13 در 01:16

متاسفنه درحال حاضر به نقشه دسترسی ندارم. اتصال به این صورت است که یک خازن موازی منبع تغذیه 4.2 ولت 3 آمپری به مثبت و منفی ماژول وصل شده, زمین ماژول و زمین آردینو به هم وصل شدن rx و tx ماژول هم به پایه های 10 و 11 آردینو وصل شدن  – مهندس قدیم 01-11-15 در 01:25

یعنی شما از سریال مجازی دارید استفاده میکند؟ کد خود را به صورت کامل در صورت سوال قرار بدهید  – محمد دمیرچی 01-11-16 در 06:24

افزودن دیدگاه


انجمن کافه‌ربات © 1400