[測試] 組合式的遙控器

本帖最後由 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遙控器沒事....

那剩下就是軟件的問題了..
IMG_3260.PNG
2016-6-13 17:53

IMG_3259.PNG
2016-6-13 17:53

IMG_3258.PNG
2016-6-13 17:53

我用呢隻遙控器, 一隻搞掂。
http://www.logitech.com/en-us/product/harmony-remote-650

TOP

試下改 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?

TOP

本帖最後由 xiao 於 2016-6-17 15:29 編輯
試下改 NEC 的 Default pulse length。

我發覺部份用 NEC Protocol 的電器,用 Default pulse length 發射 ...
C_Law 發表於 2016-6-15 17:03



用你的那套開發讀碼, 兩個遙控的的編碼好像是不同.
不確定是否撞CODE, 但是發射就出現這種情形. 因為明顯看到 AppleTV 亮燈有反應
  1. void MagicTV_CH_UP (){
  2.   digitalWrite(LED, LOW);
  3.   Serial.println(F("MagicTV CH+, await 1 sec"));
  4.   irsend.sendNEC(0x1B546897,32);
  5.   irsend.sendNEC(0x1B546897,32);
  6.   irsend.sendNEC(0x1B546897,32);
  7.   delay(1000);
  8.   digitalWrite(LED, HIGH);   
  9. }

  10. void MagicTV_CH_DOWN () {
  11.   digitalWrite(LED, LOW);
  12.   Serial.println(F("MagicTV CH-, await 1 sec"));
  13.   irsend.sendNEC(0x1B54E817,32);
  14.   irsend.sendNEC(0x1B54E817,32);
  15.   irsend.sendNEC(0x1B54E817,32);   
  16.   delay(1000);
  17.   digitalWrite(LED, HIGH);   
  18. }
複製代碼

TOP

回覆 2# tgo

好主意
但有被嫌按鈕太多

TOP

本帖最後由 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-)

这样安排, 按遥控器的任何键, 发射讯号和接受讯号可以同时监测, 结果直接比对, 下图是确认的结果.

IR

compare IR output and MRD701 reception.jpg
2016-10-5 08:10

TOP