番外編 Dell Edge Gateway 3001は素人でも使えるのか その2 外部に出ているGPIOポート-1

 Dell Edge Gateway 3001の右面には、RS-232/422/485のポートが2組、USB2.0ポートが一つ、GPIOポートが1組用意されています。GPIOポートは8個あります。

ピン番号 1 3 5 7 9 11 13 15
信号名 GPIO0 GPIO1 GPIO2 GPIO3 GPIO4 GPIO5 GPIO6 GPIO7
ピン番号 2 4 6 8 10 12 14 16
信号名 GND GND GND GND GND GND GND GND

 このポートには、アナログ・デバイセズのAD5593Rが接続されています。

AD5593RはGPIO、A-Dコンバータ、D-Aコンバータをもつ

  • 8チャネル12ビットD-Aコンバータ
  • 8チャネル12ビットA-Dコンバータ
  • 8チャネル汎用デジタルI/Oピン
  • 内部温度センサ
  • インターフェースはI2C

 これらの機能が16ピンのパッケージに入っているので、実装面積が少なくて済みます。基準電圧源Vrefは2.5Vを内部にもっているので、12ビットが十分に生かす変換が行われる思われます。入力範囲は、0~Vrefまでと0~Vrefの2倍が選択できます。変換時間は2usです。GPIOの流れ出し/吸い込み電流は1.6mAなので、直接つないだ高輝度LEDを点灯できると思います。

ドライバはiio

 Linuxのセンサ類のドライバは、iioやmraaなどがよく使われているようです。mraaはエジソンやガリレオのようなインテルのデバイスで開発されていましたが、製品自体が終息してしまいました。

 iioはアナログ・デバイセズが最初に始めたようですが、現在では、複数の会社や個人によってドライバが開発されています。ただし、利用するときに参考になるドキュメントが見つかりにくいです。ラズパイでも1-Wire湿度センサDHT11A-DコンバータのADS1115などがiioのドライバになっています。

 iioのドライバがインストールされていると、/sys/bus/iio/devicesに測定結果、設定ファイルが入っています。測定結果は、常に更新されています。四つのデバイスがありました。

 iio:device0がAD5593Rのようです。

 読み出します。いずれもテキスト・ファイルです。tempとなっているので、内蔵の温度計のデータのようです。

$ cat in_temp_raw
859
$ cat in_temp_offset
-753
$ cat in_temp_scale
376.789750000

 データシートの温度換算式にrawデータを代入します。

 (859-820)/2.654+25 = 39.69[℃]

 24時間電源を入れた状態なので、室温より高めの温度です。

 本来このディレクトリは次のように、A-Dコンバータのin_voltagexxxとD-Aコンバータのout_voltagexxxのファイルがなければなりません。2018年5月時点ではサポートされていないようです。残念です。

ほかのデバイス

 iio:device1のディレクトリを見ると、Humidityとtempがあるので、これは温湿度センサ HTS221のデータのようです。

 iio:device2のディレクトリを見ると、accel_x,y,zがあるので、これは加速度のデータのようです。nameはlng2dmです。

 iio:device3のディレクトリを見ると、pressureがあるので、これは気圧のデータのようです。nameはlps22hbです。

GPS

 snapyのlocationdがGPSの読み取りのプログラムのようです。