پروژه الکترونیکپروژه های ARMپروژه های STM32

ارسال و دریافت SMS با میکروکنترلر STM32 و ماژول Sim800

سلام. ارسال و دریافت SMS با میکروکنترلر STM32 و ماژول Sim800 را آماده کردیم.

آموزش دریافت و ارسال پیامک با stm32

ماژول های GSM اغلب در پروژه های IoT مورد استفاده قرار می گیرند زیرا توانایی ارسال و دریافت داده از راه دور را دارند. ماژول های GSM محدودیت های زیادی مانند ماژول های Wi-Fi ندارند. سایر ماژول های بی سیم مانند Wi-Fi دارای هزینه بالا و محدوده کوتاه (در ارتباط محلی) هستند. گرچه ماژول های gsm مثل sim800 نمیتوانند اطلاعات با حجم بالا را ارسال کنند اما برای ارسال و دریافت مقادیر معمول بسیار مناسب هستند.

در این پروژه STM32، ما یک ماژول gsm را به میکروکنترلر ARM STM 32 متصل میکنیم تا یک سیستم ارسال و دریافت پیامک را بسازیم. برای نمایش پیام های دریافتی از یک ال سی دی کاراکتری 16*2 استفاده میشود. دو دکمه قرار داده شده است که یکی برای ارسال پیام تنظیم شده و دیگری برای تغییر حالت دریافت / ارسال است.

آموزش دریافت و ارسال پیامک با stm32

فیلم عملکرد پروژه در انتهای صفحه قرار داده شده است.

در حال حاضر چندین پروژه GSM در سایت آیرنکس وجود دارد که با انواع مختلف میکروکنترلرها در ارتباط هستند :

قطعات مورد نیاز

  1. STM32 – برد توسعه (BluePill) (STM32F103C8T6)
  2. ماژول GSM SIM800C
  3. ال سی دی کاراکتری 16*2
  4. دکمه (2)
  5. پتانسیومتر 10 کیلو اهم

ماژول GSM SIM800C چیست؟

SIM800C یک ماژول GSM است که به طور گسترده استفاده می شود. SIM800C یک ماژول چهار باند GSM / GPRS است که در برنامه ها در جایی که انتقال داده از راه دور مورد نیاز است استفاده می شود. SIM800C در 850/900/1800 / 1900MHz کار می کند. همچنین می تواند تماس صوتی ، پیام کوتاه را دریافت و انتقال دهد. ماژول با استفاده از دستورات AT کنترل می شود. این ماژول از یک سیم کارت پشتیبانی می کند و دارای پین های UART TX و RX به همراه یک پروتکل سریال RS232 است که می تواند برای برنامه ریزی با میکروکنترلرهای مختلف در برنامه های تعبیه شده استفاده شود.

ماژول GSM SIM800C چیست؟

برای تغذیه ماژول SIM800C GSM از آداپتور برق 12 ولت DC استفاده شده است. یک سیم کارت در پشت ماژول SIM800C GSM قرار میگیرد. توجه داشته باشید که SIM800C از 4G پشتیبانی نمی کند ، بنابراین سیم کارت 4G را وارد نکنید.

قرار دادن سیم کارت در ماژول سیم 800

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

به منظور ارتباط SIM800C با میکروکنترلر STM32F103C8 ، از درگاه سریال UART استفاده می شود که یک رابط سریال سخت افزاریاست. تصویر زیر پین های UART را در میکروکنترلر STM32 در پین A9 و A10 نشان می دهد.

جزئیات پین های STM32

STM32F103C8 دارای سه رابط UART برای اتصال سه سریال خارجی است.

ما مهم ترین دستورات AT که در دیتاشیت ماژول سیم 900 موجود است را در لیست زیر برای شما آماده کرده ایم.

