第6章 動作確認方法

目次

6.1. 動作確認を行う前に
6.2. ネットワーク
6.2.1. 接続可能なネットワーク
6.2.2. ネットワークの設定方法
6.2.3. nmcliの基本的な使い方
6.2.4. 有線LAN
6.2.5. 無線LAN
6.2.6. ファイアーウォール
6.2.7. ネットワークアプリケーション
6.3. ストレージ
6.3.1. ストレージの使用方法
6.3.2. ストレージのパーティション変更とフォーマット
6.4. LED
6.4.1. LEDを点灯/消灯する
6.4.2. トリガを使用する
6.5. RTC
6.5.1. RTCに時刻を設定する
6.6. ユーザースイッチ
6.6.1. イベントを確認する
6.7. 温度センサー
6.7.1. 温度を取得する
6.8. ADコンバーター
6.8.1. 電圧を取得する
6.8.2. 電源電圧を監視する
6.9. Armadillo-IoT RS232Cアドオンモジュール RS00
6.10. Armadillo-IoT 絶縁RS232C/422/485アドオンモジュール RS01
6.10.1. RS422/RS485の通信設定を変更する
6.11. Armadillo-IoT RN4020アドオンモジュール BT00
6.11.1. 設定情報を取得する
6.12. Armadillo-IoT EnOceanアドオンモジュール EN00
6.12.1. EnOcean無線データを受信する
6.13. Armadillo-IoT Wi-SUNアドオンモジュール WS00
6.13.1. 設定情報を取得する
6.14. Armadillo-IoT 絶縁RS485アドオンモジュール RS02
6.14.1. RS422/RS485の通信設定を変更する
6.15. Armadillo-IoT 絶縁デジタル入出力/アナログ入力アドオンモジュール DA00
6.15.1. デジタル出力状態を設定する
6.15.2. デジタル入力状態を取得する
6.15.3. アナログ入力電圧を取得する

6.1. 動作確認を行う前に

工場出荷状態でフラッシュメモリに書き込まれているイメージファイルは、最新版ではない可能性があります。最新版のイメージファイルは、Armadilloサイトからダウンロード可能です。最新版のイメージファイルに書き換えてからのご使用を推奨します。

イメージファイルの書き換えについては、11章イメージファイルの書き換え方法を参照してください。

6.2. ネットワーク

ここでは、ネットワークの設定方法やネットワークを利用するアプリケーションについて説明します。

6.2.1. 接続可能なネットワーク

Armadillo-X1 は、複数の種類のネットワークに接続することができます。接続可能なネットワークとLinuxから使用するネットワークデバイスの対応を次に示します。

表6.1 ネットワークとネットワークデバイス

ネットワークネットワークデバイス備考
有線LANeth0 
無線LANwlan0AEH-AR9462 または WPEB-265AXI(BT) [B33] 搭載

6.2.2. ネットワークの設定方法

Armadillo-X1 では、通常のLinuxシステムと同様、ネットワークインターフェースの設定はNetworkManagerを使用します。NetworkManagerはデフォルトでeth0(LANのネットワークインターフェース)が自動でupし、DHCPでネットワーク設定を取得するようになっています。

NetworkManagerはすべてのネットワーク設定をコネクションとして管理します。コネクションには「どのようにネットワークへ接続するか」、「どのようにネットワークを作成するか」を記述し、/etc/NetworkManager/system-connections/に保存します。 また、1つのデバイスに対して複数のコネクションを保存することは可能ですが、1つのデバイスに対して有効化にできるコネクションは1つだけです。

NetworkManagerは、従来の/etc/network/interfacesを使った設定方法もサポートしていますが、本書ではnmcliを用いた方法を中心に紹介します。

6.2.2.1. nmcli について

nmcli は NetworkManagerを操作するためのコマンドラインツールです。

図6.1「nmcli のコマンド書式」 に nmcli の書式を示します。このことから、nmcli は「オブジェクト(OBJECT)というものが存在し、それぞれのオブジェクトに対してコマンド(COMMAND)を実行する。」という書式でコマンドを入力することがわかります。また、オブジェクトそれぞれに help が用意されていることもここから読み取れます。

nmcli [ OPTIONS ] OBJECT { COMMAND | help }

図6.1 nmcli のコマンド書式


各オブジェクトについての詳しい情報は man nmcli を参照してください。

[注記]

Armadillo-X1 には nmcli の他ユーザーフレンドリーな nmtui もインストールされていますが本書では取り扱いません。

6.2.3. nmcliの基本的な使い方

ここでは nmcliの、基本的な使い方を説明します。

6.2.3.1. コネクションの一覧

登録されているコネクションの一覧を確認するには、次のようにコマンドを実行します。 [12]

[armadillo ~]# nmcli connection
NAME                UUID                                  TYPE            DEVICE
Wired connection 1  64e2e184-ede4-4cc6-ab70-0713d7cb0f0b  802-3-ethernet  eth0

図6.2 コネクションの一覧


6.2.3.2. コネクションの有効化・無効化

コネクションを有効化するには、次のようにコマンドを実行します。

[armadillo ~]# nmcli connection up [ID]

図6.3 コネクションの有効化


コネクションを無効化するには、次のようにコマンドを実行します。

[armadillo ~]# nmcli connection down [ID]

図6.4 コネクションの無効化


6.2.3.3. コネクションの作成

コネクションを作成するには、次のようにコマンドを実行します。

[armadillo ~]# nmcli connection add con-name [ID] \
type [type] ifname [interface name]

図6.5 コネクションの作成


[ID] にはコネクションの名前(任意)、[type] には ethernet, wifi といった接続タイプ、[interface name] にはインターフェース名(デバイス)を入力します。具体的なコネクションの作成方法はそれぞれのデバイスの章で説明します。

[注記]

/etc/NetworkManager/system-connections/[ID]の名前でコネクションファイルが作成されます。これをviなどで編集しコネクションを修正することも可能です。

6.2.3.4. コネクションの削除

コネクションを削除するには、次のようにコマンドを実行します。

[armadillo ~]# nmcli connection delete [ID]

図6.6 コネクションの削除


[注記]

/etc/NetworkManager/system-connections/のコネクションファイルも同時に削除されます。

6.2.3.5. コネクションを修正する

具体的なコネクションの修正方法を紹介します。

[ティップ]

wifiの設定情報をnmcli connection modifyコマンドで設定情報を編集すると、パスフレーズ情報がリセットされます。 編集する際は、都度パスフレーズも同時に設定してください。 パスフレーズの設定方法は、「無線LAN」を参照してください。

[警告]

ネットワーク接続に関する不明な点については、ネットワークの管理者へ相談してください。

6.2.3.5.1. 固定IPアドレスに設定する

