این متن در مورد روش برقراری ارتباط ماژول GSM و میکروکنترلر ۸۰۵۱ است که از این طریق میتوان پیامک را ارسال کرده و دریافت کرد. استفاده از ماژول GSM در سیستمهای پیشرفته کاربردی بسیار متداول است و به همین دلیل داشتن دانش کار با این ماژول و اتصال آن به میکروکنترلر برای افرادی که میخواهند یک طراح عالی برای سیستمهای پیشرفته باشند، بسیار لازم است.
ماژول GSM چیست ؟
ماژول سامانه جهانی ارتباطات همراه (GSM) ،ماژولی است که معمولا در مودمهایی که بر اساس سیم کارت هستند قرار دارد و میتواند درست مانند یک گوشی تلفن همراه، امکان استفاده از شبکه موبایل را فراهم کند. ماژول GSM میتواند توسط یک کامپیوتر یا میکروکنترلر، کنترل شود و وظایف مختلفی را در شبکه انجام دهد، از جمله : مکالمه، ارسال پیامک، دریافت پیامک، ارسال فکس و .. معمولا ماژول GSM میتواند از طریق پورت سریال با سخت افزار موجود ارتباط برقرار میکند. اگر سخت افزار موجود یک کامپیوتر شخصی باشد، این ارتباط معمولا از طریق پورت سریال RS232 بوده و اگر سیستم موجود بر پایه میکروکنترلر باشد، ارتباط از طریق پینهای TTL یعنی Rx و Tx انجام میشود. ماژولهای GSM پیشرفته حتی ممکن است دارای امکانات ارتباطی دیگری چون بلوتوث یا وای فای باشند. معمول ترین کاربرد این ماژولها در سیستمهای ارسال و دریافت پیامک، سیستمهای کنترلی مبتنی بر موبایل یا کاربردهای سادهای چون انتقال اطلاعات با استفاده از شبکه GSM باشد که این ماژول فراهم میکند. سخت افزاری که برای ارتباط با ماژول استفاده میشود (کامپیوتر یا میکروکنترلر)، میتواند با ارسال کامندها یا مقادیر مختلف و در فرمت تعیین شده، وظایف مختلفی را بر عهده ماژول GSM بگذارد. مازول GSM که در این پروژه استفاده شده از نوع SIM900 است و کاری که میخواهیم انجام دهد این است که بتواند یک پیامک را به گوشی موبایل بفرستد. دستورات و فرمت مورد نیاز برای انجام این کار در ادامه آورده شده است:- AT: برای بررسی اتصال صحیح ماژول
- AT+CMGS=1: برای پیکربندی ماژول GSM در حالت SMS
- AT+CMGS=”mobile number”: برای فرستادن شماره موبایل به ماژول GSM
- CTRL+Z: برای ارسال شدن پیامک مورد نظر
دیاگرام مدار
در تصویر بالا دیاگرام مربوط به ارتباط ماژول GSM با میکروکنترلر ۸۰۵۱ نشان داده شده است. در اینجا ماژول GSM و میکروکنترلر از طریق ارتباط سریال با یکدیگر مرتبط هستند. پین Rx از میکروکنترلر به پین Tx در ماژول متصل شده و پین Tx میکروکنترلر به پین Rx در ماژول متصل است. برای نمایش پیامیکه ارسال میشود، در این پروژه از یک نمایشگر LCD استفاده شده است. کلید S1 و مقاومت R2 مربوط به مدار ریست کننده در میکروکنترلر هستند. خازن C1 و C2 و کریستال X1 نیز بخش کلاک مدار را تشکیل میدهند. خازن C3 تنها به منظور بای پس کردن نویز استفاده شده و مقاومت R2 نیز برای تنظیم کنتراست در نمایشگر LCD قرار داده شده است. مقاومت R3 محدود کننده جریان عبوری برای نور پس زمینه در نمایشگر LCD است.کد برنامه
ORG 000H MOV TMOD,#00100001B MOV TH1,#253D MOV SCON,#50H SETB TR1 RS EQU P2.7 RW EQU P2.6 E EQU P2.5 MAIN: ACALL DINT MOV A,#"A" ACALL SEND MOV A,#"T" ACALL SEND MOV A,#0DH ACALL SEND ACALL DELAY1 MOV A,#"A" ACALL SEND MOV A,#"T" ACALL SEND MOV A,#"+" ACALL SEND MOV A,#"C" ACALL SEND MOV A,#"M" ACALL SEND MOV A,#"G" ACALL SEND MOV A,#"F" ACALL SEND MOV A,#"=" ACALL SEND MOV A,#"1" ACALL SEND MOV A,#0DH ACALL SEND ACALL DELAY1 MOV A,#"A" ACALL SEND MOV A,#"T" ACALL SEND MOV A,#"+" ACALL SEND MOV A,#"C" ACALL SEND MOV A,#"M" ACALL SEND MOV A,#"G" ACALL SEND MOV A,#"S" ACALL SEND MOV A,#"=" ACALL SEND MOV A,#34D ACALL SEND MOV A,#"+" ACALL SEND MOV A,#"9" ACALL SEND MOV A,#"1" ACALL SEND MOV A,#"9" ACALL SEND MOV A,#"5" ACALL SEND MOV A,#"4" ACALL SEND MOV A,#"4" ACALL SEND MOV A,#"3" ACALL SEND MOV A,#"4" ACALL SEND MOV A,#"0" ACALL SEND MOV A,#"0" ACALL SEND MOV A,#"7" ACALL SEND MOV A,#"7" ACALL SEND MOV A,#34D ACALL SEND MOV A,#0DH ACALL SEND ACALL DELAY1 MOV A,#"H" ACALL SEND MOV A,#"E" ACALL SEND MOV A,#"L" ACALL SEND MOV A,#"L" ACALL SEND MOV A,#"O" ACALL SEND ACALL DELAY1 MOV A,#1AH ACALL SEND ACALL DELAY1 ACALL DINT ACALL TEXT1 ACALL DELAY1 HERE1:SJMP HERE1 SEND:CLR TI MOV SBUF,A WAIT:JNB TI,WAIT RET DELAY1:MOV R6,#15D BACK: MOV TH0,#00000000B MOV TL0,#00000000B SETB TR0 HERE: JNB TF0,HERE CLR TR0 CLR TF0 DJNZ R6,BACK RET DELAY: CLR E CLR RS SETB RW MOV P0,#0FFh SETB E MOV A,P0 JB ACC.7,DELAY CLR E CLR RW RET DISPLAY:MOV P0,A SETB RS CLR RW SETB E CLR E ACALL DELAY RET CMD: MOV P0,A CLR RS CLR RW SETB E CLR E ACALL DELAY RET DINT:MOV A,#0FH ACALL CMD MOV A,#01H ACALL CMD MOV A,#0CH ACALL CMD MOV A,#06H ACALL CMD MOV A,#81H ACALL CMD MOV A,#3CH ACALL CMD RET TEXT1: MOV A,#"S" ACALL DISPLAY MOV A,#"E" ACALL DISPLAY MOV A,#"N" ACALL DISPLAY MOV A,#"T" ACALL DISPLAY MOV A,#" " ACALL DISPLAY MOV A,#" " ACALL DISPLAY MOV A,#" " ACALL DISPLAY RET END
توضیح کد برنامه
تایمر ۱ در میکروکنترلر ۸۰۵۱ ، برای ارتباط سریال در مد ۲ تنظیم شده است. تایمر ۰ در میکروکنترلر ۸۰۵۱ برای ایجاد تأخیرهای استفاده شده در برنامه، در مد ۱ تنظیم شده است. برای این منظور رجیستر TMOD با مقدار ۰۰۱۰۰۰۰۱B پر شده است. برای تنظیم باود رست یا نرخ ارسال داده در حالت ۹۶۰۰، رجیستر TH1 با مقدار ۲۵۳D پر شده است. معادله استفاده شده برای تعیین این مقدار به صورت زیر است که در آن فرکانس کریستال بر حسب هرتز است:TH1=256-((Crystal/384)/Baud)
AT+CMGS=”mobile number”/r
است. برای تنظیم کردن ماژول GSM در حالت پیامکی باید کامندی با فرمت AT+CMGS=1/r
به آن ارسال شود. این کار به صورت ارسال تک به تک کد اسکی هر کدام از کاراکترهای موجود در این کامند ( حتی /r) به ماژول انجام میشود. سپس باید پیغامیکه قرار است ارسال شود را به ماژول فرستاد. این کار به شکل ارسال تک به تک کد اسکی هر کدام از کاراکترها و حروف موجود در متن به ماژول GSM انجام میشود و در نهایت نیز کد اسکی CTRL+Z برای ارسال پیامک به ماژول فرستاده میشود. کد اسکی CTRL+Z به صورت هگز به شکل ۰۱AH است. یک تأخیر ۱ ثانیهای نیز در بین هر کدام از کامندهای ارسالی به ماژول GSM قرار داده میشود تا زمان کافی برای دریافت و اجرای هر دستور وجود داشته باشد. تمامیمراحل گفته شده را میتوان به شکل ساده در تصویر زیر مشاهده کرد:AT/r ۱S delay. AT+CMGF=1/r ۱S delay. AT+CMGS="mobile number"/r ۱S delay. message text. ۱S delay. CTRL+Z ۱S delay.برای ارسال کدهای اسکی هر کدام از کاراکترهای کامندهای مختلف به صورت تک به تک به ماژول GSM، از ارتباط سریال استفاده میشود. این کار با استفاده از بارگذاری کد اسکی هر کاراکتر در آکومولاتور A و سپس فراخواندن زیرروال SEND انجام میشود. عملکرد زیر روال SEND به این صورت است که بیت TI پرچم ارسال را در رجیستر SCON پاک کرده و محتوی آکومولاتور A را در رجیستر SBUF قرار میدهد. پرچم ارسال TI در زمانی که ارسال تکمیل شود، توسط uC، با مقدار ۱ پر میشود. زیر روال این پرچم را مانیتور میکند و زمانی که مقدار آن ۱ باشد، از آن خارج میشود. وضعیت پرچم TI با استفاده از ساختار JB بررسی میشود. متن “SEND” پس از ارسال آخرین دستوری که به ماژول GSM ارسال شده است (مثلا CTRL+Z) بر روی ماژول LCD نمایش داده میشود. متد استفاده شده برای برقراری ارتباط بین ماژول LCD و میکروکنترلر از نوع ۸ سیم میباشد. در اینجا پس از اینکه پیغام ارسال شده بر روی نمایشگر LCD نشان داده شد، با استفاده از
HERE1:SJHERE1
برنامه متوقف میشود. اگر این عملیات انجام نشود، برنامه وارد یک حلقه بینهایت میشود و پیام را دوباره و دوباره ارسال میکند. در این حالت باید کلید ریست را به صورت دستی فشار داد تا پیام دوباره ارسال شود.نکات:
- ماژولهای GSM موجود در فروشگاهها با منابع تغذیه مختلفی مانند ۱۲، ۹ و ۵ ولت میباشند. ماژولی که در این پروژه استفاده شده با ولتاژ ۱۲ ولت کار میکند. بنابرین باید ولتاژ متصل به آن را با توجه به دیتاشیت ماژول GSM متصل کرد.
- ماژول GSM پس از روشن شدن، برای پیدا کردن و متصل شدن به شبکه نیاز به کمیزمان دارد. بر روی این ماژول یک چراغ LED وجود دارد که برای همین منظور و تشخیص وضعیت اتصال به شبکه قرار داده شده است. در بیشتر ماژولهای GSM، در صورت اتصال صحیح ماژول به شبکه، این LED به صورت منظم و با فاصله زمانی خاصی ( در حدود ۱ ثانیه) شروع به چشمک زدن میکند که نشان میدهد ماژول آماده استفاده است و قبل از اتصال به شبکه، چشمک زدن آن سریع تر است.
- باید مطمئن شد که سیمکارت مورد استفاده در پروژه میزان اعتبار کافی برای ارسال پیامک را داشته باشد و همچنین ابعاد و نوع سیمکارت، با ماژول استفاده شده تطابق داشته باشد.