sim900 and mobile[].pdf

40
www.iranmicro.ir طیعات محیل اطرسا ا از طریقکه موبایل شبهنماد راستا ا جناب آقاي دكت ر باصريستاد دفاع ا جناب آقاي دكتر كاشفینده پژوه صفامنشحسان اابستان ت90 فهرست است کرسال شدران میکري ایت ایی سا مىش براىدس صفاسط م ت ایه پريژ گیردار میم قرختیار عم در ا. ران میکري مراجع ایای اوجمهال برت س در ص فرمائید. مبری يم بسیار کارل ایه پريژرسان برای ابمشکر از ديست خ با تwww.iranmicro.ir/forum

description

Working with sim900 and mobile in persian

Transcript of sim900 and mobile[].pdf

www.iranmicro.ir

ارسال اطالعات محیطی

شبکه موبایل از طریق

استاد راهنما

باصرير جناب آقاي دكت

استاد دفاع

كاشفیجناب آقاي دكتر

پژوهنده

احسان صفامنش

90تابستان

فهرست

ایه پريژ تسط مىدس صفا مىش برای سایت ایران میکري ارسال شد است ک

در صرت سال ب اوجمه ای ایران میکري مراجع . در اختیار عمم قرار می گیرد

با تشکر از ديست خبمن برای ارسال ایه پريژ بسیار کاربری يمم .فرمائید

www.iranmicro.ir/forum

www.iranmicro.ir

1

SIM 900 ................................................................................................ 2 هاطل تشسسی

AT Commandدسترات

7 .......................................................................................................... دستسات ػوهی

8 ..................................................................................................................... تظین صهاى

8 ................................................................................................. رخیش ی ضواس ی تلفي

8 ........................................................................................................ ایجاد تواس صتی

SMS ...................................................................................................... 9تظیوات تشای

GPRS ......................................................................................... 10تظیوات هاطل تشای

client ......................................................................... 10 ت ػاى GPRSهتصل ضذى تا

server ......................................................................... 11 ت ػاى GPRSهتصل ضذى تا

شرح پرش

12 ............................................................................................ سخت افضاس ػولکشد هذاس

21 .......................................................................................... تحلیل تشاه ی هیکشکتشلش

www.iranmicro.ir

2

SIM900بررسی هاشل

GSM/GPRSایي یک هاطل . سا اسائ کشدsim900 هاطل تسیاس فطشد قاتل اطویاى simcomضشکت

ت ضوا اجاص. طشاحی ضذ استAMR926EJ-S تا یک ست ی پشداصضی تسیاس قی SMTکاهل دس ع

. هی دذ تا اص قیوت هاسة اتؼاد کچک آى استفاد کیذ

. اتقال صذا ، پیام کتا ، فکس دیتا دس یک پک کچک تا تاى کصشفی کن اص اهکاات آى است

. دس ضکل صیش وایص داد ضذ استSIM900تخص ای اصلی

- Memory : ضاهل حافظ ایRAM ، ROM flash

ػول هیکذ GSM 850 / 900 / 1800 / 1900ک دس چاس تاذ : فرکانس رادیوییبخش -

. استثاطات سادییی تش ػذ ی ایي تخص است

تطکیل ضذ کتشل هاطل ، ساتط ا تخص ARMایي تخص اص یک ست ی پشداصضی : پردازنذه -

. سادییی سا تش ػذ داسد

www.iranmicro.ir

3

رابط ها ی هاشول -

اهکانات عووهی

1900 / 1800 / 900 / 850چاص تاذ

GPRS 8/10 کالس

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

+GSM phase 2/2هطاتق تا

Class 4 (2 W @850/ 900 MHz) Class 1 (1 W @ 1800/1900MHz)

هیلی هتش 3 دس 24 دس 24: اتؼاد

گشم 3.4: صى

ATcommands (GSM 07.07,07.05 کتشل اص طشیق

SIMCOM enhanced ATCommands )

لت 4.8 تا 3.1: هحذد ی لتاط کاسی

تشاه ی اتضاس سین کاست

هیلی آهپش دس حالت خاب 5/1: اهکاات تاى هصشفی پاییي

دسج ی ساتیگشاد 85تا - 45: دهای کاسکشد

هشخصات برای پیام کوتاه

MO MTقط ت قط ی

سلل هتطش کذ ی پیاهک

text PDU حالت

هشخصات برای صذا

کذ کذ ای

Half rate (HR) Full rate (FR)

Enhanced Full rate (EFR)

(Echo suppression)ػولکشد ذس فشی

AMR Half rate (HR) Full rate (FR)

www.iranmicro.ir

4

هشخصات برای دیتا

GPRS 85.6دسیافت تا : 10 کالس kbps