表6.2「固定IPアドレス設定例」の内容に設定する例を、図6.7「固定IPアドレス設定」に示します。

表6.2 固定IPアドレス設定例

項目設定
IPアドレス192.0.2.10
マスク長24
デフォルトゲートウェイ192.0.2.1

[armadillo ~]# nmcli connection modify [ID] \
ipv4.method manual ipv4.addresses "192.0.2.10/24 192.0.2.1"

図6.7 固定IPアドレス設定


6.2.3.5.2. DHCPに設定する

DHCPに設定する例を、図6.8「DHCP設定」に示します。

[armadillo ~]# nmcli connection modify [ID] \
ipv4.method auto -ipv4.addresses "192.0.2.10/24 192.0.2.1"

図6.8 DHCP設定


[注記]

-ipv4.addresses のように、プロパティ名の先頭に '-' を付けることで設定したプロパティを削除することができます。反対に '+' を付けることでプロパティを追加することができます。

6.2.3.5.3. DNSサーバーを指定する

DNSサーバーを指定する例を、図6.9「DNSサーバーの指定」に示します。

[armadillo ~]# nmcli connection modify [ID] ipv4.dns 192.0.2.10

図6.9 DNSサーバーの指定


6.2.3.6. コネクションの修正を反映する

有効化されているコネクションをコネクションを修正した場合、かならず修正したコネクションを再度有効化してください。

[armadillo ~]# nmcli connection down [ID]
[armadillo ~]# nmcli connection up [ID]

図6.10 コネクションの修正の反映


6.2.3.7. デバイスの一覧

デバイスの一覧(デバイス名、タイプ、状態、有効なコネクション)を確認するには、次のようにコマンドを実行します。 [13]

[armadillo ~]# nmcli device
DEVICE    TYPE      STATE         CONNECTION
eth0      ethernet  connected     Wired connection 1
ttyACM3   gsm       disconnected  --
wlan0     wifi      disconnected  --
gre0      gre       unmanaged     --
gretap0   gretap    unmanaged     --
ip6gre0   ip6gre    unmanaged     --
ip6tnl0   ip6tnl    unmanaged     --
tunl0     ipip      unmanaged     --
lo        loopback  unmanaged     --
sit0      sit       unmanaged     --
ip6_vti0  vti6      unmanaged     --

図6.11 デバイスの一覧


6.2.3.8. デバイスの接続

デバイスを接続するには、次のようにコマンドを実行します。

[armadillo ~]# nmcli device connect [ifname]

図6.12 デバイスの接続


[注記]

デバイスを接続するには、接続しようとしているデバイスの有効なコネクションが必要です。"Error: neither a valid connection nor device given" というメッセージが表示された場合には、nmcli connectionなどで有効なコネクションがあるかを確認してください。

6.2.3.9. デバイスの切断

デバイスを切断するには、次のようにコマンドを実行します。

[armadillo ~]# nmcli device disconnect [ifname]

図6.13 デバイスの切断


6.2.4. 有線LAN

ここでは有線LANの使用方法について説明します。

6.2.4.1. 有線LANインターフェース(eth0)のコネクションの作成

有線LANインターフェース用のコネクションを作成するには、次のようにコマンドを実行します。

[armadillo ~]# nmcli connection add type ethernet ifname eth0
Connection 'ethernet-eth0' (ac491d33-9647-4096-8b91-5c7abcf5850d) successfully added.

図6.14 有線LANインターフェース(eth0)のコネクションを作成


6.2.4.2. 有線LANのネットワーク設定を変更する

ネットワークの設定方法は「コネクションを修正する」を参照してください。コネクションを修正を行った後にはかならず「コネクションの修正を反映する」を参考に、修正の反映を行ってください。

6.2.4.3. 有線LANの接続を確認する

有線LANで正常に通信が可能か確認します。設定を変更した場合、かならず変更したインターフェースを再度有効化してください。

同じネットワーク内にある通信機器とPING通信を行います。以下の例では、通信機器が「192.0.2.20」というIPアドレスを持っていると想定しています。

[armadillo ~]# ping 192.0.2.20

図6.15 有線LANのPING確認


[注記]

有線LAN以外のコネクションが有効化されている場合、ネットワーク通信に有線LANが使用されない場合があります。確実に有線LANの接続確認をする場合は、事前に有線LAN以外のコネクションを無効化してください。

6.2.5. 無線LAN

ここでは、Armadillo-X1 に搭載されている無線LANモジュールの使用方法について説明します。

例として、WPA2-PSK(AES)のアクセスポイントに接続します。WPA2-PSK(AES)以外のアクセスポイントへの接続方法などについては、man nm-settings を参考にしてください。また、以降の説明では、アクセスポイントのESSIDを[essid]、パスフレーズを[passphrase]と表記します。

6.2.5.1. 無線LANアクセスポイントに接続する

無線LANアクセスポイントに接続するためには、次のようにコマンドを実行してコネクションを作成します。

[armadillo ~]# nmcli device wifi connect [essid] password [passphrase]

図6.16 無線LANアクセスポイントに接続する


作成されたコネクションの ID は nmcli connection コマンドで確認できます。

[armadillo ~]# nmcli connection
NAME                UUID                                  TYPE      DEVICE
[essid]             c3729bb2-77b6-3032-a9f5-306a39405273  wifi      wlan0
Wired connection 1  64e2e184-ede4-4cc6-ab70-0713d7cb0f0b  ethernet  --
	

図6.17 無線LANのコネクションが作成された状態


[警告]

接続先のアクセスポイントによっては、以下のようなメッセージが出力され、アクセスポイントに接続できないことがあります。

