اطلاعیه

Collapse
No announcement yet.

GSM و ارتباط آن با AVR

Collapse
این موضوع برجسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    پاسخ : GSM و ارتباط آن با AVR

    نوشته اصلی توسط shahram_g
    38 صفحه این تاپیک رفته جلو ولی به نتیجه رضایت بخشی نرسیده.
    من صرفا به یک مازول ارسال sms نیاز دارم که یک متن ثابت رو بفرسته.
    از گوشی هم نمیخوام استفاده کنم.
    کسی چنین ماژولی با قیمت مناسب در حد نهایت 30 تا 40 تومن سراغ داره؟
    میتونید از ماژول SIM300CZ استفاده کنید (قیمت: ۴۵ تومان با متعلقات)

    و این هم بردی برای این ماژول :
    http://www.eca.ir/forum2/index.php?topic=36271.msg175732
    چگونه هوشمندانه بپرسیم

    دیدگاه


      پاسخ : GSM و ارتباط آن با AVR

      سلام
      فکر کنم باید بین میکرو و کابل از ای سی max232 استفاده بشه :redface:
      این طور نیست؟

      دیدگاه


        پاسخ : GSM و ارتباط آن با AVR

        سلام
        اگه لطف کنی کمک کنین ممنون میشم
        من با هیپر ترمینال به gsmوصل میشم و مشکلیم ندارم ولی با میکرو هر کاری می کنم نمیشه
        enable Interrupts
        enable urxc
        on urxc amir
        do
        print "at";chr(13)
        waitms 50
        loop
        amir:
        input,a,noecho
        lcd a
        return
        نمیدونم این برنامه به این سادگی چرا جواب نمیده

        دیدگاه


          پاسخ : GSM و ارتباط آن با AVR

          نوشته اصلی توسط amir_gole
          سلام
          اگه لطف کنی کمک کنین ممنون میشم
          من با هیپر ترمینال به gsmوصل میشم و مشکلیم ندارم ولی با میکرو هر کاری می کنم نمیشه
          enable Interrupts
          enable urxc
          on urxc amir
          do
          print "at";chr(13)
          waitms 50
          loop
          amir:
          input,a,noecho
          lcd a
          return
          نمیدونم این برنامه به این سادگی چرا جواب نمیده
          جای Rx , tx رو درست کن حل میشه ؟من هم این مشکل رو داشتم بعد از max
          معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

          دیدگاه


            پاسخ : GSM و ارتباط آن با AVR

            خلاصه مطالب تا اینجا



            من این تاپیک رو ایجاد کردم با هدف ارتباط دهیه AVR و سیستم GSM.
            این سیستم داره حرکت های جدیدی رو تو صنعت آغاز میکنه و خوب نیست که ازش بی بهره بمونیم.
            من دیروز تو جمهوری ماژول هایی رو دیدم به قیمت 95000 تومان که یک سیم کارت درون اون قرار میگرفت و عملیاتش رو با ورودی USB و RS232 انجام میداد.
            در صورتی که ما میتونیم همین کار رو با یک Main Board موبایل قدیمی به راحتی و هزینه حد اکثر 10000 تومان انجام بدیم
            بعنوان مثال یکی از کاربرد های این سیستم به این صورت هست که شما میتونید دیتای یک سنسور رو دریافت کرده و با میکرو پردازش کنید و دوباره با میکرو و یک Main Board موبایل دیتا رو بصورت یک SMS به هر جایی که مورد نظرتون هست ارسال کنید.

            استفاده از گوشی های Sony-Ericson به این منظور ساده است، می تونید با AT Command باهاشون ارتباط برقرار کنید. اما در کاربردهای صنعتی بهتره از GSM-Modem استفاده کنید.
            اگر دقت کرده باشید روی GSM-Modem ها Shield آلومینیومی وجود داره که باعث می شه حساسیت شون در محیط های صنعتی کمتر باشه، در ضمن از اونجایی که نمیشه باتری Li-I رو یکسره زیر شارژ گذاشت (عمرش کم میشه) مجبورید تغذیه ی گوشی رو یکسره کنید.

            ابتدا یک گوشی معمولی رو از هر راه ارتباطی ممکن از جمله : پورت یا Inferared یا بلوتوث یا ... به PC ارتباط میدین.
            با این کار در بخش Device Manager کامپیوتر تو قسمت مودم رو که کلیک کنید یک مودم به سیستم اضافه شده.
            با رایت کلیک روی اون و گزینه Properties تو پنجره ایی که باز میشه تو سربرگ مودم میبینید که یک پورت COM به اون اختصاص داده شده.
            وارد نرم افزار Hyper Terminal میشید و یک صفحه جدید با شماره پورت COM اضاف شده با یک نرخ ارسال متوسط میسازید.

            حالا از اینجا ارتباط با گوشی آغاز میشه.
            دستوراتی که ما میخوایم به گوشی ارسال کنیم از یک Format خاص تبعیت میکنن.
            دستورات همیشه با AT شروع شده و به اینتر ختم میشوند

            به عنوان مثال:
            AT+CMGF و اینتر
            وقتی دستوری با گوشی هماهنگ شد پیغام OK برای شما ارسال میشود و اگر دستوری هماهنگ نباشد پیغام ERROR ارسال میشود.
            تعدادی از دستورات به عنوان مثال:

            دستور AT&f :این دستور گوشی را به تنظیمات کارخانه برمی گرداند.
            دستور AT+CBC : این دستور مقدار شارژ باطری را به درصد نمایش میدهد.
            دستور AT+GSN :این دستور شماره سریال گوشی را بر می گرداند.
            دستور AT+CCLK : ساعت گوشی را بر میگرداند.
            دستور AT+CSMS : قسمت SMS را در گوشی انتخاب میکند.

            در سری بعد به ارسال SMS از طریق PC میپردازیم

            ببینید همون طور که آقای یار محمدی گفتن انها بعضی هاشون آرگومان دارن و بعضی دستورات ممکن رو همه گوشیها جواب نده ولی رو Nokia خوب جواب میده.
            در جواب دوستمون:
            ببینید قدم به قدم جلو میریم.ما تمام این دیتا رو باید با AVR بفرستیم.95% گوشیها از پرتکل RS232 در ارتباطشون استفاده میکنن و در نقشه خروجی پورت هر گوشی Rx و Tx مشخص شده.البته به این نکته اشاره کنم که دو پایه دیگه RS232 این پورت ها CTS و RTS هست که اینها باید در سطح منطقی یک قرار بگیرن تا گوشی ارسال و دریافت کنه.
            تمام این دستور ها به راحتی به گوشی ارسال میشن از همین طریق

            ببینید در این نوع سیستم از دو قانون پیروی میشه : PDU و Text

            ما برای کارمون باید از مد Text استفده کنیم.برای این کار از دستور زیر استفاده میشه:

            AT+CMGF=1

            این دستور اعلام مد Text به گوشی است.شاید مشکل دوستمون هم همین بوده باشه.
            برای اطلاع از Help هر دستور خود گوشی به شما کمک میکنه.به این صورت که اگر شما دستوری وارد کنید و جلوی اون علامت ?= قرار بدین گوشی اگر از اون پیروی کنه OK بر میگرده اگر نکنه ERROR برمیگرده یا اگر اطلاعاتی در مورد این دستور داشته باشه بر میگردونه

            مثال:

            ?=AT+CMGS

            اگر بخوایم وضعیت دستور مورد نظر رو در حال حاضر ببینیم از علامت ؟ جلوی دستور استفاده میکنیم.مثل مقدار هایی که قبلا قرار داده شده

            مثال:

            AT+CMGF?

            این عکسها از سایتی هست که دوستمون معرفی کرده.همونطور که میبینید از RS232 برای ارتباط استفاده شده




            ارسال SMS :

            اول:AT&F .بازگشت به تنظیمات کارخانه

            دوم:AT+CMGF .تبدیل به مد Text

            سوم:AT+CMGR=1

            چهارم:"شماره موبایل"ََََ=AT+CMGS

            پنجم:یک Delay 500ms

            ششم:بعد از این دستور گوشی علامت "<" رو برمی گرداند که جلوی آن شروع به نوشتن متن با 160 کارکتر میکنید و بعد از اتمام کلید های Ctrl و Z را ری کیبرد فشار داده و گوشی علامت "->" برمی گرداند.Enter کرده و بعد از یک مدت زمان کوتاه گوشی پیغام OK را برمی گرداند و نشان ارسال SMS است.
            putsf("AT+CBC&quot

            تمام گوشیها این قابلیت رو دارن
            چون شما وقتی به هر نحوی گوشی رو به PC ارتباط میدین یک مودم به مودم های سیستم اضافه میشه و یک پورت Com بهش تعلق میگیره.
            فقط نحوه عملکرد فرق میکنه.

            مثلا توی کدویژن بنویس:
            printf("%s\x1A",send_buffer);
            حالا این send_buffer همون اطلاعتی هست که باید قبل ctrl+z بفرستی

            http://pinouts.ru/


            * AT


            میشه 09350001400
            989350001420 ولی برای اپراتور مخابرات شمارش مثلا اینه 9891100500


            Pdu to sms
            Sms to pdu
            http://www.rednaxela.net/pdu.php

            برای راحتی شما دوستان و برای یادگیری بهتر مطالب در مورد ارتباط با مودم های GSM نرم افزاری طراحی کردیم که تمام بحث های انجام شده و مطالب گفته شده رو شامل میشه . به این صورت که ابتدا مودم یا موبایلتون رو به هر طریقی به کامپیوتر وصل می کنید تا به عنوان پورت شناخته بشه . بعد با استفاده از این نرم افزار پورت مودمتون رو انتخاب می کنید و تمام تنظیماتشو انجام می دید . بعد دکمه connect رو می زنید و می تونید با اون ارتباط برقرار کنید این نرم افزار 3 قسمت اصل داره:
            1-این نرم افزار تمام امکانات Hyper terminal رو برای کار با مودم های GSM شامل میشه.
            2- بخش تبدیلات PDU به TEXT و برعکس . که این بخش برای تمرین و شناخت PDU مناسبه.
            3- بخش ارسال SMS : که تو این بخش می تونید متن رو بنویسید و با مد PDU یا TEXT به شماره ای که وارد کردید ارسال کنید. در ضمن می تونید لیستی از شماره ها رو وارد کنید و متنتون رو به تمام شماره ها ارسال کنید.
            لازم به ذکره که این نرم افزار کاملاً جنبه ی آموزشی داره و برای یادگیری بهتر پیرامون پروژه ی آقای یارمحمدی نوشته شده. مطمئناً نقایصی هم داره . اگر به مشکلی برخوردید تو همین تاپیک مطرح کنید و اگه دیدید که نرم افزار مشکل اساسی داره یا فکر می کنید که لازمه امکانات دیگری بهش اضافه بشه از عنوان کردنش دریغ نکنید تا بتونیم ورژن های بعدی این برنامه رو هم برای استفاده تو سایت بزاریم.
            (در ضمن مقاله ی جامع تری هم در مورد این مطلب نوشته شده که به زودی در اختیارتون میزارم)
            توجه:
            Username:roboticar
            pass:www.eca.ir

            واسه اینکه شماره کسی که داره بهتون میزنگوله رو ببین کدهای زیر روبزنید
            یبینید که caller id فعال میشه
            من رو n73جواب گرفتم




            ### This enables the callerID feature
            AT+CLIP=1;+CRC=1

            ### Save parameters in your profile + powerup option so it won't reset.
            AT&W
            AT&Y

            با این دستور می تونید اطلاعاتی در باره مقدار شارژ مقدار سیگنال و وصل بودن یا نبودن شارژر بدست بیارید
            at+cind?

            CIND: ("battchg",(0-5)),("signal",(0-5)),("batterywarning",(0-1)),("chargerconnected",(0-1)),("service",(0-1)),("sounder",(0-1)),("message",(0-1)),("call",(0-1)),("roam",(0-1)),("callsetup",(0-3))

            از راهنمائی شما خیلی متشکرم ، ولی متاسفانه جواب نداد لطفا اگه امکان داره ارتباطات کامل رو برام بذارین ،
            من طبق گفته شما T2out روبه R2in وصل کردم (7و8) بعد خروجی Gsm (pin3 ) روبه T2in و R2out رو به RXD میکرو و بهمین ترتیب T1out رو به R1in وصل کردم (13و14) و R1out رو به gsm (pin2) و T1in رو به TXD میکرو ( استاندارد TTL ) ولی جواب نگرفتم . چند مسئله :
            1-آیا هم GSM و هم میکرو بر مبنای TTL کار میکنه ؟
            2-پس از وصل مواردی که شما گفتید در مدار افت ولتاژ بوجود میآد .
            در ضمن من متن کل برنامه رو میزارم شاید اشکال در کدنویسی باشه .متشکرم

            #include <mega32.h>
            #include <delay.h>
            #include <stdio.h>

            void main(void)
            {
            // Input/Output Ports initialization
            // Port A initialization
            // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
            // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
            PORTA=0x00;
            DDRA=0x00;

            // Port B initialization
            // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
            // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
            PORTB=0x00;
            DDRB=0x00;

            // Port C initialization
            // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
            // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
            PORTC=0x00;
            DDRC=0x00;

            // Port D initialization
            // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
            // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
            PORTD=0x00;
            DDRD=0x00;

            // Timer/Counter 0 initialization
            // Clock source: System Clock
            // Clock value: Timer 0 Stopped
            // Mode: Normal top=FFh
            // OC0 output: Disconnected
            TCCR0=0x00;
            TCNT0=0x00;
            OCR0=0x00;

            // Timer/Counter 1 initialization
            // Clock source: System Clock
            // Clock value: Timer 1 Stopped
            // Mode: Normal top=FFFFh
            // OC1A output: Discon.
            // OC1B output: Discon.
            // Noise Canceler: Off
            // Input Capture on Falling Edge
            TCCR1A=0x00;
            TCCR1B=0x00;
            TCNT1H=0x00;
            TCNT1L=0x00;
            ICR1H=0x00;
            ICR1L=0x00;
            OCR1AH=0x00;
            OCR1AL=0x00;
            OCR1BH=0x00;
            OCR1BL=0x00;

            // Timer/Counter 2 initialization
            // Clock source: System Clock
            // Clock value: Timer 2 Stopped
            // Mode: Normal top=FFh
            // OC2 output: Disconnected
            ASSR=0x00;
            TCCR2=0x00;
            TCNT2=0x00;
            OCR2=0x00;

            // External Interrupt(s) initialization
            // INT0: Off
            // INT1: Off
            // INT2: Off
            MCUCR=0x00;
            MCUCSR=0x00;

            // Timer(s)/Counter(s) Interrupt(s) initialization
            TIMSK=0x00;

            // USART initialization
            // Communication Parameters: 8 Data, 1 Stop, No Parity
            // USART Receiver: On
            // USART Transmitter: On
            // USART Mode: Asynchronous
            // USART Baud rate: 9600
            UCSRA=0x00;
            UCSRB=0x18;
            UCSRC=0x86;
            UBRRH=0x00;
            UBRRL=0x19;

            // Analog Comparator initialization
            // Analog Comparator: Off
            // Analog Comparator Input Capture by Timer/Counter 1: Off
            ACSR=0x80;
            SFIOR=0x00;

            while (1)
            {
            unsigned char a;
            a=0x02;
            a=PINB&a;
            if(a==0x02)
            {
            printf("AT+CMGF=1\r"
            delay_ms(1000);
            printf("AT+CMGS=\"+989113938294 +989113938294 \"\r"
            delay_ms(1000);
            printf("behzad\r"
            delay_ms(1000);
            putchar(0x1A);
            delay_ms(20000);
            }

            };
            }
            اولین کاری که باید بکنین فکر یه منبع تغذیه 2 امپری باشین البته من با 7805 قابلمه ای جواب گرفتم
            و بعدش اگر ارتباط سریال رو کار کردین شروع کنین pcb رو بزنین

            باسرعت پیش فرض 115200 امتحان کنید.
            دوست عزیز حرفتون درسته ولی متاسفانه میکرو کنترلر تو این baud خیلی نا توان هست و نمیتونه کار کنه و باید ابتدا با کامپیوتر راش بندازین و بعد که baud رو کم کردین برین سراغ میکرو کنترلر(تجرب من که میگه اصلا میکرو با این baud با ماژول ارتباط برقرار کنه)


            اگه این جواب در پاسخ من باشه باید بگم که من از کریستال خارجی هم استفاده میکنم و در صورت سوالم عرض کردم که با همون باد ریت مربوط به gsm من تونستم دیتا از میکرو به کامپیوتر بدم یعنی تو باد ریت 115200 کار کردم باز هم یعنی میکروم داره با کریستال خوب ارتباط برقرار میکنه .


            $regfile = "m32def.dat"
            $crystal = 8000000
            $baud = 9600
            Wait 1

            Print "AT+CMGF=1" ; Chr(13)


            Wait 1
            Print "AT+CMGS=" ; Chr(34) ; "shomarato inja benevis" ; Chr(34) ; Chr(13)

            Wait 1

            Print "matni ke mikhay befrestiro inja benevis!" ; Chr(26)
            End
            شما میخواهید یه sms که بهه شما رسیده رو باز کنید و text اونو بردارید . درسته ؟

            در ابتدا که مودم رو راه اندازی کردید ابتدا تنظیمات اولیه رو انجام بدید .
            این تنظیمات یعنی :
            1. انتخاب مموری برای save پیام ها
            این مسئله خیلی مهمه چون تعداد محدودی برای هر کدام تعریف شده .
            2. مد مورد نظر خواندن و ارسال پیام .
            ( در برخی از مدم ها فقط از یک مد استفاده میشود ) ( دو مد برای مودم ها تعریف شده است اولی text و دومی pdu )
            3. فعال کردن خبر کننده ( کلمه خوبی نشد ) رسیدن پیام

            برای برخی از مودم ها این کامند ها متفاوت است برای همین دستورات رو ننوشتم .
            زحمت پیدا کردنشون به عهده خودتون تو لیست at+ command های مربوط به مودمتون .

            حال میرسیم به خوندن پیام . ( پیامک )
            با این تنظیمات وقتی ss توسط مودم در یافت میشه به شما پیام در یافت n امین پیام رو میده .
            شما باید همین n امین پیام رو باز کرده و مطالعه کنید .
            این کار با کامند متداول at+ cmgr=n و اینتر انجام میشه .
            با این دستور مودم به شما یه رشته میده که باید موارد مورد نیازتون رو ازش بردارید و استفاده کنید .

            sms شما با در یافت ok بعد از ارسال ctrl +z از طریق سریال از مودم خارج شده است .
            اما در مورد رسیدن به مقصد نمی توان حرفی زد .
            در مورد سوال دومتون کد های زیر یک نمونه ارسال sms است .
            printf("AT+CMGF=1\r" //for mode
            printf("AT+CMGS=\"+98912693....\"\r " //for phone number
            در این مرحله شما باید منتظر کاراکتر < باشید سپس متن ارسالی را وارد می کنید
            printf("salam" // for text
            حال باید ctrl +z را داشته باشیم که ابتدا ان را به عنوان یک کاراکتر در نظر میگیریم
            unsigned char ch=0x1a; //ctrl +z
            حال آن را ارسال می کنیم
            printf("%c",ch); //send
            و منتظر دریافت ok می مانیم .
            در صورتی که باز هم مشکل داشتید . ایمیل : khosravi.ma00@yahoo.com
            میشه لطف کنید بگید که چطور میشه deliverd اس ام اس رو تو ماژول tc35i فعال کرد.
            من هر کاری کردم نتونستم comand واسش پیدا کنم. حدس میزنم با این بشه AT+CNMI

            تو پروژهای که دست منه اجباراًَ باید بتونم تشخیص بدم که اس ام اس رسیده به مقصد یا نه.

            اگه کسی تجربه یا اطلاعاتی داره ممنون میشم ازش استفاده کنیم.



            10 روز بعد........
            خودم فهمیدم:
            باید به ترتیب این کارا انجام بشه:
            AT+CSMS=0
            AT+CSMP=49,167,0,242
            AT+CNMI=2,1,0,2,1

            با سلام خدمت همه دوستان

            من کل این تاپیکو خوندم اما نتیجه گیری که موضوع بوده نشده

            همه داران روی اتصال به pc و ارسال at command می پرسند اما از میکرو خبری نیست

            من یه تکه کد برای ارسال با PDU نوشتم اما هنوز جواب نگرفتم ، از اساتید می خوام ببینند این کد جواب می ده؟

            #include<mega32.h>
            #include<stdio.h>
            #include<delay.h>

            unsigned char str1[] = "AT+CMGF=0";
            unsigned char str2[] = "AT+CMGS=29";
            unsigned char str3[] = "079189390500410001000B819071077538F6000012F3 F61C442FCFE920B3FCDD0685EDF210";

            void main(void)
            {
            UCSRA=0x00;
            UCSRB=0x18;
            UCSRC=0x86;
            UBRRH=0x00;
            UBRRL=0x19;


            puts(str1);
            puts(str2); //AT+CMGS=29
            putchar(0x0D);
            delay_ms(3000);
            puts(str3); //Message in PDU format
            putchar(0x1A); //Control-z
            putchar(0x0D);

            }

            دوتا نمونه کد خیلی ساده برای ارسال اس ام اس
            البته یه تابع واسه گرفتن پاسخ مودم نیازه
            //////////////////////////////////////////////////////////////////////////////////
            //////////////////////////////////////////////////////////////////////////////////
            //
            void sms_send1(void)
            {
            unsigned char SMS[]="Salam";
            printf("AT+CMGF=1\r" //for Text mode
            printf("AT+CMGS=\"+989369530534 +989369530534 \"\r" //for phone number
            delay_ms(1000);
            printf("%s\x1A",SMS); //SMS Send + Ctrl-z
            }
            //
            //////////////////////////////////////////////////////////////////////////////////
            //////////////////////////////////////////////////////////////////////////////////
            //
            void sms_send2(void)
            {
            unsigned char Ctrlz=0x1a; //ctrl + z charactre(26)
            printf("AT+CMGF=1\r" //for Text mode
            printf("AT+CMGS=\"+989369530534 +989369530534 \"\r" //phone number
            delay_ms(1000);
            printf("salam"
            printf("%c",Ctrlz); //Send ctrl + z
            }
            //
            //////////////////////////////////////////////////////////////////////////////////
            //////////////////////////////////////////////////////////////////////////////////

            بین میکرو و SIM300 نیازی به Level Convertor مثل MAX نیست چون ورودی SIM300 بیشتر از 2.8 ولت قبول نمیکنه باید تقسیم مقاومتی بزاری و واسه خروجی اش هم می تونی یه بافر بزاری که 2.8 رو به 5 تبدیل کنه. به دلیل اینکه ورودی AVR اگر ولتاژ تغذیت 5 ولت باشه کمتر از 3 ولت رو به عنوان 1 تشخیص نمیده پس بهتره با یه بافر اشمیت اونو تبدیل به 5 کنی. یه نکته دیگه اینکه Default Baud rate تو SIM300 مقدارش 115200 هست وبه صورت پیش فرض رو Autobaud تنظیم شده پس وقتی برای اولین بار روشن میکنی اگه نرخ ارتباطی میکروتون 115200 نباشه 2 یا 3 بار یه دستور مثلAT رو بفرست تا جواب OK بگیری بعد از اون با نرخ ارتباطی شما ست میشه.


            دوست من این کار جواب میده ولی من جات بودم این کار رو میکردم
            بعد از اینکه baud روست کردین کافیه بنویسین W& دیگه تنظیم میشه و حتی اگه ماژول خاموش روشن بشه باز هم ثبت شده میمونه
            مثلا
            at+ipr=9600;&W
            هر کی میخواد از شر هیپر راحت شه این فایل رو دانلود کنه
            یه ocx داره بریزن توی پوشه system32 ویندوز و بعد register.bat رو اجرا کنید حالا با اجرای برنامه gsm.exe به همه چی مدم یا گوشیتون همه جوره دسترسی دارین
            خیلی راحته کار باهاش

            new.zip - 0.83MB


            سلام به همه، دوستانی که با ماژول sim300 کار کردن، بعنوان آی سی "anti esd" چی گذاشتین؟ منظورم آی سی که واسه حفاظت نویز سیم کارت لازم. اگه هیچی نذاریم خیلی بد میشه؟!

            از دیود برای کم کردن ولتاژ استفاده کنید یک 7805 + 2x1N4001
            5 - 2x0.7 = 3.6

            برای ارتباط همزمان دو وسیله جانبی gsm و gps با یوزارت میکرو(mega16-1usart) یه مالتیپلکسر دوآل چهار کاناله(4052) گذاشتم. قبلا تستش کردم و 0و1 رو درست منتقل میکنه، اما وقتی میخوام Rx,Tx میکرو رو باهاش تقسیم و منتقل کنم، اصلا داده رو منتقل نمیکنه.


            AT+CMGF=1
            OK
            AT+CNMI=1,2,0,0,0
            OK


            منم یکبار 7805 گزاشتم همین مشکلو داشتم.
            یه آداپتور سوئیچینگ ۵ ولت ۲ آمپر بگیر ، با یک دیود سری کن و بده به ماژول.
            نزدیک تغذیهٔ ماژول هم یه خازن 1000uF موازی کن.
            بهتره یه دیود زنر نزدیک ۵ ولت هم برای ماژولت قرار بدی.

            دیدگاه


              GPRS و ارتباط آن با AVR

              سلام به همه دوستان.

              میخواستم بدونم از اساتید کسی با SIM548 (قسمت GPRS) اون کار کرده؟ اگه اینطور هست میخواستم بدونم چجوری میشه دیتا که مثلا مختصات موقعیت رو میشه باهاش ارسال کرد. واین دیتا های ارسالی به کجا میره؟ و از کجا باید اون رو دریافت کرد؟
              واقعیت قضیه اینه که من میخوام یه ردیاب برای ماشین بسازم که موقعیت رو از طریق GPRS بفرسته ! ولی نمیدونم دیتای ارسالی توسط GPRS رو از کجا باید دریافت کنم و چجوری اون رو روی نقشه نشون بدم؟ تاپیکهای قبلی هم مطالعه کردم ولی چیز زیادی (حداقل در باره GPRS) نصیبم نشد!
              و سوال بعدی اینکه کسی هست خلاصه دستورات SIM458 رو داشته باشه و به همراه معرفی پایه های اون . راستیتش دیتا شیت رو دانلود کردم و 88 صفحه بود و حوصله خوندن 88 صفحه اونم انگلیسی رو نداشتم . اگه دوستان مجموعه ای بصورت خلاصه از نحوه کار با SIM548 رو دارند (اعم از GPS/GSM/GPRS) لطفا دریغ نکنند.
              اگر لطف کنید مثال هاتون با زبان بیسک باشه چون من اون زبان رو بشتر از C بلد هستم. :nice:

              در ضمن من این سوال رو در قسمت مدارات مخابراتی پرسیدم که با استقبال کمی مواجه شد :sad: . گفتم شاید اساتید این بخش در این مورد اطلاعات بشتری داشته باشند.
              پیشاپیش تشکر میکنم . موفق باشید.

              دیدگاه


                پاسخ : GSM و ارتباط آن با AVR

                سلام
                این درست نیست که 95% از گوشی ها از پروتکل rs232 استفاده میکنن!
                اتفاقا کوشی های جدید فقط به یو اس بی وصل میشن و شما باید یو اس بی هاست بسازین تا ارتباط برقرار کنین.

                دیدگاه


                  پاسخ : GSM و ارتباط آن با AVR

                  با سلام به همه دوستان
                  در مورد اتصال GSM ماژول ها به میکروکنترلر نیازی به استفاده از تراشه MAX232 نیست بهتره برای اتصال پورت سریال میکرو به پورت سریال ماژول مطابق زیر عمل کرد:
                  1-پایه TXD میکرو را با یه تقسیم مقاومتی به پایه RXD ماژول متصل کنید طوری که سطح ولتاژی 5 ولتی میکرو برای ماژول به 3.3 تا حداکثر 4 تبدیل بشه
                  2- پایه TXD ماژول را بافر کنید یعنی از یه تراشه بافر یا یه ترانزیستور به منظور تغییر سطح ولتاژ از 3.3 ولت به 5 برای دریافت توسط میکرو استفاده کنید.

                  برنامه زیر یه برنامه ساده هست که ابتدا ماژول را روشن سپس یه sms به شماره مورد نظر می فرسته

                  $regfile = "m32def.dat"
                  $crystal = 4000000
                  $baud = 9600


                  Declare Sub Getline(s As String)
                  Declare Sub Flushbuf()



                  Dim I As Byte , B As Byte
                  Dim Sret As String * 66 , Stemp As String * 6 , W As Word



                  Ddrb.0 = 1
                  Ddrd.4 = 1

                  Config Lcdpin = Pin , Db4 = Pinc.4 , Db5 = Pinc.5 , Db6 = Pinc.6 , Db7 = Pinc.7 , E = Pinc.3 , Rs = Pinc.2
                  Config Lcd = 16 * 2

                  Cls
                  Home
                  Lcd "PST Co.5-1"
                  '---------------------------------------------

                  Lowerline : Lcd "ON Process"
                  Toggle Portd.4
                  Portb.0 = 1
                  Wait 2
                  Toggle Portd.4
                  Portb.0 = 0
                  Wait 4
                  Toggle Portd.4
                  Portb.0 = 1
                  Wait 15
                  Toggle Portd.4

                  Print "AT" ; Chr(13)
                  Wait 1

                  Print "AT" ; Chr(13)
                  Wait 1

                  Print "AT" ; Chr(13)
                  Wait 1
                  Print "AT" ; Chr(13)
                  Wait 1
                  Print "AT" ; Chr(13)
                  Wait 1
                  Print "ATE0" ; Chr(13)
                  Wait 1



                  '----------------------------------------------
                  'sms settings

                  Cls : Home : Lcd "send sms"
                  Wait 1
                  Print "AT+CMGF=1" ; Chr(13)
                  Wait 1
                  Print "AT+CMGS=" ; Chr(34) ; "0913*****" ; Chr(34) ; Chr(13)
                  Wait 1
                  Print "SIM IS Restarted" ; Chr(26)
                  Lowerline : Lcd "sent sms1"
                  Getline Sret ' get data from modem
                  Cls : Lowerline
                  Lcd Sret
                  Wait 4
                  '--------------------------------------------------


                  Do
                  Getline Sret ' get data from modem
                  Cls : Lowerline
                  Lcd Sret
                  Wait 2

                  Loop


                  End



                  Sub Getline(s As String)
                  S = ""
                  Do
                  B = Inkey()
                  Select Case B
                  Case 0 'nothing
                  Case 13 : If S <> "" Then Exit Do ' we do not need this one
                  Case 10 : If S <> "" Then Exit Do ' if we have received something
                  Case Else
                  S = S + Chr(b) ' build string
                  End Select
                  Loop
                  End Sub


                  'flush input buffer
                  Sub Flushbuf()
                  Waitms 100 'give some time to get data if it is there
                  Do
                  B = Inkey() ' flush buffer
                  Loop Until B = 0
                  End Sub

                  دیدگاه


                    پاسخ : GSM و ارتباط آن با AVR

                    نوشته اصلی توسط momeny
                    سلام.
                    لطفا در مورد پایه های سریال گوشی sony eriksson توضیح بدید. نقشه این گوشی های sony eriksso رو از کجا می تونم گیر بیارم.
                    از سایت pinouts.ru
                    اگه گوشی تون k750 هست اینم لینکش:
                    http://pinouts.ru/CellularPhonesCables/sony_ericsson_dcu60_pinout.shtml

                    دیدگاه


                      پاسخ : GSM و ارتباط آن با AVR

                      سلام دوست عزیز در زیر یه برنامه نوشتم که توسط این برنامه می تونید با Sim300cz داده های خودتون را بر روی سرور بفرستین

                      دقت بشه که به جای UDP نوشته شده با TCP هم می توانید داده ارسال کنید.


                      $regfile = "m32def.dat"
                      $crystal = 4000000
                      $baud = 9600
                      '$sim

                      Declare Sub Getline(s As String)
                      Declare Sub Flushbuf()
                      Declare Sub Showsms(s As String )


                      Dim I As Byte , B As Byte
                      Dim Sret As String * 200 , Stemp As String * 6 , W As Word
                      Dim S1 As String * 200 , S2 As String * 200



                      Ddrb.0 = 1
                      Ddrd.4 = 1

                      Config Lcdpin = Pin , Db4 = Pinc.4 , Db5 = Pinc.5 , Db6 = Pinc.6 , Db7 = Pinc.7 , E = Pinc.3 , Rs = Pinc.2
                      Config Lcd = 16 * 2

                      Cls
                      Home
                      Lcd "nEW"
                      '---------------------------------------------

                      Lowerline : Lcd "ON Process"
                      Toggle Portd.4
                      Portb.0 = 1
                      Wait 2
                      Toggle Portd.4
                      Portb.0 = 0
                      Wait 4
                      Toggle Portd.4
                      Portb.0 = 1
                      Wait 15
                      Toggle Portd.4

                      Print "AT" ; Chr(13)
                      Wait 1

                      Print "AT" ; Chr(13)
                      Wait 1

                      Print "AT" ; Chr(13)
                      Wait 1
                      Print "AT" ; Chr(13)
                      Wait 1
                      Print "AT" ; Chr(13)
                      Wait 1
                      Print "ATE0" ; Chr(13)
                      Wait 1



                      '----------------------------------------------
                      'sms settings

                      Cls : Home : Lcd "send sms"
                      Wait 1
                      Print "AT+CMGF=1" ; Chr(13)
                      Wait 1
                      Print "AT+CMGS=" ; Chr(34) ; "0913322222" ; Chr(34) ; Chr(13)
                      Wait 1
                      Print "SIM IS Restarted" ; Chr(26)
                      Lowerline : Lcd "sent sms1"
                      Getline Sret
                      Cls : Lowerline
                      Lcd Sret
                      Wait 4

                      Print "AT+CGATT=1" ; Chr(13)
                      Getline Sret
                      ' get data from modem
                      Cls : Lowerline
                      Lcd Sret
                      Wait 4
                      Print "AT+CIPSTART=" ; Chr(34) ; "UDP" ; Chr(34) ; "," ; Chr(34) ; "91.98.32.182" ; Chr(34) ; "," ; Chr(34) ; "8830" ; Chr(34) ; Chr(13)
                      Getline Sret
                      Cls : Lowerline
                      Lcd Sret
                      Wait 4
                      Print "AT+CIPSEND" ; Chr(13)
                      Wait 1
                      Print Chr(01) ; Chr(02) ; Chr(03) ; Chr(26)
                      Getline Sret
                      Cls : Lowerline
                      Lcd Sret
                      Wait 4

                      Print "AT+CIPSEND" ; Chr(13)
                      Wait 1
                      Print 123
                      Getline Sret
                      Cls : Lowerline
                      Lcd Sret
                      Wait 4

                      Print "AT+CIPSEND" ; Chr(13)
                      Wait 1
                      Print "123"
                      Getline Sret
                      Cls : Lowerline
                      Lcd Sret
                      Wait 4


                      '--------------------------------------------------


                      Do
                      Getline Sret ' get data from modem
                      Cls : Lowerline
                      Lcd Sret
                      Wait 1
                      I = Instr(sret , ":&quot ' look for :
                      If I > 0 Then 'found it
                      Stemp = Left(sret , I)
                      Select Case Stemp
                      Case "+CMTI:" : Showsms Sret ' we received an SMS
                      ' hanle other cases here
                      End Select
                      End If

                      Loop
                      Flushbuf




                      End



                      Sub Showsms(s As String )
                      Cls : Home
                      I = Instr(s , ",&quot ' find comma
                      I = I + 1
                      Stemp = Mid(s , I) ' s now holds the index number
                      Lcd "Number=" ; Stemp
                      Wait 1

                      Print "AT+CMGR=" ; Stemp ' get the message
                      Getline S1
                      Getline S2 ' header +CMGR: "REC READ","+316xxxxxxxx",,"02/04/05,0149+00"
                      Cls : Home : Lcd "back sms"
                      Wait 1
                      Print "AT+CMGF=1" ; Chr(13)
                      Wait 1
                      Print "AT+CMGS=" ; Chr(34) ; "0913333333" ; Chr(34) ; Chr(13)
                      Wait 1
                      Print S1
                      Wait 1
                      Print S2 ; Chr(26)
                      Lowerline : Lcd "backed sms1"
                      Wait 4
                      Cls : Home
                      Lcd "remove sms"
                      Print "AT+CMGD=" ; Stemp ' delete the message
                      End Sub










                      Sub Getline(s As String)
                      S = ""
                      Do
                      B = Inkey()
                      Select Case B
                      Case 0 'nothing
                      Case 13 : If S <> "" Then Exit Do ' we do not need this one
                      Case 10 : If S <> "" Then Exit Do ' if we have received something
                      Case Else
                      S = S + Chr(b) ' build string
                      End Select
                      Loop
                      End Sub


                      'flush input buffer
                      Sub Flushbuf()
                      Waitms 100 'give some time to get data if it is there
                      Do
                      B = Inkey() ' flush buffer
                      Loop Until B = 0
                      End Sub

                      دیدگاه


                        پاسخ : GPRS و ارتباط آن با AVR

                        سلام دوست عزیز در زیر یه برنامه نوشتم که توسط این برنامه می تونید با Sim300cz داده های خودتون را بر روی سرور بفرستین

                        دقت بشه که به جای UDP نوشته شده با TCP هم می توانید داده ارسال کنید.

                        در ضمن از طریق آدرس زیر نیز می تونید اطلاعات بیشتری کسب کنید.

                        www.saghaei.com





                        $regfile = "m32def.dat"
                        $crystal = 4000000
                        $baud = 9600
                        '$sim

                        Declare Sub Getline(s As String)
                        Declare Sub Flushbuf()
                        Declare Sub Showsms(s As String )


                        Dim I As Byte , B As Byte
                        Dim Sret As String * 200 , Stemp As String * 6 , W As Word
                        Dim S1 As String * 200 , S2 As String * 200



                        Ddrb.0 = 1
                        Ddrd.4 = 1

                        Config Lcdpin = Pin , Db4 = Pinc.4 , Db5 = Pinc.5 , Db6 = Pinc.6 , Db7 = Pinc.7 , E = Pinc.3 , Rs = Pinc.2
                        Config Lcd = 16 * 2

                        Cls
                        Home
                        Lcd "nEW"
                        '---------------------------------------------

                        Lowerline : Lcd "ON Process"
                        Toggle Portd.4
                        Portb.0 = 1
                        Wait 2
                        Toggle Portd.4
                        Portb.0 = 0
                        Wait 4
                        Toggle Portd.4
                        Portb.0 = 1
                        Wait 15
                        Toggle Portd.4

                        Print "AT" ; Chr(13)
                        Wait 1

                        Print "AT" ; Chr(13)
                        Wait 1

                        Print "AT" ; Chr(13)
                        Wait 1
                        Print "AT" ; Chr(13)
                        Wait 1
                        Print "AT" ; Chr(13)
                        Wait 1
                        Print "ATE0" ; Chr(13)
                        Wait 1



                        '----------------------------------------------
                        'sms settings

                        Cls : Home : Lcd "send sms"
                        Wait 1
                        Print "AT+CMGF=1" ; Chr(13)
                        Wait 1
                        Print "AT+CMGS=" ; Chr(34) ; "0913322222" ; Chr(34) ; Chr(13)
                        Wait 1
                        Print "SIM IS Restarted" ; Chr(26)
                        Lowerline : Lcd "sent sms1"
                        Getline Sret
                        Cls : Lowerline
                        Lcd Sret
                        Wait 4

                        Print "AT+CGATT=1" ; Chr(13)
                        Getline Sret
                        ' get data from modem
                        Cls : Lowerline
                        Lcd Sret
                        Wait 4
                        Print "AT+CIPSTART=" ; Chr(34) ; "UDP" ; Chr(34) ; "," ; Chr(34) ; "91.98.32.182" ; Chr(34) ; "," ; Chr(34) ; "8830" ; Chr(34) ; Chr(13)
                        Getline Sret
                        Cls : Lowerline
                        Lcd Sret
                        Wait 4
                        Print "AT+CIPSEND" ; Chr(13)
                        Wait 1
                        Print Chr(01) ; Chr(02) ; Chr(03) ; Chr(26)
                        Getline Sret
                        Cls : Lowerline
                        Lcd Sret
                        Wait 4

                        Print "AT+CIPSEND" ; Chr(13)
                        Wait 1
                        Print 123
                        Getline Sret
                        Cls : Lowerline
                        Lcd Sret
                        Wait 4

                        Print "AT+CIPSEND" ; Chr(13)
                        Wait 1
                        Print "123"
                        Getline Sret
                        Cls : Lowerline
                        Lcd Sret
                        Wait 4


                        '--------------------------------------------------


                        Do
                        Getline Sret ' get data from modem
                        Cls : Lowerline
                        Lcd Sret
                        Wait 1
                        I = Instr(sret , ":&quot ' look for :
                        If I > 0 Then 'found it
                        Stemp = Left(sret , I)
                        Select Case Stemp
                        Case "+CMTI:" : Showsms Sret ' we received an SMS
                        ' hanle other cases here
                        End Select
                        End If

                        Loop
                        Flushbuf




                        End



                        Sub Showsms(s As String )
                        Cls : Home
                        I = Instr(s , ",&quot ' find comma
                        I = I + 1
                        Stemp = Mid(s , I) ' s now holds the index number
                        Lcd "Number=" ; Stemp
                        Wait 1

                        Print "AT+CMGR=" ; Stemp ' get the message
                        Getline S1
                        Getline S2 ' header +CMGR: "REC READ","+316xxxxxxxx",,"02/04/05,0149+00"
                        Cls : Home : Lcd "back sms"
                        Wait 1
                        Print "AT+CMGF=1" ; Chr(13)
                        Wait 1
                        Print "AT+CMGS=" ; Chr(34) ; "0913333333" ; Chr(34) ; Chr(13)
                        Wait 1
                        Print S1
                        Wait 1
                        Print S2 ; Chr(26)
                        Lowerline : Lcd "backed sms1"
                        Wait 4
                        Cls : Home
                        Lcd "remove sms"
                        Print "AT+CMGD=" ; Stemp ' delete the message
                        End Sub










                        Sub Getline(s As String)
                        S = ""
                        Do
                        B = Inkey()
                        Select Case B
                        Case 0 'nothing
                        Case 13 : If S <> "" Then Exit Do ' we do not need this one
                        Case 10 : If S <> "" Then Exit Do ' if we have received something
                        Case Else
                        S = S + Chr(b) ' build string
                        End Select
                        Loop
                        End Sub


                        'flush input buffer
                        Sub Flushbuf()
                        Waitms 100 'give some time to get data if it is there
                        Do
                        B = Inkey() ' flush buffer
                        Loop Until B = 0
                        End Sub

                        دیدگاه


                          پاسخ : GSM و ارتباط آن با AVR

                          دوستان دورود بر شما
                          کسی می دونه که چهطوری و با چه At Command هایی میشه از Gprs استفاده کرد
                          مثلا یک یک ایمیل ارسال کرد (من از ماژول WaveCom ایتفاده می کنم )
                          معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

                          دیدگاه


                            پاسخ : GSM و ارتباط آن با AVR

                            من می خوام sim300 را به میکرو وصل کنم و همین دستورات رو بهش بفرستم ولی علاوه بر rx,tx دو پایه دیگر cts,rts هم داره که خیلی خوب نمی دونم چطوری باید اونا رو کنترل کنم و آیا اصلا لازمه ؟

                            دیدگاه


                              پاسخ : GSM و ارتباط آن با AVR

                              نوشته اصلی توسط داریوش عباسی
                              من می خوام sim300 را به میکرو وصل کنم و همین دستورات رو بهش بفرستم ولی علاوه بر rx,tx دو پایه دیگر cts,rts هم داره که خیلی خوب نمی دونم چطوری باید اونا رو کنترل کنم و آیا اصلا لازمه ؟
                              ctsو rts لازم نیست وصل شه فقط همون rx و tx رو وصل کن
                              www.tehranelec.com

                              دیدگاه


                                پاسخ : GSM و ارتباط آن با AVR

                                نوشته اصلی توسط n340
                                کسی PCB sim300 رو داره
                                فکر کنم قبلا اینجا گذاشته بودمش
                                http://www.eca.ir/forum2/index.php?topic=37782.0
                                www.tehranelec.com

                                دیدگاه

                                لطفا صبر کنید...
                                X