UECS Piに接続できるセンサー入門①

 UECS Piに接続できるセンサーを何回かに分けてご紹介します。あくまで入門編ですので詳細部分はご容赦ください。Raspberry pi、Arduino初心者の方にも参考になると思います。

1回目として、空気の環境を測定するのに一般的な温度、湿度、CO2センサーについて。。(と思いましたが、今回は前提知識の接続方法について)

センサーの例

デジタルとアナログ 接続方式について

Raspberry Pi(以下Raspi)などのマイコンとセンサー類を接続するとき、理解しておきたいのはデジタルとアナログの違いです。温湿度センサーとかCO2センサーとかは、ネット通販で安く手に入るものが多いです。しかし接続方法を確認しないと結局つながらないことになります。

デジタルセンサーは。。

I2CやUART、1-Wireなどの決まった通信プロトコルがありセンサー側にもそういった通信機能が組み込まれているものです。Raspi側にも通信を行うプログラムが必要になります。UECS Piにはあらかじめプログラムが組み込まれていますが、コマンドやデータ形式はセンサーによって違いますので、そのセンサーをサポートしているかを確認する必要があります。
端子の配置とコマンドの例 SHT-31データシートより
https://akizukidenshi.com/download/ds/sensirion/Sensirion_Humidity_Sensors_SHT3x_DIS_Datasheet_V3_J.pdf
とりあえず中身を理解する必要はありませんが、こんな通信を行うプログラムを書かないといけないということを知っておいてください。

通信方式によってRaspi側の接続するピンが変わります。とりあえず通信方式の名前と接続するピンがわかれば自作しやすくなるでしょう。

I2Cは、SHT-31のデータシートにあるようにSCA、SDLというピンを使って通信します。それにプラス電源とグランドの4本の線を接続すればOKです。I2Cのデバイスはアドレスがあって、それをRaspi側プログラムの設定と合わせる必要があります。逆にいうとアドレスが違えば複数のデバイスを接続できるということです。
UARTは、TXとRXという2本の通信線と電源とグランドの4本で接続します。注意しないといけないのは、TXが送信側、RXが受信側になっていて、RaspiのTXとセンサーのRXを接続するというようにクロスして配線する必要があります。UARTのデバイスはRaspiと1対1の接続になります。
1-Wireは、データ通信1本と電源、グランドの3本で接続します。(電源と信号線を兼ねて2本で接続できるデバイスもあります)信号線(DQ)とRaspiの7番ピン(UECS PiではGPIO7、Raspi標準ではGPIO4になっている)に接続します。1-Wireはデバイス毎にユニーク(世界で1つ)のアドレスを持っていて、初めて接続するときにアドレスを検索して設定する必要があります。(センサーを交換すると設定しなおしが必要になる)

UECS piのピン配置
(UECS-Pi_Basic_user_manualより、GPIO番号が標準と異なる)

他にRS-485という通信方式もありますが、これはUSBにさす変換器を使います。通信距離は1Km程度と長くできるのが特徴です。また、消費電力が数10~100mAとIoT機器としては大きくなります。供給電力には気をつけましょう。

通信距離は、I2C、UARTは明確な記載はないですが、ノイズ混入を考えると最大5mを考えていた方がよさそうです。1-Wireは長距離対応が特徴でデバイスによっては100mとか1000mの距離に対応すると書かれてますが、通信スピードやノイズ対策のレベルに影響されるようなので使う時は慎重に試した方がよいと思ってます。通信線を伸ばすと雷の影響でRaspi自体が壊れることも考えられます。雷対策も考慮したほうがいいです。

アナログセンサーは、AD変換器が必要

計測した値を電圧で出力するのがアナログセンサーです。アナログの電圧値をAD変換器(A/Dコンバーター、以下ADC)でデジタル信号に変換してRaspiに送ります。
ADCの代表的なものとしては、MCP3208とMCP3424があります。1個400円ぐらいの安価なものです。(以前は300円ぐらいだった)1つのチップで8チャネル接続できます。
2つは同じメーカー(Microchip Technology)のものですが、MCP3208はSPIという通信方式でDin - MOSI、Dout - MOSO、CLK - SCLSK (どれも後ろがRaspi側のピン)の3本の通信線と電源、グランドの線で接続します。MCP3424はI2C通信で接続します。
MCP3424の方が高機能なのですが、基板に表面実装する形式で、自作ではんだ付けするにはかなりの技術が必要なので、私はMCP3208を使用しています。MCP3208ならブレッドボードに直接刺すことができますので自作向きですね。MCP3424を使いたいときはモジュールを買った方が楽です。(ただし2000円ぐらいの値段になりますが)

アナログセンサーをADC経由で接続するときは、Raspi側はADCの通信方式に対応していればいいので汎用性があります。センサーとは電圧だけが情報なのですから。ただし、精度は落ちることになります。センサー自身の精度とは別に接続回路の精度という要素が加わります。例えば、出力が0-5VのセンサーをMCP3208に接続し比較電圧に3.3Vを与えた場合、5Vの電圧を3.3V以下に落とす必要があります。その時、下記の図のように2つの抵抗器で分圧を行いますが、抵抗器は安価で売られているものは±5%の精度となっている、それだけ精度は落ちることになります。回路に接続した状態で測定値の校正をする必要があります。
抵抗器による分圧の例

アナログ接続のもう一つのデメリットとしては、デバイスが持っている機能を使えなくなることがあります。冒頭の写真のCO2センサーはデジタルでもアナログでも接続することができます。しかし、CO2測定値の校正機能を使用する場合はデジタルインターフェースの校正コマンドは使用できません。アナログの場合は単に「測定値を取るだけ」になります。

アナログのもう一つの方式として、電流値で値を出力するデバイスもあります。電流出力の方がノイズに強く、通信線を長くすることができるそうです。接続するためには、図のようにシャント抵抗器を使って電圧値に変換することができます。

シャント抵抗を使用して電流→電圧変換する計測方法
https://www.keyence.co.jp/ss/products/recorder/lab/4-20ma/measurement_s.jsp

例えば、電圧入力計測器としてMCP3208を使用した場合、最大20mAの電流値を3Vとするためには150Ωの抵抗器をシャント抵抗として使えばいいという具合です。
電流出力は、センサーというより計測器と記録器(ロガー)を接続する場合に多いようです。例えば水耕栽培の肥料管理機(セムコーポレーション)は、水温、pH値、EC値を電流出力する端子があります。制御はできないけど、値だけは記録することができます。
らくらく肥料管理機(セムコーポレーション)
https://www.cemco.jp/hydroponics/rakuraku4/

なんだか、デジタルとアナログ接続の話で長くなってしまったので、センサーの話は次回に。すみません。

*「UECS Pi」はアルスプラウト株式会社が提供する汎用DIY環境制御ソフトウェアです。https://www.arsprout.co.jp/products/others/uecs-pi/

*「UECS」は農業用のセンサー機器や制御機器用の通信・動作の共通仕様です。UECS研究会が公開しています。https://www.uecs.jp/outline/outline-index

関連リンク:EzITコンサルティング www.ezitc.dev

コメント

このブログの人気の投稿

Arsprout Piを使ってみた③ ーファームウエアのカストマイズ UECS Piとの相違点ー

Arsprout Piを使ってみた② ー構成定義を中心にUECS Piとの違いを考えるー

Arsprout Piを使ってみた① ーUECS Piからの変更点を中心にー