آردوینو آردوینو Arduino Uno سیم کارت GSM - GPRS

آموزش ساخت پنل پیامکی ساده با برد آردوینو UNO و ماژول SIM808

نوشته شده توسط معین صابری

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

 


شناخت پنل پیامکی


با گذر زمان، کسب و کارهای متفاوت رنگ متفاوتی به خود گرفته اند. اما تنها موردی که طی دهه های مختلف ثابت مانده است، تبلیغات است. تبلیغات نقش بسزایی در معرفی یک کسب و کار و افزایش فروش آن دارد. یکی از روش های موثر در تبلیغات، ارسال پیامک به مشتریان و یا افراد مختلف است. با ارسال پیامک، می توان مشتریان خود را از خدمات جدید آگاه و یا به واسطه معرفی خدمات، افراد جدیدی را به حلقه مشتریان اضافه نمود.

به کمک پنل ارسال پیامک اینترنتی، بدون هیچ فاصله و نیاز به ابزار خاصی، می توان پیامک مورد نظر را ارسال نمود. کافیست وارد سایت پنل پیامکی شده و با تعیین شماره و متن، پیامک خود را ارسال نمایید.  در نهایت بعد از چند ثانیه، پیامک به کاربر ارسال خواهد شد.

 


ماژول سیم کارت SIM808


ماژول جی اس ام، یک ماژول مخابراتی است که امکان اتصال به شبکه تلفن همراه با قابلیت برقراری تماس دو طرفه صوتی، ارسال پیامک و اتصال به اینترنت را فراهم می آورد. در زیر خلاصه ای از قابلیت های این ماژول را با هم مرور می نماییم. کار در محدوده فرکانسی ۸۵۰/۹۰۰/۱۸۰۰/۱۹۰۰ مگاهرتز، قابیلت کار در محیط های صنعتی، قابلیت اتصال به اینترنت، دارای GPS جهت مکان یابی، تعیین سرعت حرکت و… پیشتیبانی از تمام پروتکل های HTTP،FTP،SMTP، قابلیت ارسال پیامک، قابلیت ارسال MMS، قابلیت اتصال به رادیو FM

 


عملکرد پنل پیامکی آردوینو


سازوکار اصلی ارسال پیامک از طریق اینترنت به دو بخش سخت افزار و نرم افزار تقسیم می گردد. در بخش نرم افزاری، وب سایتی طراحی شده است که با ورود به آن، می توانید شماره تلفن و پیام مورد نظر خود را ثبت نمایید. در رابطه با طراحی وب سایت، در این آموزش به طور کامل بحث کرده ایم. در بخش سخت افزاری، هسته پردازشی ما، برد آردویینو UNO است. این برد به کمک اینترنت ماژول SIM808 به سرور(وب سایت) متصل شده و متن پیامک را به همراه شماره تلفن مقصد، دانلود می نماید. پس از دریافت متن پیامک و شماره تلفن همراه، به کمک قابلیت ارسال پیامک ماژول SIM808، پیامک ثبت شده در سرور، به شماره مقصد، ارسال خواهد شد.

 


شماتیک مدار پنل پیامکی آردوینو


در تصویر زیر، شماتیک مدار ارسال پیامک از طریق اینترنت یا به عبارتی بخش سخت افزاری پنل پیامکی آردوینو را مشاهده می نمایید.

شماتیک مدار پنل پیامکی آردوینو و ماژول سیم کارت - دیجی اسپارک

 


اتصالات ماژول Sim808 به برد آردوینو


پایه TX ماژول سیم کارت Sim808 به پایه ۱۰ برد آردوینو

پایه Rx با تقسیم مقاومتی(هر مقاومت یک کیلو اهم) به پایه ۱۱ آردوینو

پایه V ماژول سیم کارت GSM به تغذیه ۵ ولت

پایه GND ماژول علاوه بر تغذیه به پایه GND آردوینو

 


تغدیه ماژول Sim808


ماژول sim808 استفاده شده در آموزش ساخت پنل پیامکی آردوینو، نیاز به تغذیه ۵ ولت دارد. در صورتیکه آداپتور ۵ ولت ندارید، می توانید از آداپتور ۱۲ ولت  استفاده نموده و سپس به کمک یک مبدل ولتاژ سوییچینگ، ولتاژ ۱۲ را به ۵ ولت بکاهید. آداپتور و یا مبدل کاهنده ولتاژ را تهیه کنید. بر روی مبدل کاهنده ولتاژ، یک مولتی ترن وجود دارد که پیش از اتصال آن به ماژول، می بایست با چرخاندن آن، ولتاژ را به ۵ ولت برسانید. در زیر نمایی از شماتیک مدار را مشاهده می نمایید.

 