دستور AT پاسخ ماژول
AT+CPIN? چک کردن کیفیت سیگنال
AT+COPS? اطلاع از نام سرویس دهنده مثلا ایرانسل یا غیره
ATD98XXXXXXXX; تماس با یک شماره خاص
AT+CNUM پیدا کردن شماره سیم کارت
ATA پاسخ دادن به تماس ورودی
ATH قطع کردن تماس فعلی
AT+COLP نمایش شماره تماس ورودی
AT+VTS=(number) DTMF ارسال شماره
AT+CMGR AT+CMGR=1 خواندن پیام جایگاه اول
AT+CMGD=1 پاک کردن پیام در جایگاه اول
AT+CMGDA=”DEL ALL” پاک کردن تمامی پیام های سیم کارت
AT+CMGL=”ALL” خواندن تمامی پیام های سیم کارت
AT+CMGF=1 تنظیم حالت اس ام اس در حالت متن
AT+CMGS = “+98 935837XXXX” >متن اس ام اس <Ctrl+z> ارسال اس ام اس به یک شماره خاص پس از < متن دلخواه را وارد کنید و سپس کلید کنترل + زد را بزنید.
AT+CGATT? چک کردن اتصال اینترنت سیم کارت
AT+CIPSHUT قطع ارتباط با اینترنت
AT+CSTT = “APN”,”username”,”Pass” اتصال به اینترنت با استفاده از ای پی ان و پسورد که میتوانید از سرویس دهنده سیم کارت بگیرید.
AT+CIICR چک کردن دیتاپک سیم کارن
AT+CIFSR دریافت آی پی سیم کارت
AT+CIPSTART = “TCP”,”SERVER IP”,”PORT” TCP IP connection تنظیم
AT+CIPSEND ارسال دیتا به سرور

مدار راه اندازی GSM با STM32

تصویر زیر شماتیک مدار پروژه راه اندازی ماژول GSM با میکروکنترلر STM32 را نشان میدهد.

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید

مدار راه اندازی GSM با STM32

دو دکمه با مقاومت 10 کیلو اهم به پین ​​های PA0 و PA1 میکروکنترلر STM32 وصل شده اند.

اتصالات مدار بین STM32F103C8 و GSM SIM800C

STM32 GSM SIM800C
PA9 (TX) RX
PA10 (RX) TX
GND GND

اتصالات مدار بین LCD STM32F103C8 و 16×2

شماره پین LCD نام پین LCD نام پین STM32
1 Ground Ground
2 VCC 5V
3 VEE پتانسیومتر
4 Register Select (RS) PB11
5 Read/Write (RW) Ground
6 Enable (EN) PB10
7 Data Bit 0 DB0 بدون اتصال
8 Data Bit 1 DB1 بدون اتصال
9 Data Bit 2 DB2 بدون اتصال
10 Data Bit 3 DB3 بدون اتصال
11 Data Bit 4 DB4 PB0
12 Data Bit 5 DB5 PB1
13 Data Bit 6 DB6 PC13
14 Data Bit 7 DB7 PC14
15 LED مثبت 5V
16 LED منفی Ground

میکروکنترلر STM32F103C8 برای برنامه ریزی رابط GSM

در آموزش قبلی ما درباره برنامه نویسی STM32 با استفاده از درگاه USB آموختیم. می توان با استفاده از درگاه USB بدون استفاده از پروگرامر FTDI برد STM32 را برنامه ریزی کرد : آموزش برنامه نویسی STM32 با پورت USB. برنامه ریزی را به راحتی با ARDUINO IDE شروع کنید. برای بارگذاری کد در STM32F103C8 ، کافی است با استفاده از کابل USB ، درگاه microUSB را به STM32 و درگاه USB به رایانه وصل کنید و نوشتن کد را در ARDUINO IDE شروع کنید.

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

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

#include <LiquidCrystal.h>                           
const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14;      
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

سپس با عملکرد lcd.begin (16،2) اندازه ال سی دی را تعریف میکنیم. و سپس پیام مقدمه را نمایش میدهیم.

lcd.begin(16,2);           // تعریف اندازه ال سی دی
 lcd.print("STM32 WITH GSM");   // نمایش پیام
 lcd.setCursor(0,1); // ستون اول ردیف دوم
 lcd.print("SIM800C");   // نمایش پیام

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

pinMode(PA0,INPUT);   // تعریف پین به عنوان ورودی
pinMode(PA1,INPUT);   // تعریف پین به عنوان ورودی

