PDA

View Full Version : مشکل ارتباط میکرو با ماژول sim908



saba7darya
شنبه 02 اسفند 1393, 03:46 صبح
سلام
من در ارتباط میکرو با ماژولم مشکل دارم
برنامه ارسال پیام رو روی میکرو atmega16 با بادریت 9600 پیاده کردم در ضمن بادریت ماژول sim908 ام رو هم با استفاده از هایپر ترمینال روی 9600 تنظیم کردم و با usbasp programmer اونو پروگرم کردم البته بگم که تنظیمات پیش فرض این پروگرمر رو تغییر ندادم از کریستال خارجی هم استفاده نکردم تنظیمات فیوز بیتها رو هم تغییر ندادم میکروی من با همین پروگرمر تغذیه میشه که دایم به pc ام وصله jtag اون فعاله
برای ارتباط ماژول با pc هم از usb به سریال استفاده کردم tx ,rx ها رو هم ضربدری از ماژول به میکروم و pc وصل کردم دستورات از pc به ماژول قابل پیاده سازی هست و مشکلی هم در ارسال و دریافت پیامک نداره ولی از میکرو به ماژول مشکل دارم در ضمن اتصالات پایه های vcc , GND,RX,TX,powerkey رو برقرار کردم و از بقیه پایه ها بهره نبردم
میشه لطفا بگید مشکل کجاست

مهدی کرامتی
شنبه 02 اسفند 1393, 06:55 صبح
شما در مورد چیزهایی که کار می کنه کلی توضیح دادید. اما در مورد مشکل اصلی تون غیر از عبارت "ولی از میکرو به ماژول مشکل دارم" توضیح خاصی ندادید که دقیقا چه مشکلی موقع کار با میکرو دارید.

saba7darya
شنبه 02 اسفند 1393, 11:58 صبح
آقای مهندس همه توضیحاتی که دادم برای این بوده که اگه در انجام هر کدوم مشکلی هست با راهنمایی و کمک دوستان برطرف کنم برنامه ارسال sms رو در میکرو پروگرم کردم و ارتباط میکرو و ماژولم هم طبق آنچه که گفتم برقراره ولی ماژولم sms نمیفرسته

amir_mhdi
یک شنبه 03 اسفند 1393, 09:20 صبح
اگر درست متوجه شده باشم ، شما با هایپر ترمینال که به ماژول وصله میتونید sms بفرستید ولی با میکرو که به ماژول وصله نمیتونید ، درسته؟
من تقریبا سال 85 بود که با این ماژولها (MC35) کار کردم ، شاید خیلی خوب یادم نباشه ولی خاطرم هست که بعد از اینکه متن sms رو تایپ میکردیم (البته تو مود تکست) ، آخرش باید Ctrl+Z رو میزدیم.
آیا تو میکرو هم شما به عنوان آخرین بایت ارسالی این کاراکتر رو میفرستید؟ یعنی کاراکتر 26 .

saba7darya
یک شنبه 03 اسفند 1393, 12:07 عصر
بله من مطمئنم که در تنظیم فیوز بیتها مشکل دارم البته تازه فهمیدم که باید از کریستال خارجی استفاده کنم برنامه مشکلی نداره چون توی اینترنت خیلی ها با این برنامه به جواب رسیده بودند مشکل اصلی تو اینه که چه کریستالی و چه تنظیماتی باید انجام بشه لطفا اگه میدونید راهنمایی کنید ، ممنون

amir_mhdi
یک شنبه 03 اسفند 1393, 12:50 عصر
چیپت چیه؟ فیوزبیتهات رو بخون ببینیم روی چه وضعیتی هستی.

saba7darya
دوشنبه 04 اسفند 1393, 05:13 صبح
از آی سی atmega16 با بادریت 9600 و کریستال خارجی 11.0592 بهره بردم

saba7darya
دوشنبه 04 اسفند 1393, 05:16 صبح
در حقیقت هیچی از تنظیمات فیوزبیتها و دستورات مربوط و ... در کدویژن نمیدونم لطفا راهنمایی کنید چگونه این کار رو انجام بدم البته یکی از دوستان گفتش کلاک ها رو موقع پروگرم کردن 1101 بگیرم نمیدونم توی برنامه نویسی هم باید دستوراتی منظور شه یا خیر،لطفا به طور کامل این مبحث رو توضیح بدید قبلا از صبر و راهنماییتون سپاسگذارم

amir_mhdi
دوشنبه 04 اسفند 1393, 10:42 صبح
تو این سایت اطلاعات خوبی راجع به فیوزبیتها هست :
http://www.eca.ir/forum2/index.php?topic=20473.0
شما اول یمقدار مطالعه بفرمایید ، بعد اگر سوالی بود در خدمتم.

موفق باشید.