wlan0: authenticate with 00:3a:9d:42:cc:92
wlan0: send auth to 00:3a:9d:42:cc:92 (try 1/3)
wlan0: authenticated
wlan0: associate with 00:3a:9d:42:cc:92 (try 1/3)
wlan0: RX AssocResp from 00:3a:9d:42:cc:92 (capab=0x431 status=0 aid=1)
wlan0: associated
cfg80211: Calling CRDA to update world regulatory domain
cfg80211: World regulatory domain updated:
cfg80211:  DFS Master region: unset
cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (N/A, 2000 mBm)
cfg80211:   (2457000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm)
cfg80211:   (2474000 KHz - 2494000 KHz @ 20000 KHz), (N/A, 2000 mBm)
cfg80211:   (5170000 KHz - 5250000 KHz @ 80000 KHz), (N/A, 2000 mBm)
cfg80211:   (5250000 KHz - 5330000 KHz @ 80000 KHz), (N/A, 2000 mBm)
cfg80211:   (5490000 KHz - 5730000 KHz @ 160000 KHz), (N/A, 2000 mBm)
cfg80211:   (5735000 KHz - 5835000 KHz @ 80000 KHz), (N/A, 2000 mBm)
cfg80211:   (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 0 mBm)
cfg80211: Calling CRDA for country: JP
cfg80211: Regulatory domain changed to country: JP
cfg80211:  DFS Master region: JP
cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
cfg80211:   (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm)
cfg80211:   (2474000 KHz - 2494000 KHz @ 20000 KHz), (N/A, 2000 mBm)
cfg80211:   (4910000 KHz - 4990000 KHz @ 40000 KHz), (N/A, 2300 mBm)
cfg80211:   (5030000 KHz - 5090000 KHz @ 40000 KHz), (N/A, 2300 mBm)
cfg80211:   (5170000 KHz - 5250000 KHz @ 80000 KHz), (N/A, 2000 mBm)
cfg80211:   (5250000 KHz - 5330000 KHz @ 80000 KHz), (N/A, 2000 mBm)
cfg80211:   (5490000 KHz - 5710000 KHz @ 160000 KHz), (N/A, 2300 mBm)

6.2.5.2. 無線LANのネットワーク設定を変更する

ネットワークの設定方法は「コネクションを修正する」を参照してください。図6.16「無線LANアクセスポイントに接続する」の際にコネクションが作成されたので、そのコネクション ID で編集してください。 また、コネクションを修正を行った後にはかならず「コネクションの修正を反映する」を参考に、修正の反映を行ってください。

6.2.5.3. 無線LANの接続を確認する

無線LANで正常に通信が可能か確認します。

同じネットワーク内にある通信機器とPING通信を行います。以下の例では、通信機器が「192.0.2.20」というIPアドレスを持っていると想定しています。

[armadillo ~]# ping 192.0.2.20

図6.18 無線LANのPING確認


[注記]

無線LAN以外のコネクションが有効化されている場合、ネットワーク通信に無線LANが使用されない場合があります。確実に無線LANの接続確認をする場合は、事前に無線LAN以外のコネクションを無効化してください。

6.2.6. ファイアーウォール

Armadilloでは、簡易ファイアーウォールが動作しています。設定されている内容を参照するには、図6.19「iptables」のようにコマンドを実行してください。

[armadillo ~]# iptables --list

図6.19 iptables


6.2.7. ネットワークアプリケーション

工場出荷イメージで利用することができるネットワークアプリケーションについて説明します。

[注記]

ATDEとArmadilloのネットワーク設定がデフォルト状態であることを想定して記述しています。ネットワーク設定を変更している場合は適宜読み換えてください。

6.2.7.1. HTTPサーバー

Armadilloでは、HTTPサーバーが動作しています。ATDEなどのPCのWebブラウザからArmadilloのURL (http://[ArmadilloのIPアドレス]/ にアクセスすると、lighttpdのトップページ(index.html)が表示されます。

Armadilloトップページ

図6.20 Armadilloトップページ


6.3. ストレージ

Armadillo-X1 でストレージとして使用可能なデバイスを次に示します。

表6.3 ストレージデバイス

デバイス種類ディスクデバイス先頭パーティションインターフェース
SD/SDHC/SDXCカード/dev/mmcblk*[a]/dev/mmcblk*p1SDスロット拡張ボード
USBフラッシュメモリ/dev/sd*[b]/dev/sd*1USB ホストインターフェース(CON2)

[a] microSD/microSDHC/microSDXCカードを接続した場合は、認識された順に mmcblk0 mmcblk1 となります。

[b] USBハブを利用して複数のUSBメモリを接続した場合は、認識された順に sda sdb sdc ... となります。


6.3.1. ストレージの使用方法

ここでは、SDHCカードを接続した場合を例にストレージの使用方法を説明します。以降の説明では、共通の操作が可能な場合に、SD/SDHC/SDXCカードをSDカードと表記します。

[ティップ]

SDXC/microSDXCカードを使用する場合は、事前に「ストレージのパーティション変更とフォーマット」を参照してフォーマットを行う必要があります。これは、LinuxカーネルがexFATファイルシステムを扱うことができないためです。通常、購入したばかりのSDXC/microSDXCカードはexFATファイルシステムでフォーマットされています。

Linuxでは、アクセス可能なファイルやディレクトリは、一つの木構造にまとめられています。あるストレージデバイスのファイルシステムを、この木構造に追加することを、マウントするといいます。マウントを行うコマンドは、mountです。

mountコマンドの典型的なフォーマットは、次の通りです。

mount [-t fstype] device dir

図6.21 mountコマンド書式


-t オプションに続くfstypeには、ファイルシステムタイプを指定します[14]。FAT32ファイルシステムの場合はvfat[15]、EXT3ファイルシステムの場合はext3を指定します。

deviceには、ストレージデバイスのデバイスファイル名を指定します。SDカードのパーティション1の場合は/dev/mmcblk0p1、パーティション2の場合は/dev/mmcblk0p2となります。

dirには、ストレージデバイスのファイルシステムをマウントするディレクトリを指定します。

SDスロットにSDHCカードを挿入した状態で図6.22「ストレージのマウント」に示すコマンドを実行すると、/mntディレクトリにSDHCカードのファイルシステムをマウントします。SDカード内のファイルは、/mntディレクトリ以下に見えるようになります。

[armadillo ~]# mount -t vfat /dev/mmcblk0p1 /mnt

図6.22 ストレージのマウント


ストレージを安全に取り外すには、アンマウントする必要があります。アンマウントを行うコマンドは、umountです。オプションとして、アンマウントしたいデバイスがマウントされているディレクトリを指定します。

[armadillo ~]# umount /mnt

図6.23 ストレージのアンマウント


6.3.2. ストレージのパーティション変更とフォーマット

通常、購入したばかりのSDHCカードやUSBメモリは、一つのパーティションを持ち、FAT32ファイルシステムでフォーマットされています。

パーティション構成を変更したい場合、fdiskコマンドを使用します。fdiskコマンドの使用例として、一つのパーティションで構成されているSDカードのパーティションを、2つに分割する例を図6.24「fdiskコマンドによるパーティション変更」に示します。一度、既存のパーティションを削除してから、新たにプライマリパーティションを二つ作成しています。先頭のパーティションには100MByte、二つめのパーティションに残りの容量を割り当てています。先頭のパーティションは/dev/mmcblk0p1、二つめは/dev/mmcblk0p2となります。fdiskコマンドの詳細な使い方は、manページ等を参照してください。

[armadillo ~]# fdisk /dev/mmcblk0

The number of cylinders for this disk is set to 62528.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): d
Selected partition 1

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-62528, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-62528, default 62528): +100M

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (3054-62528, default 3054):
Using default value 3054
Last cylinder or +size or +sizeM or +sizeK (3054-62528, default 62528):
Using default value 62528

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
 mmcblk0: p1 p2
 mmcblk0: p1 p2
