IR - 發送 IR Sony 資料
材料準備
AmebaD [ AMB21 / AMB22 / BW16 ] x 2
Grove – 紅外線發射器 x1
範例說明
在這個例子中,我們使用一個 Ameba RTL8722 模塊,連接一個紅外線(IR)發射器來發送和接收 IR SONY 數據“0xA90”(Sony TV power code)。 對於接收端,您可以使用示波器/邏輯分析儀查看波形並進行相應解碼。
圖一: Grove – 紅外線發射器
在傳輸端,發射器將發送 IR SONY 數據。 更多詳情請參考SB-Projects的IR Remote Control Theory專題,了解IR遙控器操作原理和IR協議說明。 在此範例中,我們將使用 Sony 作為傳輸協議。
Sony 特色
12-位元版本, 7 位元命令, 5 位元地址
調節脈衝距離
載波頻率為 40kHz
Bit time 為 1.2ms 或 0.6ms
Sony SIRC 調節
SIRC 協議使用脈衝編碼。 代表邏輯“1”的脈衝是 40kHz 載波的 1200us,而邏輯“0”的是 600us 長。 都由 600us 長的間隔隔開,如下圖二所示。
圖二: Sony SIRC 調節
協議
圖三: 12位元 Sony SIRC 協議
圖三顯示了 12位元 SIRC 協議的典型脈衝序列。 使用此協議,首先傳輸 LSB。 開始是 2.4ms,後面跟著 0.6ms 的標準間隔。除了發出 SIRC 訊息開始的信號外,還用於調整 IR 接收器訊號。 然後發送 7 位元命令,後跟 5 位元設備地址。 在這種情況下,地址 1 和命令 19 被傳輸。
只要按住遙控器上的鍵,命令就會每 45 毫秒重複一次(從這次開始到下次開始測量)。
圖四: AMB21 / AMB22 的紅外發射器引腳配置
图五: BW16 的红外发射器引脚配置
Figure 6: Pin configuration of the IR Emitter and BW16-TypeC
正確設置連接後,我們將介紹此範例的編碼部分。 首先,確保在Arduino IDE中選擇了正確的Ameba開發板:“Tools”->“Board”。
在“File”->“Examples”->“AmebaIRDevice”->“IRSendSONY”中打開“IRSendSONY”範例(圖六)並上傳到與IR Emitter相連的板上:
圖六: IRSendSONY 範例
成功上傳 IRSendSONY 的範例代碼後,您可以使用示波器或 Pulse View 查看 IR Emitter 發射的信號波形為“0xA90”,如下圖所示:
圖七: IRSendSONY “0xA90” 波型
程式码说明
[1] Seed Official website for Grove – Infrared Emitter
https://wiki.seeedstudio.com/Grove-Infrared_Emitter/
[2] Ken SHirriff’s blog on A Multi-Protocol Infrared Remote Library for the Arduino
http://www.righto.com/2009/08/multi-protocol-infrared-remote-library.html
[3] SB-Projects: IR Remote Control Project
https://www.sbprojects.net/knowledge/ir/index.php
[4] SONY SIRC Protocol