2014年8月18日 星期一

VS 1838B通訊測試

紅外線傳輸是採用序列(Serial) 通訊的方式傳輸資料,在序列(Serial) 通訊的方式中常會提到 mark space 狀態。space 是紅外線的預設訊號,Transmitter 處於 off 狀態,這時 IR LED 不會發射光亮;而在 mark 狀態 IR LED 會以特定的頻率送出 on/off 脈衝 (Pulse)

序列通訊注意事項:
1.          因為 Receiver 會把訊號反向,所以從 Receiver 這端來看,space 意味著 high level 訊號輸出,而 mark 則是 low level 訊號輸出。
2.          要特別注意 mark space 並非我們要傳輸的 1 0 數位訊號。mark space 以及 1 0 之間的關係是由所用的 protocol 決定的。目前 IR Protocol 有相當多種,如 NEC, Phlips RC5, RC6, RC-MM, Toshiba, Sharp, JVC, Sony SIRC 等。

一般使用紅外線傳輸使用 30kHz 60kHz 的頻率(Bergmans, 2013, Bergmans, 2013),本書實驗使用 37的紅外線發射器是38 khz,,它的發射的紅外線編碼,是採用NEC IR Protocol,其NEC format特點如下:
l          8-bit Custom Code 8-bit Data Code
l          38kHz Carrier freqeuncy
l          使用 PPM (Pulse Position Modulation)
l          Bit time 1.125ms 2.25ms  

我們為了實作紅外線傳輸,在 38之中,是我們紅外線傳輸的測試電子線路,將VS 1838BOut 輸出腳位接在Arduino開發板的digital Input11個腳位,其餘S 1838BVccGnd腳位則同步+5VGnd腳位,進行下列實驗。



38 紅外線接收模組連接線路圖
使用工具 by Fritzing (Interaction_Design_Lab, 2013)

我們使用網路上GitHub, Inc網路上,Ken Shirriff攥寫的為Arduino開發板驅動IR的函式庫『IRremote(Shirriff, 2013),驅動 IR LED 發射訊號,而偵測到的訊號則從右手邊的 receiver 跑出來。

紅外線接收模組測試程式(IRrecvDemo)
/*
 * IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
 * An IR detector/demodulator must be connected to the input RECV_PIN.
 * Version 0.1 July, 2009
 * Copyright 2009 Ken Shirriff
 * http://arcfn.com
 */


#include <IRremote.h>


int RECV_PIN = 11;


IRrecv irrecv(RECV_PIN);


decode_results results;


void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}


void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }
}
資料來源:https://github.com/shirriff/Arduino-IRremote

執行上述程式之後,我們可以得到 39的畫面,我們使用市面上常見的紅外線遙控器,對著VS 1838B,按下紅外線遙控器上面任合一顆按鍵,如果角度對,接收成功的,可以從Arduino 開發板的監控畫面得到 39的畫面,可以看到回傳一個『FF18E7』三位元組的資料。




39 紅外線接收模組測試程式結果畫面

沒有留言:

張貼留言