Syncing disks.

図6.24 fdiskコマンドによるパーティション変更


FAT32ファイルシステムでストレージデバイスをフォーマットするには、mkfs.vfatコマンドを使用します。また、EXT2やEXT3ファイルシステムでフォーマットするには、mke2fsコマンドを使用します。SDカードのパーティション1をEXT3ファイルシステムでフォーマットするコマンド例を、次に示します。

[armadillo ~]# mke2fs -j /dev/mmcblk0p1

図6.25 EXT3ファイルシステムの構築


6.4. LED

Armadillo-X1 のLEDは、GPIOが接続されているためソフトウェアで制御することができます。

利用しているデバイスドライバはLEDクラスとして実装されているため、LEDクラスディレクトリ以下のファイルによってLEDの制御を行うことができます。LEDクラスディレクトリと各LEDの対応を次に示します。

表6.4 LEDクラスディレクトリとLEDの対応

LEDクラスディレクトリインターフェースデフォルトトリガ
/sys/class/leds/led1/ユーザーLED1default-on

以降の説明では、任意のLEDを示すLEDクラスディレクトリを"/sys/class/leds/[LED]"のように表記します。

6.4.1. LEDを点灯/消灯する

LEDクラスディレクトリ以下のbrightnessファイルへ値を書き込むことによって、LEDの点灯/消灯を行うことができます。brightnessに書き込む有効な値は0〜255です。

brightnessに0以外の値を書き込むとLEDが点灯します。

[armadillo ~]# echo 1 > /sys/class/leds/[LED]/brightness

図6.26 LEDを点灯させる


[ティップ]

Armadillo-X1 のLEDには輝度制御の機能が無いため、0 (消灯)、1〜255 (点灯)の2つの状態のみ指定することができます。

brightnessに0を書き込むとLEDが消灯します。

[armadillo ~]# echo 0 > /sys/class/leds/[LED]/brightness

図6.27 LEDを消灯させる


brightnessを読み出すとLEDの状態が取得できます。

[armadillo ~]# cat /sys/class/leds/[LED]/brightness
0

図6.28 LEDの状態を表示する


6.4.2. トリガを使用する

LEDクラスディレクトリ以下のtriggerファイルへ値を書き込むことによってLEDの点灯/消灯にトリガを設定することができます。triggerに書き込む有効な値を次に示します。

表6.5 triggerの種類

設定説明
noneトリガを設定しません。
mmc0SDスロット拡張ボードのアクセスランプにします。
mmc2eMMCのアクセスランプにします。
timer任意のタイミングで点灯/消灯を行います。この設定にすることにより、LEDクラスディレクトリ以下にdelay_on, delay_offファイルが出現し、それぞれ点灯時間, 消灯時間をミリ秒単位で指定します。
heartbeat心拍のように点灯/消灯を行います。
default-on主にLinuxカーネルから使用します。LEDが点灯します。

以下のコマンドを実行すると、LEDが2秒点灯、1秒消灯を繰り返します。

[armadillo ~]# echo timer > /sys/class/leds/[LED]/trigger
[armadillo ~]# echo 2000 > /sys/class/leds/[LED]/delay_on
[armadillo ~]# echo 1000 > /sys/class/leds/[LED]/delay_off

図6.29 LEDのトリガにtimerを指定する


triggerを読み出すとLEDのトリガが取得できます。"[ ]"が付いているものが現在のトリガです。

[armadillo ~]# cat /sys/class/leds/[LED]/trigger
[none] rc-feedback nand-disk mmc0 mmc2 timer oneshot heartbeat backlight gpio de
fault-on rfkill0 phy0rx phy0tx phy0assoc phy0radio phy0tpt rfkill1

図6.30 LEDのトリガを表示する


6.5. RTC

Armadillo-X1 は、Board Management ICのRTC機能を利用しています。

電源が切断されても時刻を保持させたい場合は、RTC バックアップインターフェース(CON9)に外付けバッテリー(CR2032 WK11/Hitachi Maxell[16]等)を接続することができます。

6.5.1. RTCに時刻を設定する

Linuxの時刻には、Linuxカーネルが管理するシステムクロックと、RTCが管理するハードウェアクロックの2種類があります。RTCに時刻を設定するためには、まずシステムクロックを設定します。その後に、ハードウェアクロックをシステムクロックと一致させる手順となります。

システムクロックは、dateコマンドを用いて設定します。dateコマンドの引数には、設定する時刻を[MMDDhhmmCCYY.ss]というフォーマットで指定します。時刻フォーマットの各フィールドの意味を次に示します。

表6.6 時刻フォーマットのフィールド

フィールド意味
MM
DD日(月内通算)
hh
mm
CC年の最初の2桁(省略可)
YY年の最後の2桁(省略可)
ss秒(省略可)

2015年6月2日12時34分56秒に設定する例を次に示します。

[armadillo ~]# date 1
Sat Jan  1 09:00:00 JST 2000
[armadillo ~]# systemctl stop systemd-timesyncd.service 2
[armadillo ~]# date 060212342015.56 3
Tue Jun  2 12:34:56 JST 2015
[armadillo ~]# date 4
Tue Jun  2 12:34:57 JST 2015

1

現在のシステムクロックを表示します。

2

systemd-timesyncd.serviceを停止します。

3

システムクロックを設定します。

4

システムクロックが正しく設定されていることを確認します。

図6.31 システムクロックを設定


[ティップ]

Armadillo-X1では、標準でsystemd-timesyncd.serviceが動作しています。 systemd-timesyncd.serviceは、自身が正しいと考えている時刻となるように、自動でシステムクロックおよびハードウェアクロックを設定します。

そのため、dateコマンドで過去の時刻を設定しても、すぐにsystemd-timesyncd.serviceによって変更前の正しい時刻に再設定されてしまいます。 これを避けるため、システムクロックを設定する前にsystemd-timesyncd.serviceを停止する必要があります。

[armadillo ~]# systemctl stop systemd-timesyncd.service

systemd-timesyncd.serviceは、次のNTPサーバーを利用します。利用するNTPサーバーは/etc/systemd/timesyncd.confで設定することができます。詳しくはman timesyncd.confを参照してください。

  • 0.debian.pool.ntp.org

  • 1.debian.pool.ntp.org

  • 2.debian.pool.ntp.org

  • 3.debian.pool.ntp.org

systemd-timesyncd.serviceを自動で起動しないようにするには、次のようにしてサービスを無効化します。

[armadillo ~]# systemctl disable systemd-timesyncd.service
[ティップ]

