دستورات (AT (Attention Command به صورت انحصاری برای ماژول های GSM طراحی شدهاند تا مواردی از جمله ارسال دریافت پیامک و تماس را پوشش دهند. برای ارسال دستورات AT و برقراری ارتباط با ماژول SIM800L از سریال مانیتور کامپایلر آردوینو استفاده خواهد شد. برنامه زیر امکان ارتباط بین ماژول و آردوینو را فراهم میکند. برنامهی زیر را آپلود کرده و سریال مانیتور کامپایلر را باز کنید.
برنامه شامل کتابخانهی SoftwareSerial.h است که پینهای 2 و 3 به عنوان پورت سریال تعریف شدهاند.
#include <SoftwareSerial.h>
//Create software serial object to communicate with SIM800L
SoftwareSerial mySerial(3, 2); //SIM800L Tx & Rx is connected to Arduino #3 & #2
در قسمت تنظیمات برنامه سرعت انتقال داده را 9600 تعریف میکنیم.
//Begin serial communication with Arduino and Arduino IDE (Serial Monitor)
Serial.begin(9600);
//Begin serial communication with Arduino and SIM800L
mySerial.begin(9600);
در ادامه برخی از اقدامات مهمی را که توسط دستورات AT در این ماژول قابل اجرا هستند معرفی میکنیم.
AT+CSQ
این دستور قدرت سیگنال و باند رادیویی را شناسایی میکند. مقدار آن باید بیش از 5 دسی بل باشد. البته این مساله بستگی به آنتن و مکان آن دارد.
AT+CCID
با این دستور شماره سیمکارت خوانده شده و درستی عملکرد آن تست میشود.
AT+CREG
این فرمان وضعیت رجیستر شبکه (اتصال) را بررسی میکند. 0 به معنای عدم اتصال، ۱ به معنای اتصال به یک شبکه، ۲ جستجوی شبکه، ۴ رد شدن اتصال به شبکه و ۵ اتصال به شبکه رومینگ است.
mySerial.println("AT"); //Once the handshake test is successful, it will back to OK
updateSerial();
mySerial.println("AT+CSQ"); //Signal quality test, value range is 0-31 , 31 is the best
updateSerial();
mySerial.println("AT+CCID"); //Read SIM information to confirm whether the SIM is plugged
updateSerial();
mySerial.println("AT+CREG?"); //Check whether it has registered in the network
updateSerial();
در حلقه برنامه از تابعی به نام ()updateSerial استفاده میشود. این تابع دائما منتظر دریافت فرمان از سریال مانیتور است و آن را از طریق پین Rx به ماژول SIM800L می فرستد.
void updateSerial()
{
delay(500);
while (Serial.available())
{
mySerial.write(Serial.read());//Forward what Serial received to Software Serial Port
}
while(mySerial.available())
{
Serial.write(mySerial.read());//Forward what Software Serial received to Serial Port
}
}
خروجی سریال مانیتور به صورت تصویری است که در بالا مشاهده میکنید.