بارگذاری...

آموزش کامل راه اندازی ماژول Sim900 و Sim800 با میکروکنترلر AVR

یکی از معروف ترین ماژول های ارتباطی GSM/GPRS ماژول Sim900 می باشد که در بسیاری از کاربردهای صنعتی ، نیمه صنعتی و تجاری از آن استفاده می گردد. با استفاده از این ماژول کارهای بسیاری از قبیل تماس تلفنی و ارسال/دریافت sms گرفته تا برقراری ارتباط با اینترنت و ارسال/دریافت دیتا میتوان انجام داد. استفاده از این ماژول در کنار میکروکنترلر به علت سادگی ارتباط و دستورات ، مرسوم بوده و باعث کنترل هوشمند پروژه می شود.


معرفی ماژول sim900

یک ماژول ارتباطی بدون سیم کوچک و فوق العاده است که توسط شرکت SimCom تولید می شود. این ماژول از چهار باند GSM/GPRS پشتیبانی می کند. دارای هسته پردازشی قدرتمند ARM926EJ-S می باشد که در یک بسته بندی SMT ( تکنولوژی روی سطح بورد ) ارائه می شود. از این ماژول می توان در کاربردهای M2M ( ماشین به ماشین ) با ابعاد کوچک و توان مصرفی پایین استفاده نمود. شکل زیر این ماژول را نشان می دهد.


معرفی ویژگی ها و امکانات ماژول Sim900

ویژگی های عمومی

چهار باند ۸۵۰/۹۰۰/۱۸۰۰/۱۹۰۰ مگاهرتز

دریافت GPRS کلاس ۸ و ۱۰

ایستگاه GPRS کلاس B

ابعاد : ۲۴ در ۲۴ در ۳ میلیمتر

وزن : ۳٫۴ گرم

ولتاژ کاری : ۳٫۴ تا ۴٫۵ ولت

دمای عملکرد : ۳۰- تا ۸۰+ درجه سانتیگراد

ویژگی های پیام کوتاه

قابلیت ارسال/دریافت به صورت Point to Point و MT ( مخفف Mobile Terminated ) و MO ( مخفف Mobile Originated ) و قابلیت ارسال یک sms به چند گیرنده در دو فرمت متنی ( text ) و پروتکل PDU ( مخفف protocol description unit )

ویژگی های دیتا

GPRS کلاس ۱۰ : دریافت تا ۸۵٫۶kbps ( دانلود ) و ارسال تا ۴۲٫۸kbps ( آپلود ) تحت پروتکل TCP/IP

ویژگی های صدا

دارای سه نوع کدبندی Half rate ، Full rate ، Enhanced Full rate به صورت AMR ( مخفف Adaptive Multi-Rate Audio Codec ) و قابلیت عملکرد در حالت هندزفری

رابط ها

رابط سیم کارت خارجی ۳ ولت / ۱٫۸ ولت

رابط ورودی/خروجی صدای آنالوگ

رابط های سریال SPI و UART

واحدهای RTC ، PWM و ADC

پایه های ورودی/خروجی قابل برنامه ریزی


بلوک دیاگرام ماژول sim900


تشریح پایه های Sim900

نام شماره پایه توضیحات
PWRKEY ۱ دکمه ریست/روشن کردن ماژول
VBAT ۵۵,۵۶,۵۷ ورودی تغذیه مثبت ماژول
GND ۱۷,۱۸,۲۹,۳۹,۴۵,۴۶,۵۳,۵۴,۵۸,۵۹,۶۱,۶۲,۶۳,۶۴,۶۵ ورودی تغذیه منفی ماژول
VRTC ۲۶ تغذیه پشتیبان برای ساعت
STATUS ۶۶ تعیین وضعیت برقراری تغذیه
NETLIGHT ۵۲ تعیین وضعیت ارتباط با شبکه
RXD ۱۰ پایه دریافت دیتای سریال
TXD ۹ پایه ارسال دیتای سریال
SIM_VDD ۳۰ پایه های ارتباط با سیم کارت
SIM_DATA ۳۱
SIM_CLK ۳۲
SIM_RST ۳۳
SIM_PRESENCE ۳۴
MIC_P ۱۹ پایه های ورودی میکروفن
MIC_N ۲۰
SPK_P ۲۱ پایه های خروجی اسپیکر
SPK_N ۲۲
RF_ANT ۶۰ پایه آنتن

