استفاده از ماژول GSM با بهره گیری از میکروکنترلر ۸۰۵۱ برای پروژه های شبکه موبایل
سه شنبه, ۲۰ اسفند ۱۳۹۸، ۰۲:۵۷ ب.ظ
استفاده از ماژول GSM با بهره گیری از میکروکنترلر ۸۰۵۱ برای پروژه های شبکه موبایل
سید علی طلاکش

این متن در مورد روش برقراری ارتباط ماژول 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 به صورت منظم و با فاصله زمانی خاصی ( در حدود ۱ ثانیه) شروع به چشمک زدن می کند که نشان می دهد ماژول آماده استفاده است و قبل از اتصال به شبکه، چشمک زدن آن سریع تر است.
- باید مطمئن شد که سیمکارت مورد استفاده در پروژه میزان اعتبار کافی برای ارسال پیامک را داشته باشد و همچنین ابعاد و نوع سیمکارت، با ماژول استفاده شده تطابق داشته باشد.
- ۹۸/۱۲/۲۰