RSS   



  可打印版本 | 推薦給朋友 | 訂閱主題 | 收藏主題 | 純文字版  


 


 
主題: [轉貼]用一條網路線讓電腦和電視共用第四台機上盒   字型大小:||| 
pop
銀驢友〔初級〕
等級: 12等級: 12等級: 12


 . 積分: 479
 . 文章: 771
 . 收花: 3972 支
 . 送花: 88 支
 . 比例: 0.02
 . 在線: 571 小時
 . 瀏覽: 18962 頁
 . 註冊: 7209
 . 失蹤: 44
 . taipei
#1 : 2019-5-8 02:58 PM     全部回覆 引言回覆

自從第四台數位化之後,每台電視旁都要擺機上盒轉成AV端子或HDMI再接電視才能看,以前買的電視棒和電視卡都廢了,要和第四台業者申請機上盒還要押金和占空間,於是有了一些想法

是我家的機上盒


這是放在角落很久的電視卡


這張電視卡可以接收AV端子信號


看了一下 ,機上盒背面有AV端子,想把訊號拉到房間,但是市面上沒賣這麼長的AV訊號線,後來想到可以用網路線來傳送訊號,一條網路線可以分8條


於是去光華電子材料行買RCA接頭和網路分接盒,然後DIY把以前在外租屋買的30米網路線接上



音源用掉3條(左聲道,右聲道,地線)影像用兩條(影像和地線) 8-3-2=3 還剩3條可利用
後來想 ....光把訊號傳到房間也沒用,要能選台才行
要控制機上盒就要用遙控,後來想到用arduino來發送紅外線訊號控制機上盒選台
然後看了網路上很多高手的文
用紅外線遙控家電
http://coopermaa2nd.blogspot.tw/2012/12/arduino.html
葉難: Arduino練習:紅外線傳送與接收

http://yehnan.blogspot.tw/2013/05/arduino.html
如何用紅外線遙控Arduino

http://blog.udn.com/andy840119/15096120
        然後決定用剩下3條線做選台功能(選台上 選台下 地線)


點網頁綠色的按鈕,按download zip



解壓縮改資料夾檔名存在arduino目錄的libraries資料夾內


後開始做實驗了
                    這是我的測試用程式碼 接收端 (參考網路並修改過)

#include <IRremote.h>

int RECV_PIN = 2; // 使用數位腳位2接收紅外線訊號
IRrecv irrecv(RECV_PIN); // 初始化紅外線訊號輸入
decode_results results; // 儲存訊號的結構

void setup()
{
  Serial.begin(9600);
  irrecv.blink13(true); // 設為true的話,當收到訊號時,腳位13的LED便會閃爍
  irrecv.enableIRIn(); // 啟動接收
}

void loop() {
  if (irrecv.decode(&results))
  { // 接收紅外線訊號並解碼
    Serial.print("results value is "); // 輸出解碼後的資料
    Serial.print(results.value, HEX);
    Serial.print(", bits is ");
    Serial.print(results.bits);
    Serial.print(", decode_type is ");
    showIRProtocol(&results);
    Serial.println(results.decode_type);
    irrecv.resume(); // 準備接收下一個訊號
  }
}
void showIRProtocol(decode_results *results)
{
   switch(results->decode_type) {
     case NEC:
     Serial.print("NEC");
     break;
     case SONY:
     Serial.print("SONY");
     break;
     case RC5:
     Serial.print("RC5");
     break;
     case RC6:
     Serial.print("RC6");
     break;
     default:
     Serial.print("Unknown encoding");
  }   
}


測試出來頻道鍵的遙控碼如下 80BF01FE  NEC和 80BF817E NEC
於是開始寫發送端程式碼
經過反覆測試後,變如下

int I,J;
unsigned long v = 0x0;
#include <IRremote.h>
IRsend irsend; // IRRemote限定使用數位腳位3
void setup()
{
  pinMode(4, INPUT);
  pinMode(5, INPUT);
I=0;
J=0;
}

void loop()
{
if(digitalRead(4)==LOW)
  {
  I=1;
  }
if(digitalRead(4)==HIGH && I==1)
  {
  I=0;
   v = 0x80BF01FE;
  irsend.sendNEC(v,32);
  }


   if(digitalRead(5)==LOW)
  {
  J=1;
  }
if(digitalRead(5)==HIGH && J==1)
  {
  J=0;
  v =0x80BF817E;
  irsend.sendNEC(v,32);

  }

  if(I==1&& J==1)
  {
  v=0x80BF3BC4;
  irsend.sendNEC(v,32);
   I=0;
   J=0;
  delay(1000);
  }
}


這是我測試配備,右邊那台是我自製行動電源


測試訊號ok,可以轉台,準備焊接電路


加工電路板用來裝dc接頭


零件試擺


焊接中


arduino uno腳位定義


328腳位圖


焊接初步完成(省略reset鍵和晶體振盪器和電容,因為我用ic內建晶振)


燒錄中,用自製燒錄板接上arduino燒錄


arduino燒錄方式(無晶振和有晶振接法)


合體,準備測試


測試後發現線太短太硬 換成綠色多芯線並固定在機上盒上



