آموزش رزبری پای رزبری پای سیم کارت GSM - GPRS

ارسال دستورات AT-COMMAND به ماژول سیم کارت GSM در برد رزبری پای

send-at-commands-to-gsm-module-with-raspberry-pi-digispark
نوشته شده توسط معین صابری

در سری آموزش های برد رزبری پای و شیلد سیم کارت SIM800C مخصوص این برد، به طراحی پروژه‌های مختلف نظیر ارسال پیامکی دما به کمک این برد و کنترل رله از طریق SMS، پرداختیم. در آموزش‌های دیگر، برد رزبری پای Raspberry pi را همانند اتصال به یک مودم اینترنتی، به اینترنت GPRS شیلد رزبری پای متصل نموده و به ارسال و دریافت داده پرداختیم. جالب است که مطلع باشید به کمک این روش، می توانید خیلی ساده از طریق این ماژول، به اینترنت متصل شده و کارهای عادی نظیر وب گردی (البته با سرعت پایین) را هم انجام دهید. همانطور که اطلاع دارید، این ماژول با دریافت فرامینی موسوم به AT-COMMANDها کنترل می‌شود. در آموزش‌های پیشین برای ارسال فرمان به ماژول از نرم افزارهای واسط نظیر gammu و ppp استفاده کردیم. در این آموزش با هم به بررسی ارسال دستورات AT-COMMAND به شیلد سیم کارت SIM800C خواهیم پرداخت. در ادامه این آموزش با مرجع تخصصی رزبری پای و مرجع تخصصی ماژول سیم کارت به زبان فارسی، دیجی اسپارک همراه باشید.

 


دستورات AT-COMMAND


ماژول‌های مخابراتی سیم کام، نظیر شیلد SIM800C، قابلیت اتصال به شبکه GSM در باند فرکانسی ۸۵۰/۹۰۰/۱۸۰۰/۱۹۰۰ را داراست. با اتصال به شبکه GSM، این ماژول می‌تواند به برقراری تماس تلفنی، دریافت تماس و یا رد آن، ارسال و دریافت پیامک و اتصال اینترنت، دقیقا مثل یک تلفن همراه بپردازد. این ماژول برای انجام هریک از فرامین خود، دستوراتی از پیش تعیین شده داشته که با ارسال این دستورات به ماژول، عمل مورد نظر کاربر نظیر ارسال پیامک و یا تماس تلفنی، اجرا خواهد شد. بسته به نوع برد مورد استفاده برای راه اندازی ماژول سیم کارت، روش‌های مختلفی برای ارسال فرمان AT Command به ماژول سیم کارت وجود دارد. در بردهای آردوینو به یک روش و در بردهای رزبری پای هم بسته به مدل انتخابی ماژول سیم کارت، روش‌های مختلفی خواهیم داشت.

 


ارسال AT-Command در آردوینو


برای ارسال این فرامین از طریق رایانه به ماژول سیم کارت، از آنجایی که پروتکل ارتباطی ماژول از نوع سریال و رایانه USB است، می بایست به کمک یک مبدل سریال به usb، دستورات را به ماژول ارسال نماییم. پروتکل ارتباطی ماژول‌های سیم کام، از نوع سریال UART است، همانطور که می‌دانید، این پروتکل دو پایه به نام‌های RX و TX به ترتیب برای دریافت و ارسال داده دارد. برای اتصال مبدل به ماژول می بایست پایه RX مبدل به TX ماژول و بالعکس متصل شود، همجنین جای گراندها نیز می‌بایست به هم متصل شود. دقیقا مشابه آنچه در تصویر زیر مشاهده می‌کند.

اتصال سیم کارت sim800c به مبدل سریال به USB - دیجی اسپارک

پس از اتصال ماژول به رایانه، به کمک یکی از نرم افزار های ترمینال، نظیر نرم افزار ترمینال آردوینو، می‌توانید به ارتباط دهی با ماژول پرداخته و فرامین خودر ا به آن ارسال نمایید.

ارسال دستورات AT-Command به ماژول سیم کارت sim800c - دیجی اسپارک