میزان baud مورد استفاده برای ارتباط سریال را انتخاب کنید.

Serial1.begin(9600);

برای ارسال و دریافت پیام دو تابع وجود دارد که در اینجا در مورد آن ها بحث میکنیم.

ارسال اس ام اس با STM32

این عملکرد برای ارسال پیامک به شماره استفاده می شود. دستور AT به ماژول GSM ارسال می شود که نشان دهنده حالت متن پیام و شماره ارسال آن است.

عبارت زیر ماژول GSM را در حالت متن با ارسال دستور AT (AT + CMGF = 1) تنظیم می کند.

Serial1.println("AT+CMGF=1");  //تنظیم در حالت پیام متنی

پس از آن دستور AT (AT + CMGS) که نشان دهنده ارسال پیامک به شماره موبایل است از طریق درگاه serial1 به ماژول GSM ارسال می شود.

Serial1.println("AT+CMGS=\"+91XXXXXXXXXX\"\r"); // شماره موبایل خود را وارد کنید

پیام ها با استفاده از دستور AT هر ثانیه ارسال می شوند و سپس CTRL + Z باید ارسال شود تا یک کد ASCII از CTRL + Z از طریق پورت Serial1 به ماژول GSM ارسال شود.

delay(1000);
 Serial1.println("Salam. Inja Irenx Ast."); // متن پیام مورد نظر شما
 Serial1.println((char)26);//کد برای کنترل + زد

سپس “SMS SENT” در ال سی دی کاراکتری نمایش داده می شود.

lcd.print("SMS SENT");

دریافت اس ام اس با STM32

در این عملکرد پیام ها در صفحه نمایش LCD دریافت و چاپ می شوند.

Serial1.println("AT+CNMI=2,2,0,0,0");

بنابراین ، برای دریافت پیام ها از دستور AT فوق استفاده می شود.

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

while(1)
  {
           if(Serial1.available())
            {
                do
                  {
                     while ( !Serial1.available() );    
                  } while ( '"' != Serial1.read() );
               do
                  {
                      while ( !Serial1.available() );    
                  } while ( '"' != Serial1.read() );
               do
                 {
                      while ( !Serial1.available() );    
                  } while ( '"' != Serial1.read() );
               do
                 {
                    while ( !Serial1.available() );    
                 } while ( '"' != Serial1.read() );
                do
                  {
                     while ( !Serial1.available() );              
                  } while ( '"' != Serial1.read() );
                do
                 {
                    while ( !Serial1.available() );  
                  } while ( '"' != Serial1.read() );
                  while ( !Serial1.available() );
                  receive = Serial1.read();     
                  while ( !Serial1.available() );
                  receive = Serial1.read();
    lcd.clear();
    while(1)
    {
        while ( !Serial1.available() ); 
        receive = Serial1.read();
        if ( receive == '\r' )   
              break;
     else
             lcd.write(receive);
     }
}
}

فیلم پروژه ارسال و دریافت اس ام اس با STM32

1. برای ارسال پیام متنی ، دکمه سمت چپ فشار را فشار دهید. سپس پیامک به شماره وارد شده در کد ارسال میشود.

ارسال اس ام اس با STM32

2. برای دریافت پیام ، کافی است دکمه سمت راست را فشار داده و سپس پیامک دریافت و روی ال سی دی نمایش داده می شود.

دریافت اس ام اس با STM32 و GSM SIm800

فیلم زیر به شما در درک نحوه کار این پروژه کمک میکند.

دانلود فیلم پروژه ماژول GSM Sim 800 با STM32

موارد موجود در فایل : سورس کامل ، شماتیک

برای دانلود فایل ها باید عضو آیرنکس باشید، تنها چند ثانیه زمان لازم است.

ورود / ثبت نام

[lrm_form default_tab=”register” logged_in_message=””]

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

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. مالکیتی بر مطالب ارائه شده ندارم. اکثر فعالیت بنده در زمینه ترجمه است. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید)

2 نظر

  1. سلام موقع باز کردن فایل با WINRAR ارور فرمت ناشناخته می دهد .

    1. سلام جناب. فایل بررسی شد، سالم هست دوباره دانلود کنید.

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

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