Contents
デジタル通信(有線通信)
① センサ-マイコン間の通信 SPI, I2C, 1-wire
表1.は、センサ-マイコン間の通信で使用される 「1-wire」「I2C」「SPI」の概要を示したものです。
表1.通信方式概要
それぞれの通信方式には特徴があり、用途に応じて使い分けます。
ⅰ) 1-Wire
1ーWireは、その名前の通り信号線と電源線が1本のワイヤ(DQ)で接続され、接地線と合わせて2本の線で接続することが可能です。このため、マイコンから遠く離れたセンサ/デバイス(約500m迄)でも2本の線だけで接続することができます。また複数のセンサ/デバイスを同じ1-Wireバスに接続することができます。この場合、1-Wireマスタは64bitのIDを指定して、通信を行う1-Wireセンサ/デバイスを指定して通信をおこないます。同期のためのクロック信号も信号線に含まれているため、別途接続する必要はありません。
1-Wireの基本構成(給電と同じワイヤで信号伝送)
選定するデバイスによっては信号線とは別に電源線が設けられているものもあり、その場合は距離の離れたセンサ設置場所の近くで電源を供給し、信号線のみを1-Wireホストのマイコンまで長く引っ張ってくる構成とする事もできます。
電源線が別途設けられている1-Wireセンサの例
1-Wireの通信速度には2種類あります。
- Standard-mode(約16kbps)
- Overdrive-mode(約120kbps)
両モードに対応しているデバイスや、片方のモードのみサポートのデバイスなど各種存在します。
更に詳細を知りたい方は、ネット検索で「1-wireとは」で検索すると、参考になる情報が入手できます。
実装事例(トラブルシューティング)
大型水槽の温度管理の事例です。温度センサ⇔MSM(マイコン)は5~10mの信号線を配している為、データにエラー(通信による文字化け?)が発生しました。その回避の方法として、頑健な通信ラインを再構築することも一案ですが、費用が新たに発生します。エラーの発生頻度が少なく、監視/制御に問題無ければ、PDH側(サーバー側)で欠損値として処理することをお勧めします。Node-REDで欠損値を処理する方法を紹介します。
下記に水温をダッシュボードで表示した例を示します。図の下側の折れ線グラフには、異常値(マイナスの温度値)をそのまま表示しています。27℃の水温が急にマイナスになることは自然現象としては考えられないので、異常値を欠損値として扱います。その表示が上側のグラフです。
異常値の処理は、リンク先をご覧ください。
(本文)
また、エラーの発生頻度をモニターすることで、観測系の「健康診断」することも可能です。
(本文)
ⅱ) I2C
I2C (Inter – Integrated Circuit)は、2本の信号線(データ:SDA,クロック:SCL)と電源線/接地線の合計4本で接続します。
Inter – Integrated Circuit(IC間の通信)という名称が示す通り、このインターフェースは元々は同じプリント基板内のEEPROMメモリIC等を直結して通信を行う事を想定したもので、伝送距離はそれほど長くなく、通常は数十cm程度までとなっています。最近では各種センサモジュールとホストマイコンの間の通信でもよく利用されています。同じI2Cバスに複数のデバイスを接続することができ、デバイスごとに設定されたI2Cアドレスを指定して通信を行います。
更に詳細を知りたい方は、ネット検索で「I2Cとは」で検索すると、参考になる情報が入手できます。
図22.I2C通信
実装事例(トラブルシューティング)
I2Cを使って外部センサをMSM(ESP32, マイコン)に接続した際のトラブルシューティングの事例です。センサ⇔MSMの配線を長く(1m程度)すると外部ノイズの影響でしょうか、MSMのI2C端子が不調(故障)になりました。I2Cとしては、厳しい環境です。以下に解決策を紹介します。
(本文)
ⅲ) SPI
SPIは、スレーブデバイスを指定するスレーブセレクト(SS)で対象デバイスを指定し、3本の信号線(クロック:SCK、単方向のデータ:SCO/SCI)を使って通信します。電源線/接地線を含めると、合計6本で接続します。SPIは、スレーブセレクト信号でセンサ/デバイス(スレーブ)を指定するためアドレスの指定は不要で複数のセンサ/デバイスを接続可能です。配線長は、約10m程度までとなり、外部のセンサ/デバイスと通信可能です。
更に詳細を知りたい方は、ネット検索で「SPI通信とは」で検索すると、参考になる情報が入手できます。
図23.SPI通信
(参考:1-wire, 外付けI2Cセンサの実例)
1) 1Wire インターフェースを使ったセンサ(DS18B20)
2) 外付けI2Cセンサー例
②機器間のシリアル通信
シリアル通信とは、データを送受信するための伝送路で時間的に変化するデータを1ビットずつ連続的に送受信する通信方式です。パラレル通信(データのビット数の伝送路が必要)と比較して少ない信号線での接続が可能であるため、線材や中継装置のコストが抑えられるなどのメリットがあります。古くから、コンピュータと周辺機器であるモデムとの通信に使用されているのが始まりで、その規格がRS-232Cです。
この通信のために、パラレル信号をシリアル信号に、またその逆に変換するIC集積回路がUART(Universal Asynchronous Reciever Transmitter)です。UARTは、非同期通信(調歩同期通信)にのみ対応しており、同期通信には対応していません。
表2.通信方式の比較
ⅰ) RS-232C
最も最初に使用されたシリアル通信です。元々は、コンピュータとモデムの間の通信を行うための通信規格で、通信速度も当初は遅いものでした(50bps~300bps程度)。つい最近までパソコンのインターフェースとして、標準的に装備されていました。その後高速化が図られ、現在のRS-232-C規格では、
- 50,75,100,150,300,600,1200,2400,4800,9600,19200(baud/sec)
です。RS-232Cの特徴(欠点)は、
- ノイズに弱い ・・・ 信号電圧の高低で、信号のH/Lを区別
- 速度が遅い
- 伝送距離が短い(約15m以下)・・・ 距離が長いと電圧降下が発生し、信号の区別が出来ない
があります。
図24.RS-232Cの結線とデータラインの信号レベル
本来、CCITT勧告に基づいて定められた規格ではRS-232Cインターフェースに使用されるコネクタはD-Sub 25pinコネクタを使用しますが、実際には使用しない信号線もあり省スペースのためD-Sub 9pinコネクタが一般に使用されています。D-Sub 9pinコネクタを使用したものは本来の意味ではRS-232C規格とは言えませんが、慣例的にパソコンに用意されていたD-Sub 9pinのシリアルポートをRS-232C端子と呼ぶのが一般的になっています。
このインターフェースでは、ホスト側の送信端子(TxD)をデバイス側の受信端子(RxD)に、ホスト側の受信端子(RxD)をデバイス側の送信端子(TxD)に接続して通信します。PC(ホスト等)と周辺機器(デバイス等)の間の基本的な接続はコネクタのオスメスの使いかたと合わせて下記の通りです。
このように、周辺機器等の端子までは「ストレートケーブル」で素直に信号を伝送し、デバイス側の内部でTxDをRxDに、RxDをTxDに接続する構成となっています。
ところが、PCどうしを接続して、2台のPC間で通信を行いたい場合があります。この場合、PCの端子はどちらも同じ信号が出ていますので、TxDとRxDの接続をクロスした「クロスケーブル」を用いて接続します。この接続での通信を「ヌルモデム通信」と呼ぶこともあります。
このように、接続する機器がPCのような「ホスト側」として設計されているのか、周辺機器のような「デバイス側」として設計されているのかによって接続方法が異なります。一見、周辺機器のように見えてもPCのような動作を行う機器もありますので、接続するそれぞれの機器のインターフェース仕様を確認して接続してください。
市場で購入できる材料には、ストレートケーブル/クロスケーブルの他に、ケーブルの端子に接続する事でピンのオスメスを変換する「ジェンダーチェンジャー」や、ストレート/クロスを変換する「クロス変換アダプタ(ヌルモデムアダプタ)」などがありますので、場合によってはこういった変換器を使用して接続します。
また、シリアルポートをUSBに変換するケーブルも販売されていますので、D-Sub 9pinのシリアルポートのないPCにこういったシリアルポートを持つ外部機器を接続したいときには試してみると良いでしょう。
ⅱ) RS422A
RS422はツイストペアの信号線2本で構成される平衡伝送が特徴です。必ず2本1組で動作しており、TTLからの”Hi”のデータは一方の信号線(TxD+)が+2~+6V、もう一方の信号線(TxD-)が0Vとなってドライバから送信され、”Lo”のデータは(TxD+)の信号線が0V、(TxD-)の信号線が+2~+6Vになって送信されます。
それを受けてレシーバは(RxD+)が(RxD-)の信号に対して相対電位差が高い場合に論理”1″、逆に低い場合に論理”0″となります。また回路端末は終端され、信号の反射を防ぎます。通常はレシーバ側のみ終端します。
図25.RS422Aの結線とデータラインの信号レベル
ⅲ) RS485
RS485は、RS422をバス用にレベルアップさせた規格です。電気的にはRS422とほとんど同じ平衡伝送です。ただ決定的に異なるのが、RS232C/RS422はポイント・ツゥ・ポイント(1:1)の伝送に適用されるのに対して、RS485はバス方式のマルチドロップ(1:32)に適用されるという点です。
通信方式としては、半二重(2線式)と、全二重(4線式)の二つの方式があります。
一般的にRS485とは2線式RS485を指すことが多いです。2線式RS485は送受信2本の通信線と、GNDの計3本で通信します。送受信線が1つなので送信か受信かどちらかしかできません。データを送っている時だけ信号ラインを占有するので複数台接続が可能になりました。
4線式RS485は送信2本と受信2本の合計4本の通信線と、GNDの計5本で通信します。送受信線は別になっているので、送信・受信は同時に行うことができます。データを送っている時だけ信号ラインを占有するので複数台接続が可能です。
RS-485を使用したModbusの例はこちらにあります。
図26.4線式RS485の結線
ⅳ) USB-シリアル変換
すでに述べた、シリアル通信の他に現在主流となっているUSB(Universal Serial Bus)もシリアル通信です。PCでは、外部インターフェースにUSBのみが搭載されているものも多く、従来主力であったRS232Cが搭載されていないものが大半です。また、Raspberry PiやArduinoもUSBがシリアル通信の主力です。
しかし、接続する端末には、まだまだ従来のシリアル通信が搭載されいているものが多くあります。
このような場合、USBーシリアル変換器や変換ケーブルが、多数市場では、販売されています。
赤外線通信(光通信)
v) IrDA
IrDA(Infrared Data Association)は、波長800nm帯の赤外線による光無線データ通信を規格化している団体の名称であり、規格そのものの名称。ガラケー世代に2台の端末を向かい合わせて接続し、アドレス帳などの比較的小さなデータを交換するために使用された。通信距離がおおむね30cm – 1m程度と短く、それほど普及しなかったが、デジタルデバイスでの写真の取り扱いが増えた時期に4Mbps版の搭載と、高速プロトコル IrSimpleが開発された。ICカード公衆電話にIrDA赤外線ポートが搭載されていた時期には出先でのネットワーク利用に使えるようになっていたが、利用者はそれほど伸びず、現在ではICカード公衆電話も廃止された。
vi) IRリモコン(赤外線リモコン通信)
IrDAとは異なり、波長900nm帯の赤外線による無線制御システムで、家電製品の赤外線リモコンとして多く利用されています。日本ではNECフォーマット、SONYフォーマットなどの通信フォーマットが利用され、家製協(一般財団法人 家電製品協会)フォーマットと合わせて赤外線リモコンのフォーマットとして広く利用されています。
例えば、NECフォーマットでは38kHzのサブキャリアに対して上記のようにリーダー、カスタマーコード、データコードで変調をかけた赤外線信号を送出して家電製品をはじめとする機器のコントロールを行います。
このリモコン信号を利用して家電製品をコントロールするための汎用リモコンも製品化されています。
そういった製品では、リストからメーカー・機種を選択したり、機器に付属のリモコンの信号パターンを受信して学習して目的の機器に対する赤外線リモコン信号を送出することができます。
制御に使用する際は、Amazon Alexa、Google アシスタント、Siriなどと連動することができますので、例えばNode-REDでAmazon Alexaと連動するフローを作成して室内灯やエアコンなどの家電製品をコントロールすることも可能です。