سلام خدمت همه شما مایکروالکامی ها. در مطالب قبلی از سری آموزش های ماژول SIM800 به بررسی کامل و نحوه ارسال دیتا به سرور با استفاده از SIM800 پرداخته شد. در این قسمت به بررسی عملکرد این مورد و ارسال دیتا به سرور از طریق پروتکل TCP با استفاده از ماژول های SIM800 پرداخته خواهد شد. پس با من تا انتهای مطلب همراه باشید. همچنین شما میتویند سایر مطالب من رو از این لینک مطالعه و بررسی کنید.
پروتکل TCP / IP در ماژول SIM800
مهمترین پروتکل ارتباطی در بستر اینترنت را میتوان TCP/IP دانست. TCP/IP مخفف شده Transmission Control Protocol / Internet Protocol میباشد. از مزایایی که پروتکل TCP دارد میتوان به مواردی مانند امنیت بالا و توسعه پذیری بالا اشاره نمود. وظایف و کار هایی که بر عهده پروتکل TCP/IP گذاشته شده است را بین 4 لایه شبکه تقسیم کردنه اند. در این بین هر لایه علاوه بر مستقل بودن خود باید علاوه بر انجام وظیفه کار خود، با لایه های دیگر نیز بدرستی ارتباط برقرا نماید.
لایه های پروتکل ارتباطی TCP/IP شامل موارد زیر میباشد.
- لایه شبکه یا Network Interface
- لایه اینترنت یا Internet Layer
- لایه انتقال یا Transport Layer
- لایه کاربر یا Application Layer
قطعات مورد نیاز
- برد راه انداز ماژول SIM800L
- LM2596 Buck DC-DC Convertor
- آداپتور 12V
- آنتن GSM با سوکت IPEX
- مبدل سریال
برقرای ارتباط و آماده سازی ارتباط TCP
در ابتدا نیاز است که اینترنت ماژول SIM800 را فعال کنیم. در این مطلب بطور مفصل نحوه وصل کردن اینترنت ماژول SIM800 بررسی شده است. با استفاده از دستورات زیر اینترنت ماژول را متصل میکنیم.
AT+SAPBR=3,1,"Contype","GPRS" OK AT+SAPBR=3,1,"APN","mcinet" OK AT+SAPBR=1,1 OK
اطمینان از اتصال صحیح GPRS ماژول SIM800
پس از ارسال دستورات فوق، چراغ NET ماژول شروع به چشمک زدن سریع میکند. برای اطمینان از اینکه اینترنت ماژول متصل شده باشد، از دستور زیر استفاده میکنیم. در صورت دریافت IP یعنی اتصال موفقیت آمیز بوده است.
AT+SAPBR=2,1 +SAPBR: 1,1,"102.116.104.84" OK
اتصال به سرور TCP توسط ماژول SIM800
با استفاده از دستور زیر، به سرور TCP با IP مشخص و شماره پورت آن متصل خواهیم شد. در صورتیکه اتصال موفقیت آمیز باشد، عبارت CONNECT OK را دریافت خواهیم کرد. دقت شود در بخش اول نوع ارتباط را TCP مشخص شده است. در بخش دوم IP سرور را حتما بدون https وارد نمایید. در بخش سوم نیز شماره پورت سرور مورد نظر را وارد نمایید.
AT+CIPSTART="TCP","Server IP","Port" OK CONNECT OK
در تصویر زیر همانطور که مشاهده میشود، اتصال به سرور از طریق SIM800 موفقیت آمیز بوده است.
ارسال دیتا به سرور از طریق TCP و ماژول SIM800
بعد از اتصال موفقیت آمیز بودن به سرور، با استفاده از دستور زیر شروع به ارسال دیتا مد نظر خود به سرور خواهیم کرد.
نکته: بعد از ارسال دستور زیر و دریافت کاراکتر “<“، به یاد داشته باشید باید بلافاصله دیتا مورد نظر خود را ارسال نمایید. فراموش نشود که حتما باید Control+Z نیز به ماژول ارسال شود.
AT+CIPSEND >
ارسال دیتا
در صورتیکه ارسال دیتا موفقیت آمیز باشد، در نهایت با عبارت SEND OK مواجه خواهیم شد.
پس از گذشت چند ثانیه نیز با عبارت “CLOSED” مواجه خواهیم شد و یعنی دیگر مسیر ارسال دیتا بسته شد. تصویر زیر بیانگر دریافت صحیح و کامل دیتا ارسالی از طریق ماژول SIM800 میباشد. در صورت تمایل به ارسال دیتا دیگر، باید مجددا دستور AT+CIPSEND ارسال شود.
AT+CIPSEND > blog.microele.com SEND OK CLOSED
قطع اتصال و ارتباط
برای قطع ارتباط با سرور از دستورات زیر استفاده میشود. در صورتیکه بعد از ارسال دستورات زیر، قصد داشتید که مجددا دیتا ارسال شود باید مراحل مجددا طبق توضیحات از ابتدا تکرار شود.
AT+CIPSHUT SHUT OK AT+CIPSHUT SHUT OK
نتیجه گیری
در این مطلب بطور دقیق روش نحوه ارسال دیتا به سرور از طریق بستر ارتباطی و پروتکل ارتباطی TPC / IP مورد بررسی قرار گرفت. در قسمت های بعدی این سری آموزش نحوه ارسال دیتا از طریق HTTP که خود مبتنی بر TCP است مورد بررسی قرار خواهد گرفت.
امیدوارم از این آموزش کمال بهره را برده باشید. در صورتی که هرگونه نظر یا سوال داشتید درباره این آموزش لطفا اون رو در انتهای همین صفحه در قسمت دیدگاه ها قرار بدید. در کوتاه ترین زمان ممکن به اون ها پاسخ خواهم داد. اگر این مطلب براتون مفید بود، اون رو حتما به اشتراک بگذارید. همینطور میتونید این آموزش را پس از اجرای عملی توی اینستاگرام با هشتگ microelecom# به اشتراک بگذارید و پیج مایکروالکام (microelecom@) رو هم منشن کنید.
باسلام. لطفا یکسری توضیحات در رابطه با نحوه ساخت یک سرور TCP/IP نیز ارائه کنید.
سلام، منظور یا هدفتون رو دقیق تر بفرمایید.
سلام. من یک ارایه از بایت ها با طول ۵۱۶ رو از طریق tcp به سرور طبق مثال فوق ارسال میکنم اما در جواب at+cipsend پاسخ send ok را دریافت نمیکنم.دیتا را پس از دریافت < میفرستم
سلام، انتهای دیتا مورد نظر Control+Z رو هم ارسال میکنید؟
اینطوری می نویسم Serial.write(0x1A)
از Serial.print هم یک بار استفاده کنید ببینید بازم مشکل هنوز هستش یا خیر
بله با serial print هم مشکل وجود داره
عجیبه واقعا!
یک بار موارد و مراحلی که انجام میدید را کامل بفرمایید یا بفرستید.
با مبدل usb to ttl بصورت مستقیم دستورات را ارسال کردم و پیغام send ok را دریافت کردم اما با میکروکنترلر نمیشه.در ضمن فریمور مازول ا اپدیت کردم ام مشکل حل نشد
هرچه هست از سمت میکرو هستش. یک بار دستورات خروجی میکرو رو بررسی کنید و برروی سریال مانیتور نمایش اش بدید و بررسی بفرمایید.
با سلام
تشکر بابت مطلب مفیدتون. ساده و کاربردی بود.
سلام، سلامت باشید.
سلام. در پاسخ به دستور at+cipstart پیام
Ok و connect fail برمیکردونه دلیلیش چی میتونه باشه
سلام، اول بررسی کنید بعد از اتصال به GPRS آیپی اختصاص داده شده را دریافت کردید یا خیر.
اگر بله، مشکل عدم اتصال به سرور میتونه از سمت سرور باشه. یا آیپی را اشتباه وارد میکنید یا پورت رو یا https قرار دادید ابتدای آدرس ایپی که نباید بگذارید.
احتمال هم داره مشکل سرور باشه و هیچ ریکوئستی رو پاسخ نده که باید این رو هم بررسی کنید جداگانه.