تذکر : پایه ۵۲ طبق جدول زیر وضعیت سیستم را نشان می دهد.


طراحی مدار بورد راه انداز ماژول Sim900

الف) طراحی منبع تغذیه

این ماژول برای کار نیاز به یک منبع با ولتاژ بین ۳٫۴v تا ۴٫۵v دارد. همچنین مقدار متوسط جریان مصرفی آن در حالت بیکاری ۲۲mA و در حالت کار (مانند ارسال پیامک) ۴۰۰mA می باشد.

نکته مهمی که در اینجا وجود دارد پیک بالای جریان لحظه ای این ماژول است. در شکل زیر موج جریان این ماژول را مشاهده می کنید. مطابق این شکل موج ماژول SIM900 به صورت لحظه ای جریانی تا حدود ۲A مصرف می کند. در پیک جریان ولتاژ منبع تغذیه نباید بیشتر از ۴۰۰mV افت کند زیرا باعث ریست شدن ماژول می گردد.

برای تامین این پیک جریان استفاده از دو خازن تانتانیوم موازی با ظرفیت های ۱۰۰uF و ۱۰۰nF در مسیر تغذیه ماژول الزامی است.

همچنین برای تغذیه مدار و ماژول میتوان از رگولاتور LM317 به صورت مدار پیشنهادی زیر استفاده کرد :

ب) طراحی مدار POWER KEY

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

برای کنترل روشن/خاموش کردن ماژول توسط میکروکنترلر میتوان از مدار زیر استفاده کرد :

ج) اتصال ماژول به میکرو

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

مشخصات فریم پروتکل UART برای برقراری ارتباط :

  • تعداد بیت های ارسالی : ۸ بیت
  • تعداد Stop Bit : 1 بیت
  • نوع Parity : غیرفعال

سرعت ارتباط ( Buad Rate ) : سرعت ارتباط با ماژول یکی از باودریت های استانداد بین محدوده ۱۲۰۰تا ۱۱۵۲۰۰ می تواند باشد. ماژول سرعت ارتباط را به طور خودکار تشخیص می دهد ( AutoBauding ). برای این کار کافی است در ابتدا یکبار کاراکتر ‘A’ را به ماژول ارسال کنیم.

د) مدار اتصال به سیم کارت


 بورد راه انداز Sim900 


معرفی دستورات AT Command

ماژول SIM900 دستوراتی را به صورت کاراکترهای Ascii دریافت می کند و به همان صورت نیز به آنها پاسخ می دهد. در ابتدای همه دستورات دو کاراکتر AT ارسال می شوند لذا به مجموعه آن دستورات AT Command گویند. در انتهای هر دستور نیز کاراکتر Enter باید ارسال شود تا ماژول دستور مورد نظر را انجام داده و پاسخ آن را ارسال نماید.

مثال : دستور AT

این دستور برای تست سلامت ارتباط با ماژول می باشد. ماژول در پاسخ به این دستور OK می دهد.

AT[Enter]
OK

مثال : دستور AT+CSQ

ماژول در پاسخ به این دستور دو عدد را بر می گرداند. عدد اول قدرت سیگنال آنتن با عددی بین ۰ تا ۳۲ و عدد دوم نشان دهنده جزئیاتی است که برای ما در اینجا اهمیتی ندارد.

AT+CSQ[Enter]
+CSQ: 14,0
OK

مثال : دستور AT+CBC

ماژول در پاسخ به این دستور سه عدد را برمی گرداند. عدد اول نشان دهنده در حال شارژ بودن باتری است. عدد دوم نشان دهنده میزان شارژ باتری با عددی بین ۰ تا ۱۰۰ است و عدد سوم ولتاژ باتری را بر حسب میلی ولت نشان می دهد.

AT+CBC[Enter]
+CBC: 0,100,4338

نکته : کاراکتر [Enter] در کد Ascii برابر با ۱۳(hex) می باشد. به این کاراکتر LF ( مخفف Line Feed ) نیز گفته می شود و در زبان سی nn\ معادل آن است.


انواع AT Command

یک دستور AT را میتوان به چهار صورت زیر نوشت :

۱-دستور تست ( Test Command ) : در این حالت دستور به صورت زیر به ماژول داده می شود و ماژول لیست پارامترها و محدوده تغییرات آن ها را در پاسخ به این دستور برمیگرداند.

