کنترل 4 وسیله برقی از طریق پیام کوتاه SMS با ماژول SIM900

کنترل وسایل برقی با sms

در این بخش دانلود پروژه کنترل 4 وسیله برقی از طریق پیام کوتاه SMS با ماژول SIM900 و میکروکنترلر AVR, توسط تیم الکترونیک و برنامه نویسی الکترونیک ۹۸ برای شما علاقه مندان به پروژه های میکروکنترلر AVR آماده شده است. در این پروژه شما ابتدا باید حداقل یک شماره تلفن همراه در حافظه میکروکنترلر ذخیره نمائید تا در زمانی که از طریق ارسال SMS یک دستور برای مدار ارسال می کنید, میکروکنترلر نتیجه عملکرد فرمان شما را از طریق شماره تلفنی که قبلا در حافظه میکروکنترلر ذخیره کرده اید به اطلاعتان برساند.

لازم به ذکر است شما می توانید تا چهار شماره تلفن را در این پروژه در حافظه میکروکنترلر ذخیره نمائید. که برای این کار (ذخیره شماره تلفن مورد نظر) تنها لازم است به شماره تلفن, سیم کارت گذاشته شده در ماژول SIM900 یک پیام کوتاه حاوی شماره تلفن جدید ارسال نمائید. حالا شما می توانید با ارسال دستورات از پیش تعریف شده از طریق پیام کوتاه برای ماژول SIM900 چهار وسیله برقی را از راه دور خاموش و یا روشن نمائید. همچنین شما می توانید با گرفتن تماس صوتی با ماژول به صورت کاملا اتوماتیک و مخفیانه صدای محیط اطراف را از طریق میکروفنی که به ماژول SIM900 اتصال داده اید شنود کنید. در ادامه به شرح کامل پروژه و نحوه ساخت آن پرداخته می شود.

بعد قبل
SAM_1226

SAM_1228

SAM_1233
بعد قبل

معرفی ماژول SIM900

اگه بخوایم یه تعریف ساده از ماژول GSM داشته باشیم اینکه عملکردش دقیقا مثل یه موبایل پیشرفته! یعنی با استفاده از این ماژول در مدارات الکترونیکی این امکان براتون فراهم میشه تا بتونید به کمک میکروکنترلر و برنامه ای که نوشتید توسط سیم کارتی که به این ماژول متصل کردید به هر شخصی زنگ بزنید و تماس صوتی (GSM) برقرار کنید, پیام کوتاه (SMS) بفرستید و دریافت کنید, البته شاید بخواید پیام تصویری (MMS) بفرستید و یا دریافت کنید, حتی با این ماژول می تونید از طریق سیم کارت به اینترنت (GPRS) وصل بشید و خیلی راحت وب گردی کنید و شایدم چت با دوستانتون. راه اندازی یه ماژول SIM900 با اون اندازه کوچیکش واقعا کاری نداره و خیلی ساده فقط باید طبق دستوراتی که شرکت سازنده تو دیتا شیت ماژول داده عمل کنیم.

تفاوت SIM900A با SIM900

چیزی که مشخصه اینکه الان SIM900A بسیار ارزان تر از SIM900, اما این اختلاف دلیل بر ناکارآمد بودن SIM900A نیست, در چندین ماه گذشته واسه راه اندازی ماژول SIM900A داخل ایران, ماژول نیاز به آبدیت داشت (ماژول های SIM900A که تازه وارد ایران شدند دیگر نیازی به آبدیت ندارن و شما به راحتی می توانید از آن ها استفاده کنید), البته آبدیت کردن ماژول کار سختی نیست, اما چون بعضی از افراد مبتدی هنگام آبدیت کردن ماژول به دلایل بی احتیادی حین کار باعث سوختن ماژول می شدند, به همین دلیل فروشندگان قطعات الکترونیکی برای جلوگیری از فروش این قطعات برچسب های مختلفی روی این قطعه زدند.