( Interfaces)رابط ها

SIM 3V/ 1.8Vساتط سین کاست خاسجی

ساتط صذای آالگ

RTC backup ساتط استثاط سشیال تشای کتشل دیثاگ هاطل

SPI ، I2Cساتط ای

پای ای سدی خشجی قاتل تشاه سیضی

PWM ADC

اهکانات نرم افساری

MUX 0710پشتکل

TCP/UDPپشتکل

FTP/HTTP FOTA MMS

SIM900پایه های

: سا وایص هی دذSIM900 وای تاالیی پای ای تؼذ کضکلتا تج ت

. ثای هاطل خاهش یا سضي هی ضد1 ت یکذیگش تا 2 1تا صل کشدى پای ای

. ت کاس هی سدATC تشای استثاط سشیال تثادل داد دستسات 10 تا 3پای ای

. ت هاطل استفاد هی ضدLCD تشای اتصال 14 تا 11پای ای

تشاتش 1لتاط سطح هتطقی . هیلی آهپش سا سسس هی کذ10 لتاط خشجی سطح هطقی هاطل تا 15پای ی

. ، صفش لت است0 لت هطق 3 تا 2.8

www.iranmicro.ir

5

تشای اتصال تاطشی تکاج هاطل استفاد هی ضد 26پای ی

. استثاط سشیال تشای دیثاگ کشدى تشص کشدى هاطل استفاد هی ضد28 27پای ای

. ساتط اتصال ت سین کاست ستذ34 تا 30پای ای

، سدی خشجی ای قاتل تشاه سیضی ستذ ک قاتلیت اتصال صفح کلیذ 68 67 51 تا 40پای ای

. هاتشیسی سا داسذ

. طثق جذل صیش ضؼیت سیستن سا وایص هی دذ52پای ی

www.iranmicro.ir

6

. فؼال یستSIM900: (صفش)اگش پای خاهش تاضذ

. ضثک یافت طذ است: م ث خاهش 800 م ث سضي 64

. ضثک پیذا ضذ است: ثای خاهش 3 م ث سضي 64

GPRSدس حال استثاط : م ث خاهش 300 م ث سضي 64

تشای اتصال ت آتي 60پای ی

. لت کاس هی کذ4.8 تا 3.2 لتاط تغزی ی هاطل است ک دس هحذد ای تیي 57 تا 55پای ای

. ضؼیت هاطل سا تا تغییشات سطح هطقی هؼیي هی کذ66پای ی

:طاى داد ضذ استح ی اتصال سین کاست تا هاطل هطخصات سین کاست دس صیش

هشخصات پایه های سین کارت

1 - Vcc : پای ی تغزی ی سین کاست

2 - Rst : پای ی سیست کشدى سین کاست

3 - Clk : پای ی کالک سین کاست

4 - GND

5 - Vpp : (دلخا)تشای تشاه سیضی سین کاست

6 - Data : پای ی دیتای سین کاست

www.iranmicro.ir

7

AT Commandدسترات

دسترات عوهی

AT COMMAND ػولکشد

AT چک کشدى دستسات

ATI ضاسایی سطىfirmware

AT+GMR کاهلضاسایی سطى firmware

AT+GMM ضاسایی هذل هاطل

AT+CSCA چک کشدى ضواس ی هشکضSMS

AT+CREG هطخص ضذى اتصال ت ضثک

AT+CSQ قذست سیگال

AT&F تظیوات کاسخا

AT&W رخیش ی تظیوات

AT&V چک کشدى تظیوات هاطل

AT+CPIN=“XXXX” تاص کشدى ضواس یPIN

AT+IPR=x تظینbaud rate (هثال :x=9600 )

AT+CUSD=1,”*140*1#”,15 دسخاست اػالم اػتثاس اص ایشاسل

www.iranmicro.ir

8

تظین زهاى

AT COMMAND ػولکشد

AT+CCLK? خاذى صهاى هاطل

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

تظین صهاى

رخیر ی شوار ی تلفي

AT COMMAND ػولکشد

AT+CPBS="ON" آهاد ساصی تشای رخیش ی ضواس دس سین کاست

AT+CPBW=1,“+98*”,145,“NAME” رخیش ی ضواس دس خا ی ال سین کاست

ضواس گیشی تیي الولل 145

AT+CNUM اگش فؼال تاضذ ضواس طاى داد هی ضد

AT+CPBS="SM" تاصگطت ت رخایش سین کاست

AT+CPBR=1,5 5 تا 1خاذى اص هکاى

ایجاد تواس صتی

AT COMMAND ػولکشد

AT+CHFA? چک کشدى تظیوات کاال صتی