AT + <x> = ?

۲-دستور خواندن ( Read Command ) : در این حالت دستور به صورت زیر به ماژول داده می شود و ماژول مقادیری که روی آن تنظیم شده است را در پاسخ به این دستور برمیگرداند.

AT + <x> ?

۳-دستور نوشتن ( Write Command ) : در این حالت دستور به صورت زیر به ماژول داده می شود و مقادیری که بعد از مساوی ارسال می شود درون ماژول تنظیم می شود.

AT + <x> = <...>

۴-دستور اجرایی ( Execution Command ) : در این حالت دستور به صورت زیر داده می شود و هیچ پارامتری برای آن وجود ندارد و ماژول فقط دستور را اجرا می کند.

AT + <x>

معرفی پرکاربردترین AT Command ها

الف – دستورات عمومی

دستور توضیح
AT

تست سلامت ارتباط با ماژول

ATI

نمایش مشخصات ماژول

ATE

فعال/غیرفعال کردن اکو

ATA

پاسخ دادن به تماس ورودی

ATH

رد کردن تماس ورودی

AT+CSQ

نمایش قدرت سیگنال شبکه

AT+CBC

نمایش ولتاژ تغذیه ماژول

AT+GMR

نمایش مشخصات firmware

AT+CIPIN=”xxxx”

بازکردن شماره پین

AT+IPR

مشخص کردن باودریت ماژول

ب – دستورات تنظیم زمان

دستور توضیح

AT+CCLK?

خواندن زمان کنونی ماژول

AT+CCLK=”YY/MM/DD,HH:MM:SS+02”

تنظیم زمان و تاریخ

پ – دستورات ذخیره شماره تلفن

دستور توضیح
AT+CPBS=”ON” آماده سازی ماژول برای ذخیره شماره
AT+CPBW=1,”+۹۸*”,number,”NAME” ذخیره شماره number با نام دلخواه NAME در خانه اول حافظه سیم کارت
AT+CNUM نمایش شماره سیم کارت در صورت وجود
AT+CPBS=”SM” انتخاب دفترچه تلفن حافظه سیم کارت
AT+CPBR=1,5 نمایش از مکان ۱ تا ۵ حافظه انتخاب شده

ت – دستورات تماس صوتی Voice Call

دستور توضیح
AT+CHFA? بررسی تنظیمات کانال صوتی ( ۰:Handset , 1:Aux )
ATA پاسخ دادن به تماس ورودی
ATH رد کردن تماس ورودی
ATD+NUM; تماس با شماره ی NUM
ATDL شماره گیری مجدد آخرین تماس
ATLX تنظیم بلندی صدای اسپیکر ( X بین ۰ تا ۹ )

ث – دستورات پیام کوتاه SMS

دستور توضیح

AT+CMGF=1

تنظیم حالت نمایش روی Text Mode

AT+CSCS=”GSM”

تنظیم فرمت نمایش ( Character Set )

AT+CNMI=2,1,0,0

تنظیم نمایش sms جدید به محض دریافت آن

AT+CSAS=0

ذخیره تنظیمات sms روی پروفایل شماره ۰

AT+CMGS=”+۹۸…”[Enter]

> yourMessage[ctrl+z]

فرستادن sms

AT+CMGW[Enter]

> yourMessage[cntl+z]

ذخیره sms

AT+CMSS=1,”+۹۸…”,۱۴۵

ارسال sms ذخیره شده از قبل

AT+CMGDA=”DEL READ”

پاک کردن sms های خوانده شده

AT+CMGDA=”DEL ALL”

پاک کردن همه sms ها

ج – دستورات عمومی تنظیم اینترنت GPRS

دستور توضیح
AT+CGATT=1 اضافه کردن قابلیت GPRS
AT+CIPMUX=0 تنظیم نوع اتصال Single Connection
AT+CIPMUX=1 تنظیم نوع اتصال Multiple Connection
AT+CIPMODE=0 تنظیم نوع اتصال روی نرمال ( غیر شفاف )
AT+CIPMODE=1 تنظیم نوع اتصال روی شفاف (Transparent)

چ – دستورات GPRS در حالت Client

دستور توضیح

AT+CSTT=”mtnirancell”,””,””

تنظیمات متصل شدن به اینترنت ایرانسل

AT+CIPSRIP=1

نمایش IP وسیله اتصال دهنده

AT+CIICR