Armadillo-X1が接続しているネットワーク内にタイムサーバーがある場合は、NTP(Network Time Protocol)クライアントを利用してシステムクロックを設定することができます。

[armadillo ~]# ntpdate [NTP SERVER]
2 Jun 12:34:56 ntpdate[742]: adjust time server x.x.x.x offset 0.004883
 sec
[armadillo ~]# date
Tue Jun  2 12:34:57 JST 2015

システムクロックを設定後、ハードウェアクロックをhwclockコマンドを用いて設定します。

[armadillo ~]# hwclock 1
Sat Jan  1 00:00:00 2000  0.000000 seconds
[armadillo ~]# hwclock --utc --systohc 2
[armadillo ~]# hwclock --utc 3
Tue Jun  2 12:35:08 2015  -0.897934 seconds

1

現在のハードウェアクロックを表示します。

2

ハードウェアクロックを協定世界時(UTC)で設定します。

3

ハードウェアクロックがUTCで正しく設定されていることを確認します。

図6.32 ハードウェアクロックを設定


6.6. ユーザースイッチ

Armadillo-X1 のユーザースイッチのデバイスドライバは、インプットデバイスとして実装されています。インプットデバイスのデバイスファイルからボタンプッシュ/リリースイベントを取得することができます。

ユーザースイッチのインプットデバイスファイルと、各スイッチに対応したイベントコードを次に示します。

表6.7 インプットデバイスファイルとイベントコード

ユーザースイッチインプットデバイスファイルイベントコード
SW1/dev/input/event12 (KEY_1)


[警告]

インプットデバイスは検出された順番にインデックスが割り振られます。USBデバイスなどを接続してインプットデバイスを追加している場合は、デバイスファイルのインデックスが異なる可能性があります。

6.6.1. イベントを確認する

ユーザースイッチのボタンプッシュ/リリースイベントを確認するために、ここではevtestコマンドを利用します。evtestを停止するには、Ctrl+c を入力してください。

[armadillo ~]# evtest /dev/input/event1
Input driver version is 1.0.1
Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100
Input device name: "gpio-keys"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 2 (KEY_1)
Properties:
Testing ... (interrupt to exit)
Event: time 1679311637.689435, type 1 (EV_KEY), code 2 (KEY_1), value 1 1
Event: time 1679311637.689435, -------------- SYN_REPORT ------------
Event: time 1679311637.819476, type 1 (EV_KEY), code 2 (KEY_1), value 0 2
Event: time 1679311637.819476, -------------- SYN_REPORT ------------
                 :
[armadillo ~]#

1

SW1のボタンプッシュイベントを検出したときの表示。

2

SW1のボタンリリースイベントを検出したときの表示。

図6.33 ユーザースイッチ: イベントの確認


6.7. 温度センサー

Armadillo-X1の温度センサーは、i.MX 7DualのTEMPMON(Temperature Monitor)を利用しています。

6.7.1. 温度を取得する

/sys/class/thermal/thermal_zone1/tempファイルの値を読み出すことによって、i.MX 7Dualの測定温度を取得することができます。

[armadillo ~]# cat /sys/class/thermal/thermal_zone1/temp
50000 1

1

温度はミリ°C の単位で表示されます。この例では 50.000°C を示しています。

図6.34 i.MX 7Dualの測定温度を取得する


6.8. ADコンバーター

Armadillo-X1は、BMIC(Board Management IC)のADコンバーター機能により、電源電圧およびRTCバックアップインターフェース(CON9)に接続された外付けバッテリーの電圧を取得することができます。

6.8.1. 電圧を取得する

電源電圧は、分圧されてADコンバーターへ入力されています。電源電圧を取得するためには、まずADコンバーターへの入力電圧を取得する必要があります。 外部バッテリーの電圧は分圧されていないため、ADコンバーターの入力電圧がそのまま外部バッテリーの電圧となります。

ADコンバーターは IIO(Industrial I/O) デバイスとして実装しています。 /sys/bus/iio/devices/iio:device0/ディレクトリ以下のファイルから入力電圧を算出することができます。

[注記]

IIO デバイスは、デバイスを認識した順番で iio:deviceN (N は'0'からの連番)となります。IIO デバイスは、IIOデバイス名から特定することができます。BMICのADコンバーターの IIO デバイス名は "3-0012"です。

[armadillo ~]# cat /sys/bus/iio/devices/iio:device0/name
3-0012

ADコンバータへの入力電圧は、AD変換値と最小入力電圧変動から算出する事ができます。

[ADコンバータへの入力電圧 (mV)] = [in_voltage_raw] × [in_voltage_scale]

図6.35 ADコンバータへの入力電圧の計算式


/sys/bus/iio/devices/iio:device0/ディレクトリ以下にある、入力電圧の算出に必要なファイルを次に示します。

表6.8 入力電圧の算出に必要なファイル

ファイル説明
in_voltage0_rawシングルエンド入力 CH0(電源電圧)のAD変換値
in_voltage1_rawシングルエンド入力 CH1(外部バッテリー電圧)のAD変換値
in_voltage_scaleシングルエンド入力の最小入力電圧変動

例として、電源電圧の取得方法について記載します。

[armadillo ~]# cat /sys/bus/iio/devices/iio:device0/in_voltage0_raw
3554
[armadillo ~]# cat /sys/bus/iio/devices/iio:device0/in_voltage_scale
0.717041015

図6.36 ADコンバーターへの入力電圧を取得する


図6.36「ADコンバーターへの入力電圧を取得する」の例では、ADコンバーターの入力電圧は、約 2.548V (3554 × 0.717041015 [mV])である事がわかります。

ADコンバーターへの入力電圧から、電源電圧を求める計算式を次に示します。

[電源電圧 (mV)] = [ADコンバーターへの入力電圧] × (200 + 200) ÷ 200

図6.37 電源電圧の計算式


図6.36「ADコンバーターへの入力電圧を取得する」を例にとると、ADコンバーターの入力電圧2.548Vから、電源電圧は約5.096Vであることを求めることができます。

[ティップ]

awkコマンドを利用して、次のように電源電圧を表示することができます。

[armadillo ~]# adin_raw=`cat /sys/bus/iio/devices/iio:device0/in_voltage0_raw`
[armadillo ~]# adin_scale=`cat /sys/bus/iio/devices/iio:device0/in_voltage_scale`
[armadillo ~]# echo $adin_raw $adin_scale | awk '{printf ("%d\n",$1*$2*(200+200)/200)}'
5096

6.8.2. 電源電圧を監視する

vintriggerコマンドを利用して、電源電圧が指定した電圧になった場合に任意のコマンドを実行させることができます。

[警告]

