در این پست از سایت اِمیک, یک پروژه بسیار کاربردی به نام پروژه آردوینو راه اندازی ماژول SIM800L قرار داده شده است. ماژول SIM800L یکی از پرکاربردترین ماژول های GSM می باشد که در این پست تست و راه اندازی اولیه آن آموزش داده شده است. از ماژول های GSM برای ارسال اطلاعات در بستر شبکه تلفن همراه استفاده می شود. به وسیله این ماژول ها می توانید پیامک ارسال کنید یا تماس صوتی برقرار کنید. همچنین می توانید به اینترنت متصل شوید و یا از دیگر امکانات این ماژول ها که بسته به مدل آن می تواند امکانات مختلفی داشته باشد, استفاده کنید. در واقع به وسیله ماژول های GSM می توانید برد آردوینو یا میکروکنترلر خود را به یک تلفن همراه تبدیل کنید.
ماژول SIM800L استفاده های بسیار زیادی دارد به عنوان مثال می توان به استفاده در دزدگیرها, کنترل وسایل و اینترنت اشیاء و غیره اشاره کرد.
ویژگی های ماژول SIM800L
از ویژگی های ماژول SIM800L می توان به ابعاد بسیار کوچک و قیمت مناسب آن اشاره کرد. همچنین امکان ارسال و دریافت پیامک, امکان برقراری تماس صوتی, قابلیت اتصال به شبکه اینترنت و ارسال و دریافت دیتا, پشتیبانی از همه اپراتورهای تلفن همراه, قابلیت جستجو و دریافت سیگنال FM, قابل کنترل توسط دستورات AT (AT commands) را دارا می باشد.
مشخصات ماژول SIM800L
مشخصات ماژول SIM800L شامل ولتاژ تغذیه 3.4 تا 4.4 ولت (که ولتاژ تغذیه 4 تا 4.2 ولت توصیه می شود), جریان مصرفی در مد sleep حداکثر 2 میلی آمپر در مد Idle حداکثر 7 میلی آمپر در مد انتقال داده حداکثر 2 آمپر در مد تماس و باند فرکانسی PCS1900 برابر 130 میلی آمپر و باند فرکانسی GSM850 برابر 200 میلی آمپر می باشد. این ماژول از چهار باند فرکانسی 850, 900, 1800 و 1900 مگاهرتز پشتیبانی می کند. سوکت سیم کارت میکرو می باشد. دارای LED نشانگر وضعیت اتصال به شبکه می باشد. نوع رابط UART (با ولتاژ کاری حداکثر 2.8 ولت) می باشد.
پین ها و ترتیب پایه های ماژول SIM800L
این ماژول دارای 12 پایه می باشد. در زیر تصویر ماژول SIM800L را مشاهده می کنید که ترتیب و نام پایه های آن مشخص شده است. در ادامه در مورد این پایه ها توضیح خواهم داد.
پایه NET : این پایه برای اتصال آنتن مارپیچی (Helical) می باشد.
پایه Vcc : پایه مثبت تغذیه ماژول است. همانطور که گفته شد ولتاژ تغذیه این ماژول می تواند از 3.4 ولت تا 4.4 ولت باشد و به هیچ عنوان از 4.4 ولت بیشتر نشود چون باعث آسیب به ماژول خواهد شد.
پایه RST : این پایه برای ریست کردن ماژول می باشد و درصورتی که ماژول در وضعیت نامطلوبی قرار گیرد, این پایه به مدت 100 میلی ثانیه در وضعیت Low قرار گرفته و سپس ماژول ریست میشود.
پایه RXD و TXD : پایه های ارتباط سریال ماژول می باشند.
پایه GND : پایه منفی تغذیه ماژول است.
پایه RING : در حالت عادی و به طور پیش فرض این پایه در وضعیت High قرار دارد و در زمان دریافت تماس یا پیامک به مدت 120 میلی ثانیه Low خواهد شد.
پایه DTR : با High کردن این پایه مد Sleep ماژول فعال می شود و در زمان Low بودن مد Sleep ماژول غیرفعال است.
پایه MIC± : پایه های مثبت و منفی برای اتصال میکروفن می باشند.
پایه SPK± : پایه های مثبت و منفی برای اتصال بلندگو می باشند.
نکته 1: این ماژول دارای یک LED می باشد که در تصویر بالا مشخص است. این LED وضعیت اتصال به شبکه را مشخص می کند. در واقع فاصله یا زمان بین چشمک زدن این LED وضعیت اتصال به شبکه را مشخص می کند. اگر LED هر یک ثانیه چشمک میزد, بیانگر روشن بودن ماژول و عدم اتصال آن به شبکه است. اگر LED هر دو ثانیه چشمک میزد, بیانگر فعال بودن درخواست اتصال داده است. در صورتی که LED هر سه ثانیه چشمک میزد, بیانگر اتصال ماژول به شبکه می باشد و می تواند اقدام به ارسال و دریافت پیامک و تماس صوتی کند.
نکته 2 : همانطور که گفته شد آنتن مارپیچی (آنتن فنری هم گفته می شود) به پین NET ماژول لحیم می شود. ولی شما می توانید برای عملکرد بهتر ماژول به جای آنتن مارپیچی از یک آنتن IPX استفاده کنید و این آنتن را به سوکت مشخص شده با عبارت IPX ANT در تصویر بالا متصل کنید. در این حالت دیگر نیازی به لحیم کردن و استفاده از آنتن مارپیچی نیست.
نکته 3 : برای این ماژول نیاز به یک سیم کارت با سایز میکرو دارید. در تصویر بالا نحوه و جهت قرار دادن سیم کارت مشخص شده است.
در توضیحات بالا به طور خلاصه با ماژول SIM800L آشنا شدیم. در ادامه یک پروژه ساده برای تست و راه اندازی این ماژول با استفاده از برد آردوینو قرار داده شده است. در زیر شماتیک این پروژه را مشاهده می کنید.
همانطور که مشاهده می کنید در شماتیک بالا از برد آردوینو UNO به همراه ماژول SIM800L استفاده کرده ایم. همچنین از دو عدد مقاومت و یک خازن نیز استفاده شده است که در ادامه در مورد آنها بیشتر توضیح خواهم داد.
مقاومت های R1 که برابر 1.8 کیلو اهم و مقاومت R2 که برابر 1.5 کیلو اهم است, یک تقسیم مقاومتی برای کاهش سطح ولتاژ ارتباط سریال (UART) را ایجاد کرده اند. همانطور که گفته شد حداکثر سطح ولتاژ ارتباط سریال در ماژول SIM800L برابر 2.8 ولت است. ولی سطح ولتاژ ارتباط سریال در آردوینو 5 ولت است. بنابراین ما با استفاده از یک تقسیم مقاومتی سطح ولتاژ ارتباط سریال برد آردوینو را کاهش می دهیم تا مناسب ماژول شود و به آن آسیبی وارد نشود.
تغذیه ماژول SIM800L می تواند از 3.4 ولت تا 4.4 ولت باشد. بیشتر از 4.4 ولت به ماژول آسیب وارد می کند و کمتر از 3.4 ولت نیز ماژول کار نخواهد کرد. برای تهیه این ولتاژ می توانید از باتری های لیتیوم پلیمر یک سل استفاده کنید. یا از آداپتور استفاده کنید و به وسیله ماژول های کاهش ولتاژ مانند ماژول مبدل LM2596 ولتاژ را در محدوده گفته شده تنظیم کنید. توجه کنید که باتری یا آداپتوری که استفاده می کنید باید حداقل 2 آمپر جریان دهی داشته باشد تا ماژول بتواند به درستی کار کند.
خازن C1 را دو سر تغذیه ماژول SIM800L و نزدیک به آن قرار دهید. معمولا ماژول بدون استفاده از این خازن به شبکه متصل نمی شود, بنابراین حتما از خازن استفاده کنید.
در این پروژه ما فقط نیاز به استفاده از چهار پایه ماژول داریم. پایه RXD ماژول از طریق تقسیم مقاومتی به پایه 11 یا TX برد آردوینو متصل می شود. پایه TXD ماژول نیز به پایه 10 یا RX برد آردوینو متصل می شود. پایه های تغذیه ماژول یعنی پایه VCC و GND نیز طبق شماتیک بالا به تغذیه, که در مورد آن توضیح دادم متصل می شوند.
عملکرد این پروژه به این صورت است که ما با وارد کردن یک سری دستورات که به آنها دستورات AT گفته می شود در محیط سریال مانیتور آردوینو می توانیم وضعیت و اطلاعات را از ماژول دریافت کنیم. به عبارت دیگر ما در محیط سریال مانیتور آردوینو با نوشتن هر کدام از دستورات AT , ماژول SIM800L پاسخ و نتیجه را برای ما ارسال می کند و در سریال مانیتور قابل مشاهده است. در ادامه در مورد دستورات AT بیشتر توضیح می دهم.
دستورات AT Command ماژول SIM800L
دستورات AT یک سری دستورات استاندارد می باشند که ما با ارسال آنها برای ماژول, ماژول پاسخ آن دستور را برای ما ارسال می کند. برخی از دستورات AT ماژول SIM800L به صورت زیر است.
AT : این دستور برای بررسی برقراری ارتباط میان آردوینو و ماژول می باشد. در صورت برقراری ارتباط ماژول باید با OK پاسخ دهد
ATI : دریافت نام و ورژن ماژول
AT+GMR : دریافت ورژن کامل ماژول
AT+GMM : دریافت مدل ماژول
AT+CSQ : در پاسخ قدرت سیگنال شبکه را نمایش می دهد. عدد اول قدرت سیگنال بر حسب دسی بل است و می تواند عددی بین 0 تا 31 باشد
AT+CPIN? : این دستور وضعیت آماده بودن سیم کارت جهت تماس و ارسال پیام را بررسی می کند. در صورت نمایش ERROR یعنی سیم کارت به درستی در سوکت قرار داده نشده است و در صورت دریافت READY و OK یعنی سیم کارت آماده است
AT+CCID : فعال بودن سیم کارت را بررسی می کند. در پاسخ OK و شماره سیم کارت را برمیگرداند
AT+CREG? : این دستور ثبت شدن سیم کارت در شبکه را بررسی می کند. پاسخ این دستور شامل وضعیت رجیستر شدن سیم کارت (عدد اول) و نوع شبکه (عدد دوم) می باشد
AT+CSPN? : نام اپراتور شبکه را نمایش می دهد
AT+COPS : شبکه های موجود و ID آنها را نمایش می دهد
AT+CFUN? : بررسی می کند که سیم کارت در حالت پرواز قرار دارد یا ندارد. پاسخ باید عدد 1 باشد. در غیر این صورت با دستور AT+CFUN=1 آن را 1 می کنیم.
AT+CCLK? : زمان ماژول را نمایش می دهد
AT+CBC : وضعیت باتری لیتیوم پلیمر را نمایش می دهد. عدد دوم درصد شارژ باتری و عدد سوم ولتاژ واقعی باتری را بر حسب میلی ولت نمایش می دهد
AT+CGSN : شماره سریال سیم کارت (IMEI) را نمایش می دهد
دستورات AT بسیار بیشتر از تعداد گفته شده می باشند که ما به دلیل اینکه در این پروژه هدف تست و راه اندازی ماژول است, همین تعداد دستور کافی می باشد و در پروژه های دیگر هر دستوری که نیاز بود همان جا در مورد آن توضیح داده می شود.
پس از تکمیل سیم کشی مطابق با شماتیک بالا برد آردوینو را به کامپیوتر خود متصل کنید و برنامه این پروژه که در ادامه مشاهده می کنید را کامپایل و روی برد آردوینو آپلود کنید. برنامه این پروژه به صورت زیر است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include <SoftwareSerial.h> //فراخوانی کتابخانه ارتباط سریال// String txt1, txt2; //تعریف دو متغیر// SoftwareSerial gsm(10, 11); //Tx و پایه 11 اردوینو Rx تعیین پایه های ارتباط سریال پایه 10 اردوینو// void setup() { Serial.begin(9600); //تعیین نرخ ارسال داده ارتباط سریال// Serial.println("Testing GSM SIM800L Module"); //در سریال مانیتور Testing GSM SIM800L Module نوشتن عبارت// gsm.begin(9600); //SIM800 تعیین نرخ ارسال داده ماژول// } void loop() { if (gsm.available()) //را دریافت کرده و در سریال مانیتور نمایش میدهد SIM800 روبرو و کدهای درون ان اطلاعات ارسالی ماژول if شرط// { txt1 = gsm.readString(); Serial.println(txt1); } if (Serial.available()) //ارسال می کند SIM800 که ما در سریال مانیتور وارد می کنیم را برای ماژول AT روبرو و کدهای درون ان دستورات if شرط// { txt2 = Serial.readString(); gsm.println(txt2); } } |
توضیحات قسمت های مهم برنامه نوشته شده, اگر سوالی داشتید می توانید در قسمت نظرات مطرح کنید. از انتهای مطلب نیز می توانید فایل برنامه این پروژه با نرم افزار آردوینو را دانلود کنید.
بعد از اینکه برنامه را روی برد آردوینو اپلود کردید, سریال مانیتور آردوینو را اجرا کنید و سرعت سریال مانیتور رو روی 9600 قرار دهید. طبق توضیحات بالا در مورد LED این ماژول می توانید وضعیت اتصال به شبکه ماژول را متوجه شوید. در ادامه با وارد کردن هر کدام از دستورات AT بالا در سریال مانیتور آردوینو, ماژول SIM800L پاسخ را برای شما ارسال می کند و می توانید با ماژول ارتباط برقرار کنید.
پسورد فایل زیپ : www.emic.ir
نظر یادتون نره…
سلام
مدار تقسیم ولتاژ اشتباه نیست؟
سلام, بله ممنون که اطلاع دادید. شماتیک اصلاح شد.