کدهای وب سایت ارسال پیامک


در این قسمت کدهای وب سایت را مشاهده می نماییم. برای طراحی وب سایت و ایجاد پنل پیامکی آردوینو، دو صفحه کاربردی داریم. یکی صفحه نخست که وظیفه دریافت متن و شماره تلفن مقصد را بر عهده دارد. صفحه دیگر نیز وظیفه دریافت شماره و متن و دخیره آن در فایل را برعهده می گیرد. در نهایت آردویینو با خواندن اطلاعات فایل که شامل متن و شماره مقصد است، پیامک را ارسال خواهد نمود. قطعه کد زیر صفحه اصلی در سایت ما خواهد بود، کدهای زیر را در سرور خود آپلود کرده و با نام index.php ذخیره نمایید. چنانچه هاست شما لینوکس و کنترل پنل آن cpanel است، وارد فولدر public html شوید و فایل را ایجاد  نمایید.

 

محدودیت در دسترسی کامل به این مجموعه آموزش

 

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

 

 


سورس کد پنل پیامکی آردوینو


در این قسمت کدهای پروژه اتصال آردویینو به اینترنت از طریق ماژول SIM808 را مشاهده می نمایید. این کدها مشابه کدهای آموزش کنترل اینترنتی دور و جهت موتور با قابلیت ردیابی آنلاین و کنترل اینترنتی رله به همراه ردیابی آنلاین است. پیشنهاد می گردد در کنار این آموزش، این دو آموزش نیز مطالعه گردد.

 

محدودیت در دسترسی کامل به این مجموعه آموزش

 

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

 

 


تست و اجرای ارسال پیامک از طریق اینترنت


در این مرحله به چگونگی ارسال پیامک از طریق اینترنت می پردازیم. برای ارسال، ابتدا باید وارد وب سایت خود شویم. با آپلود کدهای قسمت وب سایت در سرور خود، با تصویر زیر رو به رو خواهید شد. شماره تماس و متن پیامک خود را وارد کرده و بر روی دکمه submit، کلیک نمایید تا پیامک ارسال گردد.

پس از این مرحله، متن پیام در سرور ذخیره می شود. در قسمت بعدی، آردویینو به کمک اینترنت ماژول SIM808 به اینترنت متصل شده و با خواندن متن و شماره ذخیره در سرور، به کمک قابلیت ارسال پیامک، پیام مورد نظر را به شماره مقصد، ارسال خواهد نمود.

 

همانطور که بیان شد، هسته پردازشی پنل پیامکی ما، یک برد آردویینو UNO است. این برد که یکی از محبوب ترین بردهای آردویینو به شمار می رود، توانایی برقراری ارتباط سریال را دارد. به کمک ارتباط سریال، این برد با ماژول مخابراتی SIM808 ارتباط برقرار می نماید. از طریق همین ارتباط سریال، فرامین اتصال به اینترنت، دریافت شماره تماس و متن پیامک از سرور و ارسال پیامک به شماره مقصد، فراهم می گردد.

اتصالات سخت افزاری پنل پیامکی آردوینو - دیجی اسپارک

در نهایت، از طریق سریال مانیتور آردویینو، می توان روند اجرای برنامه شامل اتصال به اینترنت، ارسال پیامک و کنترل وضعیت اتصال به شبکه را مشاهده نمود.

 


تحلیل کدهای وب سایت


در این قسمت به بررسی کدهای وب سایت می پردازیم. همانطور که بیان شد، در قسمت وب سایت دو صفحه داریم که یکی برای دریافت شماره تماس و متن پیام است. صفحه دوم، اطلاعات صفحه اول را دریافت کرده و در یک فایل به نام sms.txt ذخیره می نماید. برای ساخت فرم دریافت اطلاعات در html، از کلمه کلیدی form استفاده می نماییم. در ادامه، قسمت action، مشخص می نماید که داده ها به کدام صفحه می بایست ارسال شوند.

<form action="send_sms.php" method="post">

در ادامه، صفحه send_sms.php، به کمک دستور POST$، داده ها را دریافت می نماید. در این صفحه، روال زیر برقرار است.

۱-دریافت شماره تلفن و پیام

۲-ذخیره پیام در متغیر data

