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