RS422/RS485 Shield¶
RS422/RS485 Shieldは、OpenMV Camに産業用バスに適した長距離差動シリアルリンクを提供します。ワイド入力電源、サージ保護、ADC/デジタルI/Oを備えています。
完全なデータシート、写真、注文については RS422/RS485 Shield製品ページ を参照してください。
ハイライト¶
オンボード終端付きの10 Mb/s RS-422またはRS-485
逆電圧耐性のある6~36 V入力
±36 Vの過電圧保護付き0~5 V ADC入力
短絡保護付き、カメラ同期トリガー用の0~5 VデジタルI/O
ピン配置¶
ピンリファレンス¶
ピン |
機能 |
|---|---|
P4 |
RS-422 / RS-485 TX → 差動ラインを駆動して出力 |
P5 |
RS-422 / RS-485 RX ← 差動ライン入力を受信 |
P6 |
レベルシフトされたAINの読み戻し(P6上で0~3.3 V) |
P10 |
SYN — 端子台上のオープンドレインデジタルI/O |
PWR入力 |
端子台上の6~36 Vワイド入力(逆電圧耐性あり) |
AIN入力 |
端子台上のアナログ入力 |
VIN出力 |
オンボードレギュレータから5.4 V、最大600 mA |
3.3Vレール |
シールドのオンボード電子回路へ給電 |
GNDレール |
共通グランド |
注釈
AINは±36 Vまで過電圧保護されており、デフォルトでは0~5 Vの電圧入力で、P6上では0~3.3 Vにスケールダウンされます。シールド前面の4~20 mAモードシャントをブリッジすると、AINを4~20 mAのカレントループ入力に切り替えられます。
注釈
SYNはオープンドレインのデジタルラインで、カメラ側は3.3 V、SYN端子側は5 Vにプルアップされています。デフォルトでは入力で、シールドがSYN上の0~5 VをP10上の0~3.3 Vにレベルシフトします。オンボードのはんだジャンパを変更するとP10を出力に切り替えられ、P10上の0~3.3 VをSYN上の0~5 Vにレベルシフトします。
注釈
P4、P5、P6、P10はそれぞれデフォルトではんだジャンパを通じてカメラに接続されています。無関係な用途に再利用したいピンのジャンパを開いてください。P6のジャンパはシールド裏面に、P4、P5、P10は前面にあります。
注釈
オンボードの終端抵抗はデフォルトで接続されています。切断するには、対応する裏面のはんだジャンパを開いてください。2つがRS-422のA/Bペアを、2つがRS-422のY/Zペア(RS-485のA/B終端も兼ねます)をカバーし、合計4つのジャンパがあります。
RS-422とRS-485について
どちらの規格も、長距離でノイズ耐性のあるリンクのために、シリアルデータをツイストペア上の平衡(差動)信号として送信します:
RS-422 は4線式の全二重です。ドライバが Y/Z とラベル付けされた専用のTXペアで送信し、相手側が別の A/B とラベル付けされたRXペアで返信します。1ペアあたり送信器1台と受信器最大10台です。
RS-485 は通常、2線式の半二重です。送信と受信が単一のペアを共有し、RS-485の用語では A/B と呼ばれますが、このシールドでは物理的にY/Zラインと同一です。最大32ノードがバスを共有でき、そのいずれもがバスを駆動できます。
シールドが両方をサポートする仕組み
このシールドは、どちらの規格にも対応できる2つのTHVD1426トランシーバを搭載しています:
1つ目のトランシーバ はY/Zペア(RS-485のA/Bペアも兼ねます)を駆動します。ドライバが接続されているのはこれだけなので、カメラからの送信トラフィックはモードに関係なくすべてこのペアから出力されます。
2つ目のトランシーバ はA/Bペアを駆動します。そのドライバは無効化されており、このトランシーバは受信専用で、4線式RS-422モードでのみ意味を持ちます。
両トランシーバの受信器は常に有効で、それらのRX出力はAND結合されてカメラへの単一の受信ラインになります:
2線式RS-485モード では、1つ目のトランシーバのみがアクティブです。バスをY/Zに配線します。A/B側はアイドル状態で、ANDゲートは1つ目のトランシーバのRXをそのまま通過させるだけです。
4線式RS-422モード では、相手側がA/Bペアでカメラへ送信し(2つ目のトランシーバが受信)、カメラはY/Zで送信します(1つ目のトランシーバ自身の受信器が送出データをエコーバックします)。ANDゲートがそれらを結合し、ローパルス(スタートビット、データ)が現れたいずれかのペアの信号がカメラに届きます。
端子台のラベルはこのデュアルマッピングを反映しています:
RS-422(4線式) — TX出力はY/Z、RX入力はA/B。
RS-485(2線式) — TX/RXがY/Zペアを共有します(RS-485の用語ではA/B)。シールド上のA/B端子は未接続のままにしてください。
使い方¶
注釈
以下の UART(3) のペリフェラル番号はSTM32のマッピングに従っています。別のプロセッサでは、これらのピンに配線されたバスが異なる場合があります。ボードのリファレンスを確認してください。
P4(TX)/P5(RX)で差動シリアルの相手と通信します:
from machine import UART
uart = UART(3, baudrate=115200)
uart.write("hello\n")
print(uart.read())
レベルシフトされたP6ピンを通じてAIN端子台入力を読み取ります:
from machine import ADC
import time
ain = ADC("P6")
while True:
v = ain.read_u16() * 3.3 / 65535
print("AIN:", v * (5.0 / 3.3), "V")
time.sleep_ms(100)
SYNラインの立ち下がりエッジに反応します。たとえば、SYNをローに引き下げる別のデバイスとカメラを同期させる場合などです:
from machine import Pin
def on_sync(pin):
print("SYN falling edge")
syn = Pin("P10", Pin.IN)
syn.irq(on_sync, Pin.IRQ_FALLING)