۳-قرار دادن عبارت [ در انتهای متغیر دیتا(بعد ازمتن انتهای متن پیام)

۴-قرار دادن شماره تماس بعد از عبارت [

۵- دخیره داده در فایل sms.txt

به طور کلی هدف از قرار دادن کاراکتر [ در انتهای پیام متنی، جداسازی متن پیام و شماره تلفن است. در این صورت، زمانیکه آردویینو داده های فایل را می خواند، می تواند به سادگی متن و شماره مقصد را از هم تفکیک کند؛ چراکه این دو داده به کمک [ از یکدیگر تفکیک شده اند.

 


تحلیل کدهای آردوینو


در این قسمت به بررسی و تحلیل کدهای آردویینو می پردازیم. کدهای به کار رفته بسیار شبیه پروژه های کنترل اینترنتی رله و کنترل دور و جهت موتور به وسیله اینترنت ماژول SIM808 است. در زیر توابع به کار رفته در این پروژه را مشاهده می نمایید. ضمن اینکه درون کدها، به طور کامل در رابطه با عملکرد هر خط کد، توضیح داده شده و کامنت قرار گرفته است.

توابع کد نویسی پنل پیامکی آردوینو Arduino - دیجی اسپارک

 

در رابطه با ارسال پیامک در تابع run_command لازم است تا نکته مهمی را در نظر داشته باشید. در این تابع، با توجه به اجرای مداوم آن در قسمت loop، چنانچه متن پیام و شماره مقصد تغییری نکرده باشند، پیام ارسال نخواهد شد. به عبارت دیگر، فرض کنید شما پیام و شماره را در سرور ثبت می نمایید. سپس آردویینو پیام را خوانده و به شماره ثبت شده، آن را ارسال می نماید. مجددا آردویینو به سرور متصل شده و پیام و شماره مقصد را می خواند. جهت جلوگیری از ارسال مداوم یک پیام به یک شماره، ابتدا بررسی می شود که پیام و یا شماره تغییر کرده باشند و سپس پیام ارسال می گردد.

 


وسایل مورد نیاز


ماژول SIM808 با قابلیت GPS

آنتن GSM

آنتن GPS

برد آردویینو UNO (تغذیه برد آردویینو از همان کابل تامین می شود)

مقاومت ۱k اهم

 


جمع بندی


در این آموزش به نحوه ارسال پیامک به شماره تلفن موبایل از طریق اینترنت پرداختیم. برای ارسال پیامک از طریق اینترنت، احتیاج به یک سرور خواهید داشت تا پیام و شماره تلفن در آن ثبت شود. سپس به کمک آردویینو و ماژول SIM808، به سرور متصل شده و ضمن دریافت متن پیام و شماره مقصد، پیامک به کمک ماژول SIM808  ارسال می شود. ماژول SIM808 قادر است تا ضمن برقراری تماس تلفنی و ارسال و دریافت پیامک، به شبکه اینترنت متصل شده و به ارسال و دریافت داده از طریق شبکه جهانی اینترنت بپردازد. همانطور که بیان شد، به کمک این آموزش می توان از طریق اینترنت، پیامک فرستاد. کاربرد این پروژه را در سیستم های تبلیغات انبوه و یا همان پنل های پیامکی دید که یکی از راه های بسیار مناسب در جذب و حفظ مشتری محسوب می شود.

 


نظرسنجی


در پایان، از اینکه این مطلب را مطالعه نمودید، سپاسگزاریم. لطفا در جهت ارتقا سطح کیفی مطالب، به سوالات زیر در کامنت ها، پاسخ دهید.

۱-آیا این مطلب برای شما مفید بود؟

۲- آیا این مطلب روان بیان شده بود؟

۳- به نظر شما، از این پروژه در چه زمینه ها و پروژه های دیگری، می توان بهره برد؟

۴- به نظر شما، به این پروژه چه امکانات دیگری می توان اضافه نمود؟

 

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

 

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

معین صابری

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

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

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

۲۷ دیدگاه

  • سلام
    ممنون بابت آموزشتون، این پروژه فقط با سیم ۸۰۸ کاربردی هست؟ یا با بقیه هم میشه؟

  • سلام؛ من میخوام زمانی که کلیدی رو فشار میدم برای گوشیم یک اس ام اس بیاد و توش مبلغ شارژ باقی مانده ی سیمکارت sim800 رو نمایش بده. میتونید راهنماییم کنیم؟
    دستورش رو نوشتم و مبلغ شارژ روی serial monitor نمایش داده میشه چطوری میتونم این رو‌ توی یک رشته بریزم و ارسال کنم؟ خودم از readString() استفاده کردم اما پیام های نامربوط میفرسته :

    AT+CUSD=1

    OK
    AT+CMGF=1

    OK
    AT+CSMP=17,167,0,0

    OK
    ATD*141*1#;

    OK

    OK
    ممنونم میشم راهنمایی بفرمایید.

    • سلام
      از اردویینو uno استفاده می کنید؟
      به شکل زیر عمل کنید و فرض کنید سریال نرم افزاری برای ارتباط با ماژول را به اسم gsm تعیین کرده اید.
      بعد از دستور csmp، به شکل زیر عمل کنید:
      gsm.raedString();
      gsm.print(“ATD*141*1#\r\n”)
      while(gsm.available() > 0)
      data=gsm.readString();
      نتیجه شارژ، در متغیر data ذخیره می شود.

  • با سلام و عرض خسته نباشید . من این پروژه انجام دادم از لحاظ سخت افزاری نرم افزاری ok الان اس ام اس ارسال نمیشه

    • سلام از چه سیم کارتی استفاده می کنید؟ ترجیحا مورد را با همراه اول تست کنید. همچنین پیام هایی که در سریال مانیتور دریافت می کنید را کپی و در کامنت بعدی، قرار دهید.

    • سلام
      بله، امکان پذیر است. کافیست فایلی از شماره ها را تعیین کنید و با کمی تغییر در کد، پیامک ها را ارسال نمایید.

  • سلام یک سوال سیم کارتی که قرار میدیم سیم کارت ایرانسل یا همراه اول چطور میتونیم مثلا به یکی پیام میدیم شمارمون به صورت مثلا “سیستم پیامکی” یا “sms” نشون داده بشه مثلا مثل “Snapp” و شمارمون کاربر نبینه؟

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

        • نه!
          شماره را در تصویر پاک کردم و فقط اسمی که برای شماره در گوشی ذخیره کردم در تصویر دیده می شود.

  • سلام
    این ماژول های ارسال پیامک یا تماس معمولا مشکل تغذیه دارند به راحتی کارنمیکنن
    آیا ماژولی هست این مشکل تغذیه رو نداشته باشه؟؟
    چه ماژولی؟؟

  • سلام وقت بخیر
    ممنون از آموزش مفید شما
    من وقتی شماره و دستور SMS رو میفرستم، در حالت دریافت متن پیام باقی میماند و ارسال نمیکنه
    ممنون میشم راهنمایی بفرمائید
    AT
    OK
    AT+CMGF=
    OK
    AT+CMGW=”+85291234567″
    >SEND SMS
    >12
    >

  • سلام مهندس.مهندس اگه بخوام پنل برای دستگاه مشتریان درست کنم،باید چیکار کنم
    راهنمایی میکنید.چون می‌خوام دستگاه مشتریان بسازم.اما پنلش رو چطوری باید بسازم.یا کی میسازه

    • سلام
      در این آموزش نحوه ساخت آن را توضیح داده ایم، اما برای سفارش آن می توانید به شرکت های ارایه کننده پنل پیامکی مراجعه نمایید.

  • سلام خوبید
    من در حال حاظر با مودم جی اسن ام ارسال پیامک انجام میدم و چون چند تا سیستم دارم مدیریتش سخته خواستم ببینم برای شما امکان نوشتن برنامه ای برای ارسال با مودم جی اس ام هست که از طریق وب سرویس به سیستم های ارسال من وصل بشن و بتونم همه مودم ها را داخل یک سیستم مدیریت کنم و اگه بتونید یه شماره تماس از خودتون بدید که کار را کامل توضیح بدم ممنون میشم

    • سلام و متشکرم از شما
      در حال حاضر اجرای پروژه امکان پذیر نیست، اما شما می توانید کار خود را آغاز کرده و در صورت وجود سوال از همین طریق مطرح نمایید تا راهنمایی صورت گیرد.

  • جناب مهندس کدی برای ارسال پیامک از طریق api موجود دارید؟ ثبتنام سایت و ارسال و درسافت کد تایید سایت را خودم انجام بدهم. با تشکر

  • سلام
    من میخوام ۴ عدد sim800 را به یک اردینو وصل کنم و یک لیست شماره بدم و بگم با هر بار اجرا از هر سیمکارت ۲۰ عدد پیام ارسال شه و بعد تعویض سیمکارت ادامه ارسال بشه برای بقیه لیست با همان متن امکانش هست ؟

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