فراهم کردن ارتباط بی سیم GPRS

AT+CIFSR

نمایش آی پی ماژول در شبکه

AT+CIPSTART=”TCP”,”<ip>”,”port”

اتصال به سرور با داشتن ip و port آن

AT+CIPSTATUS

وضعیت اتصال را نشان می دهد

AT+CIPSEND[enter]

> Data to Sent[cntl+z]

ارسال دیتا به سرور

AT+CIPSHUT

قطع ارتباط با سرور

ح – دستورات راه اندازی سرور GPRS

دستور توضیح

AT+CIPCSGP=1,”mtnirancell”,””,””

پیداکردن اتصال GPRS ایرانسل

AT+CIPSRIP=1

نمایش ip و port اتصال

AT+CIPSERVER=1,<port>

راه اندازی یک سرور روی پورت

نکته : در یکی از شرایط زیر ماژول به حالت Power down می رود :

  • در حالت روشن پایه PWRKEY را زمین کرد ( فشار دادن دکمه پاور )
  • توسط ارسال دستور AT+CPOWD=1
  • در صورت افزایش/کاهش ولتاژ تغذیه بیشتر/کمتر از حد مجاز
  • در صورت افزایش/کاهش دمای ماژول به بیشتر/کمتر از حد مجاز

راه اندازی سریع Sim900 و ارتباط آن با کامپیوتر

برای راه اندازی سریع این ماژول از بورد راه اندازی sim900 ، ماژول تغذیه متغیر LM2576 و ماژول USB به سریال FT232 به صورت شکل زیر استفاده می کنیم.

در شکل زیر مدار نهایی بسته شده توسط آیسی پالس را مشاهده می کنید.


راه اندازی سریع Sim900 و تست دستورات AT در ترمینال کامپیوتر

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

به محض فشردن دکمه POWER به مدت یک ثانیه ماژول روشن می گردد و بعد از یافتن باودریت به طور اتوماتیک ، اطلاعات زیر را نمایش می دهد.

CPIN: NOT INSERTED نشان دهنده این است که سیم کارت روی ماژول وجود ندارد.

CFUN: 1 نشان دهنده این است که عملکرد ماژول در حالت Full Functionality ( عملکرد کامل و نرمال ) است.

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

که نشان دهنده آماده بودن سیم کارت و فعال بودن آن برای تماس است.

تست دستورات CBC و CSQ ( نمایش قدرت سیگنال و ولتاژ ماژول ) :

در صورتی که با سیم کارت موجود تماس ورودی گرفته شود عبارت RING پیوسته به نمایش در می آید.

برای مشاهده شماره تلفنی که تماس ورودی گرفته است ابتدا توسط دستور AT+CLIP=1 قابلیت Caller id را فعال می کنیم. سپس در صورت تماس ورودی با سیم کارت موجود ، شماره تماس گیرنده با پیشوند +CLIP: به صورت زیر نمایش داده می شود.

برای پاسخ به تماس ورودی گرفته شده از دستور ATA و برای رد کردن/قطع کردن تماس ورودی از ATH استفاده می گردد.

برای گرفتن تماس خروجی به یک شماره خاص کافی است شماره مورد نظر را بعد از دستور ATD به همراه یک سمیکالن ; به ماژول ارسال نماییم. برای مثال برای تماس به شماره ۰۹۱۰۹۲۴۶۲۹۳ کافی است دستور ATD+989109246293; ارسال شود.

نکته : بعد از نمایش OK ماژول سعی می کند با شماره تماس بگیرد.اگر تماس به هر علتی برقرار نشود ( مانند اتمام شارژ یا متصل نبودن به شبکه ) عبارت NO CARRIERR توسط ماژول پاسخ داده می شود و در صورتی که مخاطب به تماس پاسخ ندهد عبارت NO ANSWER به نمایش در می آید.

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

برای خواندن SMS موجود در inbox حافظه ماژول کافی است دستور AT+CMGR=n ارسال شود که در آن n شماره پیام می باشد. برای مثال اگر n=1 اولین پیام موجود در inbox خوانده می شود. سپس ماژول پیام مورد نظر را نمایش می دهد.

همانطور که مشاهده می کنید خواندن SMS با فرمت PDU می باشد. برای تبدیل فرمت نمایش SMS به صورت متنی ( text ) از دستور AT+CMGF=1 استفاده می کنیم. بعد از ارسال این دستور نمایش SMS ها به همراه مشخصات ارسال کننده ( شماره تماس ، ساعت و تاریخ ) و متن پیام قابل مشاهده می شود.