如上圖,機上盒有usb, 直接從機上盒取出5v電壓給328晶片用


將線拉到房間,並安裝好訊號線


安裝電視卡驅動程式和軟體

後來發現廣寰的軟體有bug ,只有安裝好第一次執行可以播av訊號,關閉軟體再開後就只有聲音無畫面,害我以為是電腦或線路問題,測試好幾次並重灌win7,直到重灌完還是一樣,才上網找其他電視卡撥放軟體,最後我用kmp試成功,方法如下

右鍵>開啟>開啟WDM


右鍵>WDM >video composite 和audio line (這時就看到av端子的訊號了)


如果還有問題,則右鍵>開啟>設定WDM/BDA


如圖設定,我這張卡這樣設定就能看了


這是我的軟體版本


接下來做選台用的的按鍵


蓋上蓋子


裝上並接好線


拉到桌上


測試後可正常選台和觀看,音量用電腦控制即可
總結: 這個裝置可以充分利用機上盒,但是客廳如果同時有人看電視轉台時,就會有搶台狀況,畢竟只有一台機上盒,不過對我家來說不必擔心,我只是懶得在客廳滿身大汗看電視,選台雖然只有上下兩鍵,但對我來說夠了,要更多功能也可以,只要用另一顆328ic 做發送端,送串列訊號到遙控端即可,這樣做即使選號轉台也ok

9/20日更新 經過數日使用,一次只能一台一台轉太慢,於是改了程式碼,讓兩鍵同時按時可以快速切換到10 ,50 , 200 , 250,並把程式碼加上註解如下


int I,J,k; //I和J用於判斷頻道上下鍵是否被按下,k則用於兩鍵同時按下記數用
unsigned long v = 0x0;
#include <IRremote.h>
IRsend irsend; // IRRemote限定使用數位腳位3
void setup()
{
  pinMode(4, INPUT);//按鈕輸入腳位
  pinMode(5, INPUT);//按鈕輸入腳位
I=0;
J=0;
k=0;
}

void loop()
{
if(digitalRead(4)==LOW)  //按鈕按下時
  {
  I=1;
  }
if(digitalRead(4)==HIGH && I==1)  //按鈕放開時
  {
  I=0;
   v = 0x80BF01FE;
  irsend.sendNEC(v,32); //轉台上(發送紅外線訊號)
  }


   if(digitalRead(5)==LOW)  //按鈕按下時
  {
  J=1;
  }
if(digitalRead(5)==HIGH && J==1)  //按鈕放開時
  {
  J=0;
  v =0x80BF817E;
  irsend.sendNEC(v,32);//轉台下(發送紅外線訊號)
  }

  if(I==1&& J==1) //當兩鍵同時按下時
  {
   k=k+1;
   I=0;
   J=0;
     switch(k) {
     case 1: //轉到10台(當兩鍵同時按下第一次時)
     v =0x80BF49B6;
     irsend.sendNEC(v,32);//1(發送紅外線訊號)
     delay(200);
     v =0x80BFE11E;
     irsend.sendNEC(v,32);//0(發送紅外線訊號)
     break;
     case 2: //轉到50台(當兩鍵同時按下第二次時)
      v =0x80BFF10E;
     irsend.sendNEC(v,32);//5(發送紅外線訊號)
     delay(200);
     v =0x80BFE11E;
     irsend.sendNEC(v,32);//0(發送紅外線訊號)
     break;
     case 3://轉到200台(當兩鍵同時按下第三次時)
     v =0x80BFC936;
     irsend.sendNEC(v,32);//2(發送紅外線訊號)
     delay(200);
     v =0x80BFE11E;
     irsend.sendNEC(v,32);//0(發送紅外線訊號)
     delay(200);
     v =0x80BFE11E;
     irsend.sendNEC(v,32);//0(發送紅外線訊號)
     break;
     case 4://轉到250台(當兩鍵同時按下第四次時)
     v =0x80BFC936;
     irsend.sendNEC(v,32);//2(發送紅外線訊號)
     delay(200);
     v =0x80BFF10E;
     irsend.sendNEC(v,32);//5(發送紅外線訊號)
     delay(200);
     v =0x80BFE11E;
     irsend.sendNEC(v,32);//0(發送紅外線訊號)
     k=0; //兩鍵同時按下記數歸零
     break;
     default:
     k=0;
   
  }
  
  delay(1000);
  }
}
10月16日更新
實際操作影片



[pop 在  2019-5-8 07:26 PM 作了最後編輯]



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記

   

快速回覆
表情符號

更多 Smilies

字型大小 : |||      [完成後可按 Ctrl+Enter 發佈]        

溫馨提示:本區開放遊客瀏覽。
選項:
關閉 URL 識別    關閉 表情符號    關閉 Discuz! 代碼    使用個人簽名    接收新回覆信件通知
發表時自動複製內容   [立即複製] (IE only)


 



所在時區為 GMT+8, 現在時間是 2024-11-21 09:04 PM
清除 Cookies - 連絡我們 - TWed2k © 2001-2046 - 純文字版 - 說明
Discuz! 0.1 | Processed in 0.024321 second(s), 7 queries , Qzip disabled