www.iranmicro.ir
ایه پريژٌ تًسط مُىدس صفا مىش برای سایت ایران میکري ارسال شدٌ است کٍ در اختیار عمًم قرار می گیرد .در صًرت سًال بٍ اوجمه َای ایران میکري مراجعٍ فرمائید.با تشکر از ديست خًبمًن برای ارسال ایه پريژٌ بسیار کاربری يمُم www.iranmicro.ir/forum
ارسال اطالعات محیطی از طریق شبکه موبایل استاد راهنما
دكت باصري جناب آقاي ر استاد دفاع
جناب آقاي دكتر كاشفی پژوهنده
احسان صفامنش تابستان 90 فهرست
www.iranmicro.ir
تشسسی هاطٍل ................................................................................................ SIM 900
2
دستَرات AT Command دستَسات ػوَهی ..........................................................................................................
7
تٌظین صهاى .....................................................................................................................
8
رخیشُ ی ضواسُ ی تلفي .................................................................................................
8
ایجاد تواس صَتی ........................................................................................................
8
تٌظیوات تشای ...................................................................................................... SMS
9
تٌظیوات هاطٍل تشای ......................................................................................... GPRS
10
هتصل ضذى تا GPRSتِ ػٌَاى ......................................................................... client
10
هتصل ضذى تا GPRSتِ ػٌَاى ......................................................................... server
11
شرح پرٍشُ سخت افضاس ٍ ػولکشد هذاس ............................................................................................
12
..........................................................................................
21
تحلیل تشًاهِ ی هیکشٍکٌتشلش
1
www.iranmicro.ir بررسی هاشٍل SIM900 ضشکت simcomهاطٍل تسیاس فطشدُ ٍ قاتل اطویٌاى sim900سا اسائِ کشد .ایي یک هاطٍل GSM/GPRS کاهل دس ًَع ٍ SMTتا یک ّستِ ی پشداصضی تسیاس قَی AMR926EJ-Sطشاحی ضذُ است ٍ .تِ ضوا اجاصُ هی دّذ تا اص قیوت هٌاسة ٍ اتؼاد کَچک آى استفادُ کٌیذ. اًتقال صذا ،پیام کَتاُ ،فکس ٍ دیتا دس یک پک کَچک تا تَاى کصشفی کن اص اهکاًات آى است. تخص ّای اصلی SIM900دس ضکل صیش ًوایص دادُ ضذُ است.
: Memoryضاهل حافظِ ّای flash ٍ ROM ، RAM بخش فرکانس رادیویی :کِ دس چْاس تاًذ 1900 / 1800 / 900 / 850 GSMػول هیکٌذ ٍاستثاطات سادیَیی تش ػْذُ ی ایي تخص است. -پردازنذه :ایي تخص اص یک ّستِ ی پشداصضی
ARMتطکیل ضذُ ٍ کٌتشل هاطٍل ،ساتط ّا ٍ تخص
سادیَیی سا تش ػْذُ داسد. 2
www.iranmicro.ir رابط ها ی هاشولاهکانات عووهی چْاص تاًذ 1900 / 1800 / 900 / 850 GPRSکالس 10/8 ایستگاُ هثایل GPRSکالس B هطاتق تا GSM phase 2/2+ )Class 4 (2 W @850/ 900 MHz )Class 1 (1 W @ 1800/1900MHz اتؼاد 24 :دس 24دس 3هیلی هتش ٍصى 3.4 :گشم کٌتشل اص طشیق GSM 07.07,07.05( ATcommands ٍ)SIMCOM enhanced ATCommands هحذٍدُ ی ٍلتاط کاسی 3.1 :تا ٍ 4.8لت تشًاهِ ی اتضاس سین کاست اهکاًات تَاى هصشفی پاییي 1/5 :هیلی آهپش دس حالت خَاب دهای کاسکشد -45 :تا 85دسجِ ی ساًتیگشاد هشخصات برای پیام کوتاه ًقطِ تِ ًقطِ ی MT ٍ MO سلَل هٌتطش کٌٌذُ ی پیاهک حالت PDU ٍ text هشخصات برای صذا کذ کٌٌذُ ّای )Half rate (HR )Full rate (FR )Enhanced Full rate (EFR ػولکشد ٌّذس فشی )(Echo suppression AMR )Half rate (HR )Full rate (FR 3
www.iranmicro.ir هشخصات برای دیتا GPRSکالس : 10دسیافت تا 85.6 kbps رابط ها ()Interfaces ساتط سین کاست خاسجی SIM 3V/ 1.8V ساتط صذای آًالَگ RTC backup ساتط استثاط سشیال تشای کٌتشل ٍ دیثاگ هاطٍل ساتط ّای I2C ، SPI پایِ ّای ٍسٍدی خشٍجی قاتل تشًاهِ سیضی ADC ٍ PWM اهکانات نرم افساری پشٍتکل 0710 MUX پشٍتکل T/UDP FTP/HTTP FOTA MMS
پایه های SIM900 تا تَجِ تِ ضکل تؼذ کِ ًوای تاالیی پایِ ّای SIM900سا ًوایص هی دّذ : تا ٍصل کشدى پایِ ّای 2 ٍ 1تِ یکذیگش تا 1ثاًیِ هاطٍل خاهَش یا سٍضي هی ضَد. پایِ ّای 3تا 10تشای استثاط سشیال ٍ تثادل دادُ ٍ دستَسات ATCتِ کاس هی سٍد. پایِ ّای 11تا 14تشای اتصال LCDتِ هاطٍل استفادُ هی ضَد. پایِ ی ٍ 15لتاط خشٍجی سطح هٌطقی هاطٍل تا 10هیلی آهپش سا سَسس هی کٌذٍ .لتاط سطح هٌتطقی 1تشاتش 2.8تا ٍ 3لت ٍ هٌطق ، 0صفش ٍلت است.
4
www.iranmicro.ir
پایِ ی 26تشای اتصال تاطشی تکاج هاطٍل استفادُ هی ضَد پایِ ّای 28 ٍ 27استثاط سشیال تشای دیثاگ کشدى ٍ تشٍص کشدى هاطٍل استفادُ هی ضَد. پایِ ّای 30تا 34ساتط اتصال تِ سین کاست ّستٌذ. پایِ ّای 40تا ٍ ، 68 ٍ 67 ٍ 51سٍدی خشٍجی ّای قاتل تشًاهِ سیضی ّستٌذ کِ قاتلیت اتصال صفحِ کلیذ هاتشیسی سا داسًذ. پایِ ی 52طثق جذٍل صیش ٍضؼیت سیستن سا ًوایص هی دّذ.
5
www.iranmicro.ir اگش پایِ خاهَش تاضذ (صفش) SIM900 :فؼال ًیست. 64م ث سٍضي ٍ 800م ث خاهَش :ضثکِ یافت ًطذُ است. 64م ث سٍضي ٍ 3ثاًیِ خاهَش :ضثکِ پیذا ضذُ است. 64م ث سٍضي ٍ 300م ث خاهَش :دس حال استثاط GPRS پایِ ی 60تشای اتصال تِ آًتي پایِ ّای 55تا ٍ 57لتاط تغزیِ ی هاطٍل است کِ دس هحذٍدُ ای تیي 3.2تا ٍ 4.8لت کاس هی کٌذ. پایِ ی ٍ 66ضؼیت هاطٍل سا تا تغییشات سطح هٌطقی هؼیي هی کٌذ. ًحَُ ی اتصال سین کاست تا هاطٍل ٍ هطخصات سین کاست دس صیش ًطاى دادُ ضذُ است: هشخصات پایه های سین کارت : Vcc - 1پایِ ی تغزیِ ی سین کاست : Rst - 2پایِ ی سیست کشدى سین کاست : Clk - 3پایِ ی کالک سین کاست GND - 4 : Vpp - 5تشای تشًاهِ سیضی سین کاست (دلخَاُ) : Data - 6پایِ ی دیتای سین کاست
6
www.iranmicro.ir
دستَرات 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+IN=“XXXX AT+IPR=x AT+CUSD=1,”*140*1#”,15
چک کشدى تٌظیوات هاطٍل تاص کشدى ضواسُ ی PIN تٌظین ( baud rateهثال)x=9600 : دسخَاست اػالم اػتثاس اص ایشاًسل
7
www.iranmicro.ir تٌظین زهاى AT COMMAND ?AT+CCLK =AT+CCLK ”“YY/MM/DD,HH:MM:SS+02
ػولکشد خَاًذى صهاى هاطٍل تٌظین صهاى
رخیرُ ی شوارُ ی تلفي AT COMMAND
ػولکشد
"AT+BS="ON
آهادُ ساصی تشای رخیشُ ی ضواسُ دس سین کاست
”AT+BW=1,“+98*”,145,“NAME
رخیشُ ی ضواسُ دس خاًِ ی اٍل سین کاست 145ضواسُ گیشی تیي الولل
AT+CNUM "AT+BS="SM AT+BR=1,5
اگش فؼال تاضذ ضواسُ ًطاى دادُ هی ضَد تاصگطت تِ رخایش سین کاست خَاًذى اص هکاى 1تا 5
ایجاد تواس صَتی AT COMMAND ?AT+CHFA AT+CHFA: 0 ATL3 ;ATD+2783xxxx ATDL
ػولکشد چک کشدى تٌظیوات کاًال صَتی صفش ٌّذست ،یک aux تٌظین تلٌذی صذا 1تا 9 ضواسُ گیشی ضواسُ گیشی هجذد
ATA
جَاب تِ تواس دسیافتی
ATH
قطغ تواس 8
www.iranmicro.ir SMS تٌظیوات برای ػولکشد ) Packet Data حالت هتٌی(اگش صفش تاضذ حالت GSM حالت هتٌی کاساکتش ّای ) جذیذ (پیطفشض فؼالSMS ًطاى دادى sms چک کشدى ضواسُ ی هشکض 1 یا0 دس پشٍفایلSMS رخیشُ ی تٌظیوات SMS فشستادى
AT COMMAND AT+CMGF=1 AT+CSCS="GSM" AT+CNMI=2,1,0,0 AT+CSCS? AT+CSAS=0 AT+CMGS = " +27.."(Enter) >your message < ctrl-z>
SIM دسSMS رخیشُ ی هتي هَسد ًظش )1 تاصگشداًذى هکاى رخیشُ ضذُ(دسایٌجا ُ رخیشُ ضذSMS فشستادى ّای هطخصSMS پاک کشدى یک دستِ اص : هثال AT+CMGDA="DEL ALL" ّوِ سا پاک هی کٌذ
9
AT+CMGW >your message < ctrl-z> +CMGW: 1 AT+CMSS=1,”+27…”,145 AT+CMGDA= "DEL READ" "DEL UNREAD" "DEL SENT" "DEL UNSENT" "DEL INBOX" "DEL ALL"
www.iranmicro.ir GPRS تٌظیوات هاشٍل برای ػولکشد
AT COMMAND
Irancell APN name = internet echo فؼال کشدى
ATE1
تایذ صفش تاضذSMS ٍ دس حالت تواس (text mode) حالت هتٌی GSM حالت هتٌی کاساکتش ّای دس غیش ایي صَست.تایذ یک تشگشدد AT+CGATT=1 Multiplex mode غیش فؼال کشدى
AT+CMGF=1 AT+CSCS=“GSM” AT+CGATT? AT+CIPMUX=0
فؼال هی کٌذ1 . دس ایي حالت کاس ًوی کٌذServer command mode ِتٌظین ت
AT+CIPMODE=0
client بِ عٌَاىGPRS هتصل شذى با ػولکشد APN پیذا کشدى اتصال ِ ٍ پَست تشای ٍسیلT پیذا کشدى اتصال MTN ِهتصل ضذى ت “APN”,” name”,”” ُ ٍسیلِ ی اتصال دٌّذIP ًوایص
AT COMMAND AT+CIPCSGP=1,”internet” AT+CLPORT=“T”,”2020” AT+CSTT=“internet”,””,”” AT+CIPSRIP=1
هتصل ضذى
AT+CIICR
ُ تاص گشداًذerror یا، هاطٍل هحلی (تایذ استفادُ ضَدIP گشفتي
AT+CIFSR
)هی ضَد “CONNECT OK” صثش کٌین تاdomain , IP , port تٌظین .تاص گشداًذُ ضَد “STATE: IP STATUS” :تایذ تاضذ 10
AT+CIPSTART= “T”,”xxx.xxxx.xxx”,”xxxx” AT+CIPSTATUS
www.iranmicro.ir : استفادُ کٌین) هثالctrl+z فشستادى دادُ (اص
AT+CIPSEND
AT+CIPSEND Xxxxxxxxxx(ctrl-z) “SEND OK” GPRS قطغ کشدى اتصال
AT+CIPSHUT
server بِ عٌَاىGPRS هتصل شذى با ػولکشد GPRS پیذا کشدى اتصال “APN”,” name”,”” port ٍ IP ًوایص (0 = USD) پیذا کشدى اتصال ٍ پَست تشسسی ٍضؼیت اتصال
11
AT COMMAND AT+CIPCSGP= 1,”internet”,””,”” AT+CIPSRIP=1 AT+CIPSERVER=1,2020 AT+CIPSTATUS
: استفادُ کٌین) هثالctrl+z فشستادى دادُ (اص
AT+CIPSEND
AT+CIPSEND Xxxxxxxxxx(ctrl-z) “SEND OK” GPRS قطغ کشدى اتصال
AT+CIPSHUT
www.iranmicro.ir
فصل چهارم :شرح پرٍشُ
سخت افسار ٍ عولکرد هذار دسایي قسوت تا ًحَُ اتصاالت آی سی ّا ٍ استثاط آًْا تاّن آضٌا هی ضَین ٍ .سًٍذ اًجام کاس تِ صَست هشحلِ تِ هشحلِ تَضیح دادُ هی ضَد. تخص ّای اصلی هذاس دس ضکل صیش ًطاى دادُ ضذُ است.
12
www.iranmicro.ir
هیکشٍکٌتشلش ٍ ATMEGA16ظیفِ ی پشداصش اطالػات ٍ کٌتشل سیستن سا تش ػْذُ داسد .دسیافت اطالػات هحیط هَسد ًظش هاًٌذ گلخاًِ ٍ کٌتشل اتضاس هَجَد ًیض تش ػْذُ ایي هیکشٍکٌتشلش است. ٍ SIM900ظیفِ ی ایجاد استثاط تیي هذاس ٍ ضثکِ ی GSMسا تش ػْذُ داسد .تا فطشدى کلیذ power key تِ هذت حذٍدا یک ثاًیِ هاطٍل SIM900سٍضي یا خاهَش هی ضَد .تا هیکشٍ کٌتشلش ًیض هی تَاى
SIM900سا
خاهَش یا سٍضي کشد کِ دس ضکل صیش هالحظِ هی کٌین:
13
www.iranmicro.ir تش سٍی تَسد صیش هاطٍل ٍ SIM card ، SIM900آًتي قشاس گشفتِ اًذ.
ایي تشد قاتلیت قشاس گشفتي تش سٍی تشد تَسد سا ًذاسد ،تتاتشایي تشد صیش طشاحی ضذ تا تَسد تاال
) (Bbordتش
سٍی آى قشاس تگیشد ٍ تتَاى اص اهکاًات SIM900تش سٍی تشد تَسد استفادُ ًوَد. اتؼاد ایي تشد تش سٍی ضکل ًطاى دادُ ضذُ است. SIM CARDتشای ضٌاسایی دس ضثکِ تِ کاس هی سٍد کِ تِ ّوشاُ ، SIM900تخص کَچکی اص ضثکِ GSM سا تطکیل هی دّذ. تَسط ایي دٍ تَسد ،هی تَاى هاطٍل SIM900سا دس هذاس ّای دیگش ًیض ساُ اًذاصی ٍ استفادُ ًوَد.
14
www.iranmicro.ir
ٍضؼیت سیستن ًیض تِ ٍسیلِ ی ledای کِ تِ پایِ ی netlightهتصل ضذُ هطخص هی ضَد کِ قثال دس تخص هؼشفی SIM900تَضیح دادُ ضذّ .وچٌیي اگش اص هاطٍل دس هکاى ّایی استفادُ هی ضَد کِ قذست سیگٌال کن است ،هیتَاى اص آًتي ّای تضسگتش ٍ تْتش تِ صَست خاسجی استفادُ ًوَد. 15
www.iranmicro.ir FT232تشای ایجاد استثاط تیي کاهپیَتش ٍ هاطٍل تشای تِ سٍص کشدى تشًاهِ ی هیکشٍکٌتشلش ٍ
ٍ SIM900
ّوچٌیي تست کشدى ػولکشد ٍ خطایاتی استفادُ هی ضَد. اص آًجایی کِ ایي آی سی اص ًَع پکیج SSOPاست ٍ ًوی تَاى تِ طَس هستقین تش سٍی تشد تَسد ًصة ضَد ،تشای استفادُ ی ساحت تش اص آى تش سٍی تشد هقاتل هتصل هی ضَد. تا ایي تشد هی تَاى اص توام اهکاًات FT232تش سٍی تشد تَسد ٍ هَاسد دیگش تِ ساحتی استفادُ ًوَد.
LCDتشای ًوایص ساػت ٍ ػولیات دس حال اجشا تِ کاس هی سٍد. تِ ایي دلیل کِ SIM900اص ٍلتاط استاًذاسدی استفادُ ًوی کٌذ ،تٌاتشایي ٍلتاط آى تِ ٍسیلِ ی آی سی سگَالتَس هتغیش LM317تاهییي هی ضَد .تشای استفادُ ی ساحت تش اص آى تش سٍی تشد تَسد ،اص تَسد صیش استفادُ ضذُ است.
16
www.iranmicro.ir ارسال و دریافت SMSو درخواست از اپراتور هاطٍل SIM900داسای دٍ حالت تشای ّ SMSست : text mode – 1دس ایي حالت هی تَاى 140حشف تا کذ اسکی 8تیتی فشستاد. : PDU mode – 2دس ایي سٍش فطشدُ ساصی اًجام ضذُ ٍ اص آًجا کِ ّش کذ 7تیت داسد دس ًتیجِ هی تَاى تا 160کاساکتش سا دس 140تایت اسسال ًوَد. تشای فشستادى پیام فاسسی ّش کاساکتش دٍ تایت سا اضکال هی کٌذ کِ هی تَاى 70کاساکتش سا اسسال ًوَد. دس ایٌجا هی خَاّین سفتاس قطؼات سا صهاًی کِ هی خَاّین ضاسط تاقیواًذُ سین کاست سا دسخَاست هی کٌین، تشسسی کٌین. اص طشیق گَضی هَتایلی کِ ضواسُ ی آى تشای هاطٍل هؼیي ضذُ یک
smsتا هتي ” “#1111تشای هاطٍل
هی فشستین. تا سسیذى smsتِ SIM900اص طشیق پَست سشیال پیام صیش تِ هیکشٍ کٌتشلش اسسال هی ضَد +CMTI: “SM”,3 تا سسیذى ایي پیام تِ هیکشٍ هطخص هی ضَد کِ یک پیام جذیذ دس خاًِ ی ضواسُ ی 3ی سین کاست رخیشُ ضذُ است کِ اکٌَى تایذ خَاًذُ ضَد کِ تشای ایي کاس هیکشٍ دستَس صیش سا اص طشیق استثاط سشیال تشای SIM900 اسسال هی کٌذ AT+CMGR=3 اکٌَى هاطٍل هتي صیش سا تشای هیکشٍ اسسال هی کٌذ +CMGR: “REC UNREAD”,”+98915xxxxxxx”,”MODOULE ”NO”,”11/06/03,11:36:09+18 #1111
OK ایي پیام ضاهل اطالػاتی اص قثیل صیش است: دستَس خَاًذُ ضذى پیام هَسد ًظش پیام قثال خَاًذُ ًطذُ است ضواسُ ای کِ پیام سا اسسال کشدُ است صهاى سسیذى پیام 17
www.iranmicro.ir کذ کلیذ enter هتي پیام OK اکٌَى ٍظیفِ ی هیکشٍ کٌتشلش دسک ٍ تشسسی هَاسد تاالست .اتتذا ضواسُ ی تلفي فشستٌذُ تشسسی هی ضَد تا اص ضواسُ ی هطخصی تاضذ .سپس هتي پیام تشسسی هی ضَد کِ تا یافتي هتي 1111هطخص هی ضَد دسخَاست اػالم تاقیواًذُ ی اػتثاس اص اپشاتَس ضذُ است .پس هیکشٍ دستَس صیش سا تشای هاطٍل اسسال هی کٌذ . AT+CUSD=1,”*140*1#”,15 ایي دستَس ّواى دستَس دسخَاست ضاسط اص اپشاتَس ایشاًسل است ( .الثتِ هی تَاًین تا دستَس AT+CUSD=0 هاًین .تؼذ اص دسیافت پاسخ ایي دسخَاست سا پایاى دّین ) .اکٌَى تایذ هٌتظش جاب اپشاتَس ب SIM900هتي صیش سا تشای هیکشٍ اسسال هی کٌذ " هتي ضاهل تاسیخ ٍ هیضاى ضاسط ٍ اطالػات دیگس"+CUSD: 0, اص دسٍى هتي ،هیکشٍ اطالػات الصم سا رخیشُ هی کٌذ تا دس هشحلِ ی تؼذ تشای کاستش اسسال ًوایذ .دستَس صیش ایي هتي سا تشای کاستش اسسال هی کٌذ کِ هیکشٍ تِ هاطٍل هی فشستذ )AT+CMGS = " +98915xxxxxxx"(Enter هیکشٍ هٌتظش هیواًذ تا > تاصگشدد >>your message < ctrl-z
سپس هتي سا تشای SIM900اسسال هی کٌذ ٍ سپس تا اسسال کاساکتش هتٌاظش
، (0x1a) ctrl-zهتي اسسال
هی ضَد ٍ دس اًتْا SIM900تؼذ اص اسسال تا هَفقیت پیام ،هتي صیش سا تشای هیکشٍکٌتشلش هی فشستذ AT+CMGS: xxx OK تؼذ اص ایي یک پیام تشای تلفي ّوشاُ کاستش ضاهل هتي هیضاى اػتثاس تاقیواًذُ هی سسذ .
18
www.iranmicro.ir تبادل داده به وسیله ی GPRS تِ ٍسیلِ ی هاطٍل SIM900اهکاى استثاط تا ایٌتشًت اصطشیق ٍ GPRSجَد داسد SIM900 .اطالػات سا اص طشیق پشٍتکل httpاسسال ٍ دسیافت هی کٌذ کِ تشای ایي هٌظَس تِ سشٍس ٍ کالیٌت ًیاص است .دس صَست ٍجَد سشٍس SIM900 ،اص طشیق ٍ GPRSضثکِ ی ایٌتشًت اطالػات سا تشای سشٍس هَسد ًظش اسسال هی کٌذ ٍ اص آى دسیافت هی ًوایذّ .وچٌیي هی تَاى استثاط سا تیي یک هاطٍل SIM900کِ تِ ػٌَاى سشٍس تٌظین ضذُ ٍ دیگشی کِ تِ ػٌَاى کالیٌت تٌظین ضذُ تشقشاس ًوَد. دس ضکل صیش ًحَُ ی ایي استثاطات ًطاى دادُ ضذُ است:
SIM900دس دٍ حالت چٌذ کاستشُ ٍ یک کاستشُ هی تَاًذ کاسکٌذ ) (multiplexالثتِ صهاًی کِ تِ ػٌَاى کالیٌت ػول ًوایذ ٍ دس حالتی کِ تِ ػٌَاى سشٍس ػول کٌذ فقط تِ صَست تکی تٌظین هی ضَد کِ دس هجوَع هاطٍل هی تَاًٌذ تِ یکذیگش هتصل ضًَذ ٍ یکی هی تَاًذ تِ ػٌَاى سشٍس ػول کٌذ.دس صیش ًوًَِ ّایی اص دستَسات تٌظین هاطٍل ٍ اسسال دادُ سا هطاّذُ هی کٌین:
19
8
www.iranmicro.ir ?AT+CGATT +CGATT: 1 OK ”AT+CSTT=”CMNET
تٌظین APN
OK AT+CIICR
آهادُ کشدى استثاط
OK AT+CIFSR
دادى آی پی هحلی
10.78.245.128 ضشٍع اتصال
”AT+CIPSTART=”T”,”116.228.221.51”, “8500 OK CONNECT OK
, CTRL+Z (0x1a) to send.اسسال دادُ تِ سشٍس
AT+CIPSEND > hello T server SEND OK
اطالػات تَسط سشٍس دسیافت ضذ
hello sim900
هتي تاصگطتی اص سشٍس
CLOSED اص ایي طشیق هی تَاى اطالػات سا اص طشیق ضثکِ ی ایٌتشًت تِ ّش جایی هٌتقل کشد ٍ هحیط هَسد ًظش سا کٌتشل ًوَد. ارتباط صوتی تا هتصل کشدى یک گَضی ضاهل هیکشٍفي ٍ تلٌذگَ ٍ هتصل کشدى یک صفحِ کلیذ ،هی تَاى یک تواس صَتی تشقشاس ًوَد. ;ATD+2783xxxx
ضواسُ گیشی
ATDL
ضواسُ گیشی هجذد
ATA
جَاب تِ تواس دسیافتی
ATH
قطغ تواس 20
www.iranmicro.ir برًاهِ ًَیسی . است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
#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 21
www.iranmicro.ir #define FE 4 #endif #ifndef UDRE #define UDRE 5 #endif #ifndef RXC #define RXC 7 #endif #define FRAMING_ERROR (1<
www.iranmicro.ir 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") 23
www.iranmicro.ir --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 ِدس ایي قسوت صهاًی ک
24
www.iranmicro.ir 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); } 25
www.iranmicro.ir دسخَاست آى اجشا،ُ تَسط کاستش تِ هاطٍل فشستادُ ٍ تاصیاتی ضذ#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); } 26
www.iranmicro.ir .ٍقتی دستَس خَاًذى پیام اسسال ضذ تَسط ایي تاتغ پیام خَاًذُ هی ضَد 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(); 27
www.iranmicro.ir 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); 28
www.iranmicro.ir } . کاسّای کٌتشلی سا اًجام هی دّذ،تاتؼی کِ دس صهاى تیکاسی هیکشٍ اص دسیافت پیاهْا 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 29
www.iranmicro.ir 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; 30
www.iranmicro.ir // 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); 31
www.iranmicro.ir // 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(); } 32
ٍقتی پیاهی خَاًذُ ضَد
www.iranmicro.ir 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("!"); } }
33
ٍقتی ّیچ یک اص هَاسد تاال ًثاضذ
www.iranmicro.ir پیَست اطالعات بیشتر از SIM900
34
www.iranmicro.ir
35
www.iranmicro.ir
36
www.iranmicro.ir
37
www.iranmicro.ir هذاس ًوًَِ تشای هٌثغ تغزیِ ی هتغییش تا آی سی ّای lm350 ٍ lm317 Lm350 = 3A max Lm317 = 1.5A max
38
www.iranmicro.ir
هنابع :سایت ّای ایٌتشًتی : 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
39