سیم کارت GSM - GPRS

ارسال و دریافت اطلاعات در بستر اینترنت به کمک ماژول‌های سیم کام

sending-data-via-sim-com-module-digispark-
نوشته شده توسط معین صابری

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

این ماژول‌ها، توانایی اتصال به شبکه اینترنت را از طریق کلیه پروتکل‌های اینترنتی معمول، نظیر پروتکل HTTP، پروتکل FTP و حتی پروتکل SMTP (جهت ارسال و دریافت ایمیل) را فراهم می‌آورند. لازم به ذکر است این ماژول‌ها تنها به کمک یک سیم کارت و بدون نیاز به هیچ تجهیزات اضافه‌ای، برخلاف ماژول‌های وای فای نظیر ESP که برای اتصال به شبکه اینترنت نیاز به یک مودم دارند، ابتدا به شبکه اینترنت و سپس به سرور مورد نظر متصل می‌گردند. در این آموزش، ابتدا به بررسی دستورات دو پروتکل HTTP می‌پردازیم. سپس در آموزش‌های بعدی، با یک پروژه عملی، آن‌ را تست خواهیم نمود.

 


پروتکل HTTP


این پروتکل که به منظور ارسال و دریافت داده استفاده می‌گردد، در ماژول سیم کام پشتیبانی می‌شود. به عنوان مختصری کوتاه از عملکرد این پروتکل، وب سایتی را  در نظر بگیرید که کاربران برای ورود به آن، می‌بایست نام کاربری و رمز عبور خود را وارد نمایند. این داده‌ها، از طریق همین پروتکل به سرور ارسال می‌گردند و سرور پس از صحت سنجی،فرمان دسترسی و یا عدم دسترسی را برای کاربر را صادر می‌نماید. در سطح این پروتکل، دو متد کلی برای ارسال داده وجود دارد، یکی متد GET و دیگری متد POST. ما دراینجا متد GET را معرفی می‌نماییم. فرض کنید تصمیم داریم رطوبت خوانده شده از سنسور DHT11 را به کمک ماژول SIM800L، به یک سرور ارسال نماییم. از طرفی دیگر، فرض کنید در سمت سرور، میزان رطوبت در متغیری با نام hum تعریف شده است. بنابراین، ارسال طوبت تحت این متد، به فرمت زیر خواهد بود.

در عبارت بالا، عبارت GET بیانگر متد است. عبارت data.php/ بیانگر آدرس صفحه‌ای از سرور بوده که قرار است داده‌ها به آن ارسال گردد. عبارت ? بیانگر شروع بازه متغیرها نیز می‌باشد که پس از آن، متغیر مورد نظر قرار گرفته است.

 


کدهای PHP سمت سرور


توجه نمایید که در اینجا، سرور مورد نظر لینوکس فرض شده است، بنابراین، در سمت سرور، ابتدا صفحه‌ای با نام data.php ایجاد نموده و با قرار دادن قطعه کد زیر در آن، می‌توانیم داده‌های ارسالی را دریافت نموده و سپس در یک فایل، آن‌ها را ذخیره نماییم.

در قطعه کد فوق، عبارت $_GET[“hum”] وظیفه دریافت داده‌های ارسالی و ذخیره آن در متغیری با نام $s را دارد.  دو خط بعدی، همانند سایر زبان‌های برنامه نویسی، وظیفه باز کردن فایل و سپس ذخیره داده‌ها در فایل را بر عهده دارند. دست آخر، فایل مورد نظر جهت استفاده مجدد، می‌بایست بسته شود. در اینجا، ذکر این نکته ضروری به نظر می‌رسد که دستورات فوق، تنها زمانی اجرا می‌شوند که داده‌ای به صفحه مورد نظر، یعنی data.php ارسال گردد.

 


دستورات AT ماژول سیم کام


پس از بررسی قسمت سرور و یا گیرنده، نوبت به قسمت فرستنده می‌رسد. همانطور که مستحضر هستید، ماژول‌های سیم کام به کمک فرامینی، معروف به AT-COMMAND ها کنترل می‌گردند. در اینجا، دستورات لازم جهت اتصال به اینترنت و ارسال داده‌ها تحت پروتکل HTTP، به کمک متد GET مورد بحث و بررسی قرار می‌گیرند. پیش از هر چیز، می‌بایست از فعال بودن GPRS بر روی سیم کارت خود، اطمینان حاصل نمایید. برای اینکار، می‌بایست مراحل ودستورات ارائه شده از سوی اپراتور را دنبال نمایید. پس از حصول اطمینان از فعال بودن اینترنت بر روی سیم کارت ، آن را در یکی از ماژول‌های شرکت سیم کام، به عنوان مثال از سری ۸۰۰، ماژول SIM800L قرار دهید. پس از اتصال به شبکه، ابتدا دستور زیر را جهت اتصال به اینترنت، دستور زیر را به ماژول ارسال می‌نماییم:

 

