پروژه الکترونیکپروژه های 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 موجود است را در لیست زیر برای شما آماده کرده ایم.

حتما ببینید :  ساخت فاصله سنج التراسونیک بی سیم با STM32 و آردوینو
دستور ATپاسخ ماژول
AT+CPIN?چک کردن کیفیت سیگنال
AT+COPS?اطلاع از نام سرویس دهنده مثلا ایرانسل یا غیره
ATD98XXXXXXXX;تماس با یک شماره خاص
AT+CNUMپیدا کردن شماره سیم کارت
ATAپاسخ دادن به تماس ورودی
ATHقطع کردن تماس فعلی
AT+COLPنمایش شماره تماس ورودی
AT+VTS=(number)DTMF ارسال شماره
AT+CMGRAT+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

STM32GSM SIM800C
PA9 (TX)RX
PA10 (RX)TX
GNDGND

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

شماره پین LCDنام پین LCDنام پین STM32
1GroundGround
2VCC5V
3VEEپتانسیومتر
4Register Select (RS)PB11
5Read/Write (RW)Ground
6Enable (EN)PB10
7Data Bit 0 DB0بدون اتصال
8Data Bit 1 DB1بدون اتصال
9Data Bit 2 DB2بدون اتصال
10Data Bit 3 DB3بدون اتصال
11Data Bit 4 DB4PB0
12Data Bit 5 DB5PB1
13Data Bit 6 DB6PC13
14Data Bit 7 DB7PC14
15LED مثبت5V
16LED منفی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);

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

حتما ببینید :  آموزش اتصال ESP8266 به STM32 (ایجاد وب سرور با ARM)

ارسال اس ام اس با 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

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

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

ایمیل خود را وارد کنید

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

محمد رحیمی

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

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

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

دکمه بازگشت به بالا
بستن
بستن