AT+CHFA: 0 صفش ذست ، یکaux

ATL3 9 تا 1تظین تلذی صذا

ATD+2783xxxx; ضواس گیشی

ATDL ضواس گیشی هجذد

ATA جاب ت تواس دسیافتی

ATH قطغ تواس

www.iranmicro.ir

9

SMSتظیوات برای

AT COMMAND ػولکشد

AT+CMGF=1 حالت هتی( اگش صفش تاضذ حالتPacket Data )

AT+CSCS="GSM" حالت هتی کاساکتش ایGSM

AT+CNMI=2,1,0,0 طاى دادىSMS (پیطفشض فؼال) جذیذ

AT+CSCS? چک کشدى ضواس ی هشکضsms

AT+CSAS=0 رخیش ی تظیواتSMS 1 یا 0 دس پشفایل

AT+CMGS = " +27.."(Enter) >your message < ctrl-z>

SMSفشستادى

AT+CMGW >your message < ctrl-z> +CMGW: 1

SIM دس SMSرخیش ی

هتي هسد ظش

( 1دسایجا )تاصگشداذى هکاى رخیش ضذ

AT+CMSS=1,”+27…”,145 فشستادىSMS رخیش ضذ

AT+CMGDA= "DEL READ" "DEL UNREAD" "DEL SENT" "DEL UNSENT" "DEL INBOX" "DEL ALL"

ای هطخص SMSپاک کشدى یک دست اص

: هثال

AT+CMGDA="DEL ALL"

و سا پاک هی کذ

www.iranmicro.ir

10

GPRSتظیوات هاشل برای

AT COMMAND ػولکشد

Irancell APN name = internet ATE1 فؼال کشدىecho

تایذ صفش تاضذ SMSدس حالت تواس

AT+CMGF=1 حالت هتی(text mode)

AT+CSCS=“GSM”

GSMحالت هتی کاساکتش ای

AT+CGATT? دس غیش ایي صست . تایذ یک تشگشدد

AT+CGATT=1 AT+CIPMUX=0 غیش فؼال کشدىMultiplex mode

فؼال هی کذ 1

Serverدس ایي حالت کاس وی کذ .

AT+CIPMODE=0 تظین تcommand mode

client ب عاى GPRSهتصل شذى با

AT COMMAND ػولکشد

AT+CIPCSGP=1,”internet” پیذا کشدى اتصالAPN

AT+CLPORT=“TCP”,”2020” پیذا کشدى اتصالTCP پست تشای سیل

AT+CSTT=“internet”,””,”” هتصل ضذى تMTN

“APN”,”user name”,”pass” AT+CIPSRIP=1 وایصIP سیل ی اتصال دذ

AT+CIICR هتصل ضذى

AT+CIFSR گشفتيIP تایذ استفاد ضد، یا ) هاطل هحلیerrorتاص گشداذ

