در سری آموزش های راه اندازی و کار با ماژول SIM800L، این بار به سراغ پروتکل TCP می رویم. در این آموزش به نحوه برقراری ارتباط TCP با سرور و چگونگی ارسال و دریافت داده خواهیم پرداخت. سلسله آموزش های ماژول SIM800L، یک مجموعه آموزش چند قسمتی بوده که از پایه تا سطح حرفه ای، به راه اندازی و کار با این ماژول می پردازد. این سلسله آموزش را می توانید در اینجا دنبال نمایید. در این آموزش به نحوه برقراری ارتباط TCP با سرور تحت ماژول SIM800L می پردازیم. پیش از این در رابطه با قابلیت های این ماژول اعم از تماس تلفنی، پیامک اینترنت، آپلود و دانلود فایل در بستر GPRS صحبت کرده ایم. در این قسمت، به بررسی ارتباط TCP تحت پروتکل HTTP می پردازیم. در ادامه این آموزش با مرجع تخصصی ماژول سیم کارت به زبان فارسی، دیجی اسپارک همراه باشید.
ارتباط TCP با سرور و پروتکل HTTP
یکی از قابلیت های مهم ماژول SIM800L، اتصال آن به شبکه اینترنت GPRS است. از طرفی دیگر، پروتکل TCP یکی از پرکاربردترین پروتکل ها در شبکه اینترنت بوده که توسط ماژول SIM800L نیز پشتیبانی می شود. پروتکل TCP، یک پروتکل اتصال گرا(Connection Oriented) محسوب می شود. این پروتکل، حساسیت ویژه ای در ارسال داده ها و حصول اطمینان از صحت ارسال آن دارد. به همین دلیل، این پروتکل سرعت به مراتب کمتری نسبت به پروتکل هم شاخه خود، UDP دارد.
به طور کلی زمانیکه قصد ارسال داده های مهم، نظیر داده های مربوط به سنسورهای محیطی را دارید، پروتکل TCP بسیار کارا به نظر می رسد. اما برای ارسال سایر داده ها، مثل برقراری ارتباط ویدیویی، پروتکل UDP به دلیل سرعت بالا، بسیار مناسب خواهد بود. پروتکل TCP شامل زیر شاخه های متعددی می شود. یکی از این زیر شاخه ها، HTTP است. این پروتکل که یکی از قدیمی ترین ابزارها جهت ارسال و دریافت داده به شمار می رود، توسط ماژول SIM800L نیز پشتیبانی می گردد. پروتکل HTTP، خود نیز جهت ارسال و دریافت داده، از متدهای محتلفی استفاده می کنید. دو متد معمول این پروتکل، GET و POST بوده که در قسمت بعدی به بررسی این دو متد می پردازیم.
شناخت متد GET و متد POST
متد GET و POST، دو متد کاربردی جهت ارسال و دریافت داده از سرور، تحت پروتکل HTTP هستند. هر دو این دو متد قابلیت ارسال داده به سرور و دریافت پاسخ سرور را را دارند. در متد GET، داده ها توسط سرور cache می شوند. همچنین، در سطح مرورگرها، این متد مسیر ارسال و دریافت داده را بر روی نمایشگر، نشان می دهد. این در حالیست که در متدPOST، دادها cache نشده و مسیر داده ها از دید کاربر پنهان می ماند. بنابراین، متد POST از این حیث، برتری امنیتی نسبت به متد GET خواهد داشت. در تصویر زیر، مقایسه بین این دو متد را می توانید مشاهده نمایید.
ماژول SIM800L از هر دو این متدها جهت ارسال داده پشتیبانی میکند. در قسمت بعدی، نحوه ارسال و دریافت داده تحت این دو متد را مورد بررسی قرار می دهیم.
تبادل داده تحت متد GET با SIM800L
در این قسمت، به بررسی نحوه ارسال داده به سرور و دریافت پاسخ از آن، تحت متد GET می پردازیم. پیش از هر چیز، می بایست در ابتدا اینترنت را فعال کرده و نام دامنه سرور به همراه پورت مورد نظر، تنطیم گردد. مطابق آموزش پیشین، می بایست اینترنت به کمک دستور زیر، فعال گردد.
AT+SAPBR=1,1
اما برای برقراری ارتباط با سرور از طریق پروتکل TCP، نیازی به دستور فوق جهت فعال سازی اینترنت نیست. دستور زیر به طور خودکار، علاوه بر تنظیم پارامترهای ارتباط سروری، اینرتنت را نیز فعال می نماید.
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
مطابق دستور فوق، عبارت path مسیر فایل مقصد جهت ارسال داده ها در سرور است. عبارت variable متغیر ارسالی به سرور، نظیر دمای اندازه گیری شده و value مقدرا این متغیر، به عنوان مثال عدد ۲۵ است. همچنین متغیرها به کمک عبارت & از یکدیگر جدا می شوند.
مطابق تصویر فوق، پس از ارسال داده به سرور تست example.com، پاسخ سرور در صورت موفقیت، عبارت ۲۰۰ OK را همراه با سایر داده ها بر می گرداند. شما نیز می توانید در قسمت سرور، پیام و یا دیتایی را همراه با داده های سرور، به ماژول ارسال نمایید. به همین منظور، مطالعه این آموزش ضروری به نظر می رسد.
تبادل داده تحت متد POST با SIM800L
در قسمت پیشین به بررسی نحوه ارسال و دریافت داده از طریق متد GET پرداختیم. در این قسمت، به ارسال و دریافت داده تحت متد POST از طریق ماژول SIM800L می پردازیم. یکی از مزیت های متد POST، عدم cache دیتا در سمت سرور است. این مزیت سبب می شود که همواره بروز ترین داده ها از سرور، به ماژول ارسال گردد. به عنوان مثال، فرض کنید قرار است تا وضعیت یک رله، از طریق اینترنت GPRS و از طریق وب سایت کنترل شود. به این منظور، نیاز است تا وضعیت کلید، به صورت بروز از سرور توسط ماژول خوانده شود. در اینجا، می بایست از متد POST جهت دریافت پیام از سرور، استفاده کنیم.
ارسال و دریافت داده با متد POST، دقیقا مشابه متد GET صورت می گیرد. تنها تفاوت در ارسال و دریافت داده در این متد، فرمت ارسال داده به کمک متد POST است. البته این تفاوت بسیار کم بوده و خدشه ای در کلیت موضوع وارد نخواهد کرد. همانند ارسال و دریافت داده در متد GET، برای اتصال به سررو و فعال سازی اینترنت، از دستور AT+CIPSTART استفاده می شود. همچنین برای ارسال داده ها، دستور AT+CIPSEND می بایست به ماژول ارسال گردد. فرمت ارسال پیام تحت متد GET، به شکل زیر است.
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
مطابق تصویر فوق، داده ها به سرور ارسال شده و پاسخ سرور نیز دریافت می گردد. شما نیز می توانید در طرف سرور، برنامه ای بنویسید تا داده هایی را همراه با پاسخ سرور، به ماژول ارسال کنید. به عنوان مثال با فرستادن ۰ یا یک، می توانید وضعیت یک لامپ را به صورت اینترنتی کنترل کنید. جهت اطلاعات بیشتر، این آموزش را مطالعه کنید.
وسایل مورد نیاز
ماژول مبدل LM2596(در صورت تغذیه ماژول از برق شهری)
جمع بندی
در قسمت هفتم سلسله آموزش های ماژول SIM800L، به بررسی نحوه برقراری ارتباط با سرور پرداختیم. در قسمت پیشین ، از طریق پروتکل FTP با سرور ارتباط برقرار کردیم. به کمک پروتکل FTP و در بستر اینترنت GPRS ماژول SIM800L، بر روی سرور فایل آپلود و از آن دانلود کردیم. در این آموزش به کمک پروتکل HTTP، با یک سرور اینترنتی ارتباط برقرار کرده و به ارسال و دریافت داده پرداختیم. پروتکل HTTP به کمک دو متد POST و GET به ارسال و دریافت داده می پردازد. این پروتکل و متدهای آن توسط ماژول SIM00L پشتیبانی می شود. در این آموزش به کمک این پروتکل و دو متد POST و GET، اقدام به ارسال و دریافت داده نمودیم.
دیگر آموزشهای راه اندازی Sim800L
راه اندازی و کار با ماژول سیم کارت SIM800L بخش اول: معرفی
راه اندازی و کار با ماژول سیم کارت SIM800L بخش دوم: تغذیه
راه اندازی و کار با ماژول سیم کارت SIM800L بخش سوم: تماس تلفنی
راه اندازی و کار با ماژول SIM800L بخش چهارم: ارسال و دریافت پیامک
راه اندازی و کار با ماژول SIM800L بخش پنجم: اینترنت GPRS سیم کارت
راه اندازی و کار با ماژول SIM800L بخش ششم: آپلود و دانلود فایل در اینترنت
راه اندازی و کار با ماژول SIM800L بخش هشتم: ارسال و دریافت ایمیل
راه اندازی و کار با ماژول SIM800L، بخش نهم: کنترل و کاهش توان مصرفی
راه اندازی و کار با ماژول SIM800L: بخش دهم فعال سازی DTMF
راه اندازی و کار با ماژول SIM800L بخش یازدهم: دستورات و امکانات جانبی
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در مراحل اجرایی وجود داشته و یا با رعایت نکات فوق، همچنان قادر به ارسال و دریافت پیامک نیستید، میتوانید از همین طریق اطلاع رسانی کنید.
سلام با این وجود در چه پروژه هایی منطقی تر هست که از TCP استفاده کنیم؟
سلام
در پروژه هایی که حجم داده ها برای ارسال کم است، مثل طول و عرض جغرافیایی ، دما و رطوبت و یا اینکه از سمت سرور می خواهید فرمانی ارسال کنید. اما برای ارسال داده های حجیم تر، نظیر فایل ها، FTP روش مناسبی است. برای اطلاعات بیشتر، پیشنهاد می کنم آموزش زیر را مطالعه نمایید:
کنترل وسایل برقی از طریق اینترنت GPRS سیم کارت به همراه ردیابی آنلاین
سلام
میخواستم ازتون بپرسم که آیا امکانش هست که از طریق این پروتکل عملیات Publishing و Subscribing رو به یک سرور MQTT انجام بدیم
هدف اینه که با کمک یک ماژول sim800l برد esp8266 رو وارد شبکه mqtt کنم و تبادل اطلاعات رو بدون مودم و وای فای بر قرار کنم
ممنون میشم راهنماییم کنید
سلام
بiه نظر می رسد که این امکان برای هر دو ماژول جهت کار در بستر MQTT فراهم باشد. در این زمینه اطلاعات کاملی متاسفانه ندارم، از دیگر دوستان تقاضا می کنم در این بحث شرکت کنند.
سلام وقت بخیر من با موفقیت ماژول رو به اینترنت متصل کردم و ایپی هم میگیره اما دستور cipstart رو که میدم اررور برمیگردونه و اتصال tcp نمیتونه داشته باشه. میشه لطفا راهنمایی کنید.
سلام و متشکرم از شما
فرمت دستور و شارژ بودن سیم کارت را لطفا کنترل کنید.
با سلام
من یک RTU با ترکیب ماژول های sim800l و esp32 درست کردم که با gprs یک متن مشخص رو به یک سرور ارسال کنه اتفاقی اکه افتاده اینه که یا خطاهای سری ۶۰۰ بخصوص ۶۰۳ بر می گرده یا تعداد کاراکترهای ارسالی بر میگردد (HTTPREAD) این تغییرپاسخ نتیجه تغییر طول متن هستند
متن کد هم می تونم ارسال کنم نیاز به راهنمایی دارم