راه اندازی و ارسال پیامک با ماژول SIM900 و ماژول های GSM مشابه

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

کاربرد بالا فقط چند نمونه از کاربرد های این ماژول هستند با خلاقیت شما کاربردهای بیشتری امکان پذیر است.

هدربرد ماژول sim900a

نمونه هدربرد ماژول SIM900 

برای شروع کار تامین تغذیه مناسب برای ماژول SIM900 می باشد که از یک منبع تغذیه آزمایشگاهی و یا یک آداپتور بعلاوه مدار زیر می توانید استفاده کنید و البته من خودم در بعضی از پروژه ها از یک آداپتور و یک دیود سر راه تغذیه ماژول استفاده می کنم.

تامین تغذیه مناسب برای ماژول

بعد از اتصال تغذیه ماژول دکمه روی ماژول را 1 ثانیه فشار دهید تا ماژول روشن شود.

برای تست ماژول راحت ماژول می توانید با یک مبدل USB به سریال آنرا به کامپیوتر وصل کنید.

مطلب پیشنهادی:  ارسال و دریافت SMS با STM32 و ماژول SIM800c

sim900 usb to serial

بعد از اتصال ماژول به مبدل نرم افزار تراترم و یا هر نرم افزار ترمینال سریال مانند هایپرترمینال و یا قسمت ترمینال سریال خود کدویژن را باز کنید و کامنت AT را با حروف بزرگ نوشته و اینتر بزنید.اگر ماژول روشن و مناسب تغذیه شده باشد و سالم باشد باید در جواب این کامنت OK را ارسال کند.نمونه عملی ارسال کامنت و پاسخ را در شکل زیر در نرمافزار TeraTerm  مشاهده می کنید.

ارسال کامنت به ماژول

خب بریم سر ارسال پیامک با ماژول

برای ارسال پیامک اول باید فرمت تکست را برای ماژول انتخاب کنیم . با دستور زیر حالت پیامک به TEXT  تغییر حالت می دهد پس قبل از ارسال پیامک باید دستور AT+CMGF=1 را به ماژول ارسال کنیم. بعد از تنظیم حالت پیامک ماژول با دستور زیر پیام را به شماره دلخواه ارسال می کنیم :

پیامک با ماژول SIM900

در دستور AT+CMGS ارسال پیامک ، شماره تلفن باید بین ” ” باشد بعد یک ENTER  و متن پیامک که در اینجا Melec.ir  می باشد و بعد با گرفتن کنترل و زدن دکمه Z و یا CTRL+Z پیامک ارسال می شود.

 نحوه اتصال ماژول به میکروکنترلر

اتصال AVR به ماژول SIM900

در این آموزش من از میکروکنترلر AVR  استفاده می کنم ولی برای میکروکنترلرهای دیگر نیز مشابه است. پایه ی RXD ماژول به پایه TXD میکروکنترلر و پایه TXD ماژول به پایه RXD میکروکنترلر وصل می شود . و پایه RI ماژول در مرحله دریافت پیامک بیشتر نیاز است به پایه وقفه میکروکنترلر وصل می شود و البته در این مرحله نیاز نمی باشد. و قسمت آموزش دریافت پیامک با ماژول استفاده خواهیم کرد و همچنین روشن کردن ماژول با میکروکنترلر نیز در آموزش های بعدی آموزش داده خواهد شد البته اگر در کامنت ها فیدبک خوبی بگیریم ^_^ 🙂

مطلب پیشنهادی:  آموزش راه اندازی ماژول +nRF24L01

نکته مهم : در میکروکنترلر چگونه باید ENTER بزنیم و چگونه Ctrl+z بزنیم ؟

جوابش خیلی ساده است با کد های اسکلی اینها خب کد های اسکی مورد استفاده به شرح زیر هستند و برای کد های بیشتر جدول اسکی را در گوگل سرچ کنید و اونجا کامل نوشته.

ENTER   13
Ctrl+z     26
"              34
'               39

خب خیلی ساده کد زیر در میکروکنترلر AVR و محیط کدویژن برای ارسال پیامک می باشد.

/*
SIM900 Header Board Code example 
Send SMS 
Melec.ir
*/
#include <mega16.h>
#include <alcd.h>
#include <stdio.h>
#include <delay.h>


interrupt [USART_RXC] void usart_rx_isr(void)
{
//char data;
#asm("cli")
//data=UDR;
 // if you want to check the sim900 answer after send sms and etc...  
 // you can use data var ....
#asm("sei")
}