(ضد هی

AT+CIPSTART= “TCP”,”xxx.xxxx.xxx”,”xxxx”

”CONNECT OK“ صثش کین تا domain , IP , portتظین

. تاص گشداذ ضد

AT+CIPSTATUS تایذ تاضذ :“STATE: IP STATUS”

www.iranmicro.ir

11

AT+CIPSEND فشستادى داد( اصctrl+zاستفاد کین ) هثال :

AT+CIPSEND Xxxxxxxxxx(ctrl-z)

“SEND OK” AT+CIPSHUT قطغ کشدى اتصالGPRS

server ب عاى GPRSهتصل شذى با

AT COMMAND ػولکشد

AT+CIPCSGP= 1,”internet”,””,””

GPRSپیذا کشدى اتصال

“APN”,”user name”,”pass” AT+CIPSRIP=1 وایصIP port

AT+CIPSERVER=1,2020 پیذا کشدى اتصال پست(0 = USD)

AT+CIPSTATUS تشسسی ضؼیت اتصال

AT+CIPSEND فشستادى داد( اصctrl+zاستفاد کین ) هثال :

AT+CIPSEND Xxxxxxxxxx(ctrl-z)

“SEND OK” AT+CIPSHUT قطغ کشدى اتصالGPRS

www.iranmicro.ir

12

شرح پرش : فصل چهارم

سخت افسار عولکرد هذار

سذ اجام کاس ت صست . دسایي قسوت تا ح اتصاالت آی سی ا استثاط آا تان آضا هی ضین

. هشحل ت هشحل تضیح داد هی ضد

. طاى داد ضذ استصیشتخص ای اصلی هذاس دس ضکل

www.iranmicro.ir

13

دسیافت اطالػات . ظیف ی پشداصش اطالػات کتشل سیستن سا تش ػذ داسدATMEGA16هیکشکتشلش

.هحیط هسد ظش هاذ گلخا کتشل اتضاس هجد یض تش ػذ ایي هیکشکتشلش است

SIM900 ظیف ی ایجاد استثاط تیي هذاس ضثک ی GSMتا فطشدى کلیذ . سا تش ػذ داسدpower key

سا SIM900تا هیکش کتشلش یض هی تاى . سضي یا خاهش هی ضدSIM900ت هذت حذدا یک ثای هاطل

: صیش هالحظ هی کین ضکلخاهش یا سضي کشد ک دس

www.iranmicro.ir

14

. آتي قشاس گشفت اذSIM900 ، SIM cardتش سی تسد صیش هاطل

تش (Bbord)ایي تشد قاتلیت قشاس گشفتي تش سی تشد تسد سا ذاسد، تتاتشایي تشد صیش طشاحی ضذ تا تسد تاال

. تش سی تشد تسد استفاد ودSIM900سی آى قشاس تگیشد تتاى اص اهکاات

.اتؼاد ایي تشد تش سی ضکل طاى داد ضذ است

SIM CARD تشای ضاسایی دس ضثک ت کاس هی سد ک ت وشا SIM900 تخص کچکی اص ضثک ، GSM

. سا تطکیل هی دذ

. سا دس هذاس ای دیگش یض سا اذاصی استفاد ودSIM900تسط ایي د تسد ،هی تاى هاطل

www.iranmicro.ir

15

هتصل ضذ هطخص هی ضد ک قثال دس تخص netlight ای ک ت پای ی ledضؼیت سیستن یض ت سیل ی

وچیي اگش اص هاطل دس هکاى ایی استفاد هی ضد ک قذست سیگال کن . تضیح داد ضذSIM900هؼشفی

. است، هیتاى اص آتي ای تضسگتش تتش ت صست خاسجی استفاد ود

www.iranmicro.ir

16

FT232 تشای ایجاد استثاط تیي

کاهپیتش هاطل تشای ت سص کشدى

SIM900ی هیکشکتشلش تشاه

خطایاتی ػولکشدوچیي تست کشدى

. استفاد هی ضد

اص آجایی ک ایي آی سی اص ع

است وی تاى ت طس SSOPپکیج

هستقین تش سی تشد تسد صة ضد، تشای

استفاد ی ساحت تش اص آى تش سی تشد

.هقاتل هتصل هی ضد

تا ایي تشد هی تاى اص توام اهکاات

FT232 تش سی تشد تسد هاسد دیگش ت

.ساحتی استفاد ود

LCDتشای وایص ساػت ػولیات دس حال اجشا ت کاس هی سد .

اص لتاط استاذاسدی استفاد وی کذ، تاتشایي لتاط آى ت سیل ی آی سی SIM900ت ایي دلیل ک

تشای استفاد ی ساحت تش اص آى تش سی تشد تسد، اص تسد صیش استفاد . تاهییي هی ضدLM317سگالتس هتغیش

.ضذ است

www.iranmicro.ir

17

و درخواست از اپراتور SMSارسال و دریافت

ست SMS داسای د حالت تشای SIM900هاطل

1 – text mode : تیتی فشستاد8 حشف تا کذ اسکی 140دس ایي حالت هی تاى .

2 – PDU mode : تیت داسد دس تیج هی تاى 7دس ایي سش فطشد ساصی اجام ضذ اص آجا ک ش کذ

. تایت اسسال ود140 کاساکتش سا دس 160تا

. کاساکتش سا اسسال ود70تشای فشستادى پیام فاسسی ش کاساکتش د تایت سا اضکال هی کذ ک هی تاى

دس ایجا هی خاین سفتاس قطؼات سا صهای ک هی خاین ضاسط تاقیواذ سین کاست سا دسخاست هی کین،

. تشسسی کین

تشای هاطل”1111#“ تا هتي smsاص طشیق گضی هتایلی ک ضواس ی آى تشای هاطل هؼیي ضذ یک

. هی فشستین

اص طشیق پست سشیال پیام صیش ت هیکش کتشلش اسسال هی ضد SIM900 ت smsتا سسیذى

+CMTI: “SM”,3

ی سین کاست رخیش 3تا سسیذى ایي پیام ت هیکش هطخص هی ضد ک یک پیام جذیذ دس خا ی ضواس ی

SIM900ضذ است ک اکى تایذ خاذ ضد ک تشای ایي کاس هیکش دستس صیش سا اص طشیق استثاط سشیال تشای

اسسال هی کذ

AT+CMGR=3 اکى هاطل هتي صیش سا تشای هیکش اسسال هی کذ

+CMGR: “REC UNREAD”,”+98915xxxxxxx”,”MODOULE NO”,”11/06/03,11:36:09+18”

#1111

OK : ایي پیام ضاهل اطالػاتی اص قثیل صیش است

دستس خاذ ضذى پیام هسد ظش

پیام قثال خاذ طذ است

ضواس ای ک پیام سا اسسال کشد است

صهاى سسیذى پیام

www.iranmicro.ir

18

enterکذ کلیذ

هتي پیام

OK

اص اتتذا ضواس ی تلفي فشستذ تشسسی هی ضد تا. اکى ظیف ی هیکش کتشلش دسک تشسسی هاسد تاالست

هطخص هی ضد دسخاست اػالم 1111سپس هتي پیام تشسسی هی ضد ک تا یافتي هتي . تاضذهطخصی ضواس ی

.پس هیکش دستس صیش سا تشای هاطل اسسال هی کذ. تاقیواذ ی اػتثاس اص اپشاتس ضذ است

AT+CUSD=1,”*140*1#”,15

AT+CUSD=0تا دستس هی تاین الثت . ) ایي دستس واى دستس دسخاست ضاسط اص اپشاتس ایشاسل است