برای خواندن همه پیام های موجود در inbox به صورت یکباره از دستور AT+CMGL=”ALL” استفاده می شود. بعد از ارسال این دستور ماژول همه پیام های ذخیره شده را به همراه شماره تماس فرستنده ، ساعت و تاریخ دریافتی به صورت یکباره نمایش می دهد.

نکته : حافظه Sim900 برای ذخیره SMS ها محدود می باشد. در صورتی که این حافظه پر شود ، مازول دیگر هیچ SMS ی را نمیتواند دریافت کند. برای تخلیه حافظه ماژول از دستور AT+CMGDA=”DEL ALL” استفاده می شود.

برای ارسال SMS به یک شماره خاص مثلا شماره ۰۹۱۰۹۲۴۶۲۹۳ از دستور AT+CMGS=”+۹۸۹۱۰۹۲۴۶۲۹۳″ استفاده می شود. بعد از ارسال این دستور ماژول با ارسال کاراکتر < منتظر دریافت متن SMS می شود. متن SMS به صورت کاراکترهای Ascii به ماژول ارسال می شود که در پایان باید کاراکتر Ctrl+Z ( یعنی ۰x1A در مبنای هگز ) نیز ارسال شود. سپس ماژول SMS را به طور اتوماتیک ارسال می کند.

تذکر : در بیشتر نرم افزارهای ترمینال ارسال کاراکترهای کنترلی نظیر Ctrl+z  امکان پذیر نمی باشد. به همین علت و برای راحتی کار با ماژول Sim9000 و نیز کاهش زمان تایپ کردن از نرم افزارهای ترمینال مخصوصی استفاده می شود. بهترین نرم افزار برای ارتباط با بیشتر ماژول های ارتباطی ، نرم افزار RSTermPlus می باشد.


تست کامل Sim900 در نرم افزار RSTerm

بعد از باز کردن این نرم افزار ، ابتدا پورت COM و Buad Rate را جهت ارتباط با ماژول تنظیم می کنیم. سپس برای ارسال هر دستور AT کافی است روی دکمه مربوطه کلیک نماییم. نرم افزار اتوماتیک دستور مورد نظر را به همراه کاراکترهای کنترلی مورد نیاز ارسال می نماید و پاسخ دریافتی را نمایش می دهد. شکل زیر محیط نرم افزار و نحوه کار با این نرم افزار را نشان می دهد.

با استفاده از این نرم افزار میتوان به راحتی همه دستورات AT را تست و نتیجه آنها را مشاهده کرد. نرم افزار به طور اتوماتیک کاراکترهای کنترلی از قبیل CR,LF,Ctrl+z را ارسال می کند. برای مثال در شکل زیر پس از نمایش مقدار شارژ سیم کارت ( از طریق منوی Voice ) ، یک SMS ارسال کردیم ( از طریق منوی SMS ).


ارتباط ماژول SIM900 با شبکه

این ماژول می تواند در دو حالت مختلف در کاربردهای TCP/IP متصل شود :

  1. single connection
  2. multi connection

در حالت اتصال تکی ماژول می تواند به صورت شفاف ( Transparent ) و غیرشفاف ( Non Transparent ) ارتباط برقرار کند. در هر دو این حالت ها SIM900 میتواند به صورت کلاینت ( TCP یا UDP ) و سرور ( فقط TCP ) متصل شود. در حالت اتصال چندگانه SIM900 فقط می تواند به صورت غیرشفاف متصل شود به طوری که در حالت TCP/UDP کلاینت تا ۸ کانکشن و در حالت TCP سرور تا ۷ کانکشن را پشتیبانی می کند. شکل زیر ساختار انواع ارتباطات این ماژول را نشان می دهد.

همانطور که مشاهده می کنید ، برای انتخاب حالت Single Connection از دستور AT+CMUX=0 و برای حالت Multi Connection از دستور AT+CMUX=1 استفاده می شود.

همچنین دستور AT+CIPMODE=n برای مشخص کردن Transparent(n=1) یا Non-Transparent(n=0) بودن ارتباط است. که در حالت پیش فرض Non-Transparent می باشد.

نحوه راه اندازی ارتباط Single TCP Client