پس از چند ثانیه، عبارت OK که نشان از اتصال به اینترنت بوده است، از سوی ماژول ارسال خواهد شد. پس از اتصال به اینترنت، نیاز است تا به سرور مورد نظر، متصل شویم. فرض کنید آدرس سرور، test.ir باشد و صفحه data.php، به عنوان گیرنده و ذخیره کننده داده، تعریف شده باشد. در این مرحله، به کمک دستور زیر، به سرور متصل خواهیم شد:

در دستور فوق، عبارت TCP نوع ارتباط را مشخص می‌نماید. این ارتباط می‌تواند همانند دستور فوق TCP ویا UDP باشد. قسمت بعد نام سرور را مشخص می‌نماید و عدد ۸۰ شماره پورت است. پس از ارسال دستور فوق، ابتدا پیغام ok وبعد از چند لحظه، در صورت برقراری موفقیت آمیز ارتباط با سرور، شاهد ارسال عبارت CONNECT OK از سوی ماژول خواهیم بود.

 


ارسال داده از ماژول سیم کام


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

در عبارت فوق، Host بیانگر نام همان سروری است که داده‌ها می‌بایست به آن ارسال گردند. عبارات <cr> و <lf> نیز به ترتیب معادل “\r” و “\n” در زبان‌های برنامه‌نویسی هستند. در این قسمت، در ابتدا می‌بایست از حجم داده‌های ارسالی(تعداد بایت‌های ارسالی و یا تعداد کاراکترهای ارسالی) مطلع باشیم. این موضوع بدان معنی است که حجم کلیه اطلاعات ارسالی به سرور، شامل داده مورد نظر و فرمت ارسالی می‌شود که با ارسال دستور زیر، تعداد بایت‌های ارسالی مشخص می‌گردند.

 

دستور فوق، بیانگر ارسال x بایت به سرور است. پس از ارسال دستور فوق، ماژول عبارت >  را بر می‌گرداند. در این لحظه می‌بایست داده خود را، که همان میزان رطوبت محیط است،  به همراه فرمت پروتکل HTTP، ارسال نماییم. پس از ارسال دستور فوق، در صورتیکه داده به طور صحیح به سرور ارسال گردیده باشد، ماژول رشته‌ای شامل عبارت ۲۰۰ok را نیز برخواهد گرداند. در صورت بروز خطا، کد خطای مورد نظر، در عبارت برگشتی لحاظ خواهد شد. به عنوان مثال، خطای ۴۰۴ به معنای عدم وجود صفحه مورد نظر در سرور می‌باشد. پس از اتمام روال ارسال، با ارسال دستور AT+CIPCLOSE به ماژول، ارتباط را قطع می‌نماییم تا بتوانیم مجددا به سرور داده ارسال نماییم. مجددا خاطرنشان می‌شویم که هدف این آموزش، آشنایی اولیه با پروتکل HTTP و ارسال داده به کمک متد GET در سطح ماژول‌های SIMCOM می‌باشد. در آموزش‌های بعدی، به صورت عملی این موضوع بررسی خواهد شد.

 

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

 

 

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

معین صابری

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

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

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

۶ دیدگاه

    • سلام
      در این زمینه متاسفانه اطلاعی ندارم
      پیشنهاد میکنم دیگر دوستان در صورت امکان، شما را راهنمایی نمایند

  • یه سوال با ماژول sim800l اگه بخوایم دیتا سنسور dht22رو بفرستیم به سرور مورد نظر سرعت این ماژول چطور هست یعنی آیا با سرعت ۲Gکه داره با چه سرعتی دیتا رو به سرور می‌فرسته ؟
    امکان ساخت یک ویدعو ویا یه پروژه برای این ارتباط هستش؟

    • سلام
      بله، با توجه به اینکه داده های شما حجمی ندارند، با سرعت بسیار بالایی به سرور ارسال خواهند شد. در مورد ویدئو نیز، سعی بر این است که آموزشی دیگری در این زمینه تهیه گردد تا به صورت عملی هم، شاهد ارسال داده ها باشیم.