saba7darya
دوشنبه 04 اسفند 1393, 12:46 عصر
همونطور که گفتم چون کریستال خارجی 11059200 استفاده کردم ،فیوز بیتها رو هم طبق اون 12Mبا برنامه fast help پیدا کرده و با پروگرمرusbasp programmer تغییر دادم اما هیچ نتیجه ای حاصل نشد (راستی تو یه سایتی برای این کریستال همه کلاکها رو 1 کرده بود) مشکل کار کجاست در ضمن من با این sim908 خریداری شده از eca کلی مشکل دارم خصوصا توی آنتن دهی و راه اندازیش با این که خازن 2200 میکرو فاراد سر راه تغذیه اش استفاده کردم و آداپتور 5 ولت 5 آمپر البته با یک دیود سر راه تغذیه، ولی باز مشکلات آنتن دهی و راه اندازیش به قوه خود باقی است اکثر جاها آنتن ندارم

amir_mhdi
دوشنبه 04 اسفند 1393, 13:14 عصر
شما برای بادریت 9600 نیازی به کریستال خارجی ندارین و با همون 8 مگ داخلی میتونید کار کنید. برای اینکار باید بزارید روی 0100 یعنی فقط CKSEL 2 رو یک کنید و بقیه صفر باشند.
کامپایلرتون هم اگر کدویژن هست ، دو تا کار انجام بدین. اولا تو کانفیگ پروژت کریستال رو بزار رو 8 مگ و. ثانیا این رجیستر رو تغییر بده UBRRL=0x33; تا با کریستال 8 مگ بتونی بادریت 9600 داشته باشی.
مشکل آنتن دهی :
باید ببینیم شما از چه دیودی استفاده کردید. ممکنه اون دیود تو لحظه ای که جریانکشی دارید نمیتونه اون میزان جریان رو عبور بده و افت ولتاژ ایجاد میشه.
شما باید ولتاژ ورودی ماژول رو که مثلا باید بین 3.2 تا 4.8 ولت باشه که البته 4 ولت پیشنهاد میشه رو بگیرید. ببینید وقتی ماژول داره به شبکه وصل میشه آیا تغییری تو سطح ولتاژ ایجاد میشه یا نه.
اگر ایجاد بشه و بیشتر از 300 میلی ولت باشه ، نشون میده که تغذیتون مشکل داره. حالا باید ولتاژ خروجی تغذیه قبل از دیود رو بگیرید تا ببینید که اون هم افت داره یا نه.
اگر افت نداشت ، احتمالا دیودتون رو باید عوض کنید.

saba7darya
چهارشنبه 06 اسفند 1393, 00:08 صبح
سلام ، از اینکه اینطور دقیق توضیح میدید ممنون ، در ضمن روزتون هم مبارک آقای مهندس،
متاسفانه با تنظیماتی هم که گفتید باز هم پیامک ارسال نشد و همچنان این مشکل به قوه خود باقیست در مورد تغذیه هم بعد از دیود هنگام راه اندازی در ابتدا 4.49 بود وقتی دنبال شبکه میگشت 4.34 و الان که ثابت شده 4.41 اینها روی پایه های ماژول هست بعد از دیود 1N4007 ، تغذیه اصلی هم 5.19 هستش البته اینجا آنتن دارم

در ضمن من تنها پایه های vcc,GND,rx,tx,xtal,int0 + button for send sms میکرو رو استفاده کردم اصلا نمیدونم مشکل کجاست برای ماژول هم تنها از پایه های تغذیه و rx,tx که ضربدری به میکرو وصلش کردم بهره بردم درحالی که آنتن دارم اما ...

amir_mhdi
چهارشنبه 06 اسفند 1393, 10:15 صبح
ممنون.
تغذیه میکروت چنده؟ دیتایی که باید به سمت ماژول بره باید 3.3 ولت باشه؟ اصلا به AT Command های ارسالی از میکرو جواب میده؟ مثلا وقتی میزنی که phonebook رو بخونه ، آیا این کار رو انجام میده؟

اگر بتونی کدت رو بصورت کامل بزاری اینجا بهتر میشه راجع بهش صحبت کرد.
موفق باشی.

saba7darya
پنج شنبه 07 اسفند 1393, 00:50 صبح
ممنون.تغذیه میکروت چنده؟ دیتایی که باید به سمت ماژول بره باید 3.3 ولت باشه؟ اصلا به AT Command های ارسالی از میکرو جواب میده؟ مثلا وقتی میزنی که phonebook رو بخونه ، آیا این کار رو انجام میده؟اگر بتونی کدت رو بصورت کامل بزاری اینجا بهتر میشه راجع بهش صحبت کرد.موفق باشی.سلام دوست عزیز ممنون از راهنماییتونتغذیه میکروم 4.4 هست من میتونم ارتباط ماژول و pc رو برقرار کنم به ماژولم فرمان بدم پیامک بفرستم بخونم و ... ولی نمیدونم چطوری بین میکرو و pc ارتباط برقرار کنم و چه برنامه ای بنویسم و کلا تو این قسمت مشکل دارم شاید اگه برنامه یا روشی برای این منظور در اختیارم قرار بدید متوجه مشکل بشم اما برنامه ای که گفتید من عین برنامه ای که توی لینک زیر هست رو نوشتم http://www.mrkelectronic.com/forums/showthread.php?tid=419 در ضمن زمانیکه از کدویزارد استفاده میکردم ubrrl=0x33 هنگام تنظیمات در قسمت usart بادریت رو 9600 انتخاب کردم فرکانس چیپ رو هم 8 مگ گرفتم هنگام تنظیمات فیوز بیتها هم کلاک 2پروگرمر رو 1 زدم اینها برای زمانی بود که از کریستال داخلی استفاده کردم زمانی هم که از کریستال خارجی 11059200 استفاده کردم هم یه بار تمام کلاک ها رو یک کردم وهم بار دیگر 1101 هر کاری میکنم درست نمیشه

