Upload
hokman
View
63
Download
0
Embed Size (px)
DESCRIPTION
Working with sim900 and mobile in persian
Citation preview
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
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