查看積分策略說明發表回覆
Discuz! 代碼
提示插入
直接插入
說明訊息

插入粗體文本 插入斜體文本 插入下劃線 置中對齊 插入超級連結 插入信件位址 插入圖像 插入 flash 插入代碼 插入引言 插入列表
刪除線 直線分隔線 虛線分隔線
    
添加文字底框
內容 [字數檢查]:

表情符號

更多 Smilies
字型大小 |||
溫馨提示:本區開放遊客瀏覽。


文章關鍵字 : [功能說明]
(關鍵字可加強搜索準確性, 如關鍵字多於一組, 請以 , 作分隔, e.g. : 阿笨,shiuh,第一笨)

 關閉 URL 識別 | html 禁用
 關閉 表情符號 | 表情符號 可用
 關閉 Discuz! 代碼 | Discuz! 代碼 可用
使用個人簽名
接收新回覆信件通知
推薦放檔網絡空間

檔案(Torent, zip等)
  1. freedl
  2. multiupload
  3. btghost
  4. 便當狗
  5. mediafire
  6. pillowangel
圖片(JPG, GIF等)
  1. hotimg
  2. tinypic
  3. mousems2
  4. imageshack
  5. imm.io
>>>歡迎推薦好用空間


最新10篇文章回顧
mitewold

 發表於 2019-5-13 10:43 PM

哇賽,還有這招阿.....
真的厲害!


Observer

 發表於 2019-5-10 09:31 PM

我突然感嘆為什麼我只有一對膝蓋....


innova

 發表於 2019-5-10 12:00 AM


引用:

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



--
發佈日期:2016年10月16日


innova

 發表於 2019-5-9 11:38 PM

我先說出 我對 1F 的理解, 也許會有許多誤解存在:

1. 只有一台機上盒,不想另外花錢添購第二台
2. 有兩間(以上?)房間,想要看電視
3. 兩房間中間 已經拉好網路線
4. AV訊號 使用 網路線 其中的 5芯 (Video:影1+地1  +  Audio: 左1+右1+地1)
5. 網路線 剩下三芯,於 另一房間 使用 兩按鈕 將訊號接至 有機上盒 的房間 由Arduino接收 並控制機上盒
6. 機上盒 紅外線前方 使用 Arduino模擬 遙控器 訊號;Arduino發射假的(模擬)遙控器訊號 做控制


首先, AV訊號部分
如果沒記錯, AV三個端子 的 外殼 應該都是接到  機上盒PCB板上 共同的『地』才對?
所以, Video的Gnd跟 Audio的Gnd 理該是沒有電壓差的
您可以拿電表量測 做確認;可以的話,用示波器會更準確些
所以,Video-Gnd 應該是可以跟 Audio-Gnd 接在一起。可以節省一根網路芯

只有兩按鈕,還有3芯可以使用...
為什麼 不直接 1芯 拉 5V過去,另兩芯 直接接到 Arduino的 DI點上? (Button Project)
還要多搞一塊電路板出來;到時候 整個系統出問題 要 debug的點 超多...
估計其他家人沒法直接使用電話就能排除故障


既然都將 Arduino搬出來了~ 紅外線模組也買了
不如 直接搞兩組 Arduino+紅外線
另一房間 使用 Arduino接收紅外線訊號
使用 網路線 2芯 接到 機上盒房間的 Arduino Tx/Rx, 建議兩邊的 Arduino Gnd也接在一起, 以免兩邊電壓差不同
機上盒房間的 Arduino仍是當前設計,使用 Arduino發送紅外線 模擬遙控器
Serial port data就是 IR收到的資料,機上盒房間的 Arduino Serial port收到什麼 就直接丟什麼出來...
這樣, 沒有機上盒的房間,一樣可以使用遙控器,遙控上有的功能 也都能完全展現
不過,前面IR用的 應該是 UART
得先搞定 第二組 UART才行


最後,來惡搞一下
僅只是臆測,不確定可行性
IR receiver有3 pin: Vcc/Gnd/Vout
IR LED有2 pin: Vcc/Gnd
沒有機上盒的房間,將 IR Receiver 3跟 pins接上 剩下的 三根網路線
有機上盒房間, IR Receiver的 :
Vcc接 USB 5V
Gnd接 USB Gnd,並 並聯 IR LED Gnd
Vout接 IR LED Vcc
如果 網路線拉的不長,壓降不大
上面一堆電路都省了


kavinson

 發表於 2019-5-8 10:28 PM

系統最多送三朵花

順便收下我的膝蓋!
實在太厲害了!


bv8aw

 發表於 2019-5-8 10:17 PM

真是太強了!


pop

 發表於 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日更新
實際操作影片

[flash]https://www.youtube.com/v/qJ6ML7F_un8[/flash]

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





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