vintriggerを複数起動することはできません。

vintriggerコマンドのヘルプは次の通りです。

[armadillo ~]# vintrigger
Usage: vintrigger -o|-u VOLTAGE [-i INTERVAL] [COMMAND ARGS]
Options:
  -o, --over=VOLTAGE
      Execute the program COMMAND when the detected voltage is equal
      to or over the VOLTAGE[mV].
  -u, --under=VOLTAGE
      Execute the program COMMAND when the detected voltage is equal
      to or under the VOLTAGE[mV].
VOLTAGE: Range: 0 - 28980

  -i, --interval=INTERVAL
      Compare with Vin to the VOLTAGE at INTERVAL second intervals.
INTERVAL: Range: 0 - 4294967295 (Default: 60)

  -h, --help
      Print usage(this message) and exit.
  -v, --version
      Print version information and exit.

図6.38 vintriggerコマンドのヘルプ


30秒間隔で電源電圧を監視し、4000mV(4V)以下になった場合に、LED2を点灯させる例を次に示します。

[armadillo ~]# vintrigger -u 4000 -i 30 echo 1 > /sys/class/leds/led2/brightness

図6.39 vintriggerコマンド例


[ティップ]

vintriggerコマンドのログは/var/log/syslog及び/var/log/daemon.logファイルに出力されます。

[armadillo ~]# cat /var/log/syslog
                 :
Jul  1 09:38:52 armadillo vintrigger[812]: waiting for an under range alert (4000 mV).1
Jul  1 09:38:52 armadillo vintrigger[812]: exceeded the limit. executing command.2

1

指定した電圧(4000mV)以下になることを待機します。

2

指定した電圧に達したのでコマンドを実行します。

6.9. Armadillo-IoT RS232Cアドオンモジュール RS00

Armadillo-IoT RS232Cアドオンモジュール RS00(以降、RS232Cアドオンモジュールと記載します)は RS232C レベルのシリアルポートが 1 ポート搭載されています。RS232Cアドオンモジュールのシリアルポートのデバイスドライバは、TTYデバイスとして実装されているためTTYデバイスファイルから制御を行うことができます。

対応するTTYデバイスファイルを次に示します。

表6.9 TTYデバイスファイル

TTYデバイスファイル
/dev/ttymxc6

[ティップ]

RS232Cアドオンモジュールが接続されているとき、Linuxカーネルの起動ログに次のように出力されます。

armadillo_iotg_addon addon: Atmark Techno RS232C board detected at Add-On Module I/F 1(Rev 2, SerialNumber=xxxx)

6.10. Armadillo-IoT 絶縁RS232C/422/485アドオンモジュール RS01

Armadillo-IoT 絶縁RS232C/422/485アドオンモジュール RS01(以降、絶縁シリアルアドオンモジュールと記載します)は、電気的に絶縁された RS232C/RS422/RS485 のシリアルポートが 1 ポート登載されています。絶縁シリアルアドオンモジュールのシリアルポートのデバイスドライバは、TTYデバイスとして実装されているためTTYデバイスファイルから制御を行うことができます。

対応するTTYデバイスファイルを次に示します。

表6.10 TTYデバイスファイル

TTYデバイスファイル
/dev/ttymxc6

[ティップ]

絶縁シリアルアドオンモジュールが接続されているとき、Linuxカーネルの起動ログに次のように出力されます。

armadillo_iotg_addon addon: Atmark Techno RS485/RS422/RS232C board detected at Add-On Module I/F 1(Rev 2, SerialNumber=xxxx).

6.10.1. RS422/RS485の通信設定を変更する

Armadillo-X1に電源を投入する前に 絶縁シリアルアドオンモジュール:SW1.1をOFFに設定すると、TTYデバイスのRS485設定が自動的に有効化されます。

[警告]

Armadillo-X1の電源投入後に 絶縁シリアルアドオンモジュール:SW1.1の設定を変更しないでください。故障の原因となる可能性があります。

変更が可能なRS485設定と、自動的に有効化された場合の初期値を表6.11「RS485設定と初期値」に示します。flagsは各ビットごとの論理和を示します。

表6.11 RS485設定と初期値

設定説明初期値
flagsENABLED(bit0)

0: RS485無効

1: RS485有効

1
RTS_ON_SEND(bit1)

0: データ送信時のRTS(Driver Enable)がLow

1: データ送信時のRTS(Driver Enable)がHigh

1
RTS_AFTER_SEND(bit2)

0: データ非送信時のRTS(Driver Enable)がLow

1: データ非送信時のRTS(Driver Enable)がHigh

0
RX_DURING_TX(bit4)

0: 半二重通信

1: 全二重通信

0
delay_rts_before_send送信前遅延時間(ミリ秒)0
delay_rts_after_send送信後遅延時間(ミリ秒)0

[警告]

flagsのRTS_ON_SENDとRTS_AFTER_SENDは初期値を変更しないでください。変更した場合はデータ送信を行うことができなくなります。

[注記]

RS485が有効化されたTTYデバイスをコンソールとして利用することはできません。

RS485設定は、アプリケーションプログラムまたは、Linuxカーネル起動オプションで変更することができます。

アプリケーションプログラムの作成方法については、Linuxカーネルのソースコードに含まれているドキュメント(Documentation/serial/serial-rs485.txt)を参照してください。

Linux カーネル起動オプションでは、次のオプション指定子でRS485設定を行います。

表6.12 Linuxカーネル起動オプションからのRS485設定

オプション指定子説明
imx.rs485_uart7=

UART7(ttymxc6)のRS485設定を指定します。


RS485設定のフォーマットは次の通りです。

<flags>,<delay_rts_before_send>,<delay_rts_after_send>

例として、絶縁シリアルアドオンモジュールのRS485設定を全二重通信にする場合は、保守モードで起動してから次のようにコマンドを実行してください。

=> setenv optargs imx.rs485_uart7=0x13,0,0
=> saveenv

6.11. Armadillo-IoT RN4020アドオンモジュール BT00

Armadillo-IoT RN4020アドオンモジュール BT00(以降、RN4020アドオンモジュールと記載します)は Microchip製 RN4020が搭載されています。RN4020は、Bluetooth(R) version 4.1に対応しており、Bluetooth Low Energy 4.1 プロトコルスタックが内蔵されています。

RN4020アドオンモジュールは、TTY デバイスファイルからASCIIコマンドを使用した制御を行うことができます。対応するTTYデバイスファイルを次に示します。

表6.13 TTYデバイスファイル

TTYデバイスファイル
/dev/ttymxc6

[ティップ]

RN4020アドオンモジュールが接続されているとき、Linuxカーネルの起動ログに次のように出力されます。