مثلا من خودم که یه بار رفتم ماژول SIM900A رو بخرم فروشنده بهم گفت این ماژول خوب آنتن نمیده, ریست میشه, نویز پذیری بالایی داره و کلی حرف دیگه در آخر هم SIM900 رو میز گذاشت و گفت یکم بیشتر خرج کن و جنس خوب ببر. ولی خوب واقعیت این نیست تنها دلیل تفاوت قیمت SIM900A با SIM900 فقط و فقط تو اینکه ماژول SIM900 از چهار باند فرکانس 850 / 900 / 1800 / 1900 پشتیبانی میکنه, ولی SIM900A از دو باند فرکانس 900 / 1800 پشتیبانی میکنه.

چیزی که مشخصه اینکه, از این ماژول میشه تو ایران استفاده کرد چراکه فرکانس شبکه های تلفن همراه (GSM) تو ایران 1800MHz و 900MHz پس خیلی راحت می تونید از این ماژول استفاده کنید, اما اگه از این ماژول جایی می خواید استفاده کنید که قراره اون مدار بعد از ساخته شدن تو کشورهای دیگه استفاده بشه پس بهتر از SIM900 استفاده کنید که تمامی باندهای GSM رو پشتیبانی می کنه. همچنین لازم به ذکره که بگم شما در طول پروژه می تونید به جای استفاده از ماژول SIM900 از ماژول SIM900A بدون هیچ نگرانی و تغییراتی استفاده کنید.

ویدئو ضبط شده از نحوه عملکرد پروژه

ساخت منبع تغذیه برای ماژول SIM900

محدوده کاری ولتاژ ماژول SIM900 بین 3.4V الی 4.5 ولت است. به گفته شرکت سازنده این ماژول ولتاژ 4 ولت مناسب ترین ولتاژ برای عملکرد صحیح این ماژول است. از آنجا که این ماژول هنگام اتصال به شبکه GSM و GPRS برای یک مدت کوتاه جریانی معادل 2 آمپر می کشد, به همین دلیل منبع تغذیه ساخته شده برای این منظور باید بتواند ولتاژ 4 ولت با جریان 2 آمپر را برای ماژول فراهم کند.

شرکت سازنده در دیتا شیت ماژول یک منبع تغذیه برای راه اندازی ماژول پیشنهاد داده اما به دلیل اینکه آی سی رگلاتور به کار رفته در این مدار کمیاب هستش, از رگولاتور جریان بالا LM2576S-adj استفاده می کنیم. رگولاتور LM2576S-adj می تواند تا ولتاژ حداکثر 57V را از ورودی گرفته و در خروجی از 1.23V الی 37 ولت با جریان حداکثر 3 آمپر تثبیت نماید (جهت دریافت اطلاعات بیشتر می توانید به دیتا شیت این تراشه که پیوست فایل این پروژه می باشد مراجعه نمائید).

نقشه شماتیک ساخت منبع تغذیه برای ماژول SIM900

نحوه اتصال سیم کارت به ماژول SIM900

برای اتصال سیم کارت به ماژول SIM900 مثل تلفن های همراه و یا هر دستگاه دیگه ای که سیم کارت می خوره باید از سوکت سیم کارت استفاده کرد. تا کاربر بتونه هر وقت که خواست سیم کارت رو داخل دستگاه بزاره و یا خارج کنه و یا اینکه سیم کارت رو تعویض کنه. به طور کلی دو نوع سوکت سیم کارت وجود داره, 6 پین (پایه) و 8 پین. تنها تفاوت این دو نوع سوکت در اینکه زمانی که شما از سوکت 8 پین استفاده می کنید, هر وقت سیم کارت داخل سوکت قرار داده بشه و یا بخواید سیم کارت رو تعویض کنید ماژول شروع میکنه به جستجوی دوباره شبکه و یا اینکه اگه سیم کارت حین فعال بودن از سوکت خارج بشه ماژول دیگه بی خودی شبکه های تلفن همراه رو جستجو نمی کنه.

به طور ساده بخوام بگم یعنی SIM900 همیشه میدونه الان سیم کارت داخل سوکت هست و یا نه و یا اینکه سیم کارت عوض شده. حالا اگه شما از سوکت سیم کارت 6 پین استفاده کنید هر بار که بخواید سیم کارت رو در بیارید و یا تعویض کنید باید تغذیه ماژول رو جدا کنید و یا ماژول رو ریست کنید , تا ماژول SIM900 دوباره شروع به جستجوی شبکه بکنه و به شبکه GSM متصل بشه. که اگه از من بخواید این کار خوشایندی نیست پس زمانی که می خواید قطعات رو تهیه کنید حتما سوکت 8 پین سفارش بدید. اینجوری هم خیال خودتون راحت و هم خیال SIM900. در زیر برای شما عزیزان شماتیک اتصال سوکت 8 پین و 6 پین گذاشته شده است.