همانطور که بیان شد، برای اجرای هر عمل، نظیر ارسال و دریافت پیامک، می بایست فرمان خاصی را به ماژول ارسال نمود. فرمت فرمان ها به شکل زیر است:

AT+COMMNAD

در فرمت فوق، هر فرمان، در جای عبارت COMMAND قرار گرفته و در نهایت با فشردن کلید ENTER، فرمان به ماژول ارسال می‌شود. در ادامه، مهم ترین دستورات ماژول را با هم مرور می‌کنیم.

-“AT+CMGS=”+989121234567 : ارسال پیام متنی 

-;ATD+98912345678 : برقراری تماس تلفنی

-AT+CMGR=1 : خواندن پیام متنی

-ATH : قطع تماس تلفنی

-AT+SAPBR=1,1 : اتصال به شبکه اینترنت

-AT+CIFSR : مشاهده آی پی ماژول

AT+CBC : مشاهده میزان شارژ باتری

-AT+CSQ : مشاهده کیفیت سیگنال

برای ارسال این فرامین به ماژول از طریق برد آردوینو Arduino و یا رزبری پای Raspberry Pi، نیاز است تا پایه RX ماژول به TX برد آردوینو و یا رزبری پای و بالعکس، با اتصال گراند مشترک، صورت پذیرد. اما از آنجاییکه ما در این آموزش از شیلد ماژول SIM800C مخصوص برد رزبری پای استفاده می‌نماییم، نیازی به سیم کشی اضافه نیست. کافیست شیلد را بر روی برد رزبری پای Raspberry pi قرار دهید، شیلد سیم کارت تغذیه خود را از برد رزبری دریافت خواهد نمود. به تصویر زیر دقت کنید.

اتصال شیلد سیم کارت Sim800C مخصوص رزبری پای - دیجی اسپارک

 


ارسال AT-COMMAND در برد رزبری پای


همانند آموزش‌های پیشین، نیاز به ابزاری داریم تا بتوانیم به شیلد سیم کارت SIM800C، فرمان ارسال کنیم. در سیستم عامل ویندوز برای ارسال فرامین AT-COMMAND و اتصال به ماژول از نرم افزارهای مخصوص استفاده می‌شود. مشابه همین مورد در این آموزش از نرم افزاری به نام minicom که برای سیستم عامل لینوکس و ارسال داده از طریق پورت سریال طراحی شده است، بهره می‌بریم. برای دانلود و نصب این ابزار، به شیوه زیر عمل کنید.

sudo apt-get install minicom

پس از دانلود و نصب نرم افزار فوق، می بایست در ابتدا تنظیمات مربوطه را انجام دهید. از آنجاییکه پس از قرار گیری شیلد رزبری پای، نام این دیوایس به صورت ttyS0 در سیستم ذخیره شده و این نام می باید در تنظیمات نرم افزار قرار گیرد، در ابتدا به کمک دستور زیر، از نام دیوایس مطمئن شوید.

dmesg|fgrep ttyS0

پس از دستور فوق، درصورتیکه نام دیوایس صحیح باشد، با عبارت زیر روبه رو خواهید شد.

راه اندازی نرم افزار minicom در رزبری پای - دیجی اسپارک

پس از اطمینان از نام دیوایس،باید همین نام را درون نرم افزار minicom وارد نمایید. برای این منظور، نرم افزار را در حالت تنظیمات، باز می نماییم.

sudo minicom -s

پس از وارد نمودن عبارت فوق در ترمینال، با تصویر زیر مواجه خواهید شد.

راه اندازی نرم افزار minicom در رزبری پای - دیجی اسپارک

در این مرحله، به کمک کلیدهای جهتی کیبورد (arrow keys)، گزینه serial port setup را انتحاب و تایید نمایید. پس از این مرحله، منوی زیر را مشاهده خواهید کرد:

تنظیمات نرم افزار minicom در رزبری پای - دیجی اسپارک

در منوی فوق، با توجه به اینکه باید نام دیوایس را تنظیم نماییم، با انتخاب دکمه a کیبرد، وارد گزینه تنظیمات نام دیوایس می شویم. در این قسمت، چنانچه مغایرتی با عبارت درج شده در تصویر وجود داشت، آن را به شکل تصویر تغییر داده و سپس دکمه enter را بزنید. پس از این قسمت، با منوی زیر مواجه خواهید شد.

