جلسه بیست و سوم : ارسال AT Command

سلام
جلسه قبل در مورد سریال نرم افزاری یا همون Software Serialصحبت کردیم . این جلسه قصد دارم با استفاده از بحث جلسه قبل برای یه ماژول GSM کامند بفرستیم .
قدم اول اینه که اصلا ببینیم AT Command چیه ؟
خیلی موقع ها شده که وقتی داریم اطلاعات یه ماژول رو می خونیم می بینیم تو توضیحاتش نوشته ارتباط با این ماژول توسط AT Command هست. AT Command به زبون ساده یه سری حرف و در خواسته که ما به ماژول می زنیم و ماژول هم به ما جواب میده .
مثلا فرض کنید یه ماژول GSM داریم ( همون ماژول های سیم کارت خور خودمون ) می خوایم از ماژول سوال کنیم سیم کارتی که روشه پین کد داره یا نه ؟ کار خیلی سادس ! ما دقیقا همین رو ازش سوال می کنیم . حالا چجوری ازش بپرسیم ؟ مثلا بگیم ماژول جان پین کد داری؟ یا بگیم سلام آیا سیم کارت شما پین کد دارد یا هزار مدل دیگه ؟ فرض کنید که ما به هر شکلی پرسیدیم حالا ماژول بخواد جواب بده . میتونه بگه آره می تونه بگه بلی می تونه بگه بله و ….
به این مکالمه ما با ماژول میگن ارتباط AT Command . یعنی ما با ماژول با ارسال کامند حرف می زنیم . حالا این که ما چجوری بپرسیم و اون چجوری جواب بده یه استاندارد داره به نام لیست AT Command ها . ماژولی که باید باهاش با AT Command حرف زده بشه بدون شک یه فایل PDF داره که لیست تمام کامندهایی که میپذیره توش نوشته شده .
حالا چرا AT Command ؟ چراشو نمیدونم و حوصله سرچ کردن و فهمیدن هم ندارم . فقط همینو بدونین که هر کامندی که میدیم با AT شروع میشه . مثلا میگیم : ATRST یا میگیم : ATCDMA و الی آخر . بدون استثنا تمام کامندها با AT شروع میشه .

*****************************************************

تا اینجای جلسه فقط سعی کردم خیلی خیلی ساده بهتون بگم AT Command چیه ؟
الان قصد دارم روش ارسال AT Command رو شروع کنم.
بزرگترین و مهم ترین نکته اینه که هر ماژولی که روش انتقال اطلاعاتش AT Command هست پروتکل ارتباطی سخت افزاریش سریاله . یعنی تمام کامندهای ما روی پینهای RX و TX ماژول ارسال و دریافت میشه . ماژولی که من میخوام باهاش ارسال AT Command رو نشون بدم ماژول SIM800L هست که اینه .
به جای این ماژول شما می تونید از هر ماژول دیگه ای که انتقال اطلاعاتش به صورت AT Command هست استفاده کنید (هر ماژولی )

قدم اول برقرار کردن سیم بندیه . من قراره از سریال نرم افزاری و پینهای شماره 10 , 11 استفاده کنم .
2016-05-08_16-44-05

توی سیم بندی بالا تکلیف پینهای 10 و 11 و گراند که معلومه ، می مونه VCC . ممکنه ولتاژ کاری ماژولی که شما باهاش کار می کنید بیشتر یا کمتر از 5 ولت آردونیو باشه .حتی در بعضی موارد ولتاژ کاری ماژول همون 5 ولته ولی آمپر ماژول بالاتر از آمپر آردوینوس . در این حالت باید ولتاژ ماژولتون رو از یه منبع خارجی تهیه کنید و به یاد داشته باشید که گراند منبع خارجی و گراند آردوینو رو باید با هم مشترک کنید.

خب سیم بندی رو هم انجام دادیم میریم سراغ مرحله کد نویسی . از مسیری که قبلا رفتیم مثال اولیه Software Serial رو بیارید :
2016-05-08_16-52-55