نحوه اتصال سوکت سیم کارت 8 پایه به ماژول SIM900

نحوه اتصال سوکت سیم کارت 6 پایه به ماژول SIM900

نحوه اتصال میکروفن و بلندگو به ماژول SIM900

برای برقراری یک تماس صوتی کامل و دو طرفه از طریق ماژول SIM900 شما احتیاج به اتصال میکروفن و بلندگو به ماژول SIM900 دارید. که در این بخش نحوه اتصال این دو بیان شده است.

نحوه اتصال میکروفون به ماژول SIM900

نحوه اتصال بلندگو به ماژول SIM900

اتصال ماژول SIM900 به میکروکنترلر AVR

برای انجام این اتصال از ارتباط سریال UART استفاده می کنیم. از آنجا که محدوده کاری میکروکنترلرها 0 تا 5 ولت و ماژول SIM900 بین 0 تا 4.5 ولت است بنابراین هر دوی آن ها جزوء تراشه های TTL دسته بندی می شوند. به همین دلیل برای اتصال بین ماژول و میکروکنترلر دیگر نیازی به استفاده از تراشه ها و مدارات دیگر نمی باشد و ما می توانیم این اتصال را به صورت مستقیم و بدون واسطه طبق تصویر زیر برقرار نمائیم.

نحوه ارتباط میکروکنترلر AVR به سایر تجهیزات توسط ارتباط سریال Uart

همانطور که در نقشه فنی ارائه شده قابل مشاهده است می توانیم مدار را به سه قسمت اصلی تقسیم کنیم. که این سه بخش مهم مدار شامل 1- منبع تغذیه 2- مدار قدرت 3- مدار فرمان تشکیل شده است. که به تحلیل هر یک از قسمت ها می پردازیم.

1- منبع تغذیه پروژه

برای راه اندازی صحیح این پروژه نیاز به یک منبع تغذیه با ولتاژ 4 ولت و جریان 2 آمپر می باشد. منبع تغذیه استفاده شده در مدار این پروژه همان منبع تغذیه راه انداز ماژول SIM900 می باشد که در مباحث قبلی (ساخت منبع تغذیه برای ماژول SIM900) بصورت کامل شرح داده شده است. لازم به ذکر است همانطور که در نقشه فنی مدار مشاهده می کنید از این منبع تغذیه به صورت مشترک برای راه اندازی میکروکنترلر AVR و یا بهتر است بگوئیم برای تغذیه کل قطعات مدار استفاده شده است.

2-مدار قدرت پروژه

مدار قدرت این مدار شامل چهار عدد رله 12 ولتی می باشد که وظیفه هر کدام روشن و خاموش نمودن یک و یا چند وسیله برقی می باشد. از آنجایی که در میکروکنترلر های AVR ولتاژ هر پایه می تواند بین 0 تا 5 ولت باشد و هر پایه می تواند حداکثر تا 25Ma جریان را تحمل نماید, به همین دلیل نمیتوانیم یک رله 12 ولتی را به صورت مستقیم توسط میکروکنترلر راه اندازی نمائیم. برای این منظور طبق تصویر زیر برای راه اندازی رله از یک عدد ترانزیستور NPN استفاده شده است.

نقشه شماتیک نحوه راه اندازی رله با میکروکنترلر AVR توسط ترانزیستور 2N3904

ترانزیستور 2N3904

ترانزیستور 2N3904 یک ترانزیستور NPN می باشد, که در اینجا نقش یک کلید الکترونیکی را ایفا می کند. به صورت ساده می توان گفت شما می توانید با اعمال یک ولتاژ کوچک مثبت (در صورتی که ترانزیستور NPN باشد) و یا ولتاژ منفی (در صورتی که ترانزیستور PNP باشد) به پایه بیس (B) ترانزیستور آن را روشن کرده و ترانزیستور شروع به هدایت ولتاژ از امیتر (E) به کلکتور (C) در ترانزیستورهای (PNP) و از کلکتور به امیتر در ترانزیستورهای (NPN) می نماید.