راه اندازی نرم افزار minicom در رزبری پای - دیجی اسپارک

در منوی فوق، به کمک کلیدهای جهتی کیبورد، برروی گزینه save setup as dfl رفته و enter را بزنید. در این مرحله تنظیمات ذخیره شده و آماده ارسال فرامین AT به ماژول خواهیم بود. برای این منظور کافیست عبارت زیر را تایپ نمایید.

sudo minicom

پس از تایپ عبارت فوق، نرم افزار باز شده و شما می توانید به ارسال فرمان و دریافت پاسخ، مشابه تصویر زیر، بپردازید.

ارسال دستورات AT-Command نرم افزار minicom در رزبری پای - دیجی اسپارک

 

 


وسایل مورد نیاز


برد رزبری پای

شیلد SIM800C سیم کارت مخصوص رزبری پای

 

 


جمع بندی


در این آموزش به معرفی فرامین AT در ماژول‌های سیم کارت از برند سیم کام پرداخته شد. آنچانکه در این آموزش بیان گردید، فرامین at-command ماژول سیم کارت، دستوراتی از پیش تعیین شده هستند که هرکدام به منظور عمل خاصی، نظیر تماس، پیامک، اینترنت و…. به کار می‌رود. در ادامه، نحوه ارسال دستورات AT در برد رزبری پای به شیلد SIM800C سیم کارت مخصوص این برد، از طریق نرم افزار minicom، مورد بررسی قرار گرفت. همچنین از مریت های مهم شیلد سیم کارت Sim800C، کاهش پیچیدگی در مدار و راه اندازی سریع و آسان است. پس از دانلود و نصب این نرم افزار، تنطیمات مربوطه را انجام داده و سپس فرامین کنترلی این ماژول نظیر برقراری تماس، ارسال پیامک و…. را از طریق برد رزبری پای به این شیلد، ارسال نمودیم. در آموزش بعدی به کمک اینترنت ماژول سیم کارت Sim800C و برد رزبری پای اقدام به ارسال تصویری که از دوربین Raspberry Pi گرفته‌ایم برروی سرور خواهیم کرد. ارسال تصویر به سرور با برد رزبری پای از طریق اینترنت GPRS شیلد SIM800C

 

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

 

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

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

تبادل نظر و رفع عیب با ثبت دیدگاه