این نوع ارتباط برای اتصال ماژول Sim900 به یک سرور استفاده می شود. برای راه اندازی این نوع ارتباط ابتدا توسط دستورات AT+CREG و AT+CGAAT فعال بودن سیم کارت و متصل بودن آن به شبکه را بررسی می کنیم. در مرحله دوم با استفاده از دستورات AT+CSTT ، AT+CIICR و AT+CIFSR اقدام به شروع و فعال سازی ارتباط GPRS می کنیم. در مرحله سوم با استفاده از دستور AT+CIPSTART میتوان به سرور مورد نظر متصل شد. اگر اتصال به سرور صورت گیرد عبارت CONNECT OK توسط ماژول پاسخ داده می شود و بعد از آن میتوان از دستور AT+CIPSEND برای دیتا برای سرور ارسال نمود. اگر دیتایی از طرف سرور برای ماژول ارسال شود به طور اتوماتیک توسط ماژول نمایش داده می شود. برای قطع ارتباط نیز از دستور AT+CIPCLOSE استفاده می گردد. شکل زیر اجرای این مراحل را در نرم افزار RSTerm نشان می دهد.


راه اندازی sim900 در AVR

در میکروکنترلرهای AVR با راه اندازی واحد USART میکروکنترلر میتوان با ماژول Sim900 ارتباط برقرار کرد. نحوه ارتباط در شکل زیر نشان داده شده است. به علت اینکه ولتاژ عملکرد میکرو ۵ ولت بوده اما ولتاژ عملکرد ماژول کمتر از ۴٫۵ می باشد بهتر است از یک دیود جهت کاهش ولتاژ به اندازه ۰٫۷ ولت استفاده نماییم.

در شکل زیر مدار نهایی بسته شده توسط آیسی پالس را مشاهده می کنید.


آموزش برنامه نویسی Sim900 در AVR

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

تذکر : ماژول sim900 با همه باودریت ها کار می کند. اما در میکروکنترلرهای AVR بهتر است میکروکنترلر را با فرکانس ۸Mhz داخلی و واحد USART میکرو را با باودریت ۹۶۰۰۰ راه اندازی کنیم.

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

#include <mega32.h>
#include <delay.h>
#include <stdio.h>
#include <string.h>

//global variables

// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
{
}

void main(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=0x98;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;

//set enable interrupt
#asm("sei");
while(1)
      {
      }

}

تذکر : تابع روتین وقفه دریافت از پورت سریال را قبل از تابع main مشاهده می کنید. به محض این که یک کاراکتر از پورت سریال دریافت شود ، برنامه درون این سابروتین می رود.

نکته : جهت ذخیره کاراکتر دریافتی درون سابروتین وقفه دریافت از پورت سریال می بایست یک متغیر از نوع char تعریف کرد و محتویات رجیستر UDR ( مخفف Usart Data Registerr ) که حاوی کاراکتر دریافتی می باشد را درون آن ذخیره کرد.

//global variables
char data;

// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
{
data = UDR;
}

نکته : جهت ذخیره یک رشته از کاراکترها درون سابروتین وقفه دریافت از پورت سریال می بایست یک آرایه از نوع char تعریف کرد سپس کاراکترهای دریافتی را یکی یکی و به ترتیب درون آن آرایه ذخیره کرد. به چنین آرایه ای اصطلاحا بافر ( Bufferr ) گفته می شود. برای شمارش تعداد کاراکترهای دریافتی از یک متغیر استفاده می کنیم که شماره کاراکتر ذخیره شده در درون آرایه را مشخص می کند و با آمدن هر کاراکتر یک واحد به آن اضافه می گردد.

//global variables
char Buffer[10];
int i=0;

// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
{
Buffer[i] = UDR;
i++;
}

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

نکته : سایز آرایه بافر اهمیت زیادی دارد. آرایه بافر باید به اندازه کافی بزرگ باشد چرا که برای مثال در هنگام دریافت sms باید همه کاراکترهای آن smss ابتدا درون آرایه بافر ذخیره گردد. از طرفی در صورت بزرگ بودن بیش از اندازه بافر هم حافظه زیادی اشغال می شود و هم زمان زیادی صرف جستجو درون آرایه بزرگ می گردد که منجر به کند شدن برنامه می شود.