armadillo_iotg_addon addon: Atmark Techno RN4020 board detected at Add-On Module I/F 1(Rev 2, SerialNumber=xxxx).

6.11.1. 設定情報を取得する

RN4020アドオンモジュールを制御する例として、RN4020 の設定情報の取得を行います。

RN4020アドオンモジュールに搭載されているRN4020の設定情報を取得する手順を次に示します。

手順6.1 設定情報の取得

  1. cuコマンドを実行して/dev/ttymxc6に接続します。ボーレートは115200bpsです。

    [armadillo ~]$ cu -l /dev/ttymxc6 -s 115200
    Connected.
    
  2. D (Dump configuration)コマンドを実行すると、RN4020の設定情報が表示されます。 まず、入力したコマンドを表示するために、Ctrl+aに続けてeを入力して下さい。 Dコマンドを実行すると、以下のように設定情報が取得できます。

    D
    BTA=001EC01CF9A4
    Name=RNF9A4
    Connected=no
    Bonded=no
    Server Service=80000000
    Features=00000000
    TxPower=4
  3. cuを終了するには、"~."(チルダ「~」に続いてドット「.」)を入力します。

    Disconnected.
    [armadillo ~]$ 

その他の ASCII コマンドや、RN4020 の詳細な情報については Microchip製ドキュメントを参照してください。

6.12. Armadillo-IoT EnOceanアドオンモジュール EN00

Armadillo-IoT EnOceanアドオンモジュール EN00(以降、EnOceanアドオンモジュールと記載します)は アットマークテクノ製CS35A3(ローム製BP35A3)が搭載されています。BP35A3/CS35A3にはEnOcean無線トランシーバーTCM410Jが搭載されています。

EnOceanアドオンモジュールは、TTY デバイスファイルからEnOcean Serial Protocol 3(ESP3)で通信することができます。対応するTTYデバイスファイルを次に示します。

表6.14 TTYデバイスファイル

TTYデバイスファイル
/dev/ttymxc6

[ティップ]

EnOceanアドオンモジュールが接続されているとき、Linuxカーネルの起動ログに次のように出力されます。

armadillo_iotg_addon addon: Atmark Techno EnOcean board detected at Add-On Module I/F 1(Rev 2, SerialNumber=xxxx).

6.12.1. EnOcean無線データを受信する

EnOcean無線データを受信する例として、ROHM製スイッチモジュール PTM 210Jを使用します

EnOceanアドオンモジュールで受信する手順を次に示します。

手順6.2 EnOcean無線データの受信

  1. sttyコマンドを実行してTTY デバイスの通信設定を行います。ボーレートは57600bpsです。

    [armadillo ~]$ stty -F /dev/ttymxc6 57600 raw
  2. hexdumpコマンドを実行して受信データを16進数でダンプします。

    [armadillo ~]$ hexdump -v /dev/ttymxc6
    0000000 0055 0207 0a0a 0020 e928 8447 0114 bd38
    0000010 0055 0207 0a0a 0020 e928 0047 0181 ba39
  3. hexdumpを終了するには、"Ctrl+c"を入力します。

PTM 210Jなど、EnOcean製品の情報については ROHM社 Webページを参照してください。

EnOcean Serial Protocolの詳細については EnOcean GmbH製ドキュメントを参照してください。

6.13. Armadillo-IoT Wi-SUNアドオンモジュール WS00

Armadillo-IoT Wi-SUNアドオンモジュール WS00(以降、Wi-SUNアドオンモジュールと記載します)は ROHM製 BP35A1が搭載されています。

Wi-SUNアドオンモジュールは、TTY デバイスファイルからASCIIコマンドを使用した制御を行うことができます。対応するTTYデバイスファイルを次に示します。

表6.15 TTYデバイスファイル

TTYデバイスファイル
/dev/ttymxc6

[ティップ]

Wi-SUNアドオンモジュールが接続されているとき、Linuxカーネルの起動ログに次のように出力されます。

armadillo_iotg_addon addon: Atmark Techno Wi-SUN board detected at Add-On Module I/F 1(Rev 2, SerialNumber=xxxx).

6.13.1. 設定情報を取得する

Wi-SUNアドオンモジュールを制御する例として、BP35A1 の設定情報の取得を行います。

Wi-SUNアドオンモジュールに搭載されているBP35A1の設定情報を取得する手順を次に示します。

手順6.3 設定情報の取得

  1. cuコマンドを実行して/dev/ttymxc6に接続します。ボーレートは115200bpsです。

    [armadillo ~]$ cu -l /dev/ttymxc6 -s 115200
    Connected.
    
  2. SKINFOコマンドを実行すると、BP35A1 の設定情報が表示されます。

    SKINFO
    EINFO FE80:0000:0000:0000:021D:1290:0004:0FBE 001D129000040FBE 21 FFFF FFFE
    OK
  3. cuを終了するには、"~."(チルダ「~」に続いてドット「.」)を入力します。

    Disconnected.
    [armadillo ~]$ 

その他の ASCII コマンドや、BP35A1 の詳細な情報については ROHM 製ドキュメントを参照してください。

6.14. Armadillo-IoT 絶縁RS485アドオンモジュール RS02

Armadillo-IoT 絶縁RS485アドオンモジュール RS02(以降、絶縁 RS485アドオンモジュールと記載します)は、電気的に絶縁された RS422/RS485 のシリアルポートが 1 ポート登載されています。絶縁 RS485アドオンモジュールのシリアルポートのデバイスドライバは、TTYデバイスとして実装されているためTTYデバイスファイルから制御を行うことができます。

対応するTTYデバイスファイルを次に示します。

表6.16 TTYデバイスファイル

TTYデバイスファイル
/dev/ttymxc6

[ティップ]

絶縁 RS485アドオンモジュールが接続されているとき、Linuxカーネルの起動ログに次のように出力されます。

armadillo_iotg_addon addon: Atmark Techno RS485 board detected at Add-On Module I/F 1(Rev 1, SerialNumber=xxxx).

6.14.1. RS422/RS485の通信設定を変更する

TTYデバイスのRS485設定は自動的に有効化されます。

変更が可能なRS485設定と、自動的に有効化された場合の初期値を表6.11「RS485設定と初期値」に示します。flagsは各ビットごとの論理和を示します。

表6.17 RS485設定と初期値

設定説明初期値
flagsENABLED(bit0)

0: RS485無効

1: RS485有効

1
RTS_ON_SEND(bit1)

0: データ送信時のRTS(Driver Enable)がLow

1: データ送信時のRTS(Driver Enable)がHigh

1
RTS_AFTER_SEND(bit2)

0: データ非送信時のRTS(Driver Enable)がLow

1: データ非送信時のRTS(Driver Enable)がHigh