با این توضیحات حال می توان عملکرد مدار را به این شرح توضیح داد: در صورتی که پایه بیس (B) ترانزیستور متصل شده به میکروکنترلر ولتاژ یک و یا مثبت توسط میکروکنترلر AVR بگیرد, ترانزیستور روشن شده و به همین خاطر ترانزیستور بعد از روشن شدن به دلیل (NPN) بودن شروع به هدایت ولتاژ از پایه کلکتور (C) به پایه امیتر (E) نموده و در نتیجه این هدایت ولتاژ تغذیه رله فراهم می گردد و باعث روشن شدن رله می شود و تا زمانی که پایه بیس (B) ترانزیستور دارای ولتاژ مثبت یا یک از سوی میکروکنترلر باشد ترانزیستور روشن بوده و در نتیجه رله هم روشن می ماند. اما در هر زمان که ولتاژ اعمالی به پایه بیس (B) ترانزیستور توسط میکروکنترلر AVR به ولتاژ منفی تغییر پیدا کند بلافاصله ترانزیستور خاموش شده و در نتیجه رله نیز بلافاصله خاموش می شود.

رله چیست؟

می توان گفت رله یک کلید الکترومکانیکی است که به واسطه عبور جریان از سیم پیچ داخلی رله, سیم پیچ خاصیت مغناطیسی پیدا کرده و در نتیجه باعث جابجا شدن عناصر فلزی داخل رله می شود که این امر باعث قطع و وصل شدن اتصالات بین پایه های رله می شود که در نتیجه می توان از آن به عنوان یک کلید برای قطع وصل ولتاژ هر نوع دستگاه برقی تک فاز استفاده نمود.

از آنجایی که سیم پیچ ها خاصیت ذخیره جریان را دارند به همین دلیل در زمان قطع و یا خاموش کردن رله به دلیل دشارژ شدن سیم پیچ یک جریان برای مدت بسیار کوتاهی از طرف رله به مدار اعمال می شود که به آن جریان ضربه ای می گویند, شاید این جریان به صورت خیلی کوتاه و ناچیز باشد اما در برخی موارد باعث ریست شدن میکروکنترلر و یا تداخل در عملکرد بعضی از قطعات الکترونیکی در مدار می شود به همین دلیل برای حذف این جریان ضربه ای در مدارات الکترونیکی از یک عدد دیود سیلیکونی و یا دیود زنر استفاده می شود.

3- مدار فرمان پروژه

دو قطعه اصلی تشکیل دهنده مدار فرمان در این پروژه میکروکنترلر AVR و ماژول SIM900 می باشد. که ماژول SIM900 وظیفه اتصال به شبکه GSM و دریافت اطلاعات از طریق پیام کوتاه را به عهده دارد. و میکروکنترلر AVR وظیفه پردازش پیام کوتاه SMS دریافتی از ماژول SIM900 را به عهده دارد. در بخش های قبلی نحوه اتصال سیم کارت, بلندگو و میکروفن به ماژول SIM900 را نشان و مفصل در مورد آن صحبت کردیم.

همانطور که در نقشه فنی پروژه مشاهده می کنید دو عدد دیود نورانی به ماژول SIM900 متصل شده است که وظیفه LED اول به نام NETLIGHT نمایش وضعیت اتصال ماژول SIM900 به شبکه GSM است. وظیفه LED دوم به نام STATUS نمایش وضعیت روشن و خاموش بودن ماژول SIM900 می باشد.

همچنین دو عدد دیود نورانی دیگر به میکروکنترلر AVR متصل شده است که وظیفه LED اول به نام LED-RXD-SMS نمایش وضعیت دریافت پیام کوتاه می باشد, زمانی که این LED روشن است, بدین معنا می باشد که ماژول SIM900 یک پیام کوتاه (SMS) دریافت کرده است و این پیام توسط میکروکنترلر AVR در حال پردازش می باشد. و وظیفه LED دوم به نام LED-TXD-SMS بدین معنا می باشد که در هنگام روشن بودن این LED میکروکنترلر AVR در حال ارسال پیام کوتاه به چهار شماره تلفن از قبل ذخیره شده در حافظه است که این پیام کوتاه حاوی نتیجه حاصل از دستور ارسالی شما می باشد. میکروکنترلر استفاده شده در این پروژه ATMEGA8 از خانواده میکروکنترلر های AVR می باشد.

