مهندس باید حالت اکو رو غیر فعال کنی تا دستورات دوباره برات ارسال نشه .
سلام
من یک sim900 رو خریدم و سخت افزارش رو بستم
الان با کلیدی که گذاشتم روشن و خاموش میشه
با سریال تا حالا کار نکردم
کمک کنید که چه کار باید کنم الان؟
سلام مرسی
دقیقا نمیدونم وقتی پیامک میدم چی میشه و ماژول به میکرو چی میفرسته و چه جور میشه وقتی پیامک اومد میکرو بره متن پیامک رو بخونه
با میکرو مگا 16 و بسکام
اگه یه برنامه ساده مثلا با رسیدن یه پیام و یه عدد خاص یه پین روشن بشه رو بتونید برام بذارید ممنون میشم
پس شما در سخت افزار مشکلی ندارین و مشکل شما در نوشتن برنامست...
روش های مختلفی برای انجام این کاری که شما میخواین وجود داره، ولی به نظر من بهترین روش استفاده از وقفه میکروه. به این صورت که پایه RI ماژول (این پایه با اومدن اسمس چند لحظه صفر میشه) رو به پایه مربوط به وقفه میکرو وصل کنی و در زیربرنامه مربوط به به وقفه، دستورات مربوط به خوندن اسمس رو بنویسی. میتونی از زیربرنامه زیر استفاده کنی:
Print "AT+CMGR=1"
Do
Key_input = Inkey()
If Chr(key_input) = "+" Then Exit Do
If Chr(key_input) = "O" Then Goto Etmam
Loop
Do
Key_input = Inkey()
If Key_input = 10 Then Exit Do
Response = Response + Chr(key_input)
Loop
Do
Key_input = Inkey()
If Key_input = 10 Then Exit Do
Matn = Matn + Chr(key_input)
Loop
Etmam:
Shomare = Mid(response , 21 , 13)
متغیر Shomare شماره ای که برای ماژول اسمس فرستاده رو مشخص میکنه و متغیر Matn متن اسمس رو جدا میکنه. حالا تو دیگه شماره و متن اسمس رو داری و میتونی با مقدار موردنظر خودت مقایسشون کنی و در نتیجه پینی از میکرو رو روشن یا خاموش کنی...
راستی به مطلب پست 653# هم توجه داشته باش.
یا علی...
مرسی از راهنمایی هات
این برنامه رو نوشتم که فعلا با اومدن پیامک بره به وقفه ولی نمیره
فقط وقتی تماس میگیرم میکرو به زیربرنامه وقفه میره
$regfile = "m16def.dat"
$crystal = 8000000
'.....define usart.........
Ucsra = &B00000000
Ucsrb = &B00011000
Ucsrc = &B10000110
$baud = 9600
'...........................
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
'Dim Seco As Byte : Dim Mine As Byte : Dim Hour As Byte
Dim A As Word , B As Word , C As Word , W As Word , Z As Byte , Y_1 As Byte
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''
Mcusr = &H80
Mcusr = &H80
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''
Enable Interrupts
Config Int0 = Falling
On Int0 Interrupt
Enable Int0
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''
Config Portd.4 = Output
Config Portd.7 = Input
Cursor Off
Cls
Locate 1 , 1
Lcd " Hello "
Waitms 500
If Pind.7 = 0 Then
Set Portd.4
Locate 1 , 1
Lcd "Set Portd.4 "
Waitms 1400
Reset Portd.4
Locate 1 , 1
Lcd "Reset Portd.4 "
Waitms 500
Else
Cls
Locate 1 , 1
Lcd " gsm on "
Waitms 500
End If
Main:
Cls
Locate 1 , 1
Lcd " wait "
Do
Cls
Locate 1 , 1
Lcd " wait "
Waitms 100
Loop
Goto Main
End
Interrupt:
Cls
Locate 1 , 1
Lcd " sms "
Waitms 900
Return
من با وقفه خود پورت سریال میفهمم اس ام اس اومده :
If Ucsra.7 = 1 Then
Gosub Get_data
مهندس میشه راجع به اینا توضیح بدی ؟
من تو کتاب کاهه این نوع معرفی رو پیدا نکردم.
بر چه اساس بیت ها رو صفر و یک کردی ؟
از تو برنامه یکی از بچه ها پیدا کردم اینجوری تنظیم کرده بود
من با این کدی که گفتی نتیجه گرفتم مرسی از کمکی که کردی
این برنامه رو نوشتم ولی چون ال سی دی م کوچیکه زمان و تاریخ رو نشون میده و متن پیام نمیاد
چه جوری باید اینا رو جدا جدا کنم تو این برنامه؟
مثلا متن رو تو یه متغیر بریزم شماره رو تو یه متغیر دیگه و ...
$regfile = "m16def.dat"
$crystal = 8000000
'.....define usart.........
Ucsra = &B00000000
Ucsrb = &B00011000
Ucsrc = &B10000110
$baud = 9600
'...........................
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
Dim B As Byte
Dim Sms As String * 250 : Sms = ""
Mcusr = &H80
Mcusr = &H80
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''
Enable Interrupts
Config Int0 = Falling
On Int0 Interrupt
Enable Int0
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''
Config Portd.4 = Output
Config Portd.7 = Input
Cursor Off
Cls
Locate 1 , 1
Lcd " Hello "
Waitms 500
If Pind.7 = 0 Then
Set Portd.4
Locate 1 , 1
Lcd "Set Portd.4 "
Waitms 1400
Reset Portd.4
Locate 1 , 1
Lcd "Reset Portd.4 "
Waitms 500
Else
Cls
Locate 1 , 1
Lcd " gsm on "
Waitms 500
End If
Wait 4
Print "AT"
Waitms 400
Print "AT"
Waitms 400
Print "ATE0"
Waitms 500
Print "ATE0"
Waitms 500
Print "AT+CMGF=1"
Waitms 500
'Print "AT+CMGDA=" ; Chr(34) ; "DEL ALL" ; Chr(34)
'Waitms 600
Main:
Cls
Locate 1 , 1
Lcd " wait "
Waitms 900
Do
Print "AT+CMGR=1"
Sms = ""
Do
B = Inkey()
Select Case B
Case 13:
If Sms <> "" Then Exit Do
Case 10:
If Sms <> "" Then Exit Do
Case Else
Sms = Sms + Chr(b)
End Select
Loop
Home
Lcd Sms
Loop
Goto Main
End
من یه آی سی max232 گرفتم که با کامپیوتر به ماژول وصل شم و تو هایپر ترمینال برم ببینم چه طور متن و اطلاعات پیامک میاد
اول اینکه تو هایپر ترمینال هیچی نمیتونم تایپ کنم
دوم اینکه ماژول رو وصل نکردم چون ولتاژ پایه های max232 که باید به ماژول بدم 5 ولت و بیشتر هم هست و ترسیدم به ماژول صدمه بزنه
شما مدار مطمئنی سراغ دارید
من رو راهنمایی کنید تا نزدم ماژول رو نسوزوندم
اول: اینکه تو هایپر ترمینال نمیتونی چیزی تایپ کنی دلیلش این موارد میتونه باشه:
1- تغذیه آی سی max232 کمه (نباید از 5 ولت کمتر باشه)
2- ماژولت خاموشه
3- مدار مربوط به MAX232 رو اشتباه بستی.
4- GND های MAX232 و سایر GNDها باید بهم وصل باشن
5- باید با حروف بزرگ تایپ کنی (Caps Lock روشن باشه)
دوم: ولتاژ آی سی MAX232 رو کاملا از مدار مربوط به ماژول جدا کن. یعنی به ماژول ولتاژ 4ولت بده و به MAX232 با یک آداپتور دیگه ولتاژ 5ولت بده. فقط یادت باشه که GNDها (پایه های منفی) مربوط به ماژول و MAX232 رو به هم وصل کنی.
سوم: دیتاشیت MAX232 رو دانلود کن و مدار MAX232 رو از روی دیتاشیت ببند. اونجا خودش قشنگ شکل مدارشو کشیده...
یاعلی...
ویرایش توسط sobhan537 : 07-04-2013 در ساعت 12:10
تو هایپر ترمینال موفق به تایپ شدم
اصلا ماژول رو به max232 وصل نکردم چون پایه های max232 که باید به ماژول میدادم ولتاژهای بالا حدود 5 و 8 ولت داره، ترسیدم به ماژول آسیب برسه
تو دیتاشیت که نگاه کردم فقط شماتیک آی سی هست و پایه هاش، مداری ندیدم که
شما از چه مداری برای ارتباط ماژول با max232 استفاده کردید؟
با آی سی ft232 و پورت usb هم میشه گویا و راحت تره
برم سراغ ft232 یعنی؟
با سلام ...
من مدار را بستم اما مشکلی که دارم اینه که وقتی میکرو داخل سوکت نباشه .. netlight درست میشه و ماژول درست کار میکنه و خط بوق میخوره ... اما وقتی میکرو را داخل سوکت میزارم ... همجنان چشمک زن باقی میمونه و هر جند ثانیه 1ثانیه روشن ثابت میمونه بعدش دوباره چشمک میزنه ... و خط هم خاموش .
مشکل از کجا میتونه باشه ؟
من هنوز برنامه ای داخل میکرو نریختم .. فعلا دارم بورد را تست میکنم /
کار خوبی کردی که مستقیم وصل نکردی. وگرنه امکان داشت ماژولت بسوزه. قبلا تو پست 614# توضیح دادم. شماتیک مدار هم اونجا هست. (به جای میکرو؛ به MAX232 وصل کن.)
آی سی FT232 یه ای سی smd هست و لحیم کردنش ازیت میکنه. قیمتش هم 10هزار تومانه. به نظر من اگه از همین پورت سریال استفاده کنی بهتره...
مهندس جان قبل از اینکه سوالهای مربوط به سخت افزار رو بپرسی، یه جستجو تویه همین تاپیک بزن. مطمئن باش جوابتو پیدا میکنی. چون قبلا همه این سوالها اینجا پرسیده شده.
یا علی...
سلام
این مشکل هم قبلا برای من پیش اومد. دلیلش هم این بود که نویزی که ماژول ایجاد میکرد باعث میشد که میکرو قاطی کنه و دستورات رو به خوبی اجرا نکنه. برای حلش یه خازن 1000uf بین پایه های GND و VCC میکرو قرار دادم که درست شد. اما شما میگی فعلا برنامه ای داخل میکرو نریختی! مطمئنید؟ یه بار دیگه محتویات داخل میکرو رو پاک کنید شاید درست شد.
اگه مشکلت حل شد؛ راهکار رو همینجا بگو تا ما هم استفاده کنیم...
آخ مشکل من ریست شدن میکرو نیست .. بلکه شبکه پیدا نکردن سیم 900 در حالتی که میکرو در داخل سوکته هست .
من میکرو داخل سوکت نباشه شبمه را پیدا میکنه .
مورد بعدی ارتباط با rs232 هست . میکرو میتونه به کامپیوتر وصل بشه اما سیم وصل نمیشه ... و هر چی هایپر را باز میکنم پیغام خطا در کانکشن را میده و دیسکانکت میشه .
به نظرتون مشکل از کجا میتونه باشه ؟
با تشکر
یه مورد دیگه
من این ماژول را از روی یک بورد دیگه برداشتم سیم900 آ هست . الان اینجوری میشه که وقتی روشنش میکنم بعد از چند بار چشمک زدن چشمک 3 ثانیه یک بار میشه اما بعد از 5-6ثانیه دوباره چشمک زن میشه !
به نظرتون مشکل از ماژول هست و خراب شده ؟
با تشکر
حالا فهمیدم مشکلت از چیه. به احتمال خیلی زیاد مشکل تو از آنتن دهی ماژوله. شما خودت میگی درحالت کلی وقتی روشنش میکنم بعد از چند بار چشمک زدن چشمک 3 ثانیه یک بار میشه اما بعد از 5-6ثانیه دوباره چشمک زن میشه! پس شبکه پیدا نکردن ماژول هیچ ربطی به قرار دادن یا ندادن میکرو در مدار نداره. آنتنت مشکل داره؛ چه میکرو رو قرار بدی و چه قرار ندی، ماژول شبکه رو درست حسابی پیدا نمیکنه و بعد از 5-6ثانیه دوباره تندتند چشمک میزنه.
برای حل مشکل آنتن دهی باید این کارها رو بکنی:
1- ماژول sim900a آپدیت شده؟ اگه آپدیت نشده آپدیتش کن. چون اگه آپدیت نشده باشه، اصلا نمیتونه شبکه رو پیدا کنه.
2- آنتن به ماژول وصل کردی؟ اگه وصل نکردی، یه آنتن مخصوص gsm بخر و پایه وسط اونو به پایه 60 ماژول و قسمت فلزی دور اونو به پایه های 59 , 61 و gnd ماژول وصل کن.
یا علی...
با سلام ...
ماژول را سری قبلی آپدیت کردم .
آنتن هم بهش وصله .
مشکل اینه که بعضی وقت ها کار میده و درست چشمک میزنه بعضی وقت ها نه !
یه موردی هم که هست اینه که این ماژول مثل بقیه وقتی بهش زنگ میزنی -- ویز ویز نمیکنه !
ولی بوق میخوره .
حالا با این مورد فعلا کنار میام .
مورد بعدی ارتباط با Rs232 هست . من میکرو را که میزارم و یک برنامه داخلش گذاشتم اطالاعات داخل هایپر ترمینال میاد اما با ماژول سیم نمی تونم ارتباط برقرار کنم .
من همون rx tx را به میکرو زدم از اونجا هم که میره به آی سی max232
مشکل به نظرتون کجاست ؟
با تشکر