عصر بخیر
من برنامه یک رشته نوشتم بعد at گذاشتم که 1 ثانیه نشون بده ولی نشد.
من قبلا با همین برنامه قسمت یوزارتش با همین تنظیمات به کامیوتر کانکت شدم .برای rs232 میگم نهsim900
A String * 4[PHP]
A = Waitkey()
Lcd A
Wait 5
[/PHP]
ویرایش توسط haji110 : 12-05-2013 در ساعت 19:39
پس من یک برد براش درست میکنم رو اون نصب میکنم.چون الان رو بردبرد است(البته فقط میکرو)
تموم شد خبرش میدم
سلام..
برای کار با ساعت مازول به مشکل خوردم
با دستور at+cclk? میشه مقدار ساعت رو خوند ولی برای نوشتن مقدار روی ماژول به مشکل خوردم که error میده..
at+cclk="yy/mm/dd,h:m:s+3"
ممنونم
سلام.. ممنونم از پاسختون..
من در صفحه ترمینال بسکام به ماژول اطلاعات میفرستم یعنی اول
at+cclk="yy/mm/dd,hh:mm:ss+3" رو تایپ میکنم و بعد اینتر رو میزنم تا ببینم چی جواب میده که error جواب میده...
خیلی واجبه این موضوع.. ساعت کل دستگاهم مونده رو هوا..
ممنونم
سلام...
مشکل رو فهمیدم برای چی است..
مانند شکل زیر باید وارد کنین
بدین صورت مثلا امروز
AT+CCLK="13/05/27,14:47:10+03"
من اخر دستور بجای 03 میزاشتم 3 خالی..
همین منو 3 ساعت گذاشته بود سر کار..
موفق باشین
سلام
من دارم براش یک برد میسازم یه سوال برام پیش اومده
اینکه tx که از میکرو به rx ا sim میره مستقیم وصلش کنم؟ ماژول ضربه نمیبینه . واسه این میگم که میکرو 5 ولت کارمیکنه ماژول حداکثرش 4.5 است!
سلام دوست عزیز
برای جلو گیری از آسیب دیدن سیم ۹۰۰ دو راه دارید.
۱.تغذیه ی میکرو را ۳.۳ ولت در نظر بگیرید و به سیم ۹۰۰ همون ۴.۵ ولت بدید.
۲.تغذیه میکرو ۵ ولت در نظر بگیرید و برای ارتباط rx , tx از یک مقاومت و زنر ۳.۳ ولتی برای کاهش ولتاژ به ۳.۳ ولت استفاده کنید. که مقاومت در مسیر به صورت سری و زنر به صورت موازی برای هر مسیر ارتباط به طور جداگانه وصل میشوند.
چرا بعضی موقع ها وقتی پیامک ارسال میخواد کنه یهو خاموش میشه ماژول؟
دوم اینکه دستور زیر رو گذاشتم بعد اینکه پیام رو خوند و به برنامه اصلی برگشت پاک کنه ولی چرا این کار رو نمیکنه
Print "AT+CMGDA=" ; Chr(34) ; "DEL ALL" ; Chr(34)
سلام دوست عزیز
دلیل خاموش شدنش شاید به دلیل کمبود جریان باشه.
اگر ماژول را روی text تنظیم نکنید پیام های روی سیم کارت را پاک نمی کنه و همچنین پیامهای اینگلیسی هم دریافت نمیکنه اگر هم دریافت کرد یک سری دد پشت سر همه.
نکته مهم :
بهتر بعد از ارسال هر دستوری جوابش و از ماژول حتما دریافت کنید.
اینم برنامش درستم کار میکنه.
[PHP]
char at_cmgda[18]={'A','T','+','C','M','G','D','A','=','"','D','E', 'L',' ','A','L','L','"'};
char Enter=13;
printf("AT+CMGF=1%c",Enter);
for(i=0;i<19;i++)a[i]=getchar();
delay_ms(500);
printf("%s",at_cmgda);
for(x=0;x<26;x++)a[x]=getchar();
putchar(Enter);
[/PHP]
برنامه اصلی من به صورت زیر هست و بعد اینکه وقفه سریال اومد میره پیامک رو میخونه
و اگه ماژول خاموش شد میره روشنش میکنه
حالا اگه ماژول شبکه رو پیدا نکرده باشه چه طور میشه برنامه رو طوری نوشت که ماژول رو خاموش کرد ؟
یعنی میخوام هر چند دقیقه یک بار کد وضعیت شبکه رو بفرسته و جوابش رو بگیره
AT+CREG? این کد وضعیت شبکه هست
Do
If Ucsra.7 = 1 Then
Gosub Get_data
Else
End If
If Pind.7 = 0 Then
Gosub Power_gsm
Else
End If
loop
سلام
از این دستور هم میتوانید استفاده کنید.
عدد اول قدرت سیگنال را نشان میدهد و بین ۰ تا ۳۲ تغییر میکند اگر صفر بود یعنی شبکه را پیدا نکرده است.
At+csq
+csq:14,0
ok
مهندس جان وقتی که تایمر رو فعال کنم هر 7 ثانیه سریز میشه و میرم تو زیربرنامه سرریز تایمر یه متغیر رو زیاد میکنم و وقتی متغیر مثلا 100 شد باید چک کنم سیگنال به ماژول میرسه یا نه؛ مشکلی که دارم این هست وقتی میره به زیر برنامه تایمر نمیتونه وقفه سریال رو ببینه
این هم برنامه من:
Main:
If Ucsra.7 = 1 Then
Stop Timer1
Gosub Get_dataStart Timer1
Else
End If
If Pind.7 = 0 Then
Stop Timer1
Gosub Power_gsmStart Timer1
Else
End If
Goto Main
End
زیر برنامه تایمر
Ovf1:
Stop Timer1
Reset Timer1
Incr Ee
If Ee = 100 Then
Print "AT+CREG?"
Else
End If
Start Timer1
Return
موندم برنامه رو چه جور تغییر بدم که مثلا 100 بار این شرط رو چک کنه
If Ucsra.7 = 1 Then
Stop Timer1
Gosub Get_dataو یک بار بره وضعیت سیگنال رو بررسی کنه
Start Timer1
Else
End If
از حلقه های فور نکست هم استفاده کردم ولی جواب نگرفتم
سلام
من خیی وقت با بسکام کار نکردم.
شاید بخاطر این برنامتون کار نده چون داخل یک وقفه منتظره وقفه دیگه هستید.
بهترین کار اینکه شما شرطی در تابع اصلیتان قرار دهید که تا وقتی مثلا متغیر زمانتان ۱۰۰ تا شد سیگنال را تست کند و دوباره بر گردد اول تابع و دیگر نیازی نیست از وقفه یو زترت هم استفاده کنید و از وفقط تایمر هم فقط به عنوان اضافه کردن یک واحد به متغیر زمانتون استفاده کنید و داخلش هیچی ننویسید.