۱۶ دیدگاه

  • سلام
    من یک ماژول sim900a دارم که با چند روش مختلف از جمله روش ارائه شده در این پیج سعی کردم ارتباط آن را با رزبری پای ۳ برقرار کنم اما متاسفانه میسر نشد. در مرحله ای که باید دستورات AT را وارد کنیم، کلیدهای کیبورد کار نمی کنند و نمی توانم دستور AT را تایپ نمایم. در این مرحله تنها کلید Ctrl-A کار می کند که پس از آن با فشردن کلید Z وارد صفحه Help می شود. درون این صفحه گزینه های زیادی از قبیل dial و … دارد اما هیچ کدام به درستی کار نمی کنند. اگر ممکن است راهنمایی بفرمایید.
    نکته دیگر اینکه در برخی مراجع دیدم که ولتاژ منطقی برد sim900a، پنج ۵ ولت می باشد و باید برای تطبیق آن با ولتاژ ۳٫۳ ولتی رزبری از دیود و مدارتطبیق ولتاژ استفاده نمود. اما شما اشاره ای به این امر نکردید. آیا می توان پایه های Tx,Rx این ماژول را مستقیما به رزبری متصل نمود؟
    البته قابل ذکر است که وقتی با مولتی متر ولتاژ پایه های برد sim900a را اندازه می گیرم، حدود ۲٫۸ ولت هستند و نه ۵ ولت!

    • سلام
      در این آموزش، من از شیلد مخصوص رزبری پای استفاده کرده ام. این شیلد به سادگی بر روی رزبری قرار گرفته و نیازی به مدار تبدیل سطح ولتاژ ندارد. در نظر داشته باشید که ولتاژ پایه های sim900 برابر ۲٫۸ است و نه ۵ ولت.
      برای اتصال SIM900 به رزبری، باید پایه RX رزبری به پایه TX از ماژول SIM900 و پایه TX رزبری به پایه RX ماژول متصل شود. توجه داشته باشید که پایه های GND ماژول و رزبری نیز حتما به یکدیگر متصل شده باشند. برای تبدیل سطح نیز، می توانید پایه TX رزبری را به کمک یک دیود معمولی با افت ولتاژ ۰٫۷ به پایه RX ماژول SIM900 متصل کنید.

  • سلام
    ممنون از آموزش خوبتون
    خیلی از سایت ها موجودی این شیلد ها رو تمام کردند ، کجا میشه تهیه کرد و اینکه شیلد ۳g کلا وجود نداره؟

    • سلام و متشکرم
      غیر از شیلد هم می توانید از ماژول SIM800L استفاده کنید. برای ارتباط بین رزبری و SIM800L، باید پایه RX ماژول SIM800L به پایه TX رزبری و پایه TX ماژول SIM800L به پایه RX رزبری متصل شود. همچنین باید پایه های GND ماژول و برد یکسان شوند. در نظر داشته باشید که دستورات دقیقا یکسان هستند. برای بررسی ماژول SIM800L می توانید روی لینک زیر کلیک کنید.
      لینک ماژول sim800l کلیک کنید
      همچنین با کلیک بر روی لینک زیر، می توانید یک ماژول مخابراتی ۳G را مشاهده کنید.
      ماژول SIMCOM3G

    • سلام
      مراحل گفته شده را قدم به قدم انجام داده اید؟ آیا از باود ریت اطمینان دارید؟
      آیا ارتباط سریال به درستی بین ماژول و رزبری صورت گرفته است؟

      • سلام ممنون مشکلم حل شد . پورت اشتباه را به minicom معرفی کرده بودم
        با زدن دستور dmesg | grep “tty”
        تونستم پورت درست را پیدا کنم.

          • سلام.. توی قسمت serial monitor کامندهای که میزنم رو قبول نمیکنه..ماژولsim808رو به پورت سریال آردینو مگا ۲۵۶۰ ک پین های ۱۰،۱۱ هس وصل کردم.از هر روشی که به ذهنم رسیده امتحان کردم.ولی هیچ دستوری رو ارسال و دریافت نمیکنه.دستوراتatرو دریاف نمیکنه.ماژول سیمکارت مشکلی از لحاظ انتن دهی نداره چون وقتی بهش زنگ میزنم بوق میخوره و هر ۳ثانیه چشمک میزنه ب شبکه وصل هس..منبع تغذیه ماژول هم ۹ولت ۲.۵ آمپر یا ۵ولت ۳آمپر وصل کردم ولی موندم چرا دستورات رو اجرا نمیکنه.پایه های rx و txروهم جابجا کردم.منفی sim800رو با منفی مبدل سریال و حتی اردینو هم یکی کردم ولی باز جواب نداده.هر نوع برنامه ای که به ذهنم رسیده امتحان کردم.ممنون میشم راهنمایی بفرمائید.

            • سلام
              لفطا باودریت های مختلف را برای ارتباط از طریق سریال به USB امتحان کنید و نتیجه را در کامنت بعد اعلام نمایید.

                • از رزبری پای برد را جدا کنید. سپس به کمک مبدل سریال به USB برد را به کامپیوتر متصل کرده و چک کنید آیا فرامین به برد ارسال می شود یا خیر

  • سلام،در مرحله ای که باید دستورات At رو وارد منم کیبورد کار نمیکند و نمیتوانم دستورات را تایپ کنم
    مشکلش چیه؟

  • سلام، با تشکر از آموزش خوبتون، من وقتی دستور AT+SAPBR=1,1 رو میزنم ERROR میده، کلا هر کدام از دستورهای AT+CIICR و یا AT+CGATT رو وارد می کنم، خطا می دهد ولی دستور AT+CSQ جواب می دهد، برای رفع مشکل چکار باید بکنم؟ خیلی ممنونم

    • سلام و متشکرم
      به دستورات دقت کنید. در انتهای دستورات کاراکترهای کنترلی CR , LF قرار گرفته شده باشد.