اطلاعیه

Collapse
No announcement yet.

ریموت کنترل IR یک کاناله - قابل برنامه ریزی با هر نوع کنترل خانگی

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

    پاسخ : ریموت کنترل IR یک کاناله - قابل برنامه ریزی با هر نوع کنترل خانگی

    نوشته اصلی توسط AlirezaT
    خوب شما اگه بخواین . . .
    آقا AlirezaT
    :applause:
    من برنامه شما رو تست کردم. :applause:
    دقیقا همونطور که گفته بودید عمل میکنه. خیلی دقیق!!!
    اگه به صفحه قبل بری، میبینی من کلی کنترل از انواع برندها جمع کردم. تو این زمان کوتاه با هرکدوم که تست کردم، خیلی دقیق عمل کرد.
    ولی خیلی متاسف شدم که فرمودید به زبان C نوشته اید.
    خواهش میکنم این تاپیک رو از اول مطالعه بفرمایید، تا قضیه دستتون بیاد ، تا بتونیم باهم دیگه و دوستم javad1354 این طرح شما رو به شکل هدف این تاپیک در بیاریم.
    پس تا حالا کجا بودید؟ :smile:
    مرتب به تاپیک سر بزن که خیلی کار داریم!

    دیدگاه


      پاسخ : ریموت کنترل IR یک کاناله - قابل برنامه ریزی با هر نوع کنترل خانگی

      علیرضا جان منم تست کردم عالی جواب میده . فقط اگه میشه لطفا برنامشو بزار تا یه نگاهی بهش بندازم ببینم میشه برای بسکام هم تغییرش بدم یانه . ضمنا اگه میتونی برای تینی 13 هم برنامشو بنویس .
      وقتي همه نيروهاي جسمي و ذهني متمرکز شوند توانايي فرد براي حل مشکلات به طور حيرت انگيزي چند برابر مي شود .
      نرمن وينسنت پيل

      دیدگاه


        پاسخ : ریموت کنترل IR یک کاناله - قابل برنامه ریزی با هر نوع کنترل خانگی

        آقا javad1354

        کار میکنه!!! :nice:

        مثل مدار mega8 کار میکنه!
        یه تغییر کوچولو هم دادی که خیلی ملوس ترش کرده! کلید learn رو که نگه میدارم بعد از تاخیر 2 ثانیه ای اون LED مربوطه اش روشن میشه. و این یه احساس خوبی به آدم دست میده!!! احساس حرفه ای بودن!!!

        بین فشردن کلید برای تغییر حالت هم، باید یه مکث 3 ثانیه ای باشه ، تا عمل تغییر حالت بخوبی انجام بشه.

        دوتا اصلاح کوچولو هم میخواد که باشه برای بعد. یعنی اگه نباشه هم اشکالی نداره. :applause:

        ازت سپاسگزارم

        دیدگاه


          پاسخ : ریموت کنترل IR یک کاناله - قابل برنامه ریزی با هر نوع کنترل خانگی

          علیرضا جان سلام .این برنامه که من نوشتم با هردو پروتکل RC5 و6 جواب میده .فقط کنترل سونی نداشتم که با هاش بتونم برنامرو مچ کنم . شما اگر مطلبی رو که در چند پست قبل گذاشتم دانلود کنی فکر میکنم بدردت بخوره .
          توجه نکردین که من چی میگم !! :eek: با این روشی که من درست کردم دیگه مهم نیست ریموت شما دارای کدوم پروتکل هستش :
          ITT Protocol, JVC Protocol, NEC Protocol, Nokia NRC17, Sharp Protocol, Sony SIRC, Philips RC-5, Philips RC-6, Philips RC-MM, Philips RECS80
          اینا اسم پروتوکل های مختلفه !!!!
          برای اطلاعات بیشتر : http://www.educypedia.be/electronics/televisionrc5.htm

          درضمن من خودم دو سال پیش با همین RC5 بسکام یه سیستم ارتباطی دو طرفه درست کرده بودم ، کار خیلی جالبی بود !!! :nice:
          فرق ما با جهان غرب در اینه که اونا هیچی نمیدونن! و تحقیق میکنند ولی ما همه چیزو می دونیم! و تحقیق برای ما معنی نداره!!!!!!!!!!!! .(از یه آدم اینکاره)

          دیدگاه


            پاسخ : ریموت کنترل IR یک کاناله - قابل برنامه ریزی با هر نوع کنترل خانگی

            برنامه میکرو به زبان C و با کامپایلر codevision هستش که به راحتی قابل تبدیل به Bascom هم هست .
            کد:
            /*****************************************************
            This program was produced by the
            CodeWizardAVR V2.05.0 Advanced
            Automatic Program Generator
            © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
            http://www.hpinfotech.com
            
            Project : 
            Version : 
            Date  : 04/27/2011
            Author : www.Eca.ir *** www.Webkade.ir
            Company : 
            Comments: 
            
            
            Chip type        : ATmega8
            Program type      : Application
            AVR Core Clock frequency: 8.000000 MHz
            Memory model      : Small
            External RAM size    : 0
            Data Stack size     : 256
            *****************************************************/
            
            #include <mega8.h>
            #include <sleep.h>
            #include <delay.h>
            #include <stdlib.h>
            //#include <stdio.h>
            #define Sampling_NO   100
            #define LED_1 PORTB.0 
            
            eeprom unsigned char sig_sam_save[4][Sampling_NO] ; 
            unsigned char sig_sam_save_buffer[4][Sampling_NO] ; 
            
            unsigned char sig_sam[Sampling_NO] , get_sig_no=0 , sig_start = 0 , sig_read = 0;
            
            // External Interrupt 0 service routine
            interrupt [EXT_INT0] void ext_int0_isr(void)
            {
            int count_val ; 
            //LED_1=~LED_1;
            if(sig_start == 0 && sig_read==0)
              {
              TCNT0 = 0;
              for(count_val = 0 ; count_val < Sampling_NO ; count_val++)
                { sig_sam[count_val] = 0; }   
              get_sig_no = 0;
              }
            else
              {
              sig_sam[get_sig_no]= TCNT0 ; 
              get_sig_no++;
              TCNT0 = 0;
              }
            
            sig_start = 1;
            if(get_sig_no>30)
              {sig_read = 1;} 
            
            }
            
            // Timer 0 overflow interrupt service routine
            interrupt [TIM0_OVF] void timer0_ovf_isr(void)
            {
            sig_start = 0;
            //idle();
            }
            
            // Declare your global variables here
            
            void main(void)
            {
            int count_val , true_signal_rec=0;
            
            // Input/Output Ports initialization
            // 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=0x01;
            
            // Port C initialization
            // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
            // 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: 31.250 kHz
            TCCR0=0x04;
            TCNT0=0x00;
            
            // Timer/Counter 1 initialization
            // Clock source: System Clock
            // Clock value: Timer1 Stopped
            // Mode: Normal top=0xFFFF
            // OC1A output: Discon.
            // OC1B output: Discon.
            // Noise Canceler: Off
            // Input Capture on Falling Edge
            // Timer1 Overflow Interrupt: Off
            // Input Capture Interrupt: Off
            // Compare A Match Interrupt: Off
            // Compare B Match Interrupt: Off
            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: Timer2 Stopped
            // Mode: Normal top=0xFF
            // OC2 output: Disconnected
            ASSR=0x00;
            TCCR2=0x00;
            TCNT2=0x00;
            OCR2=0x00;
            
            // External Interrupt(s) initialization
            // INT0: On
            // INT0 Mode: Any change
            // INT1: Off
            GICR|=0x40;
            MCUCR=0x01;
            GIFR=0x40;
            
            // Timer(s)/Counter(s) Interrupt(s) initialization
            TIMSK=0x01;
            
            // 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=0x33;
            
            // Analog Comparator initialization
            // Analog Comparator: Off
            // Analog Comparator Input Capture by Timer/Counter 1: Off
            ACSR=0x80;
            SFIOR=0x00;
            
            // ADC initialization
            // ADC disabled
            ADCSRA=0x00;
            
            // SPI initialization
            // SPI disabled
            SPCR=0x00;
            
            // TWI initialization
            // TWI disabled
            TWCR=0x00;
            
            // Global enable interrupts
            #asm("sei")
            
            while( (sig_read == 0) || (sig_start == 1)) {}
            
            //printf("\nREF Code:\n");
                for( count_val = 0 ; count_val < Sampling_NO ; count_val++ )
                  {
                  sig_sam_save_buffer[0][count_val] = sig_sam[count_val] ;   
            //      if(get_sig_no>=count_val)
            //        {printf("%d ", sig_sam_save[0][count_val]);}
                  } 
            
            for( count_val = 0 ; count_val < Sampling_NO ; count_val++ )
                  {
                  sig_sam_save[0][count_val] = sig_sam_save_buffer[0][count_val] ;
                  }
            sig_read = 0;
                
            LED_1 = 1;
            delay_ms(500);
            LED_1 = 0;
            delay_ms(500);
            LED_1 = 1;
            delay_ms(500);
            LED_1 = 0;
            delay_ms(500);
            LED_1 = 1;
            delay_ms(500);
            LED_1 = 0;
            delay_ms(500);  
            
            while (1)
               { 
            
               if(sig_read==1 && sig_start == 0)
                {
                 sig_read=0;
                 true_signal_rec = 1;
            //     printf("\nNew Code:\n");
                 
                 for( count_val = 0 ; count_val < Sampling_NO ; count_val++ )
                    {
            //        if(get_sig_no>=count_val)
            //          {printf("%d ", sig_sam[count_val]);}
                    if( abs(sig_sam_save_buffer[0][count_val] - sig_sam[count_val])> 2 )
                      {true_signal_rec = 0;}  
                    }    
                 
                 if(true_signal_rec == 1)
                  {
                  LED_1 = 1;
                  delay_ms(500);
                  LED_1 = 0;
                  delay_ms(500);
                  LED_1 = 1;
                  delay_ms(500);
                  LED_1 = 0;
                  delay_ms(500);
                  }
                }
            
               }
            }

            البته شاید یه کم فهمش سخت باشه چون توضیحات نداره ولی اگه سوالی بود من در خدمتم
            فرق ما با جهان غرب در اینه که اونا هیچی نمیدونن! و تحقیق میکنند ولی ما همه چیزو می دونیم! و تحقیق برای ما معنی نداره!!!!!!!!!!!! .(از یه آدم اینکاره)

            دیدگاه


              پاسخ : ریموت کنترل IR یک کاناله - قابل برنامه ریزی با هر نوع کنترل خانگی

              آقای AlirezaT
              همونطور که گفتم برنامه شما عالی عمل میکنه.
              دارم خیلی دقیق بررسیش میکنم.تا اینجا فهمیدم بخاطر resolution بالای نمونه گیری درصد خطا در عمل صفر است.
              برنامه آقای javad1354 بخاطر اینکه فقط قسمتی از دیتا رو ذخیره میکنه و بقیه حذف میشه ، در عمل باعث ده الی بیست درصد خطا میشه ، که جا داره ازشون بعدا خواهش بکنم روش کار بکنند.
              برنامه شما خیلی حرفه ایه. صفر درصد خطا چیز کمی نیست. حیفه ازش بهینه استفاده نکنیم. البته میدونم احتمالا این قسمتی از طرحتون بوده.
              چندتا تغییر ازتون تقاضا میکنم ، اگه انجام بدید بسیار سپاسگزارتون خواهم بود ، و اگر هم انجام ندادید ، اشکالی ندارد ، تا همین قدرش هم خیلیه! :biggrin:

              1- کد وارد شده توی eeprom ذخیره بشه تا با هر بار قطع تغذیه ،نیاز به تعریف اون کلید نداشته باشیم.
              2- خروجی بصورت Flip-flop پایدار باشه. و با هر بار فشار اون کلید ، وضعیت خروجی معکوس بشه.
              3- فعلا با این آیسی هم خوبه ، ولی مد نظر داشته باشید ، هدف نهایی اینه که با tiny13 نوشته بشه تا توی قوطی کلید ، روی دیوار بتونیم جا بدیم.

              دیدگاه


                پاسخ : ریموت کنترل IR یک کاناله - قابل برنامه ریزی با هر نوع کنترل خانگی

                سلام و صبح بخیر .باز فردی جان صبحانه نخورده اومدی تو انجمن !
                ببین ما مشکلی که توی تینی 13 داریم :
                1- کمبود حافظه
                2- آرایه هم در این آی سی تعریف نمیشه کرد .اگه با دقت به برنامه نگا کرده باشی میبینی که در اتمگا 8 من آرایه تعریف کردم ولی در تینی 13 فقط 4 تا متغیر w1-w4 و p1-p4. تازه با همین برنامه مختصر 97 درصد ظرفیت آی سی پرشده .
                کاری که دوستمون علیرضا انجام داده بسیار جالبه ولی بکار این پروژه نمیاد .
                ضمنا ایشون یه سایت هم داره که همشو اینگلیسی نوشته و سرشونم فکر کنم خیلی شلوغه.
                راستی اون وقفه های 2 ثانیه یا 3 ثانیه نباید باشه من حد اکثر 250 میلی ثانیه تاخیر گذاشتم .اگه بیشتر شده احتمالا کریستال تعریف شده با کریستالی که استفاده میشه فرق داره !
                وقتي همه نيروهاي جسمي و ذهني متمرکز شوند توانايي فرد براي حل مشکلات به طور حيرت انگيزي چند برابر مي شود .
                نرمن وينسنت پيل

                دیدگاه


                  پاسخ : ریموت کنترل IR یک کاناله - قابل برنامه ریزی با هر نوع کنترل خانگی

                  باز ، صبحانه نخورده اومدی تو انجمن
                  باز هم نیش و کنایه شروع شد! :icon_razz:

                  آقا javad1354
                  یه چیزی یادآوری میکنم شاید کمک بکنه!
                  برنامه اصلی و اریجینال که مجله الکتور نوشته ، اگه فایل هگز برنامه اونها رو ببینید، 20 خط بیشتر نیست.
                  میگم شاید از ابتکارهای خاصی استفاده کرده اند ، که شما سراغ اونها نمیرید! توصیه میکنم یه بار دیگه متن برنامه اونها رو که با مشقات زیادی بدست آورده ام ،ببینید ، شاید یه الهام جدیدی به شما بده!
                  البته به زبان اسمبلی هست ولی میشه یه چیزایی ازش فهمید. :smile:

                  راستی اون وقفه های 2 ثانیه یا 3 ثانیه نباید باشه
                  فیوز بیت فرکانس رو روی 9.6MHz گذاشته ام.
                  البته اون تاخیرها اذیت نمکنند. مخصوصا برای learn که خوشایند تر هم شده!
                  ولی باز من بیشتر روش مطالعه خواهم کرد.
                  آیسی رو پاک میکنم و دوباره پروگرام میکنم.

                  دیدگاه


                    پاسخ : ریموت کنترل IR یک کاناله - قابل برنامه ریزی با هر نوع کنترل خانگی

                    با سلام،

                    بنظر نمیرسه که با ATtiny13 بشه....
                    500 تا EEPROM میخواد....

                    با ATmega8 از نوع SMD میشه ساختش، کوچیکم میشه، توی کلید و پریز هم جاش میشه :biggrin:

                    ببخشید پا برهنه اومدم توی بحث
                    مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

                    Sh_Nourbakhsh@Yahoo.com

                    http://s2.picofile.com/file/7170362468/_Wall_e_.jp

                    دیدگاه


                      پاسخ : ریموت کنترل IR یک کاناله - قابل برنامه ریزی با هر نوع کنترل خانگی

                      با عرض سلام و خسته نباشید

                      جناب feredi و آقا جواد عزیز دست جفتتون درد نکنه

                      واقعا خیلی زحمت کشیدین

                      خوشحالم این پروژه جواب گرفت و تقریبا تمومه

                      یه خواهش دارم از آقا جواد که فایلی که علیرضا جان با کامپایلر C نوشتن رو توی Bascom پیاده کنن

                      اگه این کار رو انجام بدید منون میشم

                      بازم مرسی
                      .....::: ♥♥♥♥ :::.....

                      دیدگاه


                        پاسخ : ریموت کنترل IR یک کاناله - قابل برنامه ریزی با هر نوع کنترل خانگی

                        نوشته اصلی توسط treegp
                        با عرض سلام و خسته نباشید

                        جناب feredi و آقا جواد عزیز دست جفتتون درد نکنه

                        واقعا خیلی زحمت کشیدین

                        خوشحالم این پروژه جواب گرفت و تقریبا تمومه

                        یه خواهش دارم از آقا جواد که فایلی که علیرضا جان با کامپایلر C نوشتن رو توی Bascom پیاده کنن

                        اگه این کار رو انجام بدید منون میشم

                        بازم مرسی
                        خواهش میکنم دوست عزیز .به چشم در اسرع وقت تبدیل میکنم و برای دوستان ارائه میدهم .
                        وقتي همه نيروهاي جسمي و ذهني متمرکز شوند توانايي فرد براي حل مشکلات به طور حيرت انگيزي چند برابر مي شود .
                        نرمن وينسنت پيل

                        دیدگاه


                          پاسخ : ریموت کنترل IR یک کاناله - قابل برنامه ریزی با هر نوع کنترل خانگی

                          دوستانی که زبان C میدونند ، میشه لطفا یه تغییری برای حالت خروجی برنامه پست 124 بدند؟ ، تا بکمک اون هدف این تاپیک عملی بشه!
                          خروجی برنامه پست 124 به این صورت هست که با دریافت دوباره کد وارد شده به حافظه ، دو بار روشن و خاموش میشه. حالا میخوایم بجای دوبار روشن و خاموش شدن ، خروجی بصورت Flip-flop پایدار باشه. و با هر بار فشار اون کلید ، وضعیت خروجی معکوس بشه.
                          برای کسانیکه زبان C بلدند نباید کار سختی باشه! متاسفانه خودم این زبان رو بلد نیستم! البته نه فقط همین زبان رو

                          دیدگاه


                            پاسخ : ریموت کنترل IR یک کاناله - قابل برنامه ریزی با هر نوع کنترل خانگی

                            ببخشید دیر به دیر سر میزنم به فروم آخه درگیر چند تا پروژه بودم سرم خیلی شلوغ بود .
                            اینم با خروجی Toggle شونده . http://AlirezaT.webs.com/Programable...(ALirezaT).rar
                            برنامه خیلی ساده هستش . اگه یه کم هم C بلد باشین میتونین بفهمید داستان از چه قراره . نمایشگاه کتابم که از فردا باز میشه . برید یه مرجع C بگیرید و شروع کنید به یادگیری زبان شیرین و قدرتمند C . :agree:
                            دیگه سیستم ذخیره کردن کد با کلید رو به خودتون میسپارم . تو این برنامه کدها داخل EEPROM ذخیره میشه ولی از اونجایی که برای هر کد 100 بایت در نظر گرفته شده ، مثلا توی ATmega8 بیشتر از 5 کد مختلف نمیشه ذخیره کرد . ( کار منو فعلا راه انداخت ولی میشه کمش کرد یا EEPROM خارجی قرار داد)
                            سوالی هم اگه بود در خدمتم .
                            فرق ما با جهان غرب در اینه که اونا هیچی نمیدونن! و تحقیق میکنند ولی ما همه چیزو می دونیم! و تحقیق برای ما معنی نداره!!!!!!!!!!!! .(از یه آدم اینکاره)

                            دیدگاه


                              پاسخ : ریموت کنترل IR یک کاناله - قابل برنامه ریزی با هر نوع کنترل خانگی

                              آقا AlirezaT
                              برنامه دوم شما هم تست شد.
                              متاسفانه این برنامه از هدف من دور تر شد!
                              درسته که خروجی بصورت Flip-flop شده ، ولی دستورات بشدت نا منظم اجرا میشه.
                              مثلا Toggle شدن خروجی بصورت منظم و قطعی انجام نمیشه!!!
                              کلید مربوطه رو که فشار میدم ، یه وقت میبینید مثلا 3 بار خروجی رو Toggle کرد ولی بار چهارم یا پنجم رو بیخیال میشه و عکس العملی نشون نمیده!!! و این خیلی بده!
                              بعد از کلید های دیگه که باز سراغ اون کلید مربوطه میام ، فقط چند تا شو انجام میده و بقیه رو رد میکنه!!!
                              احساس میکنم به دامنه سیگنال ورودی هم شدیدا حساس شده!!! گرچه این حرف منطقی به نظر نمیاد.
                              همونطور که گفته بودید ، 5 تا کد رو توی eeprom ذخیره میکنه ، و اون کدها هم مرتب جابجا و جانشین میشوند. ولی اینجا ذخیره کردن اون 5 تا کد که به درد ما نمیخوره. چون ما یک خروجی بیشتر نداریم.
                              هنوز هم سر در نیاوردم اون 5 تا کد برای چی توی eeprom ذخیره میشه.
                              البته میدونم این رو برای کار خودتون نوشتین ، احتمالا برای همینه که این قسمتها با درخواست من منطبق نیست.

                              به هر حال این برنامه ، هم چاره کار من نشد!!!
                              برنامه اولتون بشدت پایدار و خوب عمل میکنه.
                              لطفا، فقط ، خروجی همون برنامه رو بصورت Toggle در بیارید ، و تغییرات دیگه ای اعمال نکنید.
                              فعلا ذخیره کد مربوطه رو توی eeprom رو هم در نظر نگیرید. همونطور که توی برنامه اول هست!
                              ممنون که همکاری میفرمایید!

                              دیدگاه


                                پاسخ : ریموت کنترل IR یک کاناله - قابل برنامه ریزی با هر نوع کنترل خانگی

                                دوستان این سخت افزار چی میخواد
                                تا من ادامشو با سی بنویسم
                                یک شماتیک به من بدید برنامه کامل تحویل بگیرید
                                هرچه سعی کنیم لایه های نرم افزاری زیاد کرده و از سخت افزار دور کنیم مشکلات(باگ ها) کمتر خواهد شد(امنیت بیشتری خواهید داشت)
                                بهترین جواب دهنده برای سوال شما، خود شما هستید البته بعد تلاش،پشتکار و مطالعه بیشتر
                                میدونی مشکل ما کجاست؟سرمایه و مغز ها رو نمیتونیم یکجا جمع کنیم...

                                تعدادی ماژول GPS GP5MX1513F1 با بالاتریت حساسیت -170db به قیمت خرید بفروش میرسد

                                دیدگاه

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