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
-
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, hicNguyê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
-
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é.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
-
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.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
-
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.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
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)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
-
Thế anh hướng dẫn cho em được ko....em gà lém! Thanks!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
-
Trả lời cho Tìm bạn thân quen cũ.bởi mèomướpDạ cháu đọc 1 số bài viết của bác vi... thì nhớ đc bác là 1 cụ già gần 80 tuổi, sức khỏe yếu. Đam mê và làm vc về kỹ thuật điện. Thích thơ ca. Có nhìu bài chia sẻ quý báu cho thế hệ sau. Tuy nhiên già rồi nên khái tính, bảo thủ, nhưng vẫn đáng kính ạ... còn lão nhathung... thì kiểu bố đời
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 12:52 -
-
bởi lvhnHãng nào tùy thích thôi bác! bây giờ các hãng đều hỗ trợ xem qua máy tính hay điện thoại đều được. Gắn Trước tiên mua về cắm nguồn set ip hết xong hãy lắp lên, cam poe chỉ cần 4 lõi là hoạt động bình thường nên 1 dây kéo cho 2 cam vẫn ok
-
Channel: Tâm tình dân kỹ thuật
30-07-2026, 15:49 -
-
Trả lời cho Tìm bạn thân quen cũ.bởi lvhnNhớ không nhầm thì lúc còn đi học có gặp chú 1 lần cf bãi xe Nguyễn Kim, giờ quán cf đó nghỉ bán rồi
-
Channel: Tâm tình dân kỹ thuật
30-07-2026, 15:44 -
-
Trả lời cho Thắc mắc pin 21v ?bởi lvhnCon số đấy biểu thị gần đúng thôi, cái đồng hồ đó có đảm bảo chính xác hay không? pin có cục lên 4v4 vẫn bình thường. Cái gì cũng có sai số trong phạm vi không quá lớn thì không ảnh hưởng gì đâu, bàn ngay ngón ngắn ngón dài mà
-
Channel: Điện tử dành cho người mới bắt đầu
30-07-2026, 15:32 -
-
Trả lời cho Amply bị rò DC 22 voltbởi lvhnThay mấy con transisto nhỏ đầu vào, thường vi sai lỗi hay bị. Khám tổng quát chân các linh kiện xem có bị rỉ sét nhiều không?
-
Channel: Điện thanh
30-07-2026, 15:24 -
-
bởi dinhthuong92Mạch này hiệu suất ra led đạt khoảng 90.7% tại 12V in, 40W out.
-
Channel: Nguồn!
27-07-2026, 10:15 -
-
bởi dinhthuong92Có lẽ nguồn viết bài này chỉ mang tính định tính để nói rằng cần thay đổi tổng trở tải để có Pmax chứ trình bày chưa chi tiết và thấu đáo một cách định lượng. Công thức tổng quát phải có mặt L mới được, và nói là "tổng...
-
Channel: Nguồn!
27-07-2026, 10:09 -
-
Trả lời cho [Chia sẻ] Tổng hợp các công ty AI Việt Nam đang làm gì thật sự — Từ voicebot, computer vision đến AI agentsbởi nguyendinhvanCàng ngày, CNTT càng trở nên lôi thôi , rách việc.
Cái AI và Ge... trên trình duyệt chỉ tổ làm vướng mắt, mất thì gian.
Tôi toàm phải mất cộng tắt nó đi.-
Channel: Xu hướng, nhu cầu và thị trường
25-07-2026, 14:59 -
-
bởi trung30000Em có con amply 12 sò D 718 và e688 , biến áp 15A, 30v 0 30 v, một kênh thì hoạt động bình thường, kênh còn lại nổ bụp bụp, sột sột, đèn tín hiệu nhảy lên vạch max, khoảng 4 đến 5 giây, sau đó đèn tín hiệu trả về mức không, Em thấy như...
-
Channel: Điện thanh
24-07-2026, 13:50 -

Comment