شرح برنامه میکروکنترلر به زبان بیسیک BASIC در نرم افزار BASCOM-AVR

در این برنامه از کریستال خارجی استفاده شده است که مقدار آن 11.592MHz می باشد. دلیل استفاده از این کریستال این می باشد که شما تنها با استفاده از این مقدار کریستال می توانید به صورت انتخابی از پهنای باند 1200 تا 115200 برای اتصال با ماژول SIM900 استفاده کنید. به همین خاطر باید توجه داشته باشید که در هنگام پروگرام کردن میکروکنترلر حتما باید کریستال خارجی میکروکنترلر ATMEGA8 را فعال کنید و برای راه اندازی میکروکنترلر کریستال 11.952MHz را به میکروکنترلر متصل نمائید.

پیکربندی درگاه سریال uart میکروکنترلر AVR

توسط دستور زیر در برنامه سرعت یا نرخ تبادل اطلاعات را بین میکروکنترلر و ماژول SIM900 مشخص می کنیم لازم به ذکر است که شما می توانید به دلخواه نرخ 1200 تا 115200 را انتخاب نمائید. که پیشنهاد ما به شما استفاده از سرعت 115200 می باشد. که دلیل این پیشنهاد سرعت بالا در تبادل اطلاعات و همینطور افزایش سرعت پاسخگویی از طرف میکروکنترلر AVR در هنگام ارسال دستور توسط پیام کوتا می باشد.

پیکربندی تایمر 2 در میکروکنترلر AVR

در بعضی از قسمت های برنامه مانند زمان فعال بودن میکروفن اتصال یافته به ماژول SIM900 نیازمند یک شمارنده و یا تایمر می باشیم تا در صورت فعال شدن میکروفن جهت شنود مکالمات بعد از طی زمان مورد نظر میکروفن را غیر فعال و به تماس صوتی خاتمه دهد. به همین دلیل برای فعال کردن تایمر ATMEGA8 از دستور زیر استفاده می کنیم. در این دستور ما تایمر شماره دو را پیکربندی و فعال می کنیم تا طی زمان داده شده به تابع Prescale زیر برنامه Clock را فراخوانی و اجرا نماید.

پیکربندی پایه های میکروکنترلر AVR به عنوان I/O

توسط دستورات زیر پایه های میکروکنترلر ATMEGA8 را که برای کنترل دو عدد دیود نورانی LED و همچنین ارسال فرامین صفر و یک جهت کنترل چهار عدد رله استفاده شده در مدار به کار رفته است را به عنوان خروجی تعریف می کنیم.

جهت صفر و یک کردن هر کدام از پایه های میکروکنترلر باید از نام آن پایه استفاده کنیم که همین امر زمانی که شما تعداد زیادی قطعه جهت کنترل به میکروکنترلر متصل کرده اید کاری سخت و سردرگم کننده در برنامه برای شما به وجود می آورد به همین منظور شما می توانید توسط استفاده از دستور زیر نامه پایه های میکروکنترلر را به نام دلخواه خود در برنامه تغییر دهید. در دستور زیر PORTB.0 میکروکنترلر ATMEGA8 را در برنامه به Led_r تغییر نام داده ایم.

روشن کردن ماژول SIM900 توسط میکروکنترلر AVR

از دستور زیر جهت روشن کردن ماژول SIM900 استفاده شده است که با استفاده از این دستور پایه PWRKEY ماژول SIM900 توسط میکروکنترلر ATMEGA8 به مدت یک ثانیه صفر شده و سپس به یک تغییر می کند.

تعریف متغیر

برای برنامه نویسی نیاز به فضاهایی برای انجام عملیات ها و نگه داری مقادیر مختلف دارید که ساخت متغیر به شما این امکان را می دهد.

