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 Đấu tắt điện cho máy tính bảngbởi bqvietBqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
-
Channel: Thiết bị điện tử cá nhân
Hôm qua, 17:17 -
-
Trả lời cho Xin hỏi về mạch thu FM/AM trong catsettebởi nguyendinhvanTheo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
-
Channel: Điện thanh
05-12-2025, 19:59 -
-
Trả lời cho Đấu tắt điện cho máy tính bảngbởi afrendlyCó vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
-
Channel: Thiết bị điện tử cá nhân
04-12-2025, 01:27 -
-
Trả lời cho Máy điện châm ?bởi nick22Đúng như bạn nói, máy điện châm hiện nay trên thị trường đã khá đa dạng về mẫu mã, chức năng và giá thành.
-
Channel: Điện tử y sinh
01-12-2025, 13:23 -
-
Trả lời cho Làm thế nào để check IC LM358bởi thetungĐể check IC sống hay chết thì đơn giản : bạn lắp cái mạch ( khuếch đại hoặc dao động ) chạy bằng con IC đó ,nhưng vị trí IC thì lắp cái đế .... thế là cứ cắm rút thì biết . Còn không thì kiếm cái này : https://shopee.vn/Xu-M%C3%A1y-ki%E1%...di-%C4%91%E1%B...
-
Channel: Hướng dẫn tìm thông tin linh kiện
28-11-2025, 14:34 -
-
bởi ngochung90Tình hình là em có mua mạch 3s về để hàn vào khối pin 12v, hàn xong em đo tại các chân từ B-, B1, B2, B+ thì điện áp pin vẫn đủ 12,6v, nhưng tại 2 chân ra P- P+ thì đo chỉ được 6,3v là bị sao các bác, và chân P- P + này đồng thời là chân sạc xả thì mình cắm sạc xả cùng lúc được ko ạ
...-
Channel: Điện tử dành cho người mới bắt đầu
28-11-2025, 10:32 -
-
Trả lời cho Làm thế nào để check IC LM358bởi nguyendinhvanViệc đó tùy thuộc trình độ khoa học kỹ thuật công nghệ ứng dụng hiện tại thôi.
Trong datasheet,họ đưa ra nhiều thông số. Tùy theo khả năng , và những thông số họ cần, họ sẽ kiểm tra casc số đo có khớp với số liệu trong datasheet...-
Channel: Hướng dẫn tìm thông tin linh kiện
27-11-2025, 18:00 -
-
bởi kqbn9091Em có mạch AT89s8253 đang cần sửa số serial no của CHIP mà giờ lâu quá rồi không dùng keil nên không biết phải làm sao, trong khi chỉ còn file hex. Mạch nạp thì progris khi viết không sửa được số serial của IC. Rất cần bác nào còn làm về 89...
-
Channel: Vi điều khiển họ 8051
27-11-2025, 11:13 -

Comment