ارسال SMS توسط LabView
در این مقاله سعی داریم از طریق ماژول SIM800 یک SMS به موبایل با شماره مشخص ارسال کنیم.
ساده ترین و پرکاربردترین روش ارتباطی توسط ماژول های GSM ارسال پیغام متنی است. در این روش یک متن توسط ماژول GSM ارسال و در گیرنده با دریافت پیغام، دستور مربوط به آن پیغام اعمال می گردد.
ماژول SIM800 استفاده شده در این پروژه، با نام “برد کاربردی صنعتی SIM800” تولید شرکت ECA می باشد. این دستگاه دارای تمامی امکانات اولیه جهت راه اندازی ماژول SIM800 بوده و به راحتی می توان به رایانه، PLC و میکروکنترلر متصل نمود.
این ماژول دارای رابط USB بوده و در صورت متصل نمودن آن به لپتاپ نیازی به مبدل سریال به USB نمی باشد.
هدف پروژه ما ارسال SMS از طریق این ماژول بوده و برای اینکه بتوانیم این عمل را توسط ماژول انجام دهید، می بایست دستورات صحیح را به ماژول SIM800 ارسال کنیم.
ماژول SIM800 از سری ماژول هایی می باشد که از طریق ارسال و دریافت دستورات بوسیله پورت سریال عملیات مختلف را انجام می دهد. شما می توانید با مراجعه به فایل AT COMMAND این ماژول بصورت کامل دستورات را مطالعه کنید.
در ابتدا دستورات را از طریق یک ترمینال به ماژول ارسال می کنیم و پس از انجام موفق، دستورات را در برنامه لبویو وارد می کنیم. در صورت نیاز به راهنمای راه اندازی پورت سریال توسط لبویو می توانید به این لینک مراجعه و مقاله ” آموزش راه اندازی پروتکل سریال توسط LabView ” را مطالعه کنید.
طبق راهنمای ماژول دستورات زیر را می بایست به ماژول ارسال کنیم.
AT+CMGF=1 OK AT+CMGS="+981234567" > www.ECA.ir<CTRL-Z> +CMGS: 198 OK
بهتر است ابتدا این دستورات را از طریق ترمینال ساده به ماژول ارسال و پس از صحت عملکرد، برنامه را پیاده سازی کنید.
همانطور که مشاهده می کنید، ابتدا دستور AT+CMGF=1 به ماژول ارسال می گردد، پاسخ صحیح ماژول عبارت ok می باشد.
سپس در دستور بعدی شما می بایست عبارت” AT+CMGS=”+981234567 را ارسال کنید، عدد موجود در “” همان شماره موبایلی است که می خواهید پیغام خود را ارسال کنید. عدد +98 مربوط به کد پیش شماره ایران بوده و می بایست در تمامی شماره ها قبل از شماره موبایل لحاظ شود.
در پاسخ به ارسال شماره موبایل، دستگاه کد < را برای شما ارسال می کند، شما هم اکنون می توانید متن sms خود را در این قسمت بنویسید. در انتها با فشردن دو کلید control+z متن شما ارسال می گردد و پس از آن اطلاعات CMGS: ارسال می گردد.
هم اکنون می خواهیم این روند ارسال و دریافت اطلاعات را در نرم افزار لبویو پیاده سازی کنیم. برای اینکه بحث به درازا کشیده نشود، یکبار بصورت کلی تمامی مواردی که شما می بایست رعایت کنید را ذکر و در انتها برنامه را پیاده سازی می کنیم.
- نکته اول: ماژول های simcom دارای سیستم اکو بوده و شما هر دستوری که برای ماژول ارسال کنید، ابتدا همان کد دستور به شما برگردانده شده و سپس پاسخ ماژول بعد از آن ارسال می شود. شما می توانید با ارسال دستور ATE0 اکو را غیرفعال و با ارسال ATE1 آنرا فعال کنید.
- نکته دوم: ابتدا دستورات را از طریق ترمینال سریال ارسال کنید و سپس آنها را به دستورات لبویو تبدیل کنید. در هنگام خواندن پورت سریال، قرار دادن هر بلوک سریال برای خواندن یک سطر می باشد. به عنوان مثال شما اگر دستور AT را به ماژول ارسال کنید، ابتدا دستور AT برگشت داده می شود، سپس یک سطر خالی و سپس خط آخر کاراکتر OK ارسال می شود. در هنگام خواندن این دستورات، شما برای هر سطر می بایست یک بلوک خواندن سریال قرار دهید.
AT OK
- نکته سوم: برای خلاصه سازی در برنامه نویسی، همانند دیگر زبان های برنامه نویسی، توابع عمومی برای خود، طراحی و در قالب کتابخانه قرار دهید و هر بار به جای طراحی مجدد بلوک های برنامه این توابع را فراخوانی کنید.
- نکته چهارم: این برنامه جهت کار با ماژولی می باشد که روشن شده و به شبکه متصل شده است.
- نکته پنجم: برای کار کردن با پورت سریال در لبویو نیاز است که تولکیت VISA را نصب کرده باشید، برای دریافت راهنمایی های بیشتر در زمینه راه اندازی پروتکل سریال و نحوه پیکربندی به مقاله ” آموزش راه اندازی پروتکل سریال توسط LabView “ مراجعه کنید.
- نکته ششم: در هنگام ارسال دستورات به ماژول SIM800 ، یک وقفه برای دریافت دستور قرار دهید، به علت سرعت بالای رایانه، قبل از ارسال دستور توسط ماژول، برنامه وارد بلوک بعدی شده و باعث دریافت خطا می شود.
برای خواندن اطلاعات سریال به یک بلوک Read نیاز خواهیم داشت. با ترکیب یک گره اطلاعاتی و ماژول Read یک VI با نام READ می سازیم. در ادامه از این VI در برنامه نویسی برنامه اصلی استفاده می کنیم.
بلوک بعدی که خواهیم ساخت، بلوک ارسال SMS می باشد. در این قسمت تمام کدهایی که توسط ترمینال ارسال شده است را در این قسمت طراحی می کنیم.
همانطور که در بلوک دیاگرام مشاهده می کنید، خط به خط کدهای دستوری به ازای هر سطر از دریافت های دستورات ماژول نوشته شده است. این قسمت نیز بصورت یک تابع VI منفرد طراحی شده تا بتوان از آن در برنامه های دیگر استفاده نمود. نکات مهم در رابطه با این بلوک دیاگرام به اختصار توضیح داده می شود.
اولین بلوک مربوط به دستور AT+CMGF=1 می باشد. این دستور به همراه کد ENTER به ماژول ارسال می شود. یک تاخیر 100 میلی ثانیه ای جهت فرصت دادن به ماژل برای ارسال جواب قرار داده شده است.
تمامی دستوراتی که ارسال یا دریافت می شوند به یک استرینگ ایندیکاتور ارسال می گردند. شما می توانید توسط این قسمت نحوه اجرای دستورات و پاسخ های ماژول را مشاهده کنید.
بلوک های دوم و سوم جهت دریافت هر سطر از دستورات ارسالی ماژول می باشند.
در بلوک چهارم شماره موبایلی که می خواهیم SMS را ارسال کنیم وارد می کنیم. لازم به ذکر است که +98 مربوط به پیش شماره کد ایران بوده و بصورت پیش فرض می بایست قرار داده شود. شماره موبایل توسط کاربر و بدون صفر وارد می شود.
بلوک هفتم جهت دریافت متن SMS از کاربر می باشد.
در هنگام ارسال SMS توسط ترمینال، بعد از ارسال متن SMS می بایست دکمه های CTRL+Z جهت اعلام پایان متن و ارسال SMS برای ماژول ارسال شود. این دستور در کد هگز بصورت 1A می باشد. در بلوک هشتم این دستور ارسال می شود. شما باید بر روی استرینگ کلیک کرده و گزینه HEX Display را انتخاب کنید تا دستور بصورت hex به ماژول ارسال شود.
در انتها شما با قرار دادن این VI در پروژه خود و سیمکشی المان های مورد نیاز می توانید به سادگی از طریق آن متن را به شماره موبایل دلخواه ارسال کنید.
فایل پروژه کامل در دو نسخه 2016 و 2010 به ضمیمه جهت آپلود قرار گرفته است.