سلام آنتن وصل کردم ولی زیاد بهش اطمینان نبود حالا دوباره نگاهش میکنم
نه؛ چشمک زن میمونه خاموش نمیشه.دو تا خازن رو هم گذاشتم مسیراشم چک کردم مشکلی نداشت.به پیشنهاد دوستان موقع روش خاموش کردنشم یه بلندگو کنارش گذاشتم که ببینم اصلا امواج ارسال میکنه یا نه که اصلا جواب نداد.
pcb رو هم میذارم شاید بیشتر بتونید کمکم کنید
ویرایش توسط salehmansur : 21-07-2012 در ساعت 20:10
سلام دوستان.
تا حالا کسی تونسته gprs رو با sim900 پیاده سازی کنی؟ لطفا اگر تونستید این کار رو انجام بدید ما رو هم راهنمایی بکنید. من همه چی رو با sim900 تونستم حل کنم به غیر از این یک مورد.
کاری که من میخوام انجام بدم اینه که به یه url (مثلا www.test.com) اطلاعاتی رو ارسال کنم.
یه برنامه نوشتمدر قسمت اول برنامه ما منتظر دریافت کاراکتر (,) میشینین و وقتی دریافت شد محل ذخیره اس ام اس مشخص میشه
تورو خدا یه لطفی بکن ببین از لحاظ منطق درسته؟
قصدم اینه که با atm16 پیاده سازی کنم.
void main()
{
printf( "at\r");
printf( "at\r");
printf( "at\r");
printf( "at\r");
printf( "at\r");
printf( "at+cmgf=1"\r);
while(1)
{
wait_to_get(',');
c[0]=getchar();
sl=atoi(c);
if(sl>10)
{
sl/=10;
}
printf( "at+cmgr=%d\r",sl);
wait_to_get('(');
d[0]=getchar();
rqst=atoi(d);
if(rqst==1)
{
pin b.2=1;
}
if(rqst==0)
{
pin b.2=0;
}
}
}
void wait_to_get(char ch)
{a
while(ch!=getchar());
{
تو قسمت دوم هم من طوری در نظر گرفتم که همه ی پیام ها رو داخل پرانتز بفرستم و وقتی اولین پرانتز در یافت شد یعنی پیام داریم.
اون قسمت آخر هم مربوط به خاموش رو وروشن کردن لامپه
ممنون میشم اگه اشتباه های منو یاد آوری کنید
رفیق مگه (,) نشانه ی اومدن پیامه؟؟؟؟اینجوری درست کار نمیکنه.
میتونی 1کاری بکنی که کارت راحت بشه..با وارد کردن 2تا کد که تو صفحه های قبل همینجا هست،هروقت پیامی اومد،خودش پیام رو وا میکنه و نشون میده، با کدی که قبل پیام میزنه،راحت تر میتونی متن پیام رو بخونی..
میخوای بدون اینکه ماژول رو بگیری،اول برنامتو بنویسی؟اینجوری نمیشه ها.حتمآ باید برنامت رو با ماژول چک کنی..
توی برنامه ی آقای صفا منش اینطوری بیان شده که سیم 900 چنین کاری میکنه که وقتی براش پیام میاد یه کد میفرسته به سریال که ته اون کد ویرگول داره و بعد از ویرگول محل ذخیره کد رو نوشته . جالا از این راهنمایی شما من حتما استفاده میکنم ببینم چطور میشه . ماژول رو خریدم ولی حواسم نبود سیم 900 ای خریدم و ظاهرا باید آپدیت بشه!!!!!!! چند بار اینجا نوشته بود ولی اهمیت ندادم!!!!!!!!.
یه سوال دیگه هم دارم
البته بیشتر در خواست:
این نوشته های اول برنامه که مربوط به کانفیگ کردن خروجی ها ورودی ها و پورت و داده و اینا ... رو من سر در نمیارم
لطف میکنیین برای اتمل 16 راهنمایی کنین؟
تنها خروجی من یه پین هستش که میخوام بدم به رله
حالا هر کدوم که صلاح دونستین.
توی این تاپیک چند نفری دیدم که دنبال این کاربرد هستن .
اگه کمک کنید و یه فرم ثابتی براش درست کنیم خیلی خوبه
ممنون از همه
رفیق خوب اول باید تشخیص بدی پیام اومده،بعد تو اون دستور منتظر (,) بمونی..وگرنه تو دستورات دیگه هم ازینا هست...
sim900 لازم نیست آپدیت بشه...فقط sim900a رو باید آپدیت کرد...
اولآ که اگه از اونا سر در نمیاری پس چجوری میخوای برنامه بنویسی؟ثانیا اگه با کدویژن کار میکنی،تو code wizard همه رو به صورت گرافیکی انتخاب میکنی.
سلام
ضمن تشکر فراوان بابت این مقاله آموزشی
یک سوال داشتم
اینکه میفرمایید این برنامه به صورت اختصاصی با گوشی خودم ارتباط برقرار می کنه و سیم کارت های دیگه نیاز به تغییرات جزئی داره
یعنی چی؟ با چه سیم کارت هایی کار میکنه؟ تغییرات جزئی شامل چی میشه؟
با تشکر
پس با این تعریف منتظر چند تا کاراکتر cmti و ویرگول میمونیم فکر کنم اینطوری بهتر باشه که البته تو برنامه آقای صفا منش هم همینطور بوده .
در مورد سر درنیاوردن از ریجستر اینو بگم که برام گنگه!!!!! یعنی جا نیفتاده !!!! فکر نمیکنم برنامه من نیاز به تنظیمات زیادی داشته باشه...بازم پناه بر خدا ...
یه مورد دیگه سوال داشتم:
اولای این تاپیک یه جا ذکر شده که سطح منطق ماژول با میکرو فرق میکنه!!!! و نباید tx , rx ماژول و میکرو رو مستقیم به هم وصل کرد!!!!
ما برای حل این مشکل چه روی پینهاد میکنین؟
1.بله رفیق،باید همین کار رو بکنین..
2.چون با کد ویژن کار میکنی،خودش رجیسترهارو تنظیم میکنه..پس از این لجاظ راحتی..
3.بله.چنتا روش داری.یا تقسیم مقاومتی،
یا استفاده از بافر ترانزیستوری که تو دیتاشیت مربوط به ارتباط سریال ماژول میتونی پیدا کنی،
یا استفاده از مقاومت و دیود زنر..
که به نظر من روش آخر راحت تره و کارکردشم از تقسیم مقاومتی بهتره..
اینجوری که تو مسیر rx , tx مقاومت 130 اهم میذاری،واسه هر کدوم هم در طرف ماژول، دیود زنر 3ولت میذاری...
فایلشو پیوست کردم..
موفق باشی
ویرایش توسط KHM : 24-07-2012 در ساعت 00:12
دادش دمت گرم
برنامه رو اینطوری نوشتم:
همونطور که فرموده بودین با دنبال کردن cmti: برنامه رو نوشتم.
void main()
{
printf( "at\r");
printf( "at\r");
printf( "at\r");
printf( "at\r");
printf( "at\r");
printf( "at+cmgf=1\r");
while(1)
{
char buffer;
char c[1];
char d[1];
int sl;
int rqst;
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==':')
{
wait_to_get(',');
c[0]=getchar();
sl=atoi(c);
if(sl>10)
{
sl/=10;
}
printf( "at+cmgr=%d\r",sl);
wait_to_get('(');
d[0]=getchar();
rqst=atoi(d);
if(rqst==1)
{
pin b.2=1;
}
if(rqst==0)
{
pin b.2=0;
}
flash char at_cmgda[]= {'A','T','+','C','M','G','D','A','=','"','D','E',' L',' ','A','L','L','"','\r'};
putsf(at_cmgda);
wait_to_get('K');
}
}
}
}
}
}
void wait_to_get(char ch)
{
while(ch!=getchar());
}
امیدوارم درست باشه.
ولی بازم طبق معمول من سوال دارم!!!
آقای صفوی توی صفحات اول تاپیک فرموده اند که بین دریافت های کاراکتر از پورت سریال یک تاخیر چند میکرو ثانیه ای ایجاد کردن و برنامه نور علی نور شده!
اون تاخیر چقدر هستش و علتش چیه؟
دوم اینکه در مورد ارسال سریال هستش:
یک سری دیتا روی پورت قرار میگیره
اینها به ترتیب فرستاده میشن
اگه توی اون بازه زمانی ما تونستیم داده ی مثلا شماره پنج رو دریافت کنیم که خب
وگرنه داده ی شماره شیش میاد جاش؟
یعنی خروجی سریال کاری به این نداره که طرف مقابلش دریافت کرده یا نه؟ و بدون هیچ صبری فقط داده رو میفرسته؟
سوال سوم هم اینه که :
توی عکسی که بالا گذاشتین روی سیم کارت دیود زنری که آقا صفا منش گذاشتن وجود نداره
چند جا خوندم که نیازه
بالاخره بزاریم یا نه؟
بابت همراهیتون ممنون.
یه چی دیگه هم یادم اومد:
بعضی از دوستان مطرح کرده اند که اگه از اون علامتی که موقع دریافت اس ام اس به وجود میاد (یکی از پایه های ماژول یک میشه) استفاده بشه بهتر از منتظر موندن برای کاراکتر خاص هستش و اینجوری کارکرد برنامه و میکرو بهتره!
من که علتو سر درنیاوردم
انتظار انتظاره دیگه
چه فرقی داره؟
نظر شما چیه؟
1..من نفهمیدم چرا 5تا ازین دستور گذاشتی؟؟؟
درثانی باید تیکه تیکه برنامتو با ماژول چک کنی...همینجوری جواب نمیده..
2.درباره ی این مورد نظری ندارم،چون من خودم اینجوری ننوشتم...ولی خوب بستگی به برنامت داره،من نذاشته بودم ولی خیلیم خوب جواب میداد...
3.بستگی به نوع راه اندازی ارتباط سریالت داره..تو راه اندازی ساده که فقط از پایه های rx , tx استفاده میشه،بله منتظر نمیمونه که اطلاعات رو دریافت کنین..
4.چیزی که تو دیتاشیت گذاشته،دیود زنر نیست و آیسی محافظی به اسم ESD هست که تو ایران پیدا نمیشه..حالا نمیدونم آقای صفامنش به جاش دیود زنر گذاشتن یا نه،ولی لازم نیست..بدون اونم کاملآ جواب میده.
5.پایه ای به اسم RI روی ماژول هست که با اومدن sms یا زنگ خوردن یا ارتباط gprs صفر میشه..و فقط برای sms نیست...میتونی اونو بدی به وقفه ی میکرو که هروقت اون صفر شد، از رو پورت سریال بخونه که چه اتفاقی افتاده، ولی در کل استفاده از اون هم واجب نیست..
موفق باشی
وای
واقعا ممنونم
یعنی ایول داری داداش.
علت تعداد دستورات at\r به خاطر اینه که دوستی فرموده بودند که سه تا پنج بار این دستور رو بفرستم تا میزان باود ریت خودش تنظیم بشه.
ماژول رو سفارش دادم ولی هنوز نرسیده!!!
اگه برسه حتما طبق فرموده ی شما عمل میکنم و اول چک میکنم.
راستی دوتا سوال:
اول: خاموش و روشن کردن اکو اینجا لازمه؟
دوم: همونطور که توی پست های قبلی گفته شده قبل از هر کاری با ماژول اون رو اینجا مطرح میکنم.
بضعی از دوستان میفرمایند که از lm317 استفاده کنیم و بعضی با 2576 موافق هستن . به نظر شما کدوم خوبه؟
سلام بر دوستان
مهندس این در مواردی گفته شده که باود ریت ماژول رو حالت auto هست . بنابراین باید چند کلمه نوشته بشه تا ماژول بتونه از روی اون به نرخ باود ریت پی ببره .. ولی زمانی که شما باود ریتت fix شده و save هم کردی دیگه لازم به این کار نیست . ولی گذاشتن 1 دستور AT و چک کردن OK برگشتی میتونه خیال ما رو از ارتباط صحیح میکرو و ماژول راحت کنه ....علت تعداد دستورات at\r به خاطر اینه که دوستی فرموده بودند که سه تا پنج بار این دستور رو بفرستم تا میزان باود ریت خودش تنظیم بشه.
تو مواردی که شما قرار جواب دستورات AT رو چک و تایید کنید بله باید اکو غیر فعال بشه وگرنه همون دستور ارسال شده برمیگرده و شما مجبورید چند رشته بجای یک رشته بخونید و کار دشوار تر میشه .. این دستور هم قابلیت ذخیره شدن داره ...خاموش و روشن کردن اکو اینجا لازمه؟
خب یسری با 317 و حتی 7805 جواب گرفتن ولی در کل با توجه به قدرت جریاندهی این رگولاتور مخصوصا برای کار در حالت GPRS مناسب نیست اگر هم جواب بده باید روش هیت سینک گذاشت . ولی 2576 و هر رگولاتور سوییچینگ توانش چند برابر ایناست و براحتی حتی بطور لحظه ای تا 2 -3 آمپر هم میده ... پس در اینجا خیالتون راحته و تلفات حرارتی بسیار کمتری هم دارید ...بضعی از دوستان میفرمایند که از lm317 استفاده کنیم و بعضی با 2576 موافق هستن . به نظر شما کدوم خوبه؟
یا حق
خواهش رفیق..حالا بذا برسه ماژولت..کار داریم هنو...به جای اون خیلی بهتره که باود ریت رو ثابت کنی و بذاری رو 9600...در این صورت میتونی دستورات رو با حروف کوچک هم بفرستی...
نه با اکو کاری نداشته باش..همو باشه بهتره..یعنی تنظیمات اولیه..
از جفت رگولاتور ها میتونی استفاده کنی ولی 2576 بهتره..مخصوصا واسه کارایی که جریان زیادی لازمه..