#include <mega16.h>
#include <stdio.h>
#include <delay.h>
char Enter=13;
char double_quote=34;
char Ctrlz=26;
void main(void)
{
PORTD=0x00;
DDRD=0x00;
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x26;
while (1)
{
if (PIND.2==0){
printf("at%c",Enter);
delay_ms(500);
printf("AT+CMGF=1%c",Enter);
delay_ms(500);
printf("at+cmgs=%c+9891***%c%c",double_quote,double_quote,Enter);
delay_ms(100);
printf("Are you ok?%c",Ctrlz);
delay_ms(100);
};
} ;
}


دقیقا نمیدونم چه باید بکنم شاید تنظیماتم مشکل داره لطفا دقیقا راهنمایی کنید چه قسمتهایی رو باید مد نظر قرار بدم ممنون

amir_mhdi
پنج شنبه 07 اسفند 1393, 09:26 صبح
این کد رو تست کنید تا ببینیم هر کاراکتری که توی ترمینال ویندوز میزنید ، میکرو دریافت میکنه یا نه.
این برنامه ساده میاد هر کاراکتری رو که شما میزنید رو میگه "data is A" ، فرضا اگر کلید A رو زده باشید.
اگر این برنامه درست کار کنه یعنی اینکه ارتباط میکرو و pc برقراره. البته تنظیمات با همون کریستال 11.0592 هست. یعنی 0x47.
اگر با 8 مگ بخواید میشه 0x33.


#include <mega16.h>
#include <stdio.h>
#include <stdlib.h>
#include <delay.h>
//--------------------------------------------------------------
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;
if ((status & 28)==0)
{
printf("data is %c\r",data);
};
}
//--------------------------------------------------------------
void main(void)
{
UCSRA=0x00;UCSRB=0x98;UCSRC=0x86;UBRRH=0x00;UBRRL= 0x47;
#asm("sei");
while (1);
}

saba7darya
جمعه 08 اسفند 1393, 00:18 صبح
ممنون از راهنماییتون :تشویق:برنامه رو پروگرم کردم از کریستال 11.0592استفاده کرده و همه فیوزبیتها رو یک کردم منظورم clock,stu هاست در این حالت زمانی که bit per second هایپرترمینال رو 9600 کردم جواب داد روی بقیه جواب نداد
خوب استاد حالا میگید چی کار کنم

amir_mhdi
جمعه 08 اسفند 1393, 10:04 صبح
اگر جواب داد ، یعنی میزد که data is فلان ، یعنی ارتباط میکرو و pc برقراره.
راستی مگه از مگا 16 استفاده نمیکنی؟ اونکه یکی پورت سریال بیشتر نداره. چجوری هم به کامپیوتر وصلش کردی هم به ماژول؟
حالا.... :لبخندساده:
کدت رو هم اینجوری تغییر بده :


printf("AT\r\n");
delay_ms(500);
printf("AT+CMGF=1\r\n");
delay_ms(500);
printf("AT+CMGS=\"+9891***\"\r\n");
delay_ms(100);
printf("Are you ok?%c",Ctrlz);
delay_ms(1000);


موفق باشی.

saba7darya
یک شنبه 10 اسفند 1393, 00:15 صبح
سلام
ممنون از پاسختون ولی این هم جواب نداد من حتی تاخیر رو هم بیشتر کردم ولی جواب نداد
به نظر شما برنامه اشکال نداره ؟
من هم برنامه شما رو پروگرم کردم و هم آخرین تغییرات که دادم البته تو یه سایت خارجی این مشکل مطرح شده بود که برنامه اون تاخیراتی این چنینی داشت
http://www.edaboard.com/thread307338.html

#include <mega16.h>
#include <stdio.h>
#include <delay.h>
void main(void)
{
PORTD=0x00;
DDRD=0x00;
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x47;
while (1)
{
if (PIND.2==0){
printf("AT\r\n");
delay_ms(500);
printf("AT+CMGF=1\r\n");
delay_ms(500);
printf("AT+CMGS=\"+9891******\"\r\n");
delay_ms(2000);
printf("Are you ok?");
delay_ms(2000);
putchar(26);
};
} ;
}
انگار مشکل من یه مشکلی بوده که خیلیها باهاش درگیر بودند :متفکر:
حالا میگید چی کار کنم