VAR: نام متغیر

XRAM: استفاده از فضای حافظه جانبی برای متغیر

SRAM: استفاده از حافظه SRAM برای متغیر

ERAM: استفاده از فضای حافظه EEPROM برای متغیر برای هر متغییر محدودیت فضا وجود دارد که انواع متغیر ها در جدول زیر مشاهده می کنید.

معرفی متغیرهای قابل استفاده در زبان بیسیک برای میکروکنترلرهای AVR

نکته : متغییر STRING از نوع رشته و متنی است و برای نگه داری متن و رشته استفاده می شود.

اعمال تنظیمات اولیه به ماژول SIM900 توسط میکروکنترلر AVR

همانطور که در برنامه میکروکنترلر مشاهده می کنید بعد از مشخص شدن کریستال و نرخ اطلاعات همچنین پیکر بندی تایمر و متغیر ها, به ترتیب دستورات AT و ATE0 و AT+CMGF=1 برای ماژول SIM900 ارسال شده است. که هدف از ارسال AT تنظیم نرخ اطلاعات بین میکروکنترلر و ماژول SIM900 می باشد. همچنین هدف از ارسال دستور ATE0 خاموش کردن حالت اکو (تکرار واژه توسط SIM900) می باشد.

به زبان ساده تر می توان گفت به صورت پیش فرض زمانی که شما یک دستور را برای ماژول SIM900 ارسال می کنید ماژول عین همان عبارت را برای شما ارسال می کند که به اصطلاح به آن اکو یا برگشت کارکتر می گویم به دلیل اینکه این حالت ممکن است برای ارتباط صحیح بین میکروکنترلر و ماژول مشکل به وجود آورد به همین دلیل با ارسال دستور ATE0 آن را غیر فعال می کنیم همچنین می توانیم با ارسال دوباره دستور ATE1 آن را فعال نمائیم. هدف از ارسال دستور AT+CMGF=1 به ماژول SIM900 ابن است که برای دریافت و ارسال صحیح پیام کوتاه (SMS) نیاز به انتخاب حالت متنی می باشد با ارسال این دستور حالت متنی انتخاب می شود و با ارسال دو باره دستور AT+CMGF=0 حالت PD انتخاب می شود.

خواندن متن پیام کوتاه دریافتی از ماژول SIM900 توسط AVR

زمانی که ماژول SIM900 یک پیام کوتاه دریافت می کند. کد [+CMTI:”SM”,1] را برای میکروکنترلر ارسال می شود. حال برای اینکه در برنامه به میکروکنترلر بفهمانیم که یک پیام کوتاه دریافت شده. برنامه ای می نویسیم که به صورت مرتب داده ورودی از ماژول SIM900 را چک می کند و بلافاصله بعد از دریافت اولین کارکتر یعنی کارکتر “+” میکروکنترلر متوجه دریافت پیام کوتاه از ماژول SIM900 می شود و با ارسال دستور AT+CMGR=1 درخواست باز کردن و خواندن پیام کوتاه را برای ماژول SIM900 ارسال می نماید. که در پاسخ ماژول دستوری همانند دستور زیر به میکروکنترلر بر می گرداند.

پردازش متن پیام کوتاه توسط میکروکنترلر AVR

از آنجا که ما می خواهیم میکروکنترلر تنها متن پیام کوتاه را برای ما آنالیز کند به همین دلیل در این قسمت باید برنامه را طوری بنویسیم که میکروکنترلر بتواند متن پیام کوتاه را از جزئیات پیام کوتاه جدا کند به همین منظور برنامه را به اینصورت می نویسیم که بعد از دریافت پیام کوتاه توسط میکروکنترلر ابتدا میکروکنترلر به ازای دریافت هر کارتر (“) یک واحد به متغیر T1 اضافه می کند و با رسیدن متغیر T1 به هشت و یا بهتر بگویم بعد از دریافت هشت کارکتر (“) شروع به ذخیره کاکترهای دریافتی در متغیر SMS می کند و با رسیدن به کارکتر (O) دست از ذخیره پیام کوتاه برداشته و ازحلقه DO-LOOP خارج می شود.

