最近因實驗需要, 上網找到很多人拿來控制 Arduino 的 APC220 UART 轉 RF 的傳輸模組.
由於網路上拍賣網站眾多, 但資料大多不全, 個人研判製造商應該是 APPCON 這家公司, 因為設定工具程式 (網路上找到的) 內有這家公司的相關資訊. 以下資料主要來自從 APPCON 網站下載下來的 datasheet
APC220 套件產品照片
APC220 套件正面相片
APC220 套件背面相片
可以相容對接的產品還有 APC230 及 APC802, 三者最大的差異是傳輸功率: APC220 是 13dBm (20mW), APC230 是 20dBm (100mW), APC802 是 27dBm (500mW), 當然功率變大電流需求也會變大, 同時也可以傳更遠. 由規格看來, 傳輸功率增加 7dBm, 距離由 800m 增加到 1800m, 20log(1800)-20log(800)=7.04 符合理論計算.
技術規格
Symbol | Parameter (Condition) | APC220 | APC230 | Units |
---|---|---|---|---|
VCC | 需求電壓 | 3.5~5.5 | 3.5~5.5 | 伏特 |
IDD (需求電流) | 接收狀態 傳送狀態 (@20mW/@100mW) 休眠狀態 |
28 40 ≦5 |
32 100 ≦5 |
mA mA uA |
Temp. | 操作溫度 | -30~85 | -30~85 | °C |
RH | 操作濕度 (相對) | 10~90 | 10~90 | % |
Freq. | 標準 RF 傳輸頻段 部份國家/地區 |
433~470 418~455 |
433~470 418~455 |
MHz |
POUT | RF 最大輸出功率 (不含天線) | 13 20 |
20 100 |
dBm mW |
Sen. | 接收靈敏度 | -118@1200 | -117@9600 | dBm |
ZANT | 天線接口阻抗 | 50 | 50 | Ohm |
Mod. | 調變方式 (Modulation) | GFSK | GFSK | |
FSKDEV | 調變頻率差 (Modulation Deviation) | 28.8 | 28.8 | KHz |
CHBW | 頻道間隔 (Channel Bandwidth) | 200 | 200 | KHz |
Duplex | 傳輸多工 | 半雙工 (half-duplex) | ||
Network Type | 網路型態 | 點對點 或 點對多點 | ||
Distance | 傳輸距離 (line of sight @9600bps) | 800 | 1800 | m |
DRFSK | RF 傳輸鮑率 | 2.4~19.2 | 2.4~19.2 | Kbps |
DRIN | UART 傳輸鮑率 | 1.2~57.6 | 1.2~57.6 | Kbps |
UART Buffers | UART 暫存區 | 256註 1 | Dual 256 | Bytes |
Dimension | 尺寸 | 37.5×18.3×7 | 39.5×18.3×7 | mm |
Weight | 重量 | 30 | 30 | g |
註 1: 中文版標示 256Byte, 英文版標示 Dual 256Byte. |
接腳定義
Pin # | Definition | Detail |
---|---|---|
1 | GND | 0V Ground |
2 | VCC | 3.3V-5.5V Power |
3 | EN |
|
4 | RXD | UART Rx (In) |
5 | TXD | UART Tx (Out) |
6 | AUX | UART Signal - Receive(low) Transmit(high) |
7 | SET | Set parameters (low) |
套件內附的 USB-UART/TTL 轉接器 (Silicon labs CP210x) 接腳如下圖 (注意: 因為和 APC220/APC230 直接對接, 所以 Pin4:TXD, Pin5:RXD, 和 APC220/APC230 相反)
套件內附的
USB-UART/TTL 轉接器
APC220/APC230 和主機之介接方法
APC220/APC230 和主機之介接
時序圖
APC220/APC230 操作時序
- T1: APC220/APC230 送電並且 Pin3:EN 由低電位拉昇到高電位 (由 sleep mode 喚醒) 50ms 後 APC220/APC230 進入工作模式開始傳輸. 反之 Pin3:EN 由高電位降至低電位則進入休眠模式.
- T2: 設定模式. APC220/APC230 於工作模式下, Pin7:SET 送低電位, APC220/APC230 將於 1ms 後停止傳輸, 進入設定模式, 此時鮑率轉為固定 9600 bps, no parity, 主機也必需轉至 9600bps, no parity 才能設定 APC220/APC230.
- T3: 設定回應, 主機送出設定資料後 200ms 之內 APC220/APC230 回應設定值 (成功或失敗由進行設定之主機判定).
- Pin7:SET 拉至低電位後只能傳送一次設定, 不論成功或者失敗, Pin7:SET 必需回復為高電位. 如果要再次設定 APC220/APC230, Pin7:SET 必需再拉至低電位.
- T4: 重新開始傳輸. Pin7:SET 回復為高電位, 10ms 之內回復工作模式開始傳輸.
設定指令格式
此節說明如何自行撰寫設定程式. 一般應用可選擇預先以工具程式設好(下一節說明), 然後用固定參數執行, 如此可忽略本節說明.
順序 | 參數 | Bytes | 預設值 | 說明 |
---|---|---|---|---|
1 | Freq. | 6 | 433920 | 433920 => 433920KHz = 433.920MHz |
2 | DRFSK | 1 | 3 | 1: 2400 bps, 2: 4800 bps |
3 | POUT | 1 | 9 | 0~9; 0 refers to -1dBm and 9 for 13dBm |
4 | DRIN | 1 | 3 | 0: 1200 bps |
5 | Parity | 1 | 0 | 0:No parity 1:Even Parity 2:Odd Parity |
- 讀取設定: 命令字串 "RD"+CR+LF
- 寫入設定: 命令字串 "WR"+參數依序由 1~5 (各參數之間以空白字元隔開)+CR+LF
- 回應: 二個指令的回應都相同, 為字串 "PARA"+參數依序由 1~5 (各參數之間以空白字元隔開)+CR+LF
例子
寫入設定: WR 434000 3 9 0 0↙
HEX Code:
0x57, 0x52, 0x20, 0x34, 0x33, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x20, 0x39, 0x20, 0x30, 0x20, 0x30, 0x0D, 0x0A
回應: PARA 434000 3 9 0 0↙
HEX Code:
0x50, 0x41, 0x52, 0x41, 0x20, 0x34, 0x33, 0x34, 0x30, 0x30, 0x30, 0x20, 0x33, 0x20, 0x39, 0x20, 0x30, 0x20, 0x30, 0x0D, 0x0A
設定工具程式
Silicon Labs CP210x USB-UART/TTL 驅動程式, 下載點: www.silabs.com
APC220 設定工具程式, 下載點: www.appcom.cn, www.dfrobot.com
APC220 設定工具程式的主畫面如下:
APC220 設定工具程式的主畫面
- 進入前先確定已經安裝好 Silicon Labs CP210x USB-UART/TTL 的驅動程式並將 Silicon Labs CP210x USB-UART/TTL 插入主機 USB Port.
- Windows Vista及以後的版本需以系統管理者身份執行 APC220 設定工具程式.
- 請先執行 Read R 讀出原本之設定
- 修改參數後執行 Write W 寫入設定
- 要連線的(二組或以上) APC220 之間必需
- RF Parameters 都相同 (所有要相連的 APC220)
- NET ID 需相同
- NODE ID 需不相同
- Serial Parameters 則各自和相連接的主機 UART 使用相同設定
如果只有其中一方會有大量資料傳給對方, 可將 Air rate (DRFSK) 和 UART rate (DRIN) 設成相同. 否則Air rate (DRFSK, 設定畫面中的 RF TRx rate) 最好是 UART rate (DRIN, 設定畫面中的 Seriers rate) 的二倍, 這是因為 RF 介面使用半雙工模式傳輸的原故 (RF 端要混合切分時段來傳送及接收二邊的資料, 所以 RF 傳輸鮑率需要加倍).- 如果程式功力不高, 主程式只是一個大迴圈而 UART 的驅動程式又不是寫得很好 (沒有使用緩衝區及中斷), 這種情況下 UART 的鮑率設太低會使 CPU 花太多時間在 UART 傳送上, 這時你可以把 DRIN 設成最高 (這樣可以充分利用 APC220/APC230 的 256 byte 的緩衝暫存區), 但必需確定產生資料的速度沒有超出 DRFSK 的 60%, 同時確定單次的訊息量不會把緩衝暫存區給塞爆, 一但緩衝暫存區給塞爆了, 資料就會不完整.
- Cper message := 每一個訊息的字元數 (含 CR+LF)
- 公式: TAir = 10*Cper message*1K/(DRFSK*0.6) ms
- 主機每次產生訊息字數 <= 256 字, 產生訊息的週期必需 >= TAir
- 例如: 每次訊息字數 100 字, DRFSK = 19200, DRIN = 57600, 則訊息產生的週期必需 >= 10*100*1K/(19200*0.6) ~= 86.8ms
- APC220/APC230 使用 FEC 技術 (Forward Error Correction with Interleaving Encoding), 具備抗干擾能力, 在嚴苛的 RF 環境中, 一樣表現良好. 但使用者仍需自行加入 CRC 循環冗餘檢查及重傳機制, 以防訊號太弱或干擾太強時之誤動作.
- 應用時注意傳輸之延遲 (10ms ~ 100ms), 鏈路中有 Host1(開發板)/UART <=> APC220 <-air-> APC220 <=> UART/USB <=> Host2(PC) 之間至少有 3 段是延遲較大的慢速的 UART 對傳. (鮑率 9600 換算下來不到 960 characters per second, 送出一個字元需要超過 1ms. 10 個字就需要超過 10ms 時間, 要小心喔!)
後記
- 使用套件所附的 USB-UART/TTL 轉接器 (Silicon Labs CP210x) 和 APC220 連接可以順利完成設定. 但要接收資料時卻和常用的終端機程式
TeraTerm
出現不相容的狀況, 完全接收不到資料. 最後改用另外買來的 Prolific PL2303 USB-UART/TTL 轉接器, 把 VCC, GND, RXD, TXD 接好才順利把資料接收下來, 實際的接線相片如下:Prolific PL2303 與 APC220 實際的接線相片
Prolific PL2303 轉接器接腳圖
- 後來又有些小插曲:
- 其實 APC220 的功能大部份都是靠底層的 RF 晶片: Analog Devices 公司 ADF7020-1 晶片, 不過這個晶片是 SPI 介面, 而且控制暫存器的設定功能對一般的使用者來可能會有點太過複雜, 所以 APC220 算是造福普羅大眾, 把有關 RF 的複雜設定都藏起來了. 有興趣的人可以在這裡 (Analog 網站)找到相關資料及下載晶片的 Data Sheet
- ADF7020-1 晶片的空中傳輸可以到達 200Kbps, 不知道為什麼 APC220 只實作到 19.2kbps? 是 Tx/Rx 收發電路切換後穩定工作所需的時間太長嗎? 接收端和發送端同步所需的時間太長? 還是想要在訊號太弱時依然可以保證 19.2Kbps 的傳輸速率? 以後有空來研究看看吧!
查了半天沒找到天線明確的增益 (gain): 應該在 2dBi~2.5dBi 之間吧?天線的增益 (gain) 是 2dBi, 確定.
留言列表