void main(void)
{
   
//USART Register Setting 
UCSRA=0x00;
UCSRB=0x98;
UCSRC=0x06;
UBRRH=0x00;
UBRRL=0x33;


   
DDRD=(1<<DDD3); // PORTD.3 OUTPUT FOR ON/OFF SIM900

    
    lcd_init(16);
    lcd_clear();
    lcd_putsf("**  SIM900 **");
    lcd_gotoxy(0,1);
    lcd_putsf(" Melec.ir");   
    delay_ms(500);
         
     ///ON SIM900
     PORTD.3=1; 
     delay_ms(1000);
     PORTD.3=0;
              
          
    #asm("sei")     
    while (1)
    {        
            
           if(PIND.4==0){  
           while(PIND.4==0);  
            lcd_clear(); 
            lcd_putsf(" Sending SMS ");  
           printf("AT%c",13);
           delay_ms(200);
           printf("AT+CMGF=1%c",13);
           delay_ms(200);
           printf("AT+CMGS=%c09371548691%c%c",34,34,13); // your phone number
           delay_ms(200);
           printf("HI! SIM900 %c%c",13,26);   //sms text 
           delay_ms(500);    
            lcd_clear(); 
            lcd_putsf("SMS Sent"); 
           }                                               
    }
}

در کد بالا PORTD.3 برای روشن کردن ماژول با یک ترانزیستور به ماژول وصل شده که البته شما می توانید بصورت دستی با فشار دادن شستی روی برد نیز ماژول را روشن کنید. در کد بالا با فشار دادن کلید وصل شده به پایه PORTD.4 یک پیامک ارسال و می شود روی ال سی دی هم می نویسد که پیامک ارسال شد. 

مطلب پیشنهادی:  پروژه و آموزش کار با ماژول فاصله سنج SRF04 با آردوینو

اگر دوست دارید GPS  خودتان را درست کنید نوشته زیر را از دست ندهید:

اگر دنبال اطلاعات در مورد GPS و نحوه ارسال اطلاعات بصورت پیام کوتاه و نمایش روی نقشه گوگل هستید :

و

و همچنین اطلاعاتی در مورد GPRS  ماژول sim900  اگر نیاز دارید:

امیدوارم آموزش مفید واقع شده باشد و همچنین مشکلات این مطلب و پیشنهاد آموزش برای مطالب بعدی را در قسمت نظرات مطرح کنید.

اگر این نوشته‌ برایتان مفید بود لطفا کامنت بنویسید.

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

