نحوه ارسال AT Command به Sim800 و استفاده از ماژول در پروژه های مبتنی بر میکروکنترلر
تشریح برخی مشخصات SIM800:
ماژولSIM800C سری جدید ماژولهای شرکت Simcom می باشد که مناسب برای ارتباطات GSM بوده و دارایBluetooth نیز می باشد. بسته بندی این ماژول کاملا مشابه ماژول SIM9000 بوده واز چهار باند فرکانسی 850/900/1800/1900MHZ پشتیبانی می کند.
نام برند : SIMCOM
مدل : SIM800C
وزن : 2.47 گرم
ابعاد : 17.6 – 15.7 – 2.3 میلی متر
ولتاژ ورودی : 3.4 الی 4.4 ولت
فرکانس : 1800MHz, 1900MHz, 850MHz, 900MHz
نوع رابط : USB , Serial
آموزش ابتدا با ایجاد ارتباط مابین ماژول و PC شروع میشه و سپس با دستورات و جواب اون ها اشنا میشیم و در این راستا سعی می کنم نمونه کد و توابعی رو برای دریافت نتیجه دستورات قرار بدم تا بتونید با کمترین تغییرات در کامپایلرهای مختلف استفاده کنید. بیس برنامه ها و توابع به زبان C بوده و بر مبنای کامپایلر کدویژن می باشد.
قبل از هر چیز برای شروع کار با ماژول به سه ابزار دیگه نیاز داریم.
- آداپتور 12 ولت 2 آمپر
- کابل USB
- سیم کارت
در اولین قدم باید ارتباط مابین ماژول و PC رو برقرار کنیم تا از سالم بودن اون مطمئن بشیم.
برای این کار آداپتور را به برق بزنید. در این حالت LED سبز رنگ روی برد باید روشن شود.
در این حالت و بدون و جود سیم کارت اگر شستی PWR را فشار دهید و بعد از چند ثانیه رها کنید، LEDهای قرمز و زرد برای یک لحظه با هم روشن شده و سپس خاموش می شوند و تنها LED زرد رنگ شروع به چشمک زدن می کند که در این وضعیت در حال پیدا کردن شبکه می باشد و به دلیل عدم وجود سیم کارت قادر به پیدا کردن شبکه نمی باشد. در صورت وجود سیم کارت بعد از چند ثانیه ریتم چشمک زدن تغییر می کند و کند می شود. که به معنای پیدا کردن شبکه است.
بعد از پیدا کردن شبکه توسط ماژول کابل USB مربوطه را وصل کنید. در این حالت یک پورت COM ایجاد می شود که از طریق آن می توان با نرم افزارهای مربوطه ارتباط برقرار کرد.
نرم افزار مورد استفاده در این آموزش هایپرترمینال می باشد.
ماژول های Simcom دارای قابلیت تشخیص باودریت به صورت اتوماتیک هستند و فقط کافیه برای شروع کار با ماژول یه “AT” رو برای ماژول بفرستید و Enter را بزنید.
فرمت کلی پاسخ ماژول Sim800 به دستورات ارسالی به صورت زیر است:
که <CR> معادل Enter یا “\r” و <LF> معادل Line Feed یا “\n” می باشد.
برای هر AT Command هم تصویری از ارسال و دریافت دیتا در هایپر ترمینال قرار داده می شود و هم نمونه کدی جهت دریافت دیتا با استفاده از میکروکنترلر ذکر می شود.
نمونه کدها با استفاده از کامپایلر کدویژن و بر مبنای تراشه ATmega32 نوشته شده است.
لینک دانلود نرم افزار هایپر ترمینال
بخش مشترک برنامه:
#include <mega32a.h> #include <delay.h> #include <alcd.h> #include <stdio.h> //******** Varisbles ******** char sms_txt[10]; char operator_name[10]; char number_txt[14]; char number[12]={"09387028108"}; volatile char buffer[100]; volatile int count = 0; //*****END Varisbles********* //******** Constants ******** flash unsigned char DEL_ALL[19]={'A','T','+','C','M','G','D','A','=','"','D','E','L',' ','A','L','L','"'}; #define ENT 13 #define J_COT 34 #define LINE_FEED 10 //*****END Constants********* //******** Functions ******** void UsartConfig(void); //******END Functions******** void main(void) { UsartConfig(); lcd_init(16); lcd_putsf("sim800 test"); delay_ms(1000); lcd_clear(); while (1) { } } void UsartConfig(void) { // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On // USART Transmitter: On // USART Mode: Asynchronous // USART Baud Rate: 9600 UCSRA=0x00; UCSRB=0x18; UCSRC=0x06; UBRRH=0x00; UBRRL=0x47; }//UsartConfig
- دستور AT
این دستورات از دستورات پایه می باشد و صرفا جهت ارتباط اولیه و ست کردن باودریت کاربرد دارد. همچنین می توان جهت تشخیص خاموش و روشن بودن ماژول هم مورد استفاده قرار گیرد.
نحوه ارسال کد به ماژول :
تصویر پاسخ ماژول به دستور:
کد مورد استفاده در میکروکنترلر:
void AT_send(void) { lcd_putsf("SEND AT"); printf("AT%c",ENT); for(count=0;buffer[count-2]!='O';count ++) buffer[count]=getchar(); lcd_putsf("--> OK"); delay_ms(1000); lcd_clear(); }//AT_send
2- دستور ATE
وقتی کاراکتری رو در نرم افزار هایپر ترمینال برای ماژول می فرستید و همون رو مشاهده کنید این در اصل به دلیل روشن بودن حالت اکو ماژول است. حالت اکو یعنی اینکه به ازای ارسال هر کاراکتر ماژول عین اون رو به شما برمی گردونه.
نحوه ارسال کد به ماژول:
ATE1\r // Echo On
تصویر پاسخ ماژول به دستور:
کد مورد استفاده در میکروکنترلر:
void ATE0_send(void) { lcd_putsf("SEND ATE0"); printf("ATE0%c",ENT); for(count=0;buffer[count-2]!='O';count ++) buffer[count]=getchar(); lcd_putsf("--> OK"); delay_ms(1000); lcd_clear(); }//ATE0_send
3- دستور ATH
از این دستور برای قطع تماس دریافتی استفاده می شود.
نحوه ارسال کد به ماژول:
تصویر پاسخ ماژول به دستور:
کد مورد استفاده در میکروکنترلر:
void ATH_send(void) { lcd_putsf("SEND ATH"); printf("ATH%c",ENT); for(count=0;buffer[count-2]!='O';count ++) buffer[count]=getchar(); lcd_putsf("--> OK"); delay_ms(1000); lcd_clear(); }//ATH_send
ادامه مطلب در انجمن : http://www.eca.ir/forums/thread73912.html
من میخوام با مگا 8 و بیسکام راه اندازی بشه اگه امکانش هست این مطلبم بذارید خیلی اورژانسیه
نمونه کدهای قرار داده شده رو می تونیددر میکروکنترلرهای مختلف تست کنید و موردی نیست. صرفا در تنظیمات ارتباط سریال نیازه که تغییراتی اعمال بشه(در صورت استفاده از سایر خانواده ها)
سلام
این کد رو اصلاح کنید
J_COT 34 به J_COT 26