در نتیجه برنامه نهایی اصلاح شده برای دریافت از پورت سریال به صورت زیر می باشد. علت استفاده از if بعد از ذخیره کاراکتر این است که اگر به انتهای آرایه بافر رسیده باشیم ، شمارنده بافر صفر شود و کاراکتر جدید در ابتدای آرایه بافر ذخیره می گردد. دقت کنید که در این حالت کاراکتر قبلی Over Written می شود.

#define  BUFSIZE 20

//global variables
unsigned char BUFCount=0;
char UARTBUFFER[BUFSIZE];

// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
{
UARTBUFFER[BUFCount] = UDR;
BUFCount++;
if(BUFCount==BUFSIZE) BUFCount=0;
}

هر کجای برنامه که نیاز داشته باشیم به ماژول Sim900 کامندی ارسال کنیم ، ابتدا یک آرایه به طول حداکثر آن کامند ایجاد می کنیم و سپس توسط تابع sprintf کامند مورد نظر را به همراه کاراکتر های CR و LF درون آرایه می ریزیم. سپس با استفاده از تابع puts آرایه مورد نظر را به پورت سریال جهت ارسال به ماژول می فرستیم. در خطوط زیر نحوه ارسال دستور AT به ماژول را مشاهده می کنید.

char str[10];

sprintf(str,"AT\r\n");
puts(str);

هر کجای برنامه که بخواهیم متوجه شویم ماژول چه چیزی به میکرو فرستاده است کافی است آرایه بافر را مشاهده و بررسی نماییم. یکی از راه های بررسی آرایه بافر جستجو یک عبارت خاص درون آن با استفاده از تابع strstr ( درون string.h ) می باشد. برای مثال اگر بخواهیم ببینیم که در جواب ارسال دستور AT ، ماژول پاسخ OK داده است یا خیر باید رشته “OK” را درون آرایه بافر جستجو نماییم.

a = strstr(UARTBUFFER,"OK");

خروجی تابع strstr یک اشاره گر به اولین محل تطبیق درون آرایه UARTBUFFER می باشد. در صورتی که هیچ تطبیقی وجود نداشته باشد NULL به خروجی تابع می رود.


تفاوت بین SIM900 و SIM900A

تفاوت این دو ماژول در فرکانس ارتباطی آن ها ، ولتاژ تغذیه و قیمت تمام شده می باشد. ماژول های SIM900 از ۴ باند فرکانسی ۸۵۰,۹۰۰,۱۸۰۰,۱۹۰۰ مگاهرتز پشتیبانی می کند در حالی که ماژول SIM900A از دو باند فرکانسی ۹۰۰ و ۱۸۰۰ مگاهرتز پشتیبانی می نماید. ولتاژ تغذیه SIM900 بین ۳٫۴ الی ۴٫۵ ولت اما ولتاژ تغذیه SIM900A بین ۳٫۲ الی ۴٫۸ ولت است. این دو ماژول از نظر دستورات و ATcommand ها تفاوتی با هم ندارند. در شکل زیر ماژول SIM900A را مشاهده می نمایید.


معرفی ماژول Sim800

ماژول Sim800 یکی دیگر از محصولات شرکت Simcom است که تمامی قابلیت های Sim900 را دارا می باشد. این ماژول علاوه بر قابلیت های Sim900 دارای بلوتوث داخلی و پورت USB می باشد. هر دو این ماژول ها از دستورات AT مشابه استفاده می کنند. قیمت تمام شده Sim800 پایین تر از Sim900 بوده و به همین علت در پروژه های کم هزینه به صرفه تر می باشد. در شکل زیر این ماژول را مشاهده می کنید.

در جدول شکل زیر مقایسه کاملی بین این دو ماژول از نظر پایه ها و قابلیت ها آورده شده است.


ماژول Sim800


برد راه انداز کاربردی صنعتی sim808

این برد یکی از بهترین بردهای راه انداز ماژول سیم کارتی در بازار می باشد که نسبت به مدل sim900 و sim800 پیشرفته تر می باشد و نه تنها با پورت usb بلکه با پورت سریال به کامپیوتر هم وصل میشود و دارای بلوتوث داخلی نیز می باشد و همچنین دارای کانکتورهای آنتن کوچک و بزرگ برای اتصال همه مدل آنتن را می باشد.

برای خرید برد کاربردی صنعتی sim808 روی لینک زیر کلیک کنید

خرید

 

 

  • سبد خریدتان خالی است.
بالا