با سلام
سمت آردوینو دستور 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
}
}
}