خب دادا تا اینجا نتیجه گرفتیم که هر دو مبدلت سالم هستن. و یادت باشه که حتما باید دوتاشو بهم وصل کنی و بعدش وصل کنی به ماژول. حالا در طرف ماژول دیود زنر و مقاومت هم گذاشتی ولی بازم جواب نمی گیری! درسته؟
شاید این وسط چون ما دوتا ماکس داریم اینا باهم خوب مچ نمیشن! اصلا نکنه وقتیکه داری RS232 to ttl رو وصل می کنی به USB to COM باید جای پایه های RXD و TXD رو برعکس بزنی؟ اینم تست کردی؟ تو که همه کار کردی این یکیم تست کن دادا!
یعنی بیا با سیم با سیم از RXD ماژول RS232 to TTl وصل کن به TXD برد USB to COm و برعکس ، هرچند که چشم اب نمی خوره که جواب بده ولی بازم یه تستی بکن.
اگرم جواب نداد که این مبدل هرو بذار کنار و برو سراغ همون ft232 که کهرم جان فایل هاشو ضمیمه کرده.
.
درست شد.جواب داد .ولی من موندم چرا؟
من پایه rxdسیم 900 رو وصل کردم به پایه rx تبدیل . و جواب داد .همینجوری وصل کردم .چرا؟
من همش مواطب این بودم ک که اینا رو جابه جا نزنم.
سلام مرتضی جان . قبل اینکه اینو بخونم همینجوری شانسی RX و TX رو برعکس زدم. اونم تنها مبتنی بر این فلسفه که دیوانگی گاهی دروازه بهشت میشود .وجواب داد .ولی نمیفهمم چرا. این چیزیم که در بالا گفتی دیگه نیازی بهش نیست .ولی احتمالا ریشه اش همون باشه که گفتی. چون دوتا MAX خوردن تو هم .یه ایراداتی پیش اومده و....
نمیدونم .تونستی به نتیجه ای برسی بهم بگو . ما فعلا بریمسراغ قسمتهای دیگه که وقت اندک است . مطمینا باز به مشکلاتی خواهم خورد . امیدوارم باز کمکم کنید .خیلی ممنونتم . داستان حسن کچل و ماؤول سحر امیز به قسمت شادی بخش رسید .اشتباهی درست شد .
ایول...خدا رو شکر
شاید مثلآ منظورشون از اسمایی که رو تبدیله نوشتن،اینه که به اون پایه ها قراره وصل شن..نه چیزی که خودشون هستن....
خوب مبارکه..دیگه بریم سر بحث شیرین برنامه نویسی.
الا اون دستور AT+IPR=9600 رو بزن تا BAUD RATE ات ثابت بشه..بعدش دیگه میتونی هم با حروف بزرگ بنویسی،هم کوچیک..
موفق باشی
من همیشه توی پروژه هام از این دیوونگی ها می کنم!
وقتائی که مثل حالت شما پیش میاد و دیگه عقلم به جائی قد نمیده میام ناممکن هارو چک می کنم! ایندفعه هم همون چیزی که من گفتم دیگه! پایه هارو جابجا وصل کردن. منتهی شما از اول ماژول این کارو کردی من گفتم که از وسط ماژول این کارو بکن.
حالا وقت کردی و اگه نترسیدی که همینم از دست بدی اون روشم تست کن.
در هر حال خدارو شکر ، دنیای الکترونیکه دیگه!
.
سلام .آقا ما یه اشتباهی کردیم .جوونی کردیم،جاهلی کردیم اومدیم سراغ این ادوات زبون نفهم .از چاله sim 900 نیومده بیرون افتادیم تو چاه میکرو .منو چه به avr .با کلی نذر و نیاز و کورمال کورمال یه برنامه نوشتیم که به احتمال قریب به شدید ایراد خواهد داشت.
و اما بعد....
سرتون و درد نیارم . میرسیم به پروگرم کردن .و حسن کچل رسید به خوان هفتم یعنی فیوزبیت (میدونم این تایپیک جای این بحث نیس ولی بچه ها دورهمی یه جوابی هم بدین به ما ثوابه و هر کس که میادسراغ sim900 به این قسمتهای زشت کار هم میرسه دیگه پس واسه بعدی ها هم مفید خواهد بود.انشاا...) اول اینکه از کریستال خارجی که استفاده باید بکنم باید چند باشه ؟یه 8 مگا دارم یدونه 16مگا.کدوم بهتره .(کاش میشد کریستال ها رو هم سری و موازی کرد و به ترکیبات بیشتری رسید) .خودم دلم بیشتر به 16 گواه میده .چند جا خوندم که اگه درست فیوزبیت ها تنظیم نشه.میکرو میسوزه ،قفل میشه و...از اونجا که میکرو من smd هست و رو برده .و اصلا طاقت سوختن ندارم باز.(تو مناقشه من و ماژول جونم تموم شده ویه خونه مونده.یه گوله بهم بخوره مرده ام)
گفتم قبل از هر کاری با شما که از نزدیک در جریان مناققشات من و پروژه ام هستین بپرسم.پروگرامرم هم یه stk200-300 سر هم کردم و نرم افزارم کدویژن هست .الان فیوزبیت ها رو هم این ریختی میخوام بذارم .
Cksel0….3 =1111, ckopt=1,jtagen=1,spien=0,eesave=1,sut0=?,sut1=?(پیشنهاد شده sut0=0 و sut1=1 )بقیه فیوزبیت ها هم مهمند؟bootloader اینا رو هم باید کاری کرد؟ و اینکه برنامه من کلیتش این تیپیه که یه رمز تو حافطه eeprom داره که با sms ارسالی اگه رمز درست بود و بعدش مثلا عدد یک فرستاده شد رله یک . اگه عدد دو فرستاده شد رله 2 و.... فعال بشه و میکرو به lcd وصله و sim900و رله و...ودیگرهیچ . atmega32هم هست .خازن هم دوتا 22 پیکو گذاشتم واسه کریستال .شماتیک تقریبیش تو پیوسته.
و برای شبیه سازی پروتئوس هم فایلی که پیوست شده رو سرهم کردم.که گویا باید رو compim شماره پورت رو که ماژول بهش وصله رو تنطیم کنیم .من کردم نشد.(البته زیاد کلنجار نرفتم باهاش).جایی خوندم که باید با نرم افزار های پورت مجازی مثل Virtual Serial Ports Emulator که زوج پورت میسازن استفاده کنیم و تو هایپرترمینال دستی به زوج پورت مجازی بفرستیم و ....شبیه سازی بشه. یعنی نمیشه پورت com واقعی وصل بشه به پروتئوس؟ و ماژول واقعی با پورت com واقعی وصل بشه به میکروی مجازی تو پروتئوس؟؟؟؟؟اساتید که کار کردن به داد برسند .
در پایان از اینکه فیوز بیت هارو اینجا مطرح کردم و مزاح و داستان گفتم و طولانی شد ببخشید .(سوالام جمع شده بود .)
امیدوارم مثل همیشه راهنماییم کنین .
دادا اولآ که لازم نیست کریستال خارجی استفاده کنی...
مگا 8 یا 16 هم که بستگی به حجم برنامت داره و تعداد پایه های مورد نیاز برای ورودی و خروجیت..و من فکر میکنم مگا 8 هم کارتو راه بندازه..پس با هرکدوم که راحت تری...
اگه فیوزبیت های قفل کردن رو تیک بزنی به مشکل میخوری..در غیر اینصورت مشکلی پیش نمیاد و با گذاشتن کریستال خارجی میشه میکرو رو به حالت اولیه برگردوند...
فرکانس کاریت رو هم که باید بسته به Baud Rate ات تو ارتباط سریال مشخص کنی...ولی به نظر من از کریستال خارجی استفاده نکن.
اگه از پورت های 1تا4 پورت سریال استفاده کنی،میتونی با پروتئوس بخونیشون...
یه مدته نبودی،سوالات گیر کرده بودنا...اومدی خودتو خلاص کردی رفیق:د
موفق باشی...
سلام دادو
به زرس (یا ضرس یا ذرث یا ...) قاطع میتونم بگم هیچی نفهمیدم چی گفتی جز تیکه ششم.
2.حجم؟؟!!!برنامه مگه طول و عرض و ارتفاع داره ضرب کنیم حجم بدست بیاد.برنامه من حدودا 400 خطه و در حال تکامل که بیشتر هم میشه و تا جای ممکن هم از توابع استفاده کردم .وگرنه میرفت رو هزارن خط.
7تا خروجی lcd داره .سه تا خروجی رله .دوتا هم rx .tx هم که وصله به sim900 .پروتئوسشم که پیوست کردم .
3.تیک قفل نمیزنم مگه مرض دارم .میگن اشتباه کنی خودش قفل میشه .
4.داداش Baud Rate خب 9600 هس دیگه .چرا پیچیده اش میکنی .واسه 9600خب چه کریستالی بذارم .همین آقا مرتضی یه جایی گفته بود که تو ارتباط سریال برای دقت باید کریستال خارجی استفاده کرد . داخلی دقیق نیست و...و یه سری فرمول که خطا صفر بشه و.. که سعی کردم ازش سر در نیارم.
5.این یعنی چی.یعنی شماره چورت باید 1تا 4 باشه؟ شماره منظور همونه که تو dvice manager رو پورت مینویسه com 1 یا....خب ایتکه مساله بغرنجی نیس . میریم تو تنظیمات پورت شماره اش رو میکنیم یک یا دو .بعد ریست میکنیم درست میشه .
رو compim پروتئوس دوتا کلیک کنی تنظیماتش میاد .قربون قدت یه نگاه بنداز ببین درسته؟
6.چاکرتم.تا این پروژه تموم نشه از خلاصی خبری نیس . این خلاصیا زود گذرند نباید بهشون دل بست .
با نهایت احترام به دوست خوبم crz_boy باید بگم که استفاده از کریستال داخلی میکروکنترلرها زیادتوصیه نمیشه ، مخصوا در زمان استفاده از ارتباط RS232 و بکارگیری میکروکنترلر در محیط های پر نویز.
بنابراین قویا پیشنهاد می کنم که از کریستال خارجی استفاده کنید که بهترین مقدار برای کار شما می تونه کریستال 7.3728 یا 11.0592 مگاهرتز باشه.
میشه دادا ، قطعه ی COMPIM در پروتیوس درواقع پورت کام حقیقی هست. شما این قطعه رو وصل کن یه میکرو و بعد روش دوبار کلیک کن و شماره ی پورتش رو با شماره پورت مبدل یکی کن. اونوقت میکروی داخل پروتیوس هرچی که بفرسته روی COMPIM دقیقا همون میاد روی مبدل.یعنی نمیشه پورت com واقعی وصل بشه به پروتئوس؟ و ماژول واقعی با پورت com واقعی وصل بشه به میکروی مجازی تو پروتئوس؟؟؟؟؟ا
فیوزبیت های مهم برای شما اینا هستن :
CKSEL0 : 1
CKSEL1 : 1
CKSEL2 : 1
CKSEL3 : 1
jtagen : 1
بقیه ی فیوزبیت هارو بذارید درحالت پیشفرض بمونن.
.
با سلام
با کسب اجازه از اساتید محترم
من با نظر جناب مهندس رحیمی موافقم از کریستال خارجی استفاده بشه خیلی بهتر ه چون من در پروزه sim900 از کریستال خارجی 8 و باود ریت 9600 استفاده کردم الان مشکلی نداره با توجه به اینکه در محیط بسیار نویز دار و در دو سه متری فرستنده موج متوسط پر قدرت 500 کیلو واتی هستش
استفاده از کریستال خارجی همیشه بهترین گزینه برای کلاک میکروکنترلرهاست.
در ارتباط سریال بهتره که فرکانس کریستال مضرب صحیحی از مقدار باودریت باشه. استفاده از کریستال 8 مگ و 16 مگ در باودریت 9600 ایجاد %0.2 خطا می کنه که تقریبا قابل اغماضه.
بنابراین همونطوریکه جناب صفوی گفتن میشه از کریستال 8 مگ و 16 مگ هم استفاده کرد. که از بین این دوتا ، 8 مگ پیشنهاد میشه.
یه توضیحی هم راجع به فیوزبیت ckopt بدم. این فیوزبیت دو کار انجام میده :
1. ایجاد رنج فرکانسی گسترده تر برای کلاک میکرو که مخصوصا در محیط های پر نویز می تونه مفید باشه.
2. استفاده از پالس موجود بر روی پایه ی xtal2 میکرو برای درایو کردن یک مدار ثانویه.
البته باید توجه داشته باشید که برنامه ریزی این فیوزبیت باعث افزایش مصرف جریان میکروکنترلر میشه.
درکل در انجام این پروژه هیچ نیازی به برنامه ریزی کردن این فیوزبیت نیست. بنابراین مقدارش میشه ==> ckopt : 1
.
دادا مرتضی خو چون من تاحالا تو محیط های پر نویز کار نکردم،اینو نمیدونستم و تا حالا با کریستال داخلی مشکلی نداشتم...ولی مرسی که گفتی...منم یاد میگیرم خو...
کوروش جان خو همو تعداد خط برنامه و استفاده از هر دستوری،1مقدار حجم داره(حجم حافظه ای رفیق)...و همی حجم برنامه باعث میشه که میکرو رو ارتقاع بدی...راحت ترین راه چک کردن اینکه تو میکروت جا میشه یا نه اینه که تو پروتئوس برنامه رو بزنی رو میکرو،اگه جا نشد،برنامه پیغام میده خودش..هرچند راه های دیگری هم هست..از جمله اینکه تو prog isp خودش حجمشو نشون میده بت...
فک کنم تو مگا 8 جا میشه...پس هر کدوم رو که راحت تری انتخاب کن...
در مورد فیوزبیت ها هم که دادا مرتضی خیلی بهتر ا من بلده و راهنمایی هم کرد..
واسه درصد خطا تو baud rate هم که code wizard کارتو راحت کرده...فرکانس رو که انتخاب میکنی،با سرعت baud rate خودش درصد خطا رو بت میگه و لازم نیست دیگه خودت حساب کنی...
در مورد شبیه سازی پورت سریال تو پروتئوس هم که دادا مرتضی استاده مان...توضیحات تکمیلی تر رو از ایشون بخواه...
سلام
آقا من از sim900جواب گرفتم و میخوام الان شماره تماس گیرنده ( فردی که smsمیده ) و پیامی که اومده را روی lcd نمایش بدم از برنامه زیر استفاده کردم ولی فقط پیامو میتونم نشون بدم خیلی تغییر تو برنامه هم ایجاد کردم ولی فقط پیامو نشون میده میشه یک برنامه به من معرفی کنین که بتون شماره را هم نمایش بدم ممنون
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 9600
'~~~~~~~~~~~~~~~~~~~~~~~~~~ Configurations ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.1 , Rs = Portb.0
Cursor Off
Enable Interrupts
Enable Urxc
On Urxc Vaghfe
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Variable ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Dim B As Byte
Dim C As Byte
Dim Sms As String * 250 : Sms = ""
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ initionaliz ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Cls
Cursor Off
Home
Lcd "Get SMS..."
Wait 3
Cls
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Main program ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Do
If Sms = "+CMTI:" Then Print "AT+CMGR=1"
If Sms = "+CMGR:" Then C = 1
If C = 3 Then
Cls
Lcd Sms
Wait 10
Sms = ""
C = 0
Print "AT+CMGD=1"
End If
Loop
End
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vaghfe ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Vaghfe:
B = Udr
If B = 13 Then
B = 10
If C = 2 Then C = 3
If C = 1 Then C = 2
If C <> 3 Then Sms = ""
End If
If B <> 10 Then Sms = Sms + Chr(b)
Return
سلام وخسته نباشید
میخواستم بدونم برای اینکه با ارسال اس ام اس به ماژول sim 900 بتونیم یک وسیله برقی رو روشن یا خاموش کنیم (مثلا با ارسال کلمه on وسیله روشن بشه) چه تغییراتی باید تو برنامه ای که مهندس صفامنش گذاشتن ایجاد بشه؟
خوب رفیق کلآ سیستم برنامه ی شما با برنامه ی ایشون میفرقه...
بهتره اول برنامه ی ایشون رو بفهمین،بعد تغییرات مورد نیازتون رو خودتون انجام بدین..یام 1برنامه ی جدید بنویسین...
سیستم کلی رو هم توضیح میدم:
بهتره ابتدا AT+CNMI=2,1,0,1,0 رو یکبار وارد کنی تا وقتی sms جدید اومد،خودش نشون بده...بعد با توجه به کدهایی که موقع رسیدن sms میاد،متوجه میشی و متن sms رو میخونی.بعدشم که حرف به حرف مقایسه میکنی...
بقیه شو دیگه باید خودت زحمتشو بکشی..
خوب این برنامه مگه برای ارسال و دریافت sms نیست؟من فقط میخوام با یک sms مشخص که به ماژول میفرستم ، ماژول و میکرو sms رو درک کنه و بعدش مثلا یک led رو روشن یا خاموش بکنه.....یعنی کلا هیچ شباهتی با برنامه ی ایشون نداره؟اگه لطف کنین بیشتر توضیح بدین ممنون میشم چون من تازه کارم....مرسی
با سلام
اینجوری من شماره را پیدا میکنم
n = Instr(s , "+98" )
no_mobile = Mid(s , n , 13
s پیام است که با دستور instr اولین حرف از +98 که + است را مشخص میکنه که چندمین حرف از متن پیام هست بعد با دستور mid از + بطول 13 حرف جدا میکنه و در متغییر رشته ای no_mobile که همون شماره موبایل هستش ...من اینکار کردم و جواب گرفتم
ویرایش توسط safavism : 27-06-2012 در ساعت 10:14
رفیق برا دریافت و ارسال هست ولی کارش با کار تو کلآ میفرقه..به همی خاطر باید 1عالمه از برنامه رو تغییر بدی...
اگه میخوای یاد بگیری،بهترین کار اینه که مدارو که بستی،شروع کنی به نوشتن برنامه و هرجا اشکال داشتی،از این برنامه کمک بگیری...یام اول این برنامه رو بخونی،بعدش خودت برنامشو بنویسی...اگه ام که نمیخوای یاد بگیری،بحثش جداس...
اگه برنامه رو بنویسی،هرجا که مشکل داشتی،بچه ها بت کمک میکنن...
سلام میبینم که یکی دونفری هم پیدا شدن که از ما تازه کار تر باشن .از خدا براتون صبر جزیل ارزومندم .کارم به انجام برسه از اول تا اخرش در خدمتتون هستم و از هر کمکی بتونم میکنم.crz_boy که من از این به بعد صدات میکنم سباستین .(اگه دوست نداشتی بگو یه چیز دیگه بگم) .با اون موردی که شما راهنمایی کردی بنظرم نمیشد ایراد و پیدا کرد .من یه برنامه ساده نوشتم که از پورت یه چیزی رو بگیره و رو ال سی دی نشون بده . ولی مثل همیشه هرچی سنگه ماله پای ماست . رو ال سی دی یونانی مینوشت . مراحل هر کاری که کردم رو مبسوط نوشتم .با کدها و پروت.وس و.... پیوست شده .نمیدونم ایراد از چیه .اگه دوستان یه برنامه ساده دارند یا هرچی لطفا فایل هگز یا.... بذارند من باهاش یه تستی بکنم ببینم اصلا شاید شبیه سازی جواب نمیده یا مبدل پورتم ایراد داره و یا.... بشه یه گلی به سرم بگیرم .شدیدا وقتم کمه . کمک . برنامه هم این بود .
Char rx[255];
Char i=0;
Char data_r;
data_r=UDR;
rx[i]= data_r;
i++;
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts(rx);
delay_ms(300);
i=0;