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!
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
-
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
-
Nguyên văn bởi Zz_Bi_zZ Xem bài viếtchắ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ìnhVà con tim đã vui trở lại ....
Comment
-
Nguyên văn bởi Zz_Bi_zZ Xem bài viếtui , 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 !
- 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
-
Nguyên văn bởi Zz_Bi_zZ Xem bài viếtchắ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
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
-
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
-
Nguyên văn bởi Zz_Bi_zZ Xem bài viếttrướ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...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
-
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
-
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
-
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
-
Điều khiển bằng REMOTE TV
Nguyên văn bởi Zz_Bi_zZ Xem bài viếtui , 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 !
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
-
Nguyên văn bởi Zz_Bi_zZ Xem bài viếtcả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ôngNếu chẳng một phen sương thấm lạnh
Hoa mai đâu dễ tỏa mùi hương
Comment
Bài viết mới nhất
Collapse
-
bởi bqvietServo cuối cùng vẫn chỉ là điều chỉnh tốc độ và đọc phản hồi vị trí
Qua cổng song song LPT cổ
https://www.electronicsforu.com/elec...eed-controller
Qua cổng USB - xem thêm đám FT232RL-
Channel: Điện tử công nghiệp
Hôm qua, 15:56 -
-
bởi thiennam0703Em đang tìm hiểu cách xây dựng chương trình điều khiển động cơ Servo Yaskawa bằng máy tính tuy nhiên khi tìm kiếm trên mạng các hướng dẫn thì thường là điều khiển bằng vi điều khiển hoặc điều khiển bằng PLC hay điều khiển động cơ...
-
Channel: Điện tử công nghiệp
Hôm qua, 15:32 -
-
Trả lời cho Tổng hợp các thông tin về mạch nạp cho AVRbởi bacthoMình cũng bị như vậy mà chưa biết ở đâu
-
Channel: Vi điều khiển AVR
21-11-2024, 21:00 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi nhathung1101Câu trả lời là không dùng được.
Hai lớp dán mặt trước và mặt sau, gọi là film phân cực. Muốn hiểu rõ về nó thì chịu khó search nhé. Ở đây có rất nhiều chó cứ ngửi thấy phân là sủa nhặng, nên không giải thích nhiều....-
Channel: Thiết bị điện tử cá nhân
21-11-2024, 16:20 -
-
Comment on Tổng hợp các thông tin về mạch nạp cho AVRbởi Memem
-
Channel: Vi điều khiển AVR
21-11-2024, 15:10 -
-
Trả lời cho Tổng hợp các thông tin về mạch nạp cho AVRbởi MememMọi người ơi cho em hỏi cái này ạ, hiện tại em đang làm btl về hiển thị giá trị nhiệt độ trên led 7 thanh sử dụng atmega16, code em chạy trên mô phỏng rất oke nhưng khi lắp qua mạch thực thì bị lỗi ở led đầu tiên bị lỗi như thế này...
-
Channel: Vi điều khiển AVR
21-11-2024, 15:10 -
-
bởi mantruongepuNhờ cả nhà tìm giúp mình thông tin IC này với, thấy ghi 943B W58BAL mà mình tìm mấy ngày nay không được, nó được đóng gói dạng TSSOP 8. Cám ơn cả nhà....
-
Channel: Điện tử dành cho người mới bắt đầu
20-11-2024, 14:40 -
-
bởi TherulCảm ơn bạn đã chia sẻ câu chuyện và quá trình phát triển sản phẩm của mình. Trước tiên, thật may mắn khi bạn vượt qua tai nạn và vẫn giữ được niềm đam mê cũng như khả năng sáng tạo trong lĩnh vực kỹ thuật. Việc bạn tiếp tục...
-
Channel: từ PIC tới dsPIC
20-11-2024, 07:20 -
-
Trả lời cho Em muốn hỏi mọi người về nguyên lý hoạt động, tần số của mạch công suất trong máy rửa siêu âm ạ.bởi nguyendinhvanBạn nên nghiên cứu cái chấn lưu đèn ống Compact fluorescent lamp hay đèn compact trước đã. Nó rẻ đỡ tốn kém.
Sau khi hiểu rõ rồi thì chuyển sang cái mạch này.
Ở cái chấn lưu, tần số của nó linh tinh lắm, tùy điện áp nguồn, tùy...-
Channel: Hỗ trợ học tập
19-11-2024, 22:44 -
-
bởi yname11 E có 1 laptop bị hỏng màn hình, e tháo ra thì thấy nó có 4 lớp , lớp ngoài cùng là 1 lớp nhựa rất mỏng màu hơi đen ( chắc là 1 loại film dán), tiếp theo là 1 lớp thủy tinh bị vỡ (màu đen) , đến 1 lớp thủy tinh trắng ( lớp này có...
-
Channel: Thiết bị điện tử cá nhân
18-11-2024, 19:12 -
Comment