Thông báo

Collapse
No announcement yet.

[IR] nhờ anh Mod gợi ý giúp em nhận đúng tín hiệu từ remote Sony

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #16
    Tui không rành về PIC lắm, nhưng tui có một số gốp ý như sau: Theo mình biết thì frame nhận chỉ có 13 bit thôi, trong đó gồm: 1 bit start + 5 bit địa chỉ + 7 bit câu lệnh. Mình nghĩ cách giải mã của bạn có vấn đề (giải mã tới 14 bit). Gợi ý của mình là: sau khi chờ bit start xong bạn tiến hành giải mã 12 bit còn lại, delay 800us thôi, nếu lấy cả 5 bit địa chỉ + 7 bit câu lệnh thì bạn phải dùng 1 biến kiểu int (bạn đang dùng biến kiểu byte thì phải), nếu chỉ lấy 7 bit câu lệnh thì dùng biến kiểu byte (sau khi giải mã xong chỉ lấy 7 bit cuối). Bạn nên tìm hiểu kỹ hơn về remote SONY. Chúc bạn thành công!

    Comment


    • #17
      chắc u đã giao tiếp với Remote Sony rùi . Cho tui vài thắc mắc nhỏ nha
      - Theo như tài liệu ở trên (SV HN đã làm đc rùi) thì bit Start có thời gian delay khá dài ,cỡ 1800us , tui delay 1500u thì hợp chuẩn wa rùi . Nếu delay ít như u , có khi nào nhiễu cũng gây ra nhận bit Start ko ?
      - Theo lý thuyết thì 13 bit trong 1 frame . Tui nghĩ giải mã bao nhiêu bit cũng đc .
      Lý do : khi nhận xong 13 bit đúng cũng khung truyền , các bit còn lại của ta nhận đều = 1( cho là có nhiễu thì vài bit xuống 0) --> 13bit đầu luôn luôn đúng với bảng mã phím 1 -10 , các phím Program + ....khác .
      Bạn để ý , trong chương trình , vòng lặp For , khi nào tới bit 14 thì hết vòng lặp & thoát ---> dù ta có nhấn 2 lần thì PIC cũng chỉ thu 1 lần đầu thui --> ko có sự thu nhầm qua frame lần nhấn thứ 2
      - biến để tui thu bit là biến var_IR kiểu unsigned char . Đâu có dính tới số gì âm đâu mà ta dùng int . Dùng unsigned char tới 256 . wa đẹp rùi còn gì

      Để tui thu lại như gợi ý của u thử .... rùi báo cáo kết quả để a e cùng theo dõi quá trình

      Comment


      • #18
        Nguyên văn bởi Zz_Bi_zZ Xem bài viết
        chắc u đã giao tiếp với Remote Sony rùi . Cho tui vài thắc mắc nhỏ nha
        - Theo như tài liệu ở trên (SV HN đã làm đc rùi) thì bit Start có thời gian delay khá dài ,cỡ 1800us , tui delay 1500u thì hợp chuẩn wa rùi . Nếu delay ít như u , có khi nào nhiễu cũng gây ra nhận bit Start ko ?
        - Theo lý thuyết thì 13 bit trong 1 frame . Tui nghĩ giải mã bao nhiêu bit cũng đc .
        Lý do : khi nhận xong 13 bit đúng cũng khung truyền , các bit còn lại của ta nhận đều = 1( cho là có nhiễu thì vài bit xuống 0) --> 13bit đầu luôn luôn đúng với bảng mã phím 1 -10 , các phím Program + ....khác .
        Bạn để ý , trong chương trình , vòng lặp For , khi nào tới bit 14 thì hết vòng lặp & thoát ---> dù ta có nhấn 2 lần thì PIC cũng chỉ thu 1 lần đầu thui --> ko có sự thu nhầm qua frame lần nhấn thứ 2
        - biến để tui thu bit là biến var_IR kiểu unsigned char . Đâu có dính tới số gì âm đâu mà ta dùng int . Dùng unsigned char tới 256 . wa đẹp rùi còn gì

        Để tui thu lại như gợi ý của u thử .... rùi báo cáo kết quả để a e cùng theo dõi quá trình
        Chà, vẫn chưa tiến triển gì hả bác Bi, cái món điều khiển từ xa ấy khó gặm thế à, vậy không bít em có đủ công lực để nghiên cứu không nữa đây, hic
        Và con tim đã vui trở lại ....

        Comment


        • #19
          Nguyên văn bởi Zz_Bi_zZ Xem bài viết
          ui , em vẫn chưa giải quyết đc sự cố này , mod có thể chỉ cho em bit chỗ sai ở đâu đc ko ? có cao thủ nào làm rùi chỉ dẫn tui zới !
          Bác đã nghiên cứu lý thuyết khá kỹ rồi, tuy nhiên vẫn chưa làm được, nguyên nhân là thi triển kỹ năng lập trình chưa tốt. Em bật mí cho bác Bi xíu nhé.

          - Tạo một Timer0 ngắt mỗi 100us, hai biến width_thấp, width_cao đếm độ rộng xung bằng 0
          - Ban đầu ta đặt ngắt ngoài vào là ngắt cạnh xuống
          - Khởi động cho Timer0 chạy
          - Khi có ngắt cạnh xuống thì đọc biến width_cao, lưu lại, cho width_thấp=0, đặt lại là ngắt cạnh lên.
          - Khi có ngắt cạnh lên thì đọc biến width_thấp, lưu lại, cho width_cao=0, đặt lại là ngắt cạnh xuống.
          - Nếu biến width nào đó=500 tức là khoảng 5ms tức là không bấm remote nữa, lúc này là lúc ta xử lý chuỗi data nhận được nãy giờ
          - Nếu biến width_thấp = 250 tức là 2.5ms đây sẽ là start part
          - Nếu width_thấp = 5, width_cao=7: bit 0
          - Nếu width_thấp = 5, width_cao=13: bit 1.

          Rất đơn giản phải không, tuy nhiên đây mới là cái quan trọng nhất là:
          Với mỗi hãng sản xuất, dù là cùng sản xuất remote sony nhưng mỗi thằng sản xuất một kiểu, không nhất thiết start part là phải 2.5ms, bit 0 là 500us và 700us. bit 1 là 500us và 1300us mà có thể sai khác chút xíu, cộng trừ 200us. Do đó độ rộng xung nhận được phải cộng trừ 2 quanh giá trị 5,7,13 đó.
          Email: - Mobil: tạm thời ngừng liên lạc 1 thời gian
          Giới thiệu website kiếm tiền trực tuyến & tăng thứ hạng website.

          Comment


          • #20
            Nguyên văn bởi Zz_Bi_zZ Xem bài viết
            chắc u đã giao tiếp với Remote Sony rùi . Cho tui vài thắc mắc nhỏ nha
            - Theo như tài liệu ở trên (SV HN đã làm đc rùi) thì bit Start có thời gian delay khá dài ,cỡ 1800us , tui delay 1500u thì hợp chuẩn wa rùi . Nếu delay ít như u , có khi nào nhiễu cũng gây ra nhận bit Start ko ?
            - Theo lý thuyết thì 13 bit trong 1 frame . Tui nghĩ giải mã bao nhiêu bit cũng đc .
            Lý do : khi nhận xong 13 bit đúng cũng khung truyền , các bit còn lại của ta nhận đều = 1( cho là có nhiễu thì vài bit xuống 0) --> 13bit đầu luôn luôn đúng với bảng mã phím 1 -10 , các phím Program + ....khác .
            Bạn để ý , trong chương trình , vòng lặp For , khi nào tới bit 14 thì hết vòng lặp & thoát ---> dù ta có nhấn 2 lần thì PIC cũng chỉ thu 1 lần đầu thui --> ko có sự thu nhầm qua frame lần nhấn thứ 2
            - biến để tui thu bit là biến var_IR kiểu unsigned char . Đâu có dính tới số gì âm đâu mà ta dùng int . Dùng unsigned char tới 256 . wa đẹp rùi còn gì

            Để tui thu lại như gợi ý của u thử .... rùi báo cáo kết quả để a e cùng theo dõi quá trình
            bit start không cần delay đâu, khi nhấn remote, mắt hồng ngoại nhận được mức 0 -> nhảy vào chương trình ngắt, trong chương trình ngắt sẽ thực thi chương trình của bạn, trong này ta sẽ dùng vòng lặp while để chờ chân nhận lên mức 1, xong ta tiến hành thu 12 bit con lại.
            Giải mã phải theo đúng chuẩn của frame truyền nếu không ta sẽ nhận được rác -> không biết đường đâu mà mò, ta tự làm khó cho ta (vì frame truyền không chỉ truyền 1 lần, nếu có oscilloscope bạn sẽ rõ).
            Bạn dùng biến unsigned char chỉ chứa được 8 bit thôi (trong khi ta thu tới 12 bit, trong lệnh chương trình bạn set tới bit 14 ở đâu ra). Nếu chỉ nhận 7 bit command thì bạn dùng biến unsigned char thì ok (dùng lệnh dịch bit), giải mã xong ta sẽ bỏ bit cuối bit thứ 7, cái đó là tui góp ý để bạn cẩn thận thôi, khi lập trình những sai sót nhỏ cũng tạo ra rắc rối lớn.
            Còn 1 lưu ý nữa, nếu bạn dùng ngắt ngoài thì khi nhảy vào ngắt thì bạn phải vô hiệu hóa cái ngắt đó đi, giải mã xong rồi mới cho phép nó hoạt động lại, nếu không mỗi khi nhận được mức 0 thì nó sẽ làm lại đoạn chương trình mà bạn đã để trong thân nó.
            Những gợi ý nhỏ này mong sẽ giúp ích cho bạn, chúc bạn sớm thành công!

            Comment


            • #21
              trước hết , thk 2 cao thủ đã gợi ý giúp tui ! Nhưng tui có thắc mắc nhỏ

              - Với cách lấy bit START của u hoc_hoi_dt , u sẽ luôn bị nhảy vào ngắt , lí do : 1 tín hiệu lạ nào đó của môi trường cũng làm u nhảy vào ngắt , sau đó là thực thi lấy data --> ko còn thời gian để scan Led . U delay để chắc chắn rằng bit o mà u nhận đc chính là bit START của remote chứ ko phải là bit bất kỳ nào #

              trong tuần này đang thi học kỳ ,,,nên chưa làm tiếp đc .... sau khi thi qua xong...sẽ có báo cáo mới với các u để ko uổn công gợi ý ! heeee...

              Comment


              • #22
                Nguyên văn bởi Zz_Bi_zZ Xem bài viết
                trước hết , thk 2 cao thủ đã gợi ý giúp tui ! Nhưng tui có thắc mắc nhỏ

                - Với cách lấy bit START của u hoc_hoi_dt , u sẽ luôn bị nhảy vào ngắt , lí do : 1 tín hiệu lạ nào đó của môi trường cũng làm u nhảy vào ngắt , sau đó là thực thi lấy data --> ko còn thời gian để scan Led . U delay để chắc chắn rằng bit o mà u nhận đc chính là bit START của remote chứ ko phải là bit bất kỳ nào #

                trong tuần này đang thi học kỳ ,,,nên chưa làm tiếp đc .... sau khi thi qua xong...sẽ có báo cáo mới với các u để ko uổn công gợi ý ! heeee...
                vậy là bác chưa làm theo gợi ý của em. Bác cứ thi học kì xong, tiếp tục nghiên cứu. Bí quá thì pm em em tặng bác chút source code cũng được. Trước ngõ vào em cho qua 1 con transitor, rất đơn giản và đảm bảo không có tí nhiễu nào.
                Email: - Mobil: tạm thời ngừng liên lạc 1 thời gian
                Giới thiệu website kiếm tiền trực tuyến & tăng thứ hạng website.

                Comment


                • #23
                  http://lirc.sourceforge.net/remotes/

                  đây là thư viện các thông số loại remote của chương trình LIRC ( Linux infrared remote Control ) đây chỉ là những file config cho LIRC thôi nên đọc đôi lúc cũng hơi khó hiểu nếu bạn chưa biết nhiều về các loại mã hóa IR nhưng cũng dùng để tham khảo và tìm hiểu đc nếu có cái nào khó thì lại post lên để mọi người cũng thảo luận.

                  http://winlirc.sourceforge.net/technicaldetails.html

                  ý nghĩa của các trường trong file config được nói ở trên. ( có những cái tớ đọc cũng chưa hiểu lắm ) vì mình cũng đang tìm hiểu về lập trình decode IR trên PIC mà.
                  Mong được giúp đỡ

                  Comment


                  • #24
                    Em ko dùng PIC mà sử dụng AVR để nhận tín hiệu IR sony, Không sử dụng ngắt mà sử dụng hỏi vòng để kiểm tra đầu vào,.. Bác thử xem nhé, em đã chạy thử và không thấy nhiễu !
                    Attached Files

                    Comment


                    • #25
                      Không biết bạn Zz_Bi_zZ đã làm được cái này chưa? nêu chưa thì vào đây nhé :http://ccsinfo.com/forum/viewtopic.p...b5414a91c43fc9

                      Comment


                      • #26
                        woái , cái nút thank sao dùng chả đc , click vào nó ...đơ ra , thiệt tình cảm ơn david & bk_exp rất nhìu !

                        Comment


                        • #27
                          Điều khiển bằng REMOTE TV

                          Nguyên văn bởi Zz_Bi_zZ Xem bài viết
                          ui , em vẫn chưa giải quyết đc sự cố này , mod có thể chỉ cho em bit chỗ sai ở đâu đc ko ? có cao thủ nào làm rùi chỉ dẫn tui zới !
                          Hổng dám là cao thủ nhưng về cái vụ điều khiển từ xa dùng remote TV này tui cũng đã làm rùi ko phức tạp lắm đâu đây là cách chỗng nhiễu mà tui đã làm và nó chạy rất ổn,không hề bị nhiễu khoảng cách điều khiển tin tưởng ban ngày la 15 m,ban đêm 25 m. (Đối với dùng DK TV SONY)
                          Về phần mắt thu nên dùng loại bọc vỏ sắt (dung loại này chống nhiễu tốt hơn loại vỏ nhựa HS0038,SM0038...
                          Như mấy anh trước có nói đấy,cái bộ nguồn ở phần mạch thu nó là yếu tố quyết định đến nhiễu rất nhiều,lầm tốt bộ nguồn này bạn sẽ thấy hiệu quả ngay (theo cách của tui thì "tui dùng biến áp chuyển 220 V -> 12 V chỉnh lưu và dùng tụ lọc (2 con tụ 1000 uF (//) sau đó cho vào IC ổn áp 7805 Ura tui cho con tụ 1000uF lọc nữa đó xong bộ nguồn tui làm)
                          Ghép nối mắt thu: Tiếp mass chắc chắn ở chân mass của mắt thu,mắc thêm con tụ 100uF vao chân Vcc và mass của mắt thu gần ngay 2 chân này)
                          Về phần chương trình tui cũng viết như thuật toán ở trên thôi,nhưng khâu tạo trễ trước khi đo mức tín hiệu tui cho tui để mức 760 us thấy rất ổn(càng ngắn càng đỡ nhiễu tui đã thủ và nhận thấy thế).sau khi thu hết tín hiệu rồi chuyển sang kiểm tra phím bấm,mỗi lần phím thực hiên song lệnh tui bạn để trễ một khoảng lớn một chút tầm trên 0,7 s la OK)

                          Còn về một ý bạn nói là bật tắt bóng đèn sợi đốt nó gây ra nhiễu mình nghĩ chắc ko phai đâu ...
                          |

                          Comment


                          • #28
                            cảm ơn tất cả mọi ng . Cái này tui làm , gắn vô catset , chạy rầm rầm lâu oy . Chúc ae đi sau làm thành công

                            Comment


                            • #29
                              Nguyên văn bởi Zz_Bi_zZ Xem bài viết
                              cảm ơn tất cả mọi ng . Cái này tui làm , gắn vô catset , chạy rầm rầm lâu oy . Chúc ae đi sau làm thành công
                              Thế anh hướng dẫn cho em được ko....em gà lém! Thanks!
                              Nếu chẳng một phen sương thấm lạnh
                              Hoa mai đâu dễ tỏa mùi hương

                              Comment


                              • #30
                                nếu như mạch nguyên lý trên . nếu muốn hiển thị ra led 7 đoạn nhưng nút mà mình vừa bấp trên remote thì phải viết code như thế nào khi viết với c ? thanks

                                Comment

                                Về tác giả

                                Collapse

                                Zz_Bi_zZ Tìm hiểu thêm về Zz_Bi_zZ

                                Bài viết mới nhất

                                Collapse

                                Đang tải...
                                X