0
RX_DURING_TX(bit4)

0: 半二重通信

1: 全二重通信

0
delay_rts_before_send送信前遅延時間(ミリ秒)0
delay_rts_after_send送信後遅延時間(ミリ秒)0

[警告]

flagsのRTS_ON_SENDとRTS_AFTER_SENDは初期値を変更しないでください。変更した場合はデータ送信を行うことができなくなります。

[注記]

RS485が有効化されたTTYデバイスをコンソールとして利用することはできません。

RS485設定は、アプリケーションプログラムまたは、Linuxカーネル起動オプションで変更することができます。

アプリケーションプログラムの作成方法については、Linuxカーネルのソースコードに含まれているドキュメント(Documentation/serial/serial-rs485.txt)を参照してください。

Linux カーネル起動オプションでは、次のオプション指定子でRS485設定を行います。

表6.18 Linuxカーネル起動オプションからのRS485設定

オプション指定子説明
imx.rs485_uart7=

UART7(ttymxc6)のRS485設定を指定します。


RS485設定のフォーマットは次の通りです。

<flags>,<delay_rts_before_send>,<delay_rts_after_send>

例として、RS485設定を全二重通信にする場合は、保守モードで起動してから次のようにコマンドを実行してください。

=> setenv optargs imx.rs485_uart7=0x13,0,0
=> saveenv

6.15. Armadillo-IoT 絶縁デジタル入出力/アナログ入力アドオンモジュール DA00

Armadillo-IoT 絶縁デジタル入出力/アナログ入力アドオンモジュール DA00(以降、絶縁 IO アドオンモジュールと記載します)は、電気的に絶縁されたデジタル入力2 ポート、デジタル出力 2 ポートと 0~5V のアナログ入力 2 ポートを追加することができます。

絶縁 IO アドオンモジュールのデジタル入出力のデバイスドライバは GPIO、アナログ入力のデバイスドライバは IIO(Industrial I/O) デバイスとして実装しています。

入出力ポートと、GPIO クラスディレクトリの対応を表6.19「入出力ポートとGPIO クラスディレクトリ」に示します。IIO デバイスは、デバイスを認識した順番で iio:deviceN (N は'0'からの連番)となります。

表6.19 入出力ポートとGPIO クラスディレクトリ

ポートGPIO クラスディレクトリ
デジタル出力 1/sys/devices/addon/DO1_INTF1
デジタル出力 2/sys/devices/addon/DO2_INTF1
デジタル入力 1/sys/devices/addon/DI1_INTF1
デジタル入力 2/sys/devices/addon/DI2_INTF1

[ティップ]

絶縁 IO アドオンモジュールが接続されているとき、Linuxカーネルの起動ログに次のように出力されます。

armadillo_iotg_addon addon: Atmark Techno DI/DO/AD board detected at Add-On Module I/F 1(Rev 1, SerialNumber=xxxx).

6.15.1. デジタル出力状態を設定する

GPIOクラスディレクトリ以下のvalueファイルに値を書き込むことによって、出力状態を設定することができます。"0"は開放、"1"は短絡を表わします。

デジタル出力 1を開放に設定する例を次に示します。

[armadillo ~]# echo 0 > /sys/devices/addon/DO1_INTF1/value

図6.40 デジタル出力状態を変更する


6.15.2. デジタル入力状態を取得する

GPIOクラスディレクトリ以下のvalueファイルから値を読み出すことによって、入力状態を取得することができます。"0"はGND_ISOとの短絡。"1"は開放または3.15V以上印加を表わします。

デジタル入力 1の状態を取得する例を次に示します。

[armadillo ~]# cat /sys/devices/addon/DI1_INTF1/value
1

図6.41 デジタル入力状態を取得する


6.15.3. アナログ入力電圧を取得する

/sys/bus/iio/devices/iio:device1/ディレクトリ以下のファイルから入力電圧を算出することができます。

[注記]

IIO デバイスは、デバイスを認識した順番で iio:deviceN (N は'0'からの連番)となります。IIO デバイスは、IIOデバイス名から特定することができます。絶縁 IO アドオンモジュールに搭載しているADコンバーターの IIO デバイス名は "mcp3202"です。

[armadillo ~]# cat /sys/bus/iio/devices/iio:device1/name
mcp3202

ADコンバータへの入力電圧は、AD変換値と最小入力電圧変動から算出する事ができます。

[ADコンバータへの入力電圧 (mV)] = [AD変換値] × [最小入力電圧変動]

図6.42 ADコンバータへの入力電圧の計算式


/sys/bus/iio/devices/iio:device1/ディレクトリ以下にある、入力電圧の算出に必要なファイルを次に示します。

表6.20 入力電圧の算出に必要なファイル

ファイル説明
in_voltage0_rawシングルエンド入力 CH0のAD変換値
in_voltage1_rawシングルエンド入力 CH1のAD変換値
in_voltage_scaleシングルエンド入力の最小入力電圧変動
in_voltage0-voltage1_raw疑似差動入力のAD変換値
in_voltage-voltage_scale疑似差動入力の最小入力電圧変動

シングルエンド入力 CH0への入力電圧を算出する例を次に示します。

[armadillo ~]# cat /sys/bus/iio/devices/iio:device1/in_voltage0_raw
2048
[armadillo ~]# cat /sys/bus/iio/devices/iio:device1/in_voltage_scale
1.220703125

図6.43 ADコンバーターへの入力電圧を取得する


図6.43「ADコンバーターへの入力電圧を取得する」の例では、シングルエンド入力 CH0への入力電圧は、2.5V (2048 × 1.220703125 [mV])である事がわかります。

[ティップ]

awkコマンドを利用して、次のように電源電圧を表示することができます。

[armadillo ~]# adin_raw=`cat /sys/bus/iio/devices/iio:device1/in_voltage0_raw`
[armadillo ~]# adin_scale=`cat /sys/bus/iio/devices/iio:device1/in_voltage_scale`
[armadillo ~]# echo $adin_raw $adin_scale | awk '{printf ("%d",$1*$2)}'
2500


[12] nmcli connection show [ID]によって、より詳細な情報を表示することもできます。

[13] nmcli devicenmcli device statusは等価です。

また、nmcli device showから、より詳細な情報を表示することができます。

[14] ファイルシステムタイプの指定は省略可能です。省略した場合、mountコマンドはファイルシステムタイプを推測します。この推測は必ずしも適切なものとは限りませんので、事前にファイルシステムタイプが分かっている場合は明示的に指定してください。

[15] 通常、購入したばかりのSDHCカードはFAT32ファイルシステムでフォーマットされています。

[16] 詳しくは、各Armadillo販売代理店にお問い合わせください。