مطالب علمی

کنترل رله با پیامک توسط Sim800L

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

PinOut ماژول Sim800L

618x258xoriginal

مشخصات ماژول Sim800L

Supply voltage: 3.8V – 4.2V
Recommended supply voltage: 4V
Power consumption:
sleep mode < 2.0mA
idle mode < 7.0mA
GSM transmission (avg): 350 mA
GSM transmission (peek): 2000mA
Module size: 25 x 23cm
Interface: UART (max. 2.8V) and AT commands
SIM card socket: microSIM (bottom side)
Supported frequencies: Quad Band (850 / 950 / 1800 /1900 MHz)
Antenna connector: IPX
Status signaling: LED
Working temperature range: -40 do + 85 ° C

برنامه کنترل رله با پیامک توسط Sim800L

شماتیک قسمت sim800

sim800

توضیحات برنامه :
ابتدا تنظیمات کد ویزارد رو به صورت زیر انجام میدیم:

yhy

سپس در برنامه اصلی هدر string رو اضافه میکنیم به همراه متغیر های مورد نیاز که جلوتر توضیح داده خواهند شد:

به کد های تولید شده کدویزارد دست نمیزنیم،به جز خط زیر که مربوط به یوزارته:

کد:
در این کد RXEN رو صفر میکنیم
سپس قبل حلقه while یه تاخیر 10 ثانیه ای قرار میدیم برای اینکه sim800 شبکه رو پیدا کنه(میتونید این زمان رو کمترش کنید) و سپس دوباره RXEN رو فعال میکنیم:

کد:
در کد زیر AT میفرستیم تا اینکه OK دریافت کنیم
توجه کنید sim800 به صورت auto baudrate می باشد یعنی اگر AT براش بفرستیم خودش تشخیص میده که با چه باد ریتی براش دیتا فرستادیم و با همون بادریت برامون دیتا میفرسته که اینجا بادریت رو 9600 تنظیم کردیم
نکته مهم در این کد استفاده از تابع strstr می باشد.به کمک این تابع شما میتونید در بافر دریافت دیتا دنبال رشته مورد نظرتون بگردید که اگر پیدا شد مقدار اشاره گر pch عددی غیر صفر خواهد شد
جلوتر در مورد این تابع توضیح بیشتری میدم.برای اطلاعات تکمیلی میتونید لینک های زیر رو هم ببینید

http://www.cplusplus.com/reference/cstring/strstr/
https://www.tutorialspoint.com/c_sta…ion_strstr.htm

بعد از اینکه OK دریافت شد portb.1 صفر خواهد شد.

در خط زیر echo را خاموش میکنیم تا دیتاهایی که خودمون میفرستیم رو دیگه دریافت نکنیم:

کد:
با استفاده از خط زیر بافر دریافت را پاک میکنیم

کد:
با استفاده از کد زیر حالت پیامک را روی text mode قرارمیدهیم(دو حالت داریم pud و textmode که باید پیامک رو روی text mode تنظیم کنیم) و منتظر میمونیم تا OK دریافت کنیم:

کد:
با استفاده از کد زیر پیامک sim800 was turned on رو به شماره ای که از قبل تعیین کردیم میفرستیم:

با استفاده از کد زیر پیامک های ذخیره شده در ماژول را پاک میکنیم:
در کد زیر میاد میبینه که اگر تعداد پیام به 8 رسید کل پیام های ماژول رو پاک میکنه:
در کد زیر منتظر میمونه تا +CMTI از ماژول دریافت کنه که یعنی پیام جدید اومده
فرمت کد دریافتی به صورت زیره:
که سیزدهمین کاراکتر شماره خونه ایه که پیام در اون ذخیره شده که یعنی pch[12] برابر شماره خونه پیامک دریافتی میشه
بنابر این میایم با کد زیر پیام اون خونه رو میخونیم(درواقع همون پیام جدید)
با استفاده از کد زیر هم میاد بررسی میکنه که اگر on# اومد رله رو وصل و اگر off# اومد رله رو قطع میکنه
کتابخانه آلتیوم ، شماتیک و فوت پرینت ماژول SIM800L

نویسنده :  سید رضا باباتبار

لینک موضوع در انجمن :  https://www.eca.ir/forums/thread77254.html

نوشته های مشابه

6 دیدگاه

  1. سلام من میخوام چند تا رله توسط سیمکارت راه اندازی کنم میشه اونم لطف کنید اموزش بدین هرکار میکنم یاد نمیگیرم

  2. سلام یه سوال داشتم در رابطه با توصیحات بخش آخر ( که سیزدهمین کاراکتر شماره خونه ایه که پیام در اون ذخیره شده که یعنی pch[12] برابر شماره خونه پیامک دریافتی میشه
    بنابر این میایم با کد زیر پیام اون خونه رو میخونیم(درواقع همون پیام جدید) ) ابنجا چرا pch[12] ؟ چون اگه بخوایم شماره خونه رو پیدا کنیم باید بنویسیم pch[13] میشه لطفا دلیلشو بگید؟

  3. سلام
    ضمن عرض ادب و احترام و تشکر از مطالب مفیدی که در اختیار علاقمندان قرار میدین
    ببخشید من یه مشکل بزرگ و اساسی دارم
    راستش من sim800L رو به atmega8a متصل کردم برای تغذیه از باطری لیتیوم 3.7 ولتی که با خازن 1000 میکروفاراد 10 ولتی موازی هست استفاده کردم و برای میکرو هم از کریستای خارجی 8 مگاهرتز با دو تا خازن 22 پیکوفاراد استفاده کردم و برای مانیتورینگ جواب برگشتی از ماژول از یه lcd 16*2 استفاده کردم برای کد نویسی هم از بسکام استفاده کردم
    من دستور AT رو که میفرستم جواب ok دریافت نمیکنم
    بنظرم تمام اصول رو رعایت کردم
    خواهش میکنم راهنماییم کنید

    1. سلام دوست عزیز ،برای مطرح کردن سوال و مشکل علمی که دارید ،میتونید به بخش انجمن مجموعه ECA مراجعه کرده و از نظرات و تجربیات اساتید عضو این انجمن استفاده کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا