ガスセンサの使い方(デジタル出力編②)〜UART(RS485)通信を活用したデータ取得〜

前回のフィガロジャーナルでは、オープンコレクタ出力を利用したデータ取得について解説し、現在のデジタル通信の主流が「シリアル通信」であることをご紹介しました。
本記事では、ガスセンサのデジタル出力の中でも「デジタル通信」にフォーカスし、「シリアル通信」の概要を簡単に説明した上で、その基本となるUART通信、そして産業機器でもよく使用される「RS485」との関係についても見ていきます。
後半では、実際に ガスセンサモジュール「FCM2630-K1A」を用いて、UART(RS485)通信のセットアップから動作確認までを一通り実践してみましょう。
デジタル通信の主流「シリアル通信」とは?
「シリアル通信」とは、データを1ビットずつ直列に送受信する通信方式であり、大きく分けて「同期式」と「非同期式」に分類されます。
「同期式」は、データ信号とクロック信号を同時に送受信する方式です。送信側と受信側が共通のタイミング(クロック)で動作するため、データのやり取りが正確で、高速通信に適しています。
一方、「非同期式」は、送信側と受信側がそれぞれ独立したクロックを持つか、あるいはクロック信号を使用せずに通信を行います。例えるなら、手紙のやり取りのようなものです。
手紙はいつ読まれるかわかりませんが、「これは1通目」「これは2通目」「これは最後」といった情報があれば、受け取る側は内容を正しく理解できます。
シリアル通信のメリット
非同期式では、データの始まりと終わりを明示する「スタートビット」や「ストップビット」を使って、正確な通信を実現します。
クロック信号を必要としないため配線が少なく済み、通信速度はやや劣るものの、構成がシンプルで取り扱いやすいというメリットがあります。
シリアル通信にはいくつかの方式があり、用途や要件に応じて最適な方法が選択されます。
現在広く使われている代表的なシリアル通信方式には「UART」「I²C」「SPI」などがありますが、今回はその基本である「UART」について説明していきます。
UART(Universal Asynchronous Receiver/Transmitter)とは?
UARTは「シリアル通信を行うためのハードウェア通信プロトコル」として紹介されることが一般的です。
ここでいう「プロトコル」とは、データの送受信を行う際の情報のフォーマットや通信手順のことを指します。
つまり、UARTとは、2つのデバイス間で、非同期に、データをシリアル形式(=1ビットずつ順番に)で送受信するための 「情報フォーマット・通信手順」を定めた仕組みだと理解することができます。
それでは、UARTではどのようなフォーマットや通信手順が使われているか、具体的に解説していきます。
UART通信の基本要素
UARTの通信には、以下のような要素があります。
1. 信号線
UART通信では、以下の2種類の信号線を用いて、デバイス間でデータの送受信を行います。
- TxD(Transmit Data):送信データライン
- RxD(Receive Data):受信データライン
UART通信を正しく行うためには、信号線に加えて「GND(グランド)」の接続も重要です。
GNDは、デバイス間で電気的な基準電位を共有するためのラインであり、これが正しく接続されていないと、通信エラーや不安定な動作の原因になります。
2. 接続方法

UART通信は、上の図(UART通信の接続図)で示すように、2つのデバイス間で、Tx(送信ピン)とRx(受信ピン)を接続します。
片方のTx(送信ピン)を、相手側のRx(受信ピン)に接続し、同様に相手側のTxを、自分側のRxに接続してください。
3. UART通信のタイミング(ボーレート)
| 通信速度 |
| 2,400 bps |
| 4,800 bps |
| 9,600 bps |
| 19,200 bps |
| 38,400 bps |
| 57,600 bps |
| 115,200 bps |
UART通信では、通信開始前に両デバイスで同一のボーレート(bps)を設定する必要があります。 ボーレートが一致していない場合、データの同期が取れず、正しく通信できません。よく使用されるボーレートを上の表に示しています。
※bps:bit per second(ビット・パー・セカンド)
4. 通信フレーム構成

UARTでは「フレーム形式」でデータが送受信されます。1フレームは、以下の4つの要素から構成されます。
① スタートビット(1ビット)
通信の開始を知らせるビットです。通常、Lowレベル(0)で表され、受信側に「これからデータが送られてくる」という合図を送ります。
② データビット(通常8ビット)
実際に送信したいデータの本体を表します。一般的には8ビット(1バイト)が使われますが、5〜9ビットまで設定できる場合もあります。
③ パリティビット(0または1ビット)
通信エラーを検出するためのビットです。偶数パリティ(Even parity)、奇数パリティ(Odd parity)、なし(No parity)を選択できます。
④ ストップビット(1ビットまたは 2ビット)
通信の終了を示すビットで、Highレベル(1)で表されます。1ビットまたは2ビットが使用され、機器の設定によって変わります。
| 1フレームの合計ビット数・・・スタートビット(1)+データビット(例:8)+パリティビット(0または1)+ストップビット(1または2)=10〜12ビット |
UARTのフレーム形式(フォーマット)は、上記の通りです。1回の通信で送られる総ビット数は10〜12ビットとなります。
5. データ単位の基礎知識
データ通信では、情報の量を表す単位として「ビット」「バイト」「ワード」が頻繁に使われます。ここでは、それぞれの意味と違いについて簡単に見ておきましょう。

データ通信では、情報の量を表す単位として「ビット」「バイト」「ワード」が頻繁に使われます。ここでは、それぞれの意味と違いについて簡単に見ておきましょう。
| ◆ビット(bit)・・・「binary digit(バイナリ ディジット)」 の略。0 または 1 のいずれかの値をとる、最小の情報単位です。たとえば、UARTのスタートビットやストップビットは1ビット単位で構成されます。(例:1ビット= 0または1) |
| ◆バイト(byte)・・・8ビットを1つにまとめた単位です。コンピュータで扱う基本的なデータサイズであり、1文字(英数字)や1命令などに相当することが多いです。UART通信では、通常「1データ=8ビット=1バイト」で送受信されます。(例:1バイト= 8ビット) |
| ◆ワード(word)・・・CPUやマイコンなどが一度に処理できるデータの単位を指します。ワードのサイズはシステムのアーキテクチャ(設計)によって異なり、16ビット、32ビット、64ビットなどがあります。通信規格によっては、データの単位として「ワード送信」「ワード受信」などの表現が使われることもあります。(例:16ビットマイコン→ワード=16ビット 32ビットマイコン→ワード=32ビット) |
UARTとRS485の関係
UARTは、データを1ビットずつ順番に送受信する「シリアル通信方式」を実現するためのハードウェア(通信機能)を指します。
一方、RS485は、UARTで送受信されるデータが通る信号線に関して、電気的な特性(電圧レベル・信号形式)や物理的な接続方法を規定する通信インタフェース仕様です。
つまり、UARTは「通信の仕組み・論理的なプロトコル」、RS485は「通信の土台となる物理層(ハードウェアの規格)」という位置づけになります。
UARTとRS485は連携して使われることが多く、以下のように整理できます。
| UART | RS485 | |
|---|---|---|
| 概念 | ハードウェアの一部 | インターフェース仕様 |
| 伝送距離 | 短距離、数cmから数m程度 | 長距離 (ノイズに強い)、最大1200m |
| 用途 | 内部通信、短距離通信 | 長距離通信、産業用ネットワーク |
| 最大伝送速度 | 数Mbps程度 | 10M bps |
| 電圧レベル | TTLレベル (例: 0V~5V、3.3vなど) | 差動信号 (例: ±5V) |
つまり、UARTはデータをシリアル形式に変換する機能を提供し、RS485は、そのシリアルデータを長距離かつノイズに強い形で伝送するための電気的な特性と物理的な接続方法を提供しています。
このことから、シリアル通信の「論理的な部分」を担うのがUART、「物理的な部分」を担うのがRS485と表現することができます。
実際には、マイコンなどの機器に搭載されたUART機能でデータをシリアル形式に変換し、そのデータをRS485で送信することで、ノイズの多い環境でも、数百メートルにわたる長距離通信を安定して行うことができます。
このように、UARTとRS485はそれぞれ役割が異なるものの、組み合わせることで高信頼なシリアル通信を実現できるのです。
ガスセンサモジュール(FCM2630-K1A)を用いたRS485通信

次は、ガスセンサモジュール(FCM2630-K1A)を例に、マイコン内でUARTに変換されたデータを「RS485変換IC」が受け取り、外部の制御基板などへはRS485通信で送受信する方法を簡単に解説します。
上の図は、製品内のUART通信と外部の制御基板などへのRS485通信との関係を表したものです。
まずは、ガスセンサモジュール(FCM2630-K1A)を用いたRS485通信に必要となる備品について説明します。
必要備品について
ガスセンサのデータを取得するにはこれらの備品が必要です。
- ガスセンサモジュール (FCM2630-K1A)

- リード線付コネクター (コネクターハーネス)※Receptacle for connector : MX44004SF1 (made by JAE)

- RS485-USB変換アダプター

- USBケーブル(TypeA-C)+ USB電源

- ブレッドボード+USB変換基板

- PC(ノートパソコン等)※通信確認のため使用

|
通信アプリ(無料版) ※本記事では、見た目にも分かりやすいCOM-Tを使用します。 |
USBドライバー(無料) ※変換アダプターに応じたものをご用意ください。 |
|
※TeraTerm、RealTermなどのバイナリー送受信が可能なアプリが必要です。以下、通信アプリの例です。
・Tera Term(現在の最新版:Ver.5.4.0) https://teratermproject.github.io/ ・Real Term(現在の最新版:Ver.2.0.0.70) https://sourceforge.net/projects/realterm/files/Realterm/
・COM-T(現在の最新版:Ver.1.2) https://www.vector.co.jp/soft/dl/win95/hardware/se471464.html |
例:Silicon Labs製 CP210x Universal Windows Driver(Ver.11.4.0) https://www.silabs.com/software-and-tools/usb-to-uart-bridge-vcp-drivers?tab=downloads |
データ取得のための前準備について
それでは、実際にデータ取得の準備を進めていきましょう。手順について解説します。
(1)リード線付きコネクターを準備する

上の写真のように、リード線4本を取付けたコネクターハーネスを準備します。
(2)ガスセンサモジュールと接続させる

上の写真のように、ガスセンサモジュール(FCM2630-K1A)のコネクタに、対応するコネクターハーネスを接続します。
このとき、各ピンの役割(ピンアサイン)を正しく把握しておくことが非常に重要です。 詳しくは、上記のピンアサイン表をご参照ください。
誤った接続を行うと、通信が正常に行えないだけでなく、センサや接続機器を破損させるおそれがあります。
接続する際は、以下の点に十分ご注意ください。
- ピン配置が一致していることを必ず確認する
- コネクタの向き(差し込み方向)を正しく合わせる
- コネクタは奥までしっかりと差し込む
また、センサ側だけでなく、マイコンやRS485変換アダプター側のピン配置とも一致しているか、接続前に必ず確認しましょう。
(3)RS485-USB変換アダプター及びDC電源と接続させる

まず、上の写真のように、ACアダプターを接続してUSB変換基板に電源を供給します。その際、「USB変換基板」からDC5V±0.2Vの電圧が出力されていることを事前に確認してください。
出力電圧が5Vを超えていたり、不安定な場合は、センサや他の機器を破損するおそれがあります。
電圧の確認ができたら、一旦ACアダプターを抜いて電源をオフにしてください。これから行う配線作業を安全に行うための重要なステップです。

次に、コネクターハーネスから出ている4本のリード線を上の写真のように配線します。詳しくは下の表をご参照ください。

- ピン番号1(VDD)とピン番号4(GND)→「USB変換基板」の電源出力端子(5V / GND)に接続
- ピン番号2(RS485 A)とピン番号3(RS485 B)→「RS485-USB変換アダプター」の差動信号端子(A / B)に接続
配線の際は、ピン番号・信号名・接続先の端子名が正しく一致しているかを必ず確認してください。
配線が完了したらACアダプターからの電源供給を再開し、センサモジュールを通電状態にします。
(4)通信アプリ(無料版)のインストール
本記事では、通信の確認に使いやすく、視覚的にもわかりやすいシリアル通信アプリ「COM-T」を使用します。
現在の最新版は Ver.1.2 です。こちらからダウンロードできます。
ダウンロードしたZIPファイルを解凍すると、すぐにCOM-Tアプリを使用できます。 インストール作業は不要で、実行ファイルを直接起動するだけで使用可能です。
(5)USBドライバーのインストール
今回使用する「RS485-USB変換アダプター」は、DSD TECH製 SH-U10L USB-RS485ケーブルです。
このアダプターには、Silicon Labs社製のUSB-UARTブリッジIC(CP210xシリーズ)が搭載されているため、PCと通信するには専用ドライバーのインストールが必要です。
今回はSilicon Labs製 CP210xUniversal Windows Driver(Ver.11.4.0)のドライバーを使用します。こちらからダウンロードできます。
PCにドライバーが未インストールの場合は、通信ができません。必ず事前にインストールを行っておきましょう。
通信準備とCOM-Tの設定手順について
①アダプターの接続
まず、RS485-USB変換アダプターのUSB端子をノートPCのUSBポートに接続します。
②COMポートの確認

Windowsスタートメニューを右クリックして「デバイスマネージャー」を開きます。
接続されたアダプターが正しく認識されていれば、上の画像の赤枠で示す部分のように「ポート(COMとLPT)」の項目に「Silicon Labs CP210x USB to UART Bridge(COM3)」のような表示が現れます。
この表示から、使用されているCOMポート番号(今回は「COM3」)を確認してください。
③通信アプリ(COM-T)の起動


次に、COM-Tを起動すると画像(左)のような画面が表示されます。
通信メニューの中から、赤枠で示す「通信」→「通信パラメーター」を選択してください。

| Item | Detail | |
|---|---|---|
| Interface | RS485 | |
| Transmission | 2wire half-duplex | |
| synchronization | asynchronous | |
| Speed | 9600bps | |
| Data format | Start bit | 1 bit |
| Data bit | 8 bits | |
| Parity bit | None | |
| Stop bit | 1 bit | |
画像(左)のような通信設定画面が開きます。画像(右)の表の赤枠部分の項目に従って入力し、OKをクリックしてください。(※FCM2630-K1Aに合わせた設定です)


画像(左)に示すように、通信メニューの中の「送信指示」ダイアログを選択して表示させます。次に、画像(右)に示す「HEX」ボタンに切り替えてください。
これでアプリでの通信設定は完了です。次は実際にデータを送受信して行きます。
RS485通信によるデータの送受信
| Adress | Register Name | Description | |
|---|---|---|---|
| 00H〜0FH | Reserved | ||
| 10H |
Sensor Operation Period(unit:months) 総稼働時間(month) |
From 0×0000 to 0×0175 | Counts the sensor usage period by months(up to 373months) |
| 11H |
Operating Status 動作状態(動作モード) |
0×0001:初期ウォームアップ Initial State Mode |
When the module is warming up after power on |
|
0×0002:監視モード Monitoring Mode |
Normal module operation under A2L gas concentrations below alarm threshold | ||
|
0×0003 :警報モード Alarm Mode |
When the module is detecting A2L gas concentrations at or above alarm threshold | ||
|
0×0004:故障モード Malfunction Mode |
When the module works with some errors and can't detect A2L gas leak | ||
| 12H〜1FH | Reserved |
上の画像に示す、本モジュール(FCM2630-K)の通信仕様書によると、内部レジスタのアドレス「10H」および「11H」を読み取ることで、以下の情報を取得することが可能です。
|
アドレス10H:総稼働時間(累積運転時間) アドレス11H:現在の動作状態(動作モード) |
これにより、システムの運用状況をリアルタイムで監視・管理することができます。
それでは、READ(読取り)コマンドの送信を試すことで、実際のデータ取得フローを確認していきましょう。
モジュールは、あらかじめ定義された通信フォーマットに従って送受信しますので、まずはその形式を理解し、正しいコマンド構築を行うことが重要です。
清浄大気中でのレジスタ(10H ~11H)の読み出し
本モジュールでは、コマンドの送受信に際して、下の表1に示す通信フォーマット(メッセージ形式)を使用します。


①コマンドの送信
2つのアドレス(10H および 11H)のデータを一度に読み取るケースを想定し、READコマンドの送信手順を確認していきます。
まずは、上の画像の赤枠で示すアプリの送信ウィンドウに、上表1のコマンドを半角小文字で入力してください。各バイトは、上の画像に示す形式に従い、1バイトずつ山括弧(< >)で囲んで入力します。
入力が完了したら、「1ライン送信」ボタンを押すことで、READコマンドが送信されます。

②コマンドの受信
コマンド送信後、上の画像の青枠で示すアプリの受信ウィンドウに、モジュールからの応答が表示されます。表示された内容は、下の表2に示す「応答メッセージ」フォーマットに基づいたデータです。

この応答メッセージには、リクエストに対応するアドレスのデータが格納されており、正常に通信が行われたことを確認できます。
本モジュール(FCM2630-K)の通信仕様書によると、この応答メッセージは「ガスセンサの総稼働時間」が0〜1ヶ月以内で、「動作モード」は監視モードであることが確認できました。
ガス雰囲気中でのレジスタ(10H ~11H)の読み出し
①コマンドの送信
2つのアドレス(10H および 11H)のデータを一度に読み取るために、アプリの送信ウィンドウに、下の表3のコマンドを半角小文字で入力してください。各バイトは、先ほどと同様に1バイトずつ山括弧(< >)で囲んで入力します。

入力が完了したら、「1ライン送信」ボタンを押してください。
②コマンドの受信
コマンド送信後、アプリの受信ウィンドウに、モジュールからの応答が表示されます。表示された内容は、下の表4に示す「応答メッセージ」フォーマットに基づいたデータです。

本モジュール(FCM2630-K)の通信仕様書より、この応答メッセージでは「ガスセンサの総稼働時間」が0〜1ヶ月以内で、「動作モード」は警報モードであることが確認できました。
※応答メッセージが<fe><03><04><00><00><00><01><34><fc>であった場合、初期ウォームアップ中であると判断できます。
応答メッセージが、 <fe><03><04><00><00><00><04><f4><ff>であった場合、何らかのモジュール故障が考えられます。
おわりに
今回は、FCM2630-Kを題材として、RS485を使用したデータ取得の手順について解説しました。
現在のデジタル通信においては、シリアル通信が主流であり、その中でもRS485は産業用途で広く採用されています。
本記事では、RS485の前段階となるUARTの基本的な仕組みにも触れたことで、デジタル通信に関する基礎知識の理解にもつながったのではないでしょうか。
次回は、シリアル通信の他の方式(例:I²C、SPI など)について取り上げ、それぞれの特徴や用途、通信方法について解説していく予定です。
Gas Sensing Innovation
フィガロ技研は世界トップレベルの生産販売量を誇るガスセンサメーカーです。
1969年の創業以来「独自のガスセンシング技術を通じて、世界の人々の安全・安心・快適な生活を実現する」を合言葉に、半導体式ガスセンサをはじめとした各種ガスセンサの研究開発、応用商品の開発・普及に取り組んでいます。