اطلاعیه

Collapse
No announcement yet.

کمک کنید نمی تونم HMt و HMR رو راه بندازم

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    کمک کنید نمی تونم HMt و HMR رو راه بندازم

    سلام به همگی . من تو راه اندازی این دو ماژول گیر کردم هر کاری می کنم نمی شه مگه مثل ارسال سریال نباید با هاشون برخورد کرد لطفا راهنمایی کنید . منظورم اینه که اگر نکته ی خاصی برای استفاده از این ماژول ها هست ممنون می شم بگید

    #2
    پاسخ : کمک کنید نمی تونم HMt و HMR رو راه بندازم

    بله نحوه ارتباط با این ماژول بصورت سریال یا همون usart هستش

    با تنظیمات پایه USART در هر دو سمت فرستنده و گیرنده میشه بینشون ارتباط برقرار کرد

    یعنی باود 9600 ، دیتای 8 بیت ، بدون بیت توازن و یک بیت پایان

    فقط چند تا نکته رو دقت کنید :

    1- تنظیمات سریال هر دو ماژول باید یکسان باشد

    2- فاصله بین ارسال هر بایت نباید از 75 میلی ثانیه بالاتر برود در این صورت ماژول به حالت SLEEP می رود و دیتایی ارسال نمی کند

    3- پایه VCC ماژول فرستنده یا HM-T باید توسط میکروکنترلر کنترل شود یعنی فرضاً شما با یک ترانزیستور مثبت در هنگام روشن شدن مدار در ابتدا تغذیه ماژول را قطع کنید و سپس تغذیه ماژول را وصل کنید

    4- بند سه را می توان برای ماژول گیرنده نیز به کار بست

    5- ماژول گیرنده در زمانی که فرستنده دیتایی نمی فرسته خود به خود در حال دریافت دیتای تصادفی است (نشانه آماده به کار بودن گیرنده)

    بنده با این نکات تا حالا چندین عدد از این ماژول ها را راه اندازی کرده ام

    دیدگاه


      #3
      پاسخ : کمک کنید نمی تونم HMt و HMR رو راه بندازم

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

      علاوه بر نکات ذکر شده که من تا حالا چندین دفعه ایی که تست کردم ولی اونها رو انجام ندادم(بند های 2و 3 )ولی بازم جواب گرفتم این نکته رو در نظر داشته باشید که چند تا فرستنده یا گیرنده در کنار هم روشن نباشند چون باعپ

      اختلال میشه و نکته ی دیگه اینه که در برنامه نویسی دقت کنید که ممکن است دستورات "خط جدید" و "برگشت به اول سطر" نیز ارسال شود که باید اونها رو در برنامه نویسی در نظر بگیرید.

      نکته دیگه اینه که این ماژول ها در دو نوع TTL و RS232 موجوده که اگه از نوع rs232 استفاده کنی باید از مبدل سطح max232 استفاده کنی. :bye

      دیدگاه


        #4
        پاسخ : کمک کنید نمی تونم HMt و HMR رو راه بندازم

        دوست عزیز از کجا بفهمیم که کدوم نوعش ttl و کدوم rs232 هست؟؟؟؟؟؟
        http://ceworld.ir/images/ads/dornablogcom_ads.gif

        دیدگاه


          #5
          پاسخ : کمک کنید نمی تونم HMt و HMR رو راه بندازم

          نوشته اصلی توسط پیمان ذوالنوری

          در برنامه نویسی دقت کنید که ممکن است دستورات "خط جدید" و "برگشت به اول سطر" نیز ارسال شود که باید اونها رو در برنامه نویسی در نظر بگیرید
          میشه بیشتر توضیح بدید البته با یه مثال عملی کوچیک ممنون می شم مثل دوستم از کجا نوع ttl یا rs232 معلوم می شه ؟؟

          دیدگاه


            #6
            پاسخ : کمک کنید نمی تونم HMt و HMR رو راه بندازم

            میشه بیشتر توضیح بدید البته با یه مثال عملی کوچیک ممنون می شم مثل دوستم از کجا نوع ttl یا rs232 معلوم می شه ؟؟
            نوع TTL و RS232 رو معمولا باید در هنگام خرید از فروشنده پرسیده شود ولی در بعضی نمونه ها ممکنه خود فروشنده با ماژیک روی آنها نوشته باشه .

            برای توضیات برنامه نویسی باید بگم که زمانی که از بسکام استفاده می کنید بعد از دستور PRINT به صورت خودکار دوکارکتر با کد اسکی 10 و 13 ارسال میشوند برای جولگیری از این کار باید بعد از دستور PRINT علامت سیمی کالن قرار بدید.
            به عنوان مثال :
            PRINT "HELLO" ;

            و اگه توی کد ویژن کار میکنید این کارکتر ها با دو کد n\ و r\ ارسال می شوند که البته این کار به صورت خودکار انجام نمیشود وکاربر باید خود گاهانه اونا رو قرار بده البته در صورت نیاز

            دیدگاه


              #7
              پاسخ : کمک کنید نمی تونم HMt و HMR رو راه بندازم

              نوشته اصلی توسط پیمان ذوالنوری
              میشه بیشتر توضیح بدید البته با یه مثال عملی کوچیک ممنون می شم مثل دوستم از کجا نوع ttl یا rs232 معلوم می شه ؟؟
              نوع TTL و RS232 رو معمولا باید در هنگام خرید از فروشنده پرسیده شود ولی در بعضی نمونه ها ممکنه خود فروشنده با ماژیک روی آنها نوشته باشه .

              برای توضیات برنامه نویسی باید بگم که زمانی که از بسکام استفاده می کنید بعد از دستور PRINT به صورت خودکار دوکارکتر با کد اسکی 10 و 13 ارسال میشوند برای جولگیری از این کار باید بعد از دستور PRINT علامت سیمی کالن قرار بدید.
              به عنوان مثال :
              PRINT "HELLO" ;

              و اگه توی کد ویژن کار میکنید این کارکتر ها با دو کد n\ و r\ ارسال می شوند که البته این کار به صورت خودکار انجام نمیشود وکاربر باید خود گاهانه اونا رو قرار بده البته در صورت نیاز
              دوست عزیز من برای ارسال توی کدویژن از توابع استفاده نمی کنم چون حجم زیادی از حافظه رو می گیره و برای ارسال UDR را برابر مقدار مورد نظر قرار می دهم . مثل زیر از نظر شما که این برنامه مشکلی نداره که

              UDR=0x55;
              delay_ms(50);
              UDR=number;
              دلیل اینم که اول 0x55 رو می فرستم برای خروج از حالت sleep و سنکرون کردن گیرنده با فرستنده هستش . با این برنامه گیرنده همون زمانی که فرستنده می فرسته فعال می شه و عددی هم دریافت می کنه اما نه اون عددا یه شش هفتا عدد خاص مثل 253 یا 255 یا 32 و ... ممنون می شم اگر می تونید راهنمایی کنید بازم مرا بی نصیب نذارید

              دیدگاه


                #8
                پاسخ : کمک کنید نمی تونم HMt و HMR رو راه بندازم

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


                wcnt=0;
                while ((UCSR0A & DATA_REGISTER_EMPTY)==0){
                wcnt+=1;if(wcnt>=100000) return 0; delay_us(10);}
                UDR0=number;

                ولی به نظر من اول واسه تست کردن hmr به کامپیوتر وصل کن بعد مطمئن شو که از نظر سخت افزار مشکلی نداری بعد تست نرم افزاری انجام بده :job:

                دیدگاه


                  #9
                  پاسخ : کمک کنید نمی تونم HMt و HMR رو راه بندازم

                  نوشته اصلی توسط behnam_kh2002
                  دوست عزیز از کجا بفهمیم که کدوم نوعش ttl و کدوم rs232 هست؟؟؟؟؟؟
                  موقعی که می خری باید مازولو نگاه کنی اگه ایسی max 232 روش باشه RS232 هستش... وگرنه TTL
                  ذكات علم ياد دادنه ....

                  دیدگاه


                    #10
                    پاسخ : کمک کنید نمی تونم HMt و HMR رو راه بندازم

                    نوشته اصلی توسط majid.4206


                    موقعی که می خری باید مازولو نگاه کنی اگه ایسی max 232 روش باشه RS232 هستش... وگرنه TTL
                    رو ماژول یه آیسی هستش حالا نمی دونم rs232 هست یا نه ؟ حالا اگر rs232 باشه باید هم توی فرستنده و هم توی گیرنده از max232 استفاده کنم ؟؟؟؟؟؟؟؟؟

                    اینم یه عکس از ماژول هستش به نظر شما از کدوم نوعه؟؟؟

                    دیدگاه


                      #11
                      پاسخ : کمک کنید نمی تونم HMt و HMR رو راه بندازم

                      این ماژول HM-R از نوع TTL هستش !

                      الآن هم روی میز چند تایی وجود داره :mrgreen:

                      دیدگاه


                        #12
                        پاسخ : کمک کنید نمی تونم HMt و HMR رو راه بندازم

                        حالا اگر rs232 باشه باید هم توی فرستنده و هم توی گیرنده از max232 استفاده کنم ؟؟؟؟؟؟؟؟؟
                        اگه rs232 باشه آره باید توی هر دو مدارت از max232 استفاده کنی.

                        دیدگاه


                          #13
                          پاسخ : کمک کنید نمی تونم HMt و HMR رو راه بندازم

                          نوشته اصلی توسط Ali65
                          این ماژول HM-R از نوع TTL هستش !

                          الآن هم روی میز چند تایی وجود داره :mrgreen:

                          سلام خدمت دوست عزیز.
                          بین موضوعات من بحث کار با ماژول hmt و hmr 915mhz رو اینجا دیدم.من هم همین مشکل رو دارم.البته از کدگذاری داده ها هم استفاده کردم باز نتیجه نگرفتم.من کدهای برنامه رو خدمتتون ارائه میدم.لطفاً من رو هم راهنمایی کنید.با تشکر.

                          بخش گیرنده
                          کد:
                          Chip type      : ATmega16
                          Program type    : Application
                          Clock frequency   : 11.059200 MHz
                          Memory model    : Small
                          External SRAM size : 0
                          Data Stack size   : 256
                          *********************************************/
                          
                          #include <mega16.h>
                          #include <delay.h>
                          #include <string.h>
                          char j;
                              
                          
                          // Alphanumeric LCD Module functions
                          #asm
                            .equ __lcd_port=0x18
                          #endasm
                          #include <lcd.h>
                          
                          #define RXB8 1
                          #define TXB8 0
                          #define UPE 2
                          #define OVR 3
                          #define FE 4
                          #define UDRE 5
                          #define RXC 7
                          
                          #define FRAMING_ERROR (1<<FE)
                          #define PARITY_ERROR (1<<UPE)
                          #define DATA_OVERRUN (1<<OVR)
                          #define DATA_REGISTER_EMPTY (1<<UDRE)
                          #define RX_COMPLETE (1<<RXC)
                          
                          // USART Receiver buffer
                          #define RX_BUFFER_SIZE 8
                          char rx_buffer[RX_BUFFER_SIZE];
                          unsigned char rx_wr_index,rx_rd_index,rx_counter;
                          // This flag is set on USART Receiver buffer overflow
                          bit rx_buffer_overflow;
                          
                          // USART Receiver interrupt service routine
                          #pragma savereg-
                          interrupt [USART_RXC] void uart_rx_isr(void)
                          {
                          char status,data;
                          #asm
                            push r26
                            push r27
                            push r30
                            push r31
                            in  r26,sreg
                            push r26
                          #endasm
                          status=UCSRA;
                          data=UDR;
                          
                          
                          
                          if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
                            {
                            rx_buffer[rx_wr_index]=data;
                            if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
                            if (++rx_counter == RX_BUFFER_SIZE)
                             {
                             
                           
                             rx_counter=0;
                             rx_buffer_overflow=1;
                             };
                            };
                            #asm
                            pop r26
                            out sreg,r26
                            pop r31
                            pop r30
                            pop r27
                            pop r26
                          #endasm
                          }
                          #pragma savereg+
                          
                          #ifndef _DEBUG_TERMINAL_IO_
                          // Get a character from the USART Receiver buffer
                          #define _ALTERNATE_GETCHAR_
                          #pragma used+
                          char getchar(void)
                          {
                          char data;
                          while (rx_counter==0);
                          data=rx_buffer[rx_rd_index];
                          if (++rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
                          #asm("cli")
                          --rx_counter;
                          #asm("sei")
                          return data;
                          }
                          #pragma used-
                          #endif
                          
                          // Standard Input/Output functions
                          #include <stdio.h>
                          
                          // Declare your global variables here
                          
                          void main(void)
                          {
                          // Declare your local variables here
                          
                          // Input/Output Ports initialization
                          // Port A initialization
                          // Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In 
                          // State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T 
                          PORTA=0x00;
                          DDRA=0x00;
                          
                          // Port B initialization
                          // Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In 
                          // State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T 
                          PORTB=0x00;
                          DDRB=0x00;
                          
                          // Port C initialization
                          // Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In 
                          // State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T 
                          PORTC=0x00;
                          DDRC=0x00;
                          
                          // Port D initialization
                          // Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In 
                          // State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=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;
                          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
                          GICR|=0x00;
                          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: Off
                          // USART Mode: Asynchronous
                          // USART Baud rate: 9600
                          UCSRA=0x00;
                          UCSRB=0x90;
                          UCSRC=0x86;
                          UBRRH=0x00;
                          UBRRL=0x47;
                          
                          // Analog Comparator initialization
                          // Analog Comparator: Off
                          // Analog Comparator Input Capture by Timer/Counter 1: Off
                          // Analog Comparator Output: Off
                          ACSR=0x80;
                          SFIOR=0x00;
                          
                          // LCD module initialization
                          lcd_init(16);
                          
                          // Global enable interrupts
                          #asm("sei")
                          
                          while (1)
                             {
                          j=getchar();
                          if (j=='1' ){
                          lcd_clear();
                          lcd_gotoxy(0,0);
                          lcd_putchar(getchar());
                          }
                           
                          
                           
                             
                          }
                          }
                          بخش فرستنده:
                          کد:
                          Chip type      : ATmega8
                          Program type    : Application
                          Clock frequency   : 11.059200 MHz
                          Memory model    : Small
                          External SRAM size : 0
                          Data Stack size   : 256
                          *********************************************/
                          #include <mega8.h>
                          #include <delay.h>
                          
                          #define RXB8 1
                          #define TXB8 0
                          #define UPE 2
                          #define OVR 3
                          #define FE 4
                          #define UDRE 5
                          #define RXC 7
                          
                          #define FRAMING_ERROR (1<<FE)
                          #define PARITY_ERROR (1<<UPE)
                          #define DATA_OVERRUN (1<<OVR)
                          #define DATA_REGISTER_EMPTY (1<<UDRE)
                          #define RX_COMPLETE (1<<RXC)
                          
                          // USART Transmitter buffer
                          #define TX_BUFFER_SIZE 8
                          char tx_buffer[TX_BUFFER_SIZE];
                          unsigned char tx_wr_index,tx_rd_index,tx_counter;
                          
                          // USART Transmitter interrupt service routine
                          #pragma savereg-
                          interrupt [USART_TXC] void uart_tx_isr(void)
                          {
                          #asm
                            push r26
                            push r27
                            push r30
                            push r31
                            in  r26,sreg
                            push r26
                          #endasm
                          if (tx_counter)
                            {
                            --tx_counter;
                            UDR=tx_buffer[tx_rd_index];
                            if (++tx_rd_index == TX_BUFFER_SIZE) tx_rd_index=0;
                            };
                          #asm
                            pop r26
                            out sreg,r26
                            pop r31
                            pop r30
                            pop r27
                            pop r26
                          #endasm
                          }
                          #pragma savereg+
                          
                          #ifndef _DEBUG_TERMINAL_IO_
                          // Write a character to the USART Transmitter buffer
                          #define _ALTERNATE_PUTCHAR_
                          #pragma used+
                          void putchar(char c)
                          {
                          while (tx_counter == TX_BUFFER_SIZE);
                          #asm("cli")
                          if (tx_counter || ((UCSRA & DATA_REGISTER_EMPTY)==0))
                            {
                            tx_buffer[tx_wr_index]=c;
                            if (++tx_wr_index == TX_BUFFER_SIZE) tx_wr_index=0;
                            ++tx_counter;
                            }
                          else UDR=c;
                          #asm("sei")
                          }
                          #pragma used-
                          #endif
                          
                          // Standard Input/Output functions
                          #include <stdio.h>
                          
                          // Declare your global variables here
                          
                          void main(void)
                          {
                          // Declare your local variables here
                          
                          // Input/Output Ports initialization
                          // Port B initialization
                          // Func0=In Func1=Out Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In 
                          // State0=T State1=0 State2=T State3=T State4=T State5=T State6=T State7=T 
                          PORTB=0x00;
                          DDRB=0x02;
                          
                          // Port C initialization
                          // Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In 
                          // State0=T State1=T State2=T State3=T State4=T State5=T State6=T 
                          PORTC=0x00;
                          DDRC=0x00;
                          
                          // Port D initialization
                          // Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In 
                          // State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T 
                          PORTD=0x00;
                          DDRD=0x00;
                          
                          // Timer/Counter 0 initialization
                          // Clock source: System Clock
                          // Clock value: Timer 0 Stopped
                          TCCR0=0x00;
                          TCNT0=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;
                          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
                          GICR|=0x00;
                          MCUCR=0x00;
                          
                          // Timer(s)/Counter(s) Interrupt(s) initialization
                          TIMSK=0x00;
                          
                          // USART initialization
                          // Communication Parameters: 8 Data, 1 Stop, No Parity
                          // USART Receiver: Off
                          // USART Transmitter: On
                          // USART Mode: Asynchronous
                          // USART Baud rate: 9600
                          UCSRA=0x00;
                          UCSRB=0x48;
                          UCSRC=0x86;
                          UBRRH=0x00;
                          UBRRL=0x47;
                          
                          // Analog Comparator initialization
                          // Analog Comparator: Off
                          // Analog Comparator Input Capture by Timer/Counter 1: Off
                          // Analog Comparator Output: Off
                          ACSR=0x80;
                          SFIOR=0x00;
                          
                          // Global enable interrupts
                          #asm("sei")
                          
                          while (1)
                             {
                                
                             // Place your code here
                              printf("%b",1);
                          
                           printf("A");
                           delay_ms(75);
                           
                          
                             };
                          }

                          دیدگاه


                            #14
                            پاسخ : کمک کنید نمی تونم HMt و HMR رو راه بندازم

                            سلام
                            من با این ماژول یک رباط ساختم و کاملا به طرز کارشون اشنا هتم
                            اطلاعات اوله رو اینجا
                            http://najdi.persiangig.ir/document/mohZen.pdf
                            ببینید اگر کاتون راه نیفتاد بیشتر توضیح مدم
                            در اولین فرصت کدهای گیرنده و فرستنده رو براتون قرار می دهم
                            دیگر کارهای خودم رو هم اینجا میتونید ببینید
                            http://www.eca.ir/forum2/index.php?topic=30861.msg149053#msg149053
                            www.tehranelec.com

                            دیدگاه


                              #15
                              پاسخ : کمک کنید نمی تونم HMt و HMR رو راه بندازم

                              نوشته اصلی توسط محسن محمد خانی
                              سلام
                              من با این ماژول یک رباط ساختم و کاملا به طرز کارشون اشنا هتم
                              اطلاعات اوله رو اینجا
                              http://najdi.persiangig.ir/document/mohZen.pdf
                              ببینید اگر کاتون راه نیفتاد بیشتر توضیح مدم
                              در اولین فرصت کدهای گیرنده و فرستنده رو براتون قرار می دهم
                              دیگر کارهای خودم رو هم اینجا میتونید ببینید
                              http://www.eca.ir/forum2/index.php?topic=30861.msg149053#msg149053
                              سلام.
                              دوست عزیز روباتی که ساختید رو دیدم.واقعا متفکرانه ساخته شده.اگر ممکنه همونطور که اشاره کردید راجع به بخش فرستنده وگیرنده یک مقدار بیشتر توضیح بدید.با تشکر.

                              دیدگاه

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