作者: xiao 時間: 2016-6-13 17:37 標題: 組合式的遙控器
本帖最後由 xiao 於 2016-6-17 15:33 編輯
一個 LeTV, 一個 Onkyo AMP, 一個 MagicTV, 還有其他例如 AppleTV, 網路電視盒, Now電視, PS4, Xbox360 等等
這些絲絲入扣的機器, 其實不簡單, 對年過半百的人來說, 有時候設備太好太多, 反而變得困難, 因為有好多個遙控器和很多按鈕
買一個可以自學的遙控器是一個方法, 不過有時候還是會被嫌棄按鈕比較多, 不好記, 不好用.
那做一個只有8個按鍵的遙控器, 只要開機, 看特定的節目就夠了.....如何...?
上星期六無意中看到這個帖,
http://www.hkepc.com/forum/viewthread.php?tid=2266565
抄了一下, 看了一下, 所以做了一個類似的 , 算是OK, 不過 MagicTV 3000 的頻道轉換 CH+ CH-, 距離很短, 不到一公尺, 是遙控碼不對, 還是925nm 的IR發射不合適呢, 沒空做研究了, 不過有個現象, 按 CH+ 或 CH- 同時讓 AppleTV有反應, 這不正常, 因為用原裝的MagicTV 3000遙控器沒事....
那剩下就是軟件的問題了..
https://h2.hkepc.com/forum/attachment.php?aid=1897161&k=d434a2ab8b3220345fae6c1b592a9ac4&t=1781640886&sid=484DdR830O

https://h2.hkepc.com/forum/attachment.php?aid=1897162&k=1916f21cddf97508925ce70e93c09632&t=1781640886&sid=484DdR830O

https://h2.hkepc.com/forum/attachment.php?aid=1897163&k=724f8b4863a955a5dd594506e2f9d2fc&t=1781640886&sid=484DdR830O

作者: tgo 時間: 2016-6-15 08:47
我用呢隻遙控器, 一隻搞掂。
http://www.logitech.com/en-us/product/harmony-remote-650
作者: C_Law 時間: 2016-6-15 17:03
試下改 NEC 的 Default pulse length。
我發覺部份用 NEC Protocol 的電器,用 Default pulse length 發射的話,一時控制到,一時又控制不到,太近太遠又控制不到,對到正發射未必得,打斜少少發射的成功控制機會率反而比較高,總之就古古怪怪。
後來度下這電器個原裝遙控器訊號的 Pulse length,發現同 Default 相差少少,於是度過所有掣的 Pulse length,計返 HearderMark/Space、OneMark/Space、ZeroMark/Space 的平均數,之後用平均數重新 Upload 個 Sketch 上 Arduino,結果成功遙控到的機會率大大提高。
或者係個別電器本身讀遙控訊號個 Program,對 Pulse length 偏差的接受範圍比較窄,偏離多小小就無反應。而發射和接收的距離、角度,又對接收器輸出的 Pulse length 有小小影響,之前話用 Default pulse length 要就正個某個位置先至控制到,或者係"狗屎撞棍"撞正所有偏差互相抵消。
我對 NEC 之類只發射一次主訊號的遙控 Protocol 沒什麼好感。一旦接收不到就一定要再按過。Sony、Sharp 之類會將整個訊號重複發射的 Protocol 就比較好用,就算初頭接收不到,只要 Press and hold 個掣,再搖下個搖控器,總有一下會撞正係收到。
MagicTV 和 AppleTV 撞 Code?
作者: xiao 時間: 2016-6-17 15:27
本帖最後由 xiao 於 2016-6-17 15:29 編輯
試下改 NEC 的 Default pulse length。
我發覺部份用 NEC Protocol 的電器,用 Default pulse length 發射 ...
C_Law 發表於 2016-6-15 17:03
用你的那套開發讀碼, 兩個遙控的的編碼好像是不同.
不確定是否撞CODE, 但是發射就出現這種情形. 因為明顯看到 AppleTV 亮燈有反應
- void MagicTV_CH_UP (){
- digitalWrite(LED, LOW);
- Serial.println(F("MagicTV CH+, await 1 sec"));
- irsend.sendNEC(0x1B546897,32);
- irsend.sendNEC(0x1B546897,32);
- irsend.sendNEC(0x1B546897,32);
- delay(1000);
- digitalWrite(LED, HIGH);
- }
- void MagicTV_CH_DOWN () {
- digitalWrite(LED, LOW);
- Serial.println(F("MagicTV CH-, await 1 sec"));
- irsend.sendNEC(0x1B54E817,32);
- irsend.sendNEC(0x1B54E817,32);
- irsend.sendNEC(0x1B54E817,32);
- delay(1000);
- digitalWrite(LED, HIGH);
- }
作者: xiao 時間: 2016-6-17 15:32
回覆 2# tgo
好主意
但有被嫌按鈕太多
作者: xiao 時間: 2016-10-5 08:14
本帖最後由 xiao 於 2016-10-5 08:22 編輯
继续实验.
模仿红外线遥控器发射讯号, 读取解码后, 再用ARDUINO发射, 结果接收端偶然误动作, 接收目标是扩大机, 但是同时苹果电视也有反应在闪灯, 却并无动作, 使用原厂遥控器不会出现, 所以读取或模拟原厂遥控器不完全正确.
试试看用直接抓取原厂遥控 IR LED 驱动的讯号, 另外比对38KHZ接收器的输出, 果然有些地方差很多. 模拟器的发射讯号更加完全不同, 因此觉得是 IR LIB 有BUG, 暂时没进一步研究.
过程里面, 除了HS0038B (38KHZ IR MODULE), 用了另外一个纯粹的光电管接收红外线, MRD701, 据资料表说明, 925nm, 收到红外线会有反应, 手电用照射也有反应, 所以实验一下读取遥控器发射的讯号, 没想到因它的速度或者其他原因, 38KHZ的载波完全自动去除, 只剩IR发射的资料. 到底什麽原因呢.
MRD701的连接方式, 4V电池正极->10K 电阻-> MRD701的C脚 -> MRD701的E脚 -> 4V电池负极, 构成完整回路.
LOGIC PROBE 通道7探测 MRD701的C脚, 同时,
LOGIC PROBE 通道6探测原厂遥控器的输出 (IR LED-)
这样安排, 按遥控器的任何键, 发射讯号和接受讯号可以同时监测, 结果直接比对, 下图是确认的结果.
https://h2.hkepc.com/forum/attachment.php?aid=1928329&k=6a56f5a72d5cc44ac77c7c33d94e47de&t=1781640886&sid=484DdR830O