حالا تو این کد من قصد دارم دست ببرم . مثلا میخوام اسم ارتباط سریال نرم افزاریمو بزارم SIM800L .
تغییر دومم اینه که Baude Rate ارتباط سریال کامپیوتر و ارتباط سریال SIM800L ام رو میزارم 9600.
از اونجایی که آردوینو من UNO هست اون تابع while ای که نوشته رو پاک می کنم.
توی تابع setup هم دو تا پرینت داره هر دوتاشو پاک می کنم .
کد نهایی من با پاک کردن کامنت های اضافی شد این :
2016-05-08_17-13-46

قسمت 1 : معرفی کتابخانه SoftwareSerial و معرفی پینهای 10و 11 بعنوان پینهای سریال . دقت کنید 10 میشه RX آردوینو و 11 میشه TX آردوینو. همچنین دقت کنید که اسم ارتباط سریالم شده SIM800L .
قسمت 2 : کانفیگ ارتباط سریال . Baude Rate ارتباط سریالم شده SIM800L.begin .
قسمت 3 : تابع LOOP که توجلسه قبل براتون توضیح دادم . باز هم اسم ارتباط سریالم تو خوندن و نوشتن شده SIM800L.

کد رو آپلود کنید تو آردوینو و کنسول سریال رو باز کنید. مثل عکس زیر دو تا تنظیم گفته شده رو حتما مثل خودش انجام بدید.
2016-05-08_17-17-18

*****************************************************

حالا وقت کامند دادنه . الان ممکنه تو دلتون این دلهره بوجود بیاد که سخت افزارمو درست بستم ؟ کد نویسیم درسته ؟ چیزی مشکل نداره ؟
برای پایان دادن به این دلهره یه راه حل وجود داره اونم اینه که اولین و مهم ترین کامند ( به نظر من ) رو بدید. تو این داستان ارتباط AT Command یه کامند خیلی مشهور و البته مهم و مشترک بین تمام ماژول ها وجود داره که همیشه با اون شروع می کنن به کامند دادن و اون کامند AT هست . AT یه جورایی در نقش سلام ظاهر میشه . ما به ماژول سلام می کنیم ( با ارسال کامند AT ) ، اگه ماژول سالم باشه و در اتصالات سخت افزاری مشکلی نداشته باشه ماژول به سلام ما جواب میده . جواب سلامی که میده کامند OK هست. یعنی اگر ما AT رو بفرستیم و ماژول OK جواب بده کار تمامه و ما تونستیم بین ماژول و آردوینومون ارتباط AT Command رو برقرار کنیم.
کلیپ زیر دقیقا داره همین رو نشون میده :

*****************************************************

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

این جلسه صرفا قصد داشتم فرستادن AT Command با سریال نرم افزاری رو بهتون آموزش بدم . نگید چرا فقط یه AT فرستادم چون اگه این کامند کار کنه بدون شک بقیش هم کار خواهد کرد.

پایان جلسه

One thought on “جلسه بیست و سوم : ارسال AT Command

  1. سلام من gsm. sim800lرو راه اندازی کردم ولی وقتی اس ام اس میفرستم محتوای اس ام اس فرستاده نمیشه «در طرف مقابل مینویسه محتوای پیام یافت نشد» میشه بگین ایراد کار کجاس خیلی ممنون

  2. سلام
    در ارتباط با sim800l من توی دستور at+cops? l جواب صفر می گیرم ولی توی at+cops=? l چند تا عدد میده این صفر و این عددا چین؟ چیکار کنم شبکه پیدا بشه؟

  3. با سلام ودرود

    من ماژول را وصل کردم اما روی پورت سریال جواب OK نمیده وقتی AT را می زنم حتی خود AT روی پورت هم بر نمی گرده

  4. سلام
    با AT Command و Hyper Terminal میشه کاری کرد که مودم جی اس ام Wavecom ارسال پیامک رو به صورت scheduled داشته بلاشه؟

  5. سلام منم اردوینو ندارم چطور میتونم مستقیم از atmega8 برای تست AT COMMEND ماژول sim800l استفاده کنم؟

پاسخ دادن به امیر هوشمند لغو پاسخ

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