31 دیدگاه

  1. با سلام… من این ماژول را اندازی کردم… اما این مطلب شمارو خواندم این قسمت که گفتیت پایه RI به وقفه میکرو اینجا به پایه pd2 وصل کردید…
    من این پایه Ri به یکی از پایه های میکرو وصل کردم پایه را به صورت input قرار دادم اما وقتی تنها میکرو فقط منتظر پیام باشد خوب کار میکند اما اگه همون لحظه مشغول فرمان دیگه باشد جون پایه Ri یک ثانیه حتی شایدم کمتر جشمک میزنه و دیگه نرمال میشود این دستور
    if ri=0 then دستور خواندن sms اجرا کند
    یعنی اگر میکرو مشغول کاری باشد دیگه این شرط اجرا نمیشود و. دستور حواندنsms اجرت نمیشه
    اگه امکانش هست یک را ه حل به من بدید؟
    خیلی ممنون میشم

    • میلاد جهاندیده

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

  2. با سلام
    آقای جهاندیده امکانش هست یک پروژه ساده از دریافت اس امس اس با پایه ri با وقفه و نمایش نام اپراطور سیم کارت اگه امکانش هست بزارید ممنون میشم

  3. سلام بر شما مهندس جهاندیده ”
    من بعد از پاسخی که در مورد سوالم دادید حسابی تحقیق کردم … تا امروز تونسم از تایمر کانتر استفاده کنم و خیلی هم خوب جواب میده واقعا میرسی که سر نخ . حل این مشکل به من گفتیت ….

  4. Man har kari mikonam nemitonam esme operator va keyfiat signal anten majol ra bedast biyaram dakhele datashit khondam dastoratesho ama moafagh nashodam plz in dota yek mesal kochi bezarid

    • میلاد جهاندیده

      در مورد اسم اپراتور اطلاع ندارم ولی کیفیت سیگنال را با دستور زیر می توانید بدست آورید :
      دستور AT+CQS
      ماژول در پاسخ به این دستور دو عدد را بازمی گرداند، عدد اول قدرت سیگنال آنتن که بین 0 تا 32 است و عدد دوم مربوط جزئیاتی است که بعدا” توضیح داده می شود.
      شکل دستور به صورت زیر است.
      AT+CQS
      +CQS=14,0
      OK

      متن کپی شده از فایل
      http://melec.ir/send-vehicle-gps-location-with-sms-project

  5. سلام
    یه سوال داشتم در مرود منبع تغذیه ماژول

    امکانش هست از باتزی های لیتیوم-یونی (li-ion) استفاده کنیم که ولتاژشون 3.7 هست؟!
    در صورت امکان آیا نیازی به مدار تغذیه هست؟

    • میلاد جهاندیده

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

  6. من یک مازول sim900 دارم میخوام gprs رو روی این مازولم اضافه کنم لطفا راهناممی کنید چه کار میتونم انجام بدم .
    sim900 Aرونمیخوام خریداری یکنم .
    لطفا راهنمایی کنید

    • میلاد جهاندیده

      تا جایی که من اطلاع دارم sim900 ارتباط gprs داره . دقیقا متوجه منظورتان نشدم لازم نیست چیزی اضافه کنید . برای موارد خاص ماژول شاید لازم باشه فریم وردکش را آپدیت و تغییر بدید ولی gprs بلازم نیست . دستورات gprs را چک کنید و تست کنید .

  7. سلام،میشه یه کد دریافت sms برای sim900 قرار بدید؟! ممنون میشم!

  8. سلام آقای جهاندیده
    میخواستم اگه میشه یه برنامه ی خوب واسه کنترول وسیله برقی با اس ام اس به زبان بیسیک به ایمیلم بفرستید
    وبابت توضیحات کاملتون واقعا ممنون با آروزوی موفقیت در تمامی لحظات یاعلی

  9. سلام مهندس جان عالی بود

  10. ضمن عرض سلام و وقت بخیر
    مهندس جان بسیار عالی مفید و مختصر بود .
    انشاالله که موفق باشید.

  11. سلام
    من مقاله ای رابایدبرای درسی ارائه بدهم درباره سیستم دزدگیر و ردیاب خودرو مبتنی بر گوشی های اندرویدی واینکه درمورد سیستم ردیابی که درماشین گذاشته میشه نحوه عملکردش وهمچنین نحوه عملرد نرم افزارنصب شده روی موبایل ونحوه برقراری ارتباط بین این دوتوضیح بدهم اگه ممکنه محبت کنیدراهنمایی ام کنید.خیلی گشتم ولی نتونستم کامل متوجه نحوه برقراری ارتباط بشم.اگه ممکنه به ایمیلم پاسخ دهید.
    باتشکر

  12. سلام من از ماژول GTM900-bاستفاده میکم ولی جوابی از اون برای حتی AT هم دریافت نمیکنم ..میشه راهنمایی کنید؟

  13. خيلي عالي بود ممنون ميشم اگر جزئيات كامل كد راه اندازي را بگذاريد

  14. سلام در مدار تغذیه که به آن اشاره کرده اید(شکل بالا) سلف FB101 را چطور میشود تهیه کرد و همچنین مقدار VBAT چقدر است با تشکر

    • میلاد جهاندیده

      سلام، FB101 فریدبیت هستش و زیاد مهم نیست اگر نذارید ولی در مغازه هایی که کارشون سلف و ترانس هست پیدا میشه و حتی وسایت های فروشگاهی را هم بگردید پیدا میشه. در مورد سلف 100uH هم که زیاد هست توی بازار و سعی کنید 1 یا 2 آمپرش را بگیرید. مقدار VBAT هم بستگی به ماژول داره ولی 4.1 بود فک کنم برا ماژول SIM900 ولی برای ماژول های دیگه مثل SIM800 ,SIM808 و… هم صفحات اول دیتاشیت ون را بخونید نوشته.

  15. سوال، چگونه برنامه دمای محیط را با سنسور دماlm35 و ارسال پیامک به زبان c بنویسم با سیم۹۰۰ با تشکر

    • میلاد جهاندیده

      سلام، پروژه های مشابه در وبسایتمان هستش بگردید و توضیحاتشان را بخونید و سورس کدشون را نگاه کنید متوجه داستان میشید. ولی صرفا جهت اطلاع ماژول SIM900 دیگه تولید نمیشه و در بازار خیلی کمیاب شده. و برای نوشتن کدش هم خیلی ساده است. اول سنسور دما را به میکروکنترلر وصل کنید و دما را بخونید ( روی نمایشگر نشون بدید یا بفرستید روی پورت سریال ) از عملکرد مدارتون مطمئن شدید حالا برید سر وقت ماژول، ماژول هم که قسمت ارسال پیامک اینجا هست فقط به جای متن پیامک مقدا دما را بذارید. فقط میخواهید مقدار دما را بذارید باید مقدار متغیر دما را با توابعی مثل sprintf تبدیل به رشته کنید. فقط یک نکته میمونه که کی دما را میخواین بفرسته مثلا یک ساعت یکبار، هر روز یکبار و یا با دریافت پیامک خاض…گه اینو به عنوان تمرین خودتان حل کنید. البته توی سایت در بین پروژه های AVR بگردید هستش نمونه کد.

  16. سلام.نمیشه PORTD.3 رو به طور مستقیم به RI وصل کرد؟حتما باید ترانزیستور باشه؟

  17. تمام مطالبتون تکراری و کپیه که در تمام سایتها هست اصلا اموزشی توش نیست که به درد بخوره اگر کسی هم سوال به در بخور بکنه جواب نمیدید اگه درست نمیگم چرا در هیچ سایتی از جمله توی همین جا در رابطه با دریافت پیامک اموزشی نمی زارید؟

    • میلاد جهاندیده

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

  18. علی رحمانی

    باسلام من نیاز به مداری دارم که با فعال شدن یک اژیر فقط به من یک زنگ ساده بزنه وهرچه قدر ساده بهتر

  19. سلام مهندس من این برنامه رو تست گرفتم اما تا به کد های مربوط به at می رسه میکرو در همون خط میمیونه ماژول 800 رو با نرمافزار تست کردم اوکی بوده تغذیه هم باتریی هست و روی رایانه جواب داده میشه راهنمایی کنید مشکل می تونه چی باشه ممنون.