تؼذ اص دسیافت پاسخ.هاینباکى تایذ هتظش جاب اپشاتس ( .ایي دسخاست سا پایاى دین

SIM900هتي صیش سا تشای هیکش اسسال هی کذ

,CUSD: 0+"س هتي ضاهل تاسیخ هیضاى ضاسط اطالػات دیگ"

دستس صیش. اص دسى هتي، هیکش اطالػات الصم سا رخیش هی کذ تا دس هشحل ی تؼذ تشای کاستش اسسال وایذ

هتي سا تشای کاستش اسسال هی کذ ک هیکش ت هاطل هی فشستذ ایي

AT+CMGS = " +98915xxxxxxx"(Enter) تاصگشدد <هیکش هتظش هیواذ تا

>your message < ctrl-z>

، هتي اسسالctrl-z (0x1a) اسسال هی کذ سپس تا اسسال کاساکتش هتاظش SIM900سپس هتي سا تشای

هتي صیش سا تشای هیکشکتشلش هی فشستذ ، تؼذ اص اسسال تا هفقیت پیامSIM900 دس اتاهی ضد

AT+CMGS: xxx

OK

.تؼذ اص ایي یک پیام تشای تلفي وشا کاستش ضاهل هتي هیضاى اػتثاس تاقیواذ هی سسذ

www.iranmicro.ir

19

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

اطالػات سا اص SIM900. جد داسدGPRS اهکاى استثاط تا ایتشت اصطشیق SIM900ت سیل ی هاطل

دس صست جد . اسسال دسیافت هی کذ ک تشای ایي هظس ت سشس کالیت یاص استhttpطشیق پشتکل

ضثک ی ایتشت اطالػات سا تشای سشس هسد ظش اسسال هی کذ اص آى GPRS اص طشیق SIM900سشس ،

ک ت ػاى سشس تظین ضذ دیگشی SIM900وچیي هی تاى استثاط سا تیي یک هاطل . دسیافت هی وایذ

. ک ت ػاى کالیت تظین ضذ تشقشاس ود

: دس ضکل صیش ح ی ایي استثاطات طاى داد ضذ است

SIM900 دس د حالت چذ کاستش یک کاستش هی تاذ کاسکذ (multiplex) الثت صهای ک ت ػاى

8کالیت ػول وایذ دس حالتی ک ت ػاى سشس ػول کذ فقط ت صست تکی تظین هی ضد ک دس هجوع

دس صیش و ایی اص دستسات .هاطل هی تاذ ت یکذیگش هتصل ضذ یکی هی تاذ ت ػاى سشس ػول کذ

: تظین هاطل اسسال داد سا هطاذ هی کین

www.iranmicro.ir

20

AT+CGATT? +CGATT: 1 OK AT+CSTT=”CMNET” APN تظین

OK

AT+CIICR آهاد کشدى استثاط

OK

AT+CIFSR دادى آی پی هحلی

10.78.245.128

AT+CIPSTART=”TCP”,”116.228.221.51”, “8500” ضشع اتصال

OK CONNECT OK AT+CIPSEND

> hello TCP server اسسال داد ت سشس , CTRL+Z (0x1a) to send.

SEND OK اطالػات تسط سشس دسیافت ضذ

hello sim900 هتي تاصگطتی اص سشس

CLOSED اص ایي طشیق هی تاى اطالػات سا اص طشیق ضثک ی ایتشت ت ش جایی هتقل کشد هحیط هسد ظش سا کتشل

. ود

ارتباط صوتی

تا هتصل کشدى یک گضی ضاهل هیکشفي تلذگ هتصل کشدى یک صفح کلیذ، هی تاى یک تواس

. صتی تشقشاس ود

ATD+2783xxxx; ضواس گیشی

ATDL ضواس گیشی هجذد

ATA جاب ت تواس دسیافتی

ATH قطغ تواس

www.iranmicro.ir

21

براه یسی

. استCode vision 2.05 هسد استفاد دس ایي پشط، شم افضاس Cهتشجن صتاى

تحلیل برناهه ی هیکروکنترلر

. شم افضاس ت صست اتهاتیک تا اجام تظیوات تکویل ضذ استقسوت ایی ک تضیح داد طذ تسط

/***************************************************** Chip type : ATmega16 AVR Core Clock frequency: 8.000000 MHz Data Stack size : 256 *****************************************************/ #include <mega16.h> #include <stdlib.h> // Alphanumeric LCD Module functions #include <alcd.h> #ifndef RXB8 #define RXB8 1 #endif #ifndef TXB8 #define TXB8 0 #endif #ifndef UPE #define UPE 2 #endif #ifndef DOR #define DOR 3 #endif #ifndef FE

www.iranmicro.ir

22

#define FE 4 #endif #ifndef UDRE #define UDRE 5 #endif #ifndef RXC #define RXC 7 #endif #define FRAMING_ERROR (1<<FE) #define PARITY_ERROR (1<<UPE) #define DATA_OVERRUN (1<<DOR) #define DATA_REGISTER_EMPTY (1<<UDRE) #define RX_COMPLETE (1<<RXC)

هطخص هی ضد define# تا دستس control + z کاساکتش تشکیة کلیذای enterدس ایي هحل کلیذ

. اػالى الی هی ضدwait_loop تاتغ

////////////////////////////////////////////////////////////////////////// #define enter 0x0d #define ctrl_z 0x1a void wait_loop(); ////////////////////////////////////////////////////////////////////////// // USART Receiver buffer #define RX_BUFFER_SIZE 128 char rx_buffer[RX_BUFFER_SIZE]; #if RX_BUFFER_SIZE <= 256 unsigned char rx_wr_index,rx_rd_index,rx_counter; #else unsigned int rx_wr_index,rx_rd_index,rx_counter; #endif // This flag is set on USART Receiver buffer overflow bit rx_buffer_overflow; // USART Receiver interrupt service routine

www.iranmicro.ir

23

interrupt [USART_RXC] void usart_rx_isr(void) { char status,data; status=UCSRA; data=UDR; if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0) { rx_buffer[rx_wr_index++]=data; #if RX_BUFFER_SIZE == 256 // special case for receiver buffer size=256 if (++rx_counter == 0) { #else if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0; if (++rx_counter == RX_BUFFER_SIZE) { rx_counter=0; #endif rx_buffer_overflow=1; } } } #ifndef _DEBUG_TERMINAL_IO_ // Get a character from the USART Receiver buffer #define _ALTERNATE_GETCHAR_ #pragma used+ char getchar(void) { char data;

دس ایي قسوت استفاد هی ضد wait_loopتاتغ

ایي تاتغ دس هاقؼی ک هیکش تشای سسیذى کاساکتشی تسط استثاط سشیال هتظش هاذ اجشا هی ضد تسیاسی

. اجام هی ضد (حلق)اص کاسای کتشلی دس ایي تاتغ

while (rx_counter==0) wait_loop(); data=rx_buffer[rx_rd_index++]; #if RX_BUFFER_SIZE != 256 if (rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0; #endif #asm("cli")

www.iranmicro.ir

24

--rx_counter; #asm("sei") return data; } #pragma used- #endif // Standard Input/Output functions #include <stdio.h> // Timer1 output compare A interrupt service routine

تؼشیف هتغیشای ساػت وایص آى

unsigned char second=0; unsigned char minute=0; unsigned char hour=0; char time[15]; bit send_cond=0; interrupt [TIM1_COMPA] void timer1_compa_isr(void)

کاتش یک است ک ش ثای یکثاس اجشا هی ضد تغییشات الصم سا دس ساػت - ایي تاتغ، تاتغ قف ی تایوش

. اجام هی دذ

{ second++; if(second>=60) { minute++; second = 0; if(minute>=60) { hour++; minute = 0; if(hour>=24) hour=0; } }

. تظین هی گشدد، حای اطالػات هحیط اسسال هی ضدsmsدس ایي قسوت صهای ک

www.iranmicro.ir

25

if((hour==0)&&(minute==5)&&(second==30))send_cond=1; } // Declare your global variables here

تؼشیف سضت ا تشای اسسال تا استثاط سشیال

ت ضواس ی هسد ظش هی کذ smsهاطل سا آهاد ی اسسال

flash char at_cmgs[]= {'A','T','+','C','M','G','S','=','"','+','9','8','9','1','5','3','8','2','5','6','7','5','"','\r'};

. دسخاست اص اپشاتس تشای اػالم ضاسط تاقی هاذ

flash char at_cusd[]= {'A','T','+','C','U','S','D','=','1',',','"','*','1','4','0','*','1','#','"',',','1','5','\r'};

ا اص حافظ ی سین کاست smsتؼشیف سضت ی پاک کشدى

flash char at_cmgda[]= {'A','T','+','C','M','G','D','A','=','"','D','E','L',' ','A','L','L','"','\r'};

تؼشیف هتغیش ای گ داسی ضشایط گلخا

int currenttemp,currentdamp,mintemp,maxtemp,mindamp,maxdamp;

chاتظاس تا دسیافت کاساکتش هسد ظش

void wait_to_get(char ch) { while(ch != getchar()); }

تاتغ فشستادى ضشایط هحیط ت کاستش

void send_condition() { putsf(at_cmgs); wait_to_get('>'); printf("condition: currenttemp:%d;currentdamp:%d; mintemp:%d;maxtemp:%d;mindamp:%d;maxdamp:%d;", currenttemp,currentdamp,mintemp,maxtemp,mindamp,maxdamp); putchar(ctrl_z); }

www.iranmicro.ir

26

تسط کاستش ت هاطل فشستاد تاصیاتی ضذ، دسخاست آى اجشاxxxx#دس ایي تاتغ کذی ک تا فشهت

. هی ضد

void check_request(int request) {

اسسال دسخاست ت اپشاتس تشای اػالم ضاسط تاقیواذ

if(request==1111) { putsf(at_cusd); wait_to_get('K'); }

اسسال ضشایط هحیط

else if(request==2222) { send_condition(); }

. فشستاد هی ضدAnswer of xxxxدس صستی ک دسخاست هسد ظش اضتثا تاضذ پاسخ

else { putsf(at_cmgs); wait_to_get('>'); printf("Answer of %d",request); putchar(ctrl_z); } } int sms_location;

دس داخل ایي تاتغ هکاى پیام دسیافتی ضاسایی ضذ دس . صهای ک پیاهی ت هاطل تشسذ ایي تاتغ اجشا هی ضد

. آخش دستسی تشای خاذى آى اسسال هی ضد

void cmti(void) { char c[1]; wait_to_get(','); c[0]=getchar(); sms_location=atoi(c); if(sms_location>=10)sms_location/=10; printf("AT+CMGR=%d\r",sms_location); }

www.iranmicro.ir

27

. قتی دستس خاذى پیام اسسال ضذ تسط ایي تاتغ پیام خاذ هی ضد

void cmgr(void) { unsigned char x; int code; char number[4]; for(x=0;x<3;x++)wait_to_get('"'); for(x=0;x<9;x++)getchar(); for(x=0;x<4;x++)number[x]=getchar();

دس ایجا چاس سقن آخش ضواس ی تلفي تذست هی آیذ

code=atoi(number);

تاضذ تؼذ اص ایي کذ اسسالی تسط کاستش تذست هی آیذ سپس تاتغ 5675اگش چاس سقن آخش

check_request اجشا هی ضد .

. سین کاست پش ضد پیام ا پاک هی ضذsmsدس صست لضم اگش حافظ

if(code==5675) { wait_to_get('#'); for(x=0;x<4;x++)number[x]=getchar(); wait_to_get('K'); code=atoi(number); if(code > 9999)code/=10; if(sms_location > 5) { putsf(at_cmgda); wait_to_get('K'); } check_request(code); }

. اجشا هی ضد، ایي دستات ثاضذ هسد ظش اص کاتش دسیافتیاگش پیام

else { lcd_clear();

www.iranmicro.ir

28

lcd_gotoxy(0,0); lcd_puts(number); wait_to_get('K'); if(sms_location > 5) { putsf(at_cmgda); wait_to_get('K'); } } }

. تا هفقیت اسسال ضذ ایي تاتغ اجشا هی ضدsmsقتی

void cmgs(void) { wait_to_get('K'); }

دسیافت دسخاستی ک اص اپشاتس تشای اػالم ضاسط ضذ تد اسسال آى ت کاستش

void cusd(void) { unsigned char x=0; char buf[64]; char c=0; wait_to_get('"'); do { c=getchar(); if(x<63)buf[x++]=c; } while(c != '"'); wait_to_get(enter); putsf(at_cmgs); wait_to_get('>'); puts(buf); putchar(ctrl_z);

www.iranmicro.ir

29

}

. تاتؼی ک دس صهاى تیکاسی هیکش اص دسیافت پیاها، کاسای کتشلی سا اجام هی دذ

void wait_loop() {

دس ایجا ت دلیل ثد ضشایط هحیط تشای اذاص گیشی هقادیشی ت هتغیش ا داد ضذ است

currenttemp=30; currentdamp=50; mintemp=20; maxtemp=40; mindamp=40; maxdamp=70;

دس ایي هکاى تؼذ اص دسیافت اطالػات اقؼی هی تاى داد ا سا پشداصش ود

. تاتغ اسسال ضشایط ت کاستش سا اجشا هی کذ (...ساػت هسد ظش یا دس ضشایط تحشای یا )دس صهاى هسد ظش

If(send_cond) { send_cond =0; send_condition(); }

lcdوایص تش سی

sprintf(time,"time: %d:%d:%d",hour,minute,second); lcd_clear(); lcd_gotoxy(0,0); lcd_puts(time); } void main(void) { // Declare your local variables here char buffer; // Input/Output Ports initialization // Port A initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In

Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

www.iranmicro.ir

30

PORTA=0x00; DDRA=0x00; PORTB=0x00; DDRB=0x00; PORTC=0x00; DDRC=0x00; PORTD=0x00; DDRD=0x00; // Timer/Counter 0 initialization TCCR0=0x00; TCNT0=0x00; OCR0=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 7.813 kHz // Mode: CTC top=OCR1A // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: On // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x0D; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x1E; OCR1AL=0x85; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00;

www.iranmicro.ir

31

// External Interrupt(s) initialization MCUCR=0x00; MCUCSR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x10; // 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; // Analog Comparator initialization ACSR=0x80; SFIOR=0x00; // ADC initialization ADCSRA=0x00; // SPI initialization SPCR=0x00; // TWI initialization TWCR=0x00; // Alphanumeric LCD initialization // Connections specified in the // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu: // RS - PORTB Bit 0 // RD - PORTB Bit 1 // EN - PORTB Bit 2 // D4 - PORTA Bit 0 // D5 - PORTA Bit 1 // D6 - PORTA Bit 2 // D7 - PORTA Bit 3 // Characters/line: 16 lcd_init(16);

www.iranmicro.ir

32

// Global enable interrupts #asm("sei") lcd_putsf("hello");

ت هیکش کتشلش فشستاد هی ضذ تشسسی هی ضذ دس صست SIM900دس ایي حلق دستساتی ک اص

. دسیافت یک دستس هطخص ػولیات آى اجام هی ضد

تا دسیافت ش دستس تاتؼی تا واى ام اجشا هی ضد ک ایي تاتغ دس تاال تؼشیف ضذ اذ

هتظش هی هاذ تا کاساکتش جذیذی ت پست سشیال تشسذ()getcharتاتغ

while (1) { buffer=getchar(); if(buffer=='+') { buffer=getchar(); if(buffer=='C') { buffer=getchar(); if(buffer=='M') { buffer=getchar(); if(buffer=='T') { buffer=getchar(); if(buffer=='I') { buffer=getchar();

if(buffer==':') cmti(); قتی پیاهی تشسذ

} } else if(buffer=='G') { buffer=getchar(); if(buffer=='R') { buffer=getchar();

if(buffer==':') cmgr(); قتی پیاهی خاذ ضد

}

www.iranmicro.ir

33

else if(buffer=='S') { buffer=getchar();

if(buffer==':') cmgs(); قتی پیاهی اسسال ضد

} } } else if(buffer=='U') { buffer=getchar(); if(buffer=='S') { buffer=getchar(); if(buffer=='D') { buffer=getchar();

if(buffer==':') cusd(); قتی دسخاست اجام ضد

} } } } }

lcd_putsf("!"); قتی یچ یک اص هاسد تاال ثاضذ

} }

www.iranmicro.ir

34

پیست

SIM900اطالعات بیشتر از

www.iranmicro.ir

35

www.iranmicro.ir

36

www.iranmicro.ir

37

www.iranmicro.ir

38

lm317 lm350هذاس و تشای هثغ تغزی ی هتغییش تا آی سی ای

Lm350 = 3A max Lm317 = 1.5A max

www.iranmicro.ir

39

هنابع

:سایت ای ایتشتی

:SIM900سایت ساصذ ی

http://wm.sim.com

:FT232سایت ساصذ ی

http://www.ftdichip.com

:ATMEGA16سایت ساصذ ی

http://www2.atmel.com

:(اگلیسی)سایت گفتگ دس هسد الکتشیک

http://www.edaboard.com :سایت ای فاسسی دستاس ی الکتشیک

http://www.kavirelectronic.ir http://www.iranmicro.ir