اطلاعیه

Collapse
No announcement yet.

دستور getrc5

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

    دستور getrc5

    با سلام
    من می خوام از کنترل tv برای ریموت کنترل استفاده کنم واز این چشم های گیرنده ای که برای TV هست هم گرفتم در نرم افزار BACOM AVR یک دستوری به نام GETRC5 هست اگه می شه کامل طریقه استفاده از این دستو ر رو بگین
    ممنون می شم :roll:

    #2
    کمک(getrc5 )

    دوست عزیز سلام ؟
    این دستورات چون کاربرد های خاص داره سخت میشه اطلاعات عملی ازش گیر آورد . یعنی یه نفری جواب شما رو بده که خودش از این دستور استفاده کرده باشه . ولی من توی HELP بسکام نگاه میکردم یه مثلا پیدا کردم شاید کمکتون کنه ( البته اگه خودتون نخونده باشینش ) :

    Example
    '-------------------------------------------------------------------
    ' RC5.BAS
    ' (c) 1999-2000 MCS Electronics
    ' based on Atmel AVR410 application note
    '-------------------------------------------------------------------
    'use byte library for smaller code
    $lib "mcsbyte.lbx"

    'This example shows how to decode RC5 remote control signals
    'with a SFH506-35 IR receiver.

    'Connect to input to PIND.2 for this example
    'The GETRC5 function uses TIMER0 and the TIMER0 interrupt.
    'The TIMER0 settings are restored however so only the interrupt can not
    'be used anymore for other tasks


    'tell the compiler which pin we want to use for the receiver input

    Config Rc5 = Pind.2

    'the interrupt routine is inserted automatic but we need to make it occur
    'so enable the interrupts
    Enable Interrupts

    'reserve space for variables
    Dim Address As Byte , Command As Byte
    Print "Waiting for RC5..."

    Do
    'now check if a key on the remote is pressed
    'Note that at startup all pins are set for INPUT
    'so we dont set the direction here
    'If the pins is used for other input just unremark the next line
    'Config Pind.2 = Input
    Getrc5(address , Command)

    'we check for the TV address and that is 0
    If Address = 0 Then
    'clear the toggle bit
    'the toggle bit toggles on each new received command
    Command = Command And &B01111111
    Print Address ; " " ; Command
    End If
    Loop
    End
    موفق باشید
    شأن انسان در ايمان و هجرت و جهاد است و هجرت، مقدمهآ‌ي جهاد فيآ‌سبيلآ‌الله.
    هجرت، هجرت از سنگينيآ‌هاست و جاذبهآ‌هايي كه تو را به خاك ميآ‌چسباند.
    چكمهآ‌هايت را بپوش، رهآ‌توشهآ‌ات را بردار و هجرت كن.

    دیدگاه


      #3
      پاسخ : دستور getrc5

      خب. یک نکته. منطق ارسال مادون قرمز در ریموت کنترل ها یکسان نیست. بعضی از شرکت های سازنده از RC5 استفاده می کنن. پس با هر کنترلی نمی تونی اینو راه بندازی.
      پیشنهاد می کنم بحثتو تو این لینک که هم ادامه بدی:
      http://www.eca.ir/forum2/index.php/topic,11174.0.html

      دیدگاه


        #4
        پاسخ : دستور getrc5

        rc5 پروتکلی برای فرستنده گیرندههای شرکت فیلیپس هست.من با این دستور کار کردم و به خوبی هم کار میکند. اما من از پروتکل شرکت سونی و از کنترلهای این شرکت استفاده کردم و از دستورات RC5 استفاده نکردم.چون این دستورات کمی کند کار میکند. برای این کار شما به یک گیرنده مادون قرمز سه پایه احتیاج دارید که من یک نمونه از آن را 750 تومان خریدم. شما میتوانید از گیرنده های CD یا تلویزونهای اوراقی نیز استفاده کنید.این گیرنده ها دوپایه برای تغذیه و یک پایه نیز برای دیتا دارند.در مرحله بعد باید یک عدد ریموت از بازار تهیه کنید . من نوعی از ریموت راکه حدود 20 مدل تلویزون را ساپورت میکرد به قیمت سه هزار تومان خریداری کردم که هم گیرندههای فیلیپس را راه اندازی میکرد و هم گیرندههای سونی وهم تلویزون خونمون رو! به قیمت سه هزار تومان.این هم عکسش:

        در مرحله بعد شما باید یا از دستورات RC5 استفاده کنید که کاملا در HELP نرم افزار BASCOM توضیح داده یا باید با استفاده ازشکل موج ریموت برنامه آن را بنویسید. برای این کار شما باید از یک LOGIC ANALYZER ویا اوسیلوسکوپ استفاده کنید. این هم شکل موج ریموتهای سونی حاضر و آماده :
        http://www.ustr.net/infrared/sony.shtml
        این نوع شکل موج همان طور که توضیح داده شده برای ریموتهای سونی از قبیل RM-Y123 و RMT-V124B وغیره کار میکند. دراین نوع ریموتهابیت اول START BIT
        هست که طول آن 2.4MS است . بیتهای 1 طول آن 1.8MS است وبیتهای صفر طول آن 1.2MS است.7 بیت اول مربوط به دستورات (کد هر دکمه )و پنج بیت دوم مربوط به آدرس (کد ریموت ) است. در زیر یک نمونه برنامه که برای ریموتهای سونی نوشته شده آورده شده:

        http://mcselec.com/index.php?option=com_content&task=view&id= 199&Itemid=57

        من این برنامه را برای فرکانس 8MHZ بهینه سازی کرده ام . برای فرکانسهای دیگر باید اعداد قرمز تغییر کند
        $regfile = "m16def.dat" 'the chip type, subtitutes with the one you like
        $crystal = 8000000 'the crystal speed i used

        Config Timer0 = Timer , Prescale = 256 'config timer0 for data trap timer
        Stop Timer0 'stop timer0 first for other process

        Config Pind.3 = Input 'configure the int pin , i used int1 pin
        Set Portd.3 'set the pull up resistor
        Pin_ir Alias Pind.3 'alias for easy naming

        Config Int1 = Falling 'configure int1 on falling edge
        On Int1 Isr_int1 'the isr label

        Dim Data_ir As Word 'the variabel need for the purpose
        Dim Cnt_ir As Byte
        Dim Flag_ir_start As Bit
        Dim Flag_ir_ok As Bit

        Print "SONY REMOTE DECODER" 'print some output to rx

        Enable Interrupts 'enable global interrupt
        Enable Int1 'enable int1 interrupt

        Do 'main program start here
        If Flag_ir_ok = 1 Then 'wait flag_ir_ok=1
        Reset Flag_ir_ok 'reset the flag
        Disable Int1 'disable the int1, so ignore all ir data from here

        Print Data_ir 'print the data
        Reset Flag_ir_ok 'reset the flag

        Enable Int1 'enable the int1 interrupt to receive ir sony again
        End If
        Wait 1 'wait for sometime
        Loop

        'isr for infrared sensor
        Isr_int1:

        Timer0 = 0 'start timer0 to count
        Start Timer0
        Bitwait Pin_ir , Set 'wait the pin_ir to high again
        Stop Timer0 'stop timer0

        If Cnt_ir = 0 Then 'if this is the 1st data
        If Timer0 > 36 And Timer0 < 40 Then 'check for a start bit, with prescale=256 and
        Set Flag_ir_start 'crystal 11,0592MHz, got timer0 value between 111 and 114
        Incr Cnt_ir 'as the correct ir start bit. Measure all the neccessary bit first
        End If ' if you want to change it
        End If

        If Flag_ir_start = 1 And Cnt_ir > 0 Then 'a start bit found -> start sampling for next 12 bit

        Decr Cnt_ir
        If Timer0 < 18 Then 'timer0<18 then it is a zero(0), else it is a one (1)
        Data_ir.cnt_ir = 0 'assign it to a word value for easy recording
        Else
        Data_ir.cnt_ir = 1
        End If

        Cnt_ir = Cnt_ir + 2
        If Cnt_ir > 11 Then 'got all 12 bit
        Shift Data_ir , Right , 1 'get rid of the start bit
        Reset Flag_ir_start 'reset the start bit flag
        Set Flag_ir_ok 'the data is ready to be read
        Cnt_ir = 0 'reset the counter
        End If

        End If

        Return
        برای ریموتی که در بالا معرفی کردم در 8MHZ باید 36 به 80 و 40 به 90 و 18 به 30 تغییر کند.
        در ضمن برد آن هم بسیار بالا و من تا 30 متر را امتحان کردم بسیار عالی جواب داد.

        دیدگاه


          #5
          پاسخ : دستور getrc5

          مرسی امید جان . حسابی حال کردم. همه چیزو عالی گفتی. :applause:
          میرم اینو هم امتحان کنم. :nice:

          دیدگاه


            #6
            پاسخ : دستور getrc5

            خواهش میکنم قابلی نداشت. فقط چند نکته دیگه اگه خواستید کنترلهای تلویزیونهای دیگه رو خودتون کشف رمز کنید:
            1-در طرف گیرنده شکل موج کاملا معکوس طرف فرستنده است و در حالتی که کلیدی فشرده نشده خروجی سنسور 1 هست.
            2- در ریموتهای مختلف تعداد بیتها و طول آنها فرق میکند :
            protocol name kHZ start bit data bits stop bit
            1-NEC 39,2 1 32 1
            2-SIRCS 40 1 12 -
            3-RC5 36 1 12 -
            4-JAPAN 32 1 48 -
            5-SAMSUNG 39,2 1 32 1

            اینهم شکل موجهای آنها:
            http://www.techdesign.be/projects/011/011_waves.htm

            دیدگاه


              #7
              پاسخ : دستور getrc5

              سلام :

              من قبلاً کلی با RC5 و ریموت ها و بسکام کار کردم !

              دقیقاً متوجه سوال شما نشدم !

              اگر واضح بگی چی می خواهی سعی می کنم کمکت کنم !

              دیدگاه


                #8
                پاسخ : دستور getrc5

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

                فرض کن من می خوام یه دیمر برای لامپ خونه بسازم. کاری که می کنم اینه که یه چشم پارس تو مدار دیمر میذارم.
                حالا می خوام با استفاده از کنترل هایی که تو خونه هستند ( تلویزیون ، VCD ، DVD ، Reciever و ...) بتونم به مدارم برای کنترل شدت لوکس فرمان بدم.
                برنامه ای که کارمو راه بندازه چطوریه؟

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

                حالا پیشنهاد وبرنامه از دید تو چطوری می تونه باشه آقا حامد؟

                دیدگاه


                  #9
                  پاسخ : دستور getrc5

                  سلام :

                  خوب اول از همه میدونم که میدونید که انواع ریموت ها و نوع پروتکل و ارسال اطلاعاتشون خیلی خیلی متفاوت هستش !
                  RC5 و RC6 دوتا از پرکاربرد ترین انواع پروتکل ریموت ها هستند که بیشتر توسط NEC و فیلیپس بکار رفته اند اما امروزه وسایلی مثل سامسونگ ال جی و ... بیشتر در منازل پیدا می شوند پس اگر در فکر این بودید که دستگاهی بسازید که با هر ریموتی کار کنه باید بگم امکانش نیست !

                  اگر به فکر صنعتی کردن این کار هستی ( که فکر نمی کنم ) باید براش ریموت بسازی و یا از این ریموت های بی نام توی بازار استفاده کنی !

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

                  http://www.techdesign.be/projects/011/011_waves.htm
                  http://www.lirc.org/
                  http://www.ustr.net/infrared/nec.shtml
                  http://www.wincesoft.de/html/remotecontrol_ii.html
                  http://www.educypedia.be/electronics/televisionrc5.htm


                  موفق باشی

                  دیدگاه


                    #10
                    پاسخ : دستور getrc5

                    سلام
                    فکر می کنم این پست قدیمی من باشه
                    ممنون از کمک همه دوستان مخصوصا آقای پروشانی
                    من خودم همون روزها جواب گرفتم
                    این. باید بگم که حق با ریالای پروشانی هست برنامه گیرنده چیه باشه مهمه این دستور GETRC5 برای همه کنترل ها جواب نمیده برای تلویزیون اونم اطلس ،وسامسونگ جواب می ده و این مسئله باعث می شه که خیلی ها از ساخت اون صرفه نظر کنند
                    من یه پروژه توی سایت گذاشتم که مدیا پلیر رو با کنترل تلویزیون کنترل می شه
                    بازم تشکر می کنم از همه دوستان
                    در ضمن در مورد مطرح کردن پست ها می دونم fpga وبسکام یه فرق هایی داره حالا نمی دونم چرا اینجا مطرح شده!!!!!!!!!!! :eek: :mrgreen:
                    مدیر گرامی لطفا انتقال بدین

                    دیدگاه


                      #11
                      پاسخ : دستور getrc5

                      من دارم این لینک ها رو می خونم.
                      بیشتر می خوام یه چیزی طراحی بشه که با هر کنترلی(حالا نه همه کنترل ها ) کار کنه. مثلا اگه من تو یه اتاق باشم با کنترل تلویزیون بتونم نور لامپو تغییر بدم. حالا اگه رفتم تو یه اتاق دیگه که مثلا یه دی وی دی پلیر داشت با ریموت اون برق اتاق جدیدو تنظیم کنم.

                      مرسی حامد جان از توضیحات و لینکها.
                      به نتیجه نرسیدم مزاحم میشم.

                      دیدگاه


                        #12
                        پاسخ : دستور getrc5

                        سلام :

                        جناب اhamed online62 :
                        این ایده شما رو من 2 سال پیش داشتم !
                        تا حدود زیادی هم روش کار کردم !
                        اما مشکلات دانشگاه و اینا نذاشت که تا تهش برم !
                        فقط اینقدر میدونم که حتماً شدنیه !
                        شما سعیت رو بکن من هم کمکت می کنم تا جایی که سوادم قد بده !

                        موفق باشی

                        دیدگاه


                          #13
                          پاسخ : دستور getrc5

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

                          امیدو.ارم دیگه مشکلات دانشگاه و اینا(؟؟) دیگه مزاحم انجام پروژه ها نشه.

                          دیدگاه


                            #14
                            پاسخ : دستور getrc5

                            سلام :
                            خوبه !
                            منتها از کجا بفهمه که باید کم کنه یا زیاد ؟
                            اینطور که شما گفتی اصلاً میکرو و برنامه نمیخواد !
                            خروجی خود چشم پارسی میتونه تحریک کنه !
                            نه عزیز اینطوریام نیست !
                            باید یه کدی بخونه ! که بفهمه چیکار باید بکنه !

                            موفق باشید

                            دیدگاه


                              #15
                              پاسخ : دستور getrc5

                              نه . هر بار کلیدی رو فشار میدیم یه متغیر از نوع بیت Toggle میشه اینطوری میکرو می فهمه که باید الان نور رو کم کنه یا زیاد( عرض PWM کم شه یا زیاد). تا وقتی هم که دست روی کلید باشه میکرو عمل کاهش (یا افزایش)نور رو ادامه می ده. اگه دست رو از روی کلید برداریم و بعد از یک مکث دوباره فشار بدیم این بار میکرو نور رو افزایش(یا کاهش)میده.
                              ضمن اینکه میکرو یه کار دیگه هم میکنه. ذخیره وضعیت PWM (شدت نور) در حافظه. با این کار اگه کسی کلید روی دیوار رو بزنه و لامپ رو خاموش کنه یا اگر برق رفت، دفعه بعد از همین وضعیت ادامه بده.

                              نمیدونم تونستم منظورمو از این طرح خوب بگم یا نه

                              دیدگاه

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