با استفاده از این روش ما فقط متن اصلی پیام کوتاه را ذخیره می کنیم و جزئیات پیام کوتاه شامل ساعت و تاریخ و… را حذف می کنیم. به این ترتیب به راحتی ما می توانیم با پردازش متغیر SMS فرمان ارسالی را دریافت و اجراء کنیم. برای پردازش داده های ذخیره شده در متغیر SMS کافی است تا از دستور برنامه نویسی زیر استفاده نمائیم.

عملکرد این دستور به اینصورت است که از اولین کارکتر ذخیره شده در متغیر SMS به تعداد یک کارکتر را خوانده و در متغیر Data_in ذخیره می کند. حالا ما می توانیم با بررسی متغیر Data_in بفهمیم که کاربر کدام یک از دستورات جدول گذشته را دخواست نموده. حال در مرحله بعد نوبت به پردازش رمز ورود است که آیا کاربر رمز ورود را صحیح وارد نموده و یا خیر. برای فهمیدن این موضوع کافی است چهار رقم بعد از کارکتر اول را بررسی نمائیم.

بررسی صحت رمز ورود در متن پیامک

به عنوان مثال فرض کنید کاربر می خواهد رله دوم را کنترل نماید بدین منظور کد 20000 را برای ماژول SIM900 ارسال می کند که در این کد عدد 2 نشانگر کنترل رله دوم و 4 عدد صفر رمز ورود کاربر می باشد. میکروکنترلر پیام کوتاه را دریافت می کند و در متغیر SMS ذخیره می کند و سپس با استفاده از دستور گفته شده در بالا اولین کارکتر متغیر SMS را در متغیر Data_in ذخیره می کند حالا با پردازش متغیر Data_in متوجه می شود که هدف کاربر از ارسال این دستور کنترل رله دوم بوده حال برای اجرای دستور ابتدا رمز ورود را بررسی می کند و برای اینکار کافی است تا دستور بالا به شکل زیر تغیر کند.

از آنجا که رمز ورود بعد از کد دستوری یا همان عدد 2 می باشد. این بار طبق دستور بالا از اول کارکتر دوم یعنی اولین عدد رمز ورود به تعداد چهار کارکتر جدا و در متغیر Data_in ذخیره می کند. حال با بررسی دوباره متغیر Data_in با متغیری که قبلا رمز ورود در آن ذخیره شده است متوجه صحت پسورد ارسالی می شویم.

شرح عملیات شنود مکالمات

زمانی که شما دستور فعال کردن میکروفن را برای شنود مکالمات به ماژول SIM900 ارسال می کنید. میکروکنترلر متغیری با نام MIC را برابر یک می کند و منتظر دریافت یک تماس صوتی از ماژول SIM900 می ماند. زمانی که ماژول SIM900 یک تماس صوتی دریافت می کند دستور RING را برای میکروکنترلر ارسال می کند . و برنامه میکروکنترلر به گونه ای نوشته شده است که با دریافت کارکتر “R” در صورتی که متغیر MIC=1 برابر یک باشد دستور ATA را برای ماژول ارسال می کند و ماژول SIM900 با دریافت دستور به تماس صوتی پاسخ می دهد.

همچنین میکروکنترلر همزمان با ارسال دستور ATA شروع به فعال کردن تایمر به مدت 120 ثانیه می کند زمانی که متغیر T4 به 120 ثانیه برسد میکروکنترلر دستور ATH را برای ماژول ارسال می کند و متغیر MIC=0 را برابر صفر می کند. SIM900 با دریافت این دستور به تماس صوتی پایان می دهد.

توجه : از آنجا که در برنامه نویسی این پروژه فرض نویسنده بر آن بوده که خواننده این پروژه در حد متوسط آشنا به کدهای برنامه نویسی به زبان BASIC بوده لذا از کدهای برنامه نویسی مختلف استفاده کرده است, به همین خاطر توضیح تک به تک کدها نیازمند توضیحات بیشتر و طولانی تر شدن این پروژه می شود و در چهارچوب این پروژه نمی گنجد. به همین منظور فقط برنامه بخش دریافت و تحلیل پیام کوتاه از ماژول SIM900 توسط میکروکنترلر AVR شرح داده شده است. توضیح و برسی عملکرد سایر کدهای برنامه نویسی به خواننده واگذار می شود.

