سلام خدمت همه شما مایکروالکامی ها. در مطالب قبلی از سری آموزش های ماژول SIM800 به بررسی کامل و نحوه ارسال دیتا به سرور با استفاده با SIM800 پرداخته شد. همچنین در این قسمت نیز نحوه استفاده و ارسال دیتا از طریق TCP/IP مورد بررسی قرار گرفت. در این مطلب به بررسی و چگونگی ارسال دیتا به سرور از طریق پروتکل HTTP با متد های GET و POST با استفاده از ماژول های SIM800 پرداخته خواهد شد. پس با من تا انتهای مطلب همراه باشید. همچنین شما میتویند سایر مطالب من رو از این لینک و این لینک مطالعه و بررسی کنید.
پروتکل HTTP در ماژول SIM800
مهمترین پروتکل ارتباطی در بستر اینترنت را میتوان TCP/IP دانست. TCP/IP مخفف شده Transmission Control Protocol / Internet Protocol میباشد. از مزایایی که پروتکل TCP دارد میتوان به مواردی مانند امنیت بالا و توسعه پذیری بالا اشاره نمود. علاوه بر پروتکل TCP/IP ماژول های سری SIM800 نیز از پروتکل HTTP پشتیبانی میکنند. HTTP خود نیز بر پایه TCP/IP میباشد. پروتکل HTTP مخفف شده Hyper Text Transfer Protocol بوده و به معنای انتقال ابر متن ها (متن های زیاد) میباشد. همچنین این پروتکل از Handshaking برای ارسال و دریافت اطلاعات استفاده مینماید.
قطعات مورد نیاز
- برد راه انداز ماژول SIM800L
- LM2596 Buck DC-DC Convertor
- آداپتور 12V
- آنتن GSM با سوکت IPEX
- مبدل سریال
برقرای ارتباط و آماده سازی ارتباط HTTP
در ابتدا نیاز است که اینترنت ماژول 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
اتصال به سرور با HTTP توسط ماژول SIM800
با استفاده از دستور زیر ابتدا ارتباط HTTP را در ماژول فرا خواهیم خواند. در صورتیکه SSL روی سرور فعال باشد از دستور “AT+HTTPSSL=1” استفاده نمایید.
AT+HTTPINIT OK
AT+HTTPSSL=1 OK
پیکربندی ارتباط HTTP
با استفاده از دستور زیر پارامتر های مورد نیاز ارتباط HTTP را فراهم نموده تا ارتباط ما برقرار شود. در ین دستور غیر از CID پارامتر های دیگری نظیر URL و… نیز جایگزین میشود. برای کسب اطلاعات بیشتر در این مورد به داکیومنت AT Command ماژول بخش “11.2.3” مراجعه نمایید.
AT+HTTPPARA="CID",1 OK
وارد کردن آدرس سرور مد نظر
با استفاده از دستور زیر، آدرس سرور مورد نظر که درخواستی از آن میشود یا دیتایی به آن ارسال میشود را وارد میکنیم. در بخش دوم بجای Address، آدرس سایت/سرور مد نظر را وارد نمایید.
AT+HTTPPARA="URL","Address" OK
تعیین حالت کاری در ارتباط HTTP
همانطور که پیشتر ذکر شد، HTTP از سه متد (حالت) GET ،SEND و POST جهت ارسال و درخواست با سرور بهره میبرد. برای تعیین اینکه از کدام حالت استفاده شود از دستور زیر استفاده مینماییم. در ادامه عدد مربوط به هر متد مشخص شده است.
- 0: جهت استفاده از متد GET
- 1: جهت استفاده از متد POST
- 2: جهت استفاده از متد HEAD
AT+HTTPACTION=0 OK
در صورت ارسال دستور فوق، پاسخ ماژول به ما در صورتیکه همه چیز فراهم باشد و موفق آمیز بوده باشد، چیزی شبیه عبارت زیر خواهد بود. در بخش اول نوع ارتباط (GET ،POST و…) در قسمت دوم یک کد که بیانگر وضعیت ماژول میباشد و در قسمت سوم طول پیام دریافتی از سرور میباشد.
+HTTPACTION: 0,200,4832
آماده کردن درخواست ارسال به سرور از طریق SIM800
با استفاده از دستور زیر میتوان یک کانکشن TCP یا UDP را آغاز کرده و به سرور درخواست خود را ارسال نماییم. در بخش اول TCP یا UDP، در بخش دوم URL سرور و در بخش سوم شماره پورت جایگزین میگردد.
AT+CIPSTART="connection mode","URL","port number" OK
ارسال دیتا و اطلاعات به سرور با GET
پس از انجام مرحله قبل حال نوبت به ارسال دیتا از طریق متد GET خواهد بود. برای این کار دستور زیر را به ماژول ارسال میکنیم. بعد از ارسال این دستور، ماژول در پاسخ به ما کاراکتر ” < ” را خواهد داد.
نکته: بعد از ارسال دستور زیر و دریافت کاراکتر “<“، به یاد داشته باشید باید بلافاصله دیتا مورد نظر خود را ارسال نمایید. فراموش نشود که در انتها حتما باید Control+Z نیز به ماژول ارسال شود.
AT+CIPSEND >
AT+CIPSEND >GET http://example.com/update?api_key=********************&field1=150&field2=300 SEND OK CLOSED
در صورتیکه ارسال دیتا موفقیت آمیز باشد، در نهایت با عبارت SEND OK مواجه خواهیم شد. پس از گذشت چند ثانیه نیز با عبارت “CLOSED” مواجه خواهیم شد و یعنی دیگر مسیر ارسال دیتا بسته شد. تصویر زیر بیانگر دریافت صحیح و کامل دیتا ارسالی از طریق ماژول SIM800 میباشد. در صورت تمایل به ارسال دیتا دیگر، باید مجددا از دستور AT+CIPSEND به بعد را ارسال کنید.
ارسال دیتا و اطلاعات به سرور با POST
طبق ترتیب زیر برای ارسال دیتا به سرور با استفاده از متد POST به ترتیب دستورات زیر را ارسال کنید. در سطر 7 بجای example آدرس سرور جایگزین میشود. همچنین با دستور AT+HTTPDATA=21,10000 مشخص شد که طول دیتا ارسالی 21 بیت و مدت زمان آن نیز 10000 میلی ثانیه تنظیم شده است.
نکته: دقت شود بعد از ارسال این دستور عبارت DOWNLOAD دریافت خواهد شد. در همین حین حتما منتظر بمانید تا عبارت OK دریافت شده و در نهایتا بعد از دریافت آن دستورات بعدی ارسال گردد.
نکته: بعد از ارسال دستور AT+HTTPACTION=1 در صورتیکه ارسال موفقیت آمیز بوده باشد یا بطور کلی ارتباط برقرا شده باشد عبارت “HTTPACTION: 1,200,2+” را از ماژول دریافت خواهیم کرد. با استفاده از ارسال دستور AT+HTTPREAD بعد از دریافت پاسخ HTTPACTION+ میتوانیم دیتا ارسالی از طرف سرور به ماژول را دریافت کنیم. در صورتیکه همه چیز صحیح بوده باشد عددی غیر از صفر باید دریافت شود. این عدد تعداد کل دفعات ارسال موفقیت آمیز دیتا به سرور میباشد.
نکته: با استفاده از دستور AT+HTTPPARA و دو پارامتر بعدی آن نوع محتوا را طبق مثال ادامه مشخص خواهیم کرد.
AT+SAPBR=3,1,"Contype","GPRS" AT+SAPBR=3,1,"APN","MCINET" AT+SAPBR=1,1 AT+SAPBR=2,1 AT+HTTPINIT AT+HTTPPARA="CID",1 AT+HTTPPARA="URL","example.com" AT+HTTPPARA="CONTENT","application/x-www-form-urlencoded" AT+HTTPDATA=21,10000 field1=110&field2=110 AT+HTTPACTION=1
نتیجه گیری
در این مطلب بطور دقیق نحوه ارسال دیتا به سرور از طریق بستر ارتباطی و پروتکل ارتباطی HTTP با استفاده از متد های GET و POST مورد بررسی قرار گرفت. در قسمت های بعدی این سری آموزش نحوه ارسال دیتا و مانیتور کردن اطلاعات سنسور دما مشابه تصاویر بالا بررسی خواهد شد.
امیدوارم از این آموزش کمال بهره را برده باشید. در صورت داشتن هرگونه نظر یا سوال درباره این آموزش اون رو در انتهای همین صفحه در قسمت دیدگاه ها قرار بدید. در کوتاه ترین زمان ممکن به اون ها پاسخ خواهم داد. اگر این مطلب براتون مفید بود، اون رو حتما به اشتراک بگذارید. همینطور میتونید این آموزش را پس از اجرای عملی توی اینستاگرام با هشتگ microelecom# به اشتراک بگذارید و پیج مایکروالکام (microelecom@) رو هم منشن کنید.
باسلام. چجوری یک سرور بسازیم که بشه کارهایی که گفتید رو باهاش انجام بدیم؟
سلام، این مورد نیاز به تخصص هرچند کم در بحث های برنامه نویسی شبکه یا سرور داره بطور کلی ولی میتونید با استفاده از سایت ها یا رفرنس های موجود در اینترنت کم و بیش هدفتون رو پیش ببرید.
سلام
من نیاز به آخرین فریم ور ماژول sim808 با شماره زیر دارم لطفا اگر این فریم ور را دارید یا می دونید چطوری میشه تهیه کرد به بنده اطلاع بدید
ممنون
۱۴۱۸B05SIM808M32
سلام ممنون از مطالب عالی کاربردی که ارائه می کنید
من با ماژول sim808 دیتا به سرور http میتونم ارسال کنم اما به سرورهای https خیر
متوجه شدم که باید فریمور ماژول ۸۰۸ رو به آخرین نسخه یعنی نسخه b05 بروزرسانی کنم تا مشکل حل بشه اما مسئله اینجاست که در سایت simcom فقط تا ورژن b04 فریمور موجود است اما در یکی از پست های وبلاگ شما (این پست : https://blog.microele.com/sim800l-location-agps/)متوجه شدم کاربران نسخه b05 رو با ایمیل از پشتیبانی سایت simcom گرفتند اما من چندین بار به اونها ایمیل زدم و پاسخی ندادن اگر شما یا هرکدوم از کاربران شما این نسخه رو دارید لطفا برای بنده ارسال کنید :
۱۴۱۸b05sim808m32
از آموزشهای عالیتون بینهایت سپاسگذارم.
در رابطه با ارسال دیتا از طریق HTTP به سرور به مشکلی که برخوردم اینه که وقتی میخوام یک دیتا را با فواصل کم مثلا هر یک ثانیه و همچنین با فواصل زیاد مثل ۲۰ ثانیه به سرور بفرستم متاسفانه گاهی با OK ولی ۹۰ درصد با ERROR مواجه میشوم
هدفم فقط ارسال دیتا هست و نیازی به دریافت ندارم
کجاها ممکنه مشکلی داشته باشم
ممنونم راهنمایی بفرمایید
AT+SAPBR=1,1
AT+SAPBR=2,1
+SAPBR: 1,1,”21.226.113.130″
AT+HTTPINIT
AT+HTTPPARA=”CID”,1
“AT+HTTPPARA=”URL”,”example.com”
AT+HTTPACTION=0
AT+HTTPTERM
سلام، علی الظاهر داخل کامند ها مشکلی نیست اگر دقیقا مطابق با توضیحات مطلب پیش رفته باشید مراحل رو.
چیزی که به ذهنم میرسه این هستش که ممکنه توی روشن موندن GPRS به مشکل خورده باشه. پیشنهاد میکنم قبل از شروع نت رو وصل و نهایتا بعد از ارسال دیتا نت رو قطع کنید در هر ارسال.
سلام آموزش های ماژول SIM800 باز هم ادامه خواهد داشت ؟ قطعا سایت شما بهترین سایت ایرانی هستش که در این مورد مطالب به شدت مفیدی میزاره و من یه عالمه یاد گرفتم در مورد این ماژول. خوشحال میشم اگه همینطور ادامه بدید این سری آموزش ها رو در مورد sim800 و هر چقدر که میتونید مطلب بزارید چون خیلی خیلی مفیده ❤️❤️❤️😍
سلام ارادت؛
نظر لطف شما هست. سعی شده در این سری از مطالب اکثریت قابلیت های کاربردی و مورد استفاده تحت پوشش قرار داده بشه. بله انشالله مدون تر و مستمر تر ادامه خواهد داشت.
برای آگاهی از مطالب جدید کانال تلگرام و اینستاگرام رو دنبال کنید.
مطلب جدیدی مد نظر بود بفرمایید تا روی اون کار بشه و منتشر بشه.
سلام شما با SIM800 دیتای حجم بالا ارسال کردین رو سرور ؟ دیتای ۵۰ کیلو بایتی
سلام روز بخیر؛
برای این کار میتونید از FTP استفاده کنید.