نحوه راه اندازی پروژه

این برنامه به این صورت نوشته شده است که شما برای کنترل رله اول تا چهارم و همچنین شنود مکالمات محیط باید کدهای ارائه شده در جدول زیررا به صورت پیام کوتاه برای ماژول SIM900 ارسال نمائید.

جدول دستورات پیامکی جهت کنترل رله ها

*شنود مکالمات : دقت نمائید که برای شنود مکالمات باید کد مربوطه از جدول را برای دستگاه ارسال نمائید و منتظر بمانید تا دستگاه یک پیام کوتاه تائید مبنی بر فعال شدن میکروفن برای مدت 120 ثانیه ارسال نماید. توجه داشته باشید که این پیام بدین معنا است که شما می توانید برای مدت 120 ثانیه به شنود بپردازید.

توجه : حتما بعد از راه اندازی دستگاه حداقل یک شماره تلفن در حافظه دستگاه وارد نمائید, تا دستگاه بتواند نتیجه فرمان شما را به آن شماره تلفن ارسال نماید.

 اطلاعات پروژه

 رمز فایل : www.electronics98.com

 محیط برنامه نویسی : BASCOM-AVR

 برنامه نویسی شده به زبان : BASIC

 نویسنده : فرهاد اکبری

 تاریخ انتشار : 19 آگوست 2014

36 دیدگاه

  1. امکان داره مشکل از کریستال باشه ؟ چون روش مقدار ننوشته 4.0sdx نوشته ، فک کنم اشتباه دادن کریستالو

  2. مشکل از آی سی بود شرمنده وقتتونو گرفتم ، حل شد

  3. سلام دوست عزیز
    بسیار خوشحالیم که توانستید مشکل مدار خود را عیب یابی و برطرف نمایید. همچنین به دلیل بروزرسانی سایت به مدت یک هفته امکان پاسخگویی به سوالات دوستان را نداشتیم و بابت عدم پاسخگویی به موقع، از شما پوزش می طلبیم.

  4. با سلام
    ممنون از پروژه ی خوبتون.مهندس جان من این پروژه رو با sim800l بستم و به خوبی کار میکنه ولی یک مشکل داره که میزان اعتبار سیم کارت رو نمیتونه بهم بگه.من سیم کارت همراه اول گذاشتم و کد #11*141* رو میگیره.ماژول کد 0000$$$$ رو دریافت میکنه ولی اس ام اس ی که میفرسته فقط عدد 2 رو نشون میده ممنون میشم اگه راهنمایی کنید.

  5. ببخشید اشتباه تایپی بود کد ارسالی #11*140* برای همراه اول رو میفرستم ولی اس ام اس ی دریافت نمی کنم

  6. سلام دوست عزیز
    این پروژه خیلی وقت است که دیگر ارائه نمی شود، همچنین کد استعلام مانده حساب این پروژه نیز مربوط به چندین سال قبل می باشد که با الگوریتم جدید کار نمی کند و باید توسعه پیدا کند.
    برای خواندن اعتبار سیم کارت باید در میکروکنترلر پس از ارسال درخواست USSD از طریق ماژول GSM ،مقدار برگردانده شده را در قالب یک رشته در میکروکنترلر ذخیره کند و سپس توسط دستورات مربوط به کار با رشته ها مقدار شارژ سیم کارت را پیدا کنید و تنها آن عدد را برای کاربر پیامک کنید.

 شرایط و قوانین ثبت دیدگاه

 فارسی بنویسید و از کیبورد فارسی استفاده کنید.

 لطفاً بیش‌از‌حدِ معمول، شکلک یا ایموجی استفاده نکنید و از کشیدن حروف یا کلمات با صفحه‌کلید بپرهیزید.

 به کاربران و سایر اشخاص احترام بگذارید. پیام‌هایی که شامل محتوای توهین‌آمیز و کلمات نامناسب باشند، حذف می‌شوند.

 از ارسال لینک‌های سایت‌های دیگر و ارایه‌ی اطلاعات شخصی خودتان مثل شماره تماس، ایمیل و آی‌دی شبکه‌های اجتماعی پرهیز کنید.