第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. 3G/LTE
6.2.7. NetworkManagerによる設定例
6.2.8. ファイアーウォール
6.2.9. ネットワークアプリケーション
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-IoT は、複数の種類のネットワークに接続することができます。接続可能なネットワークとLinuxから使用するネットワークデバイスの対応を次に示します。

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

ネットワークネットワークデバイス備考
有線LANeth0 
無線LANwlan0AEH-AR9462 搭載
3G/LTEttyUSB2Quectel製 EC25-J 搭載
3GttyACM3Gemalto製 PDS6-J 搭載

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

Armadillo-IoT ゲートウェイ G3 では、通常の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-IoT には nmcli の他ユーザーフレンドリーな nmtui もインストールされていますが本書では取り扱いません。

6.2.3. nmcliの基本的な使い方

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

6.2.3.1. コネクションの一覧

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

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

図6.2 コネクションの一覧


表示されたNAMEについては、以降[ID]として利用することができます。

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. コネクションを修正する

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

[ティップ]

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

無線LANのパスフレーズ設定方法は、「無線LAN」を参照してください。

3G/LTEのパスフレーズ設定方法は、「3G/LTEのコネクション設定を編集する場合の注意事項」を参照してください。

[警告]

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

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 ipv4.gateway 192.0.2.1

図6.7 固定IPアドレス設定


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

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

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

図6.8 DNSサーバーの指定


6.2.3.5.3. DHCPに設定する

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

[armadillo ~]# nmcli connection modify [ID] \
ipv4.method auto

図6.9 DHCP設定


[注記]

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

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

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

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

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


6.2.3.7. デバイスの一覧

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

[armadillo ~]# nmcli device
DEVICE    TYPE      STATE         CONNECTION
eth0      ethernet  connected     Wired connection 1
[wwan]    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-IoT に搭載されている無線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アクセスポイントに接続する


[警告]

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

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アクセスポイントに接続する」を参考にパスフレーズも合わせて設定してください。 また、コネクションを修正を行った後にはかならず「コネクションの修正を反映する」を参考に、修正の反映を行ってください。

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

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

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

[armadillo ~]# ping 192.0.2.20

図6.17 無線LANのPING確認


[注記]

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

6.2.6. 3G/LTE

ここでは、Armadillo-IoT に搭載されている 3G/LTEモジュールの使用方法について説明します。

[ティップ]

Quectel製3G/LTE通信モジュール EC25-J、Gemalto製3G通信モジュール PDS6-Jはドコモ相互接続性試験を完了しています。

[ティップ]

Quectel製3G/LTE通信モジュール EC25-Jはソフトバンク相互接続性試験を完了しています。

6.2.6.1. 3G/LTE データ通信設定を行う前に

3G/LTEデータ通信を利用するには、通信事業者との契約が必要です。契約時に通信事業者から貸与されたmicroSIM(UIMカード)とAPN情報を準備します。

[警告]

Quectel製EC25-J搭載モデルでは、次のmicroSIMで動作検証を行っています。

表6.3 SIM動作確認状況(M1-Dモデル)

通信事業者検証結果
SORACOM問題なし
IIJ問題なし
U-mobile問題なし
コネクシオ問題なし
NTTPC 3G専用SIMコネクションの作成に失敗する。以降、他のmicroSIMを挿入してもコネクションを作成できなくなる。

表6.4 SIM動作確認状況(M1-Sモデル)

キャリア動作状況
Softbank問題なし

[警告]

Armadillo-IoTの電源が切断されていることを確認してからmicroSIM(UIMカード)を取り付けてください。

[警告]

本製品は、microSIMスロットを搭載しています。

SIM変換アダプタを利用したnanoSIM、標準サイズのSIMカードをmicroSIMサイズにカットしたもの、サイズの異なるものを使用すると、microSIMスロットが故障する原因となります。 これらを使用し本製品が故障した場合は、保証期間内であっても保証適用外となります。

microSIM(UIMカード)の切り欠きを挿入方向と反対側に向け、刻印面を上にして挿入してください。

microSIM

図6.18 microSIM


microSIMの取り付け

図6.19 microSIMの取り付け


APNの設定を行うには、次に示す情報が必要です。

  • APN

  • ユーザー名

  • パスワード

  • 認証方式(PAP または CHAP)

  • PDP Type(IPのみをサポート)

6.2.6.2. 3G/LTEのコネクションを作成する

表6.5「APN情報設定例」の内容に設定する例を、図6.20「3G/LTEのコネクションの作成」に示します。

表6.5 APN情報設定例

項目設定
APN[apn]
ユーザー名[user]
パスワード[password]
ネットワークデバイス[wwan]

ネットワークデバイス名[wwan]は、表6.6「通信モジュールのネットワークデバイス」を参照し、搭載されている通信モジュールに合わせて置き換えてください。

表6.6 通信モジュールのネットワークデバイス

通信モジュールネットワークデバイス
Quectel製 EC25-J 搭載ttyUSB2
Gemalto製 PDS6-J 搭載ttyACM3

[armadillo ~]# nmcli connection add type gsm \
ifname [wwan] apn [apn] user [user] password [password]
Connection 'gsm-[wwan]' (a9e51a2d-bbee-443f-80ba-07b65c3097e8) successfully added.

図6.20 3G/LTEのコネクションの作成


コネクションの作成後は、起動時に自動的にデータ接続を行うようになります。

6.2.6.3. 3G/LTEのデータ接続を行う

3G/LTEのコネクションの作成直後や設定変更後に再起動をせずにデータ接続を行うには、図6.21「3G/LTEのデータ接続」に示すコマンドを実行します。

[armadillo ~]# nmcli connection up gsm-[wwan]
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)

図6.21 3G/LTEのデータ接続


6.2.6.4. 3G/LTEの接続を確認する

3G/LTEで正常に通信が可能か確認します。

アットマークテクノのWebサーバーとPING通信を行います。VPN接続を利用するなどインターネットに接続できない場合は、ネットワーク内の通信機器に読み替えてください。

[armadillo ~]# ping www.atmark-techno.com

図6.22 3G/LTEのPING確認


[注記]

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

6.2.6.4.1. 3G/LTEのデータ接続を終了する

nmcliコマンドでデータ通信の終了を行う前に、3G/LTE再接続サービスを停止します。3G/LTE再接続サービスを停止せずにデータ通信の終了を実行した場合、同機能によって再度データ接続が開始されます。

3G/LTE再接続サービスを停止したのち、データ通信を終了します。

[armadillo ~]# systemctl stop connection-recover.service
[armadillo ~]# nmcli connection down gsm-[wwan]

図6.23 データ通信の終了


6.2.6.4.2. 3G/LTEのデータ接続を再開する

データ通信を開始します。

[armadillo ~]# nmcli connection up gsm-[wwan]
[armadillo ~]# systemctl start connection-recover.service

図6.24 データ通信の開始


6.2.6.4.3. 3G/LTEのコネクション設定を編集する場合の注意事項

3G/LTEの設定情報をnmcli connection modifyコマンドで編集する場合、パスワード情報がリセットされます。次に示すコマンドを実行し、都度パスワードを再設定してください。

[armadillo ~]# nmcli connection modify gsm-[wwan] gsm.password [password]

図6.25 nmcli connection modifyコマンドで3G/LTEのパスフレーズを設定する


6.2.6.5. 3G/LTE再接続サービス

3G/LTE再接続サービスは3G/LTEのデータ接続の状態を定期的に監視し、切断を検出した場合に再接続を行うサービスです。

6.2.6.5.1. サービスの仕様

microSIMが接続されており、NetworkManagerの有効な3G/LTEのコネクション設定がされているとき、120秒に一度、コネクションの状態を監視します。

コネクションが無効になっている場合、切断状態と判定しコネクションを有効にします。コネクションが有効になっている場合、特定の宛先にPINGを実行します。PINGがエラーになったとき切断状態と判定し、コネクションの無効化・有効化を行うことで再接続を実施します。

コネクションの無効化・有効化による再接続が2回以上失敗した場合、3G/LTEモジュールの動作異常と判断し、3G/LTEモジュールの電源をOFF・ONして再接続を実施します。

6.2.6.5.2. 工場出荷状態の設定

工場出荷状態で有効化されており、システム起動時にサービスが自動的に開始されます。PINGを実行する宛先は、デフォルトで"8.8.8.8"です。ご利用の環境に合わせて設定ファイル(/etc/connection-recover/gsm-[wwan]_connection-recover.conf)を適宜変更してください。

6.2.6.5.3. 停止・開始

3G/LTE再接続サービスを停止するには、次に示すコマンドを実行してください。

[armadillo ~]# systemctl stop connection-recover.service

図6.26 3G/LTE再接続サービスの停止


3G/LTE再接続スクリプトを開始するには、次に示すコマンドを実行してください。

[armadillo ~]# systemctl start connection-recover.service

図6.27 3G/LTE再接続サービスの開始


6.2.6.6. ModemManager について

ここでは ModemMamager と、mmcli について説明します。

Armadillo-IoT にはネットワークを管理する NetworkManager とは別に、モデムを管理する ModemManager がインストールされています。 ModemManager はモバイルブロードバンドデバイス(3G/LTEモジュールなど)の操作および、接続状況の管理などを行います。

ModemManager のコマンドラインツールである mmcli を使用することで、3G/LTE通信の電波強度やSIMカードの情報(電話番号やIMEIなど)を取得することが可能です。mmcli の詳しい使いかたについては man mmcli を参照してください。

6.2.6.6.1. 認識されているモデムの一覧を取得する

認識されているモデムの一覧を取得するには、次のようにコマンドを実行します。

[armadillo ~]# mmcli -L

Found 1 modems:
        /org/freedesktop/ModemManager1/Modem/0 [Quectel] EC25

図6.28 認識されているモデムの一覧の取得


6.2.6.6.2. モデムの情報を取得する

モデムの状態を取得するには、次のようにコマンドを実行します。

[armadillo ~]# mmcli -m 0

/org/freedesktop/ModemManager1/Modem/0 (device id 'a0b218d267ac0fecdf7b27d61e3308b8f8c7e148')
  -------------------------
  Hardware |   manufacturer: 'XXXXXXX'
           |          model: 'XXXXXXX'
           |       revision: 'XXXXXXXXXXXXXXXX'

(省略)

図6.29 モデムの情報を取得する


[ティップ]

モデムの情報を取得するには、microSIMが取り付けられている必要があります。正しくmicroSIMが取り付けられていることを確認してください。

6.2.6.6.3. microSIMの情報を取得する

microSIMの情報を取得するには、次のようにコマンドを実行します。

[armadillo ~]# mmcli -m 0
(省略)
-------------------------
SIM      |           path: '/org/freedesktop/ModemManager1/SIM/[number]' # [number]を次のコマンドで指定
(省略)
[armadillo ~]# mmcli -i [number]
SIM '/org/freedesktop/ModemManager1/SIM/0'
  -------------------------
  Properties |          imsi : 'XXXXXXXXXXXXXXX'
             |            id : 'XXXXXXXXXXXXXXXXXXX'
             |   operator id : 'XXXXX'
             | operator name : 'XXXXXXXXXX'

図6.30 microSIMの情報を取得する


6.2.6.6.4. 回線情報を取得する

回線情報を取得するには、次のようにコマンドを実行します。

[armadillo ~]# mmcli -m 0
(省略)
-------------------------
Bearers  |          paths: '/org/freedesktop/ModemManager1/Bearer/[number]' # [number]を次のコマンドで指定
[armadillo ~]# mmcli -b [number]
Bearer '/org/freedesktop/ModemManager1/Bearer/0'
  -------------------------
  Status             |   connected: 'yes'
                     |   suspended: 'no'
                     |   interface: '[wwan]'
                     |  IP timeout: '20'
  -------------------------
  Properties         |         apn: 'XXXXXXXXXX'
                     |     roaming: 'allowed'
                     |     IP type: 'none'
                     |        user: 'XXXX'
                     |    password: 'XXXX'
                     |      number: '*99#'
                     | Rm protocol: 'unknown'
  -------------------------
  IPv4 configuration |   method: 'ppp'
                     |  address: 'unknown'
                     |   prefix: '0'
                     |  gateway: 'unknown'
                     |      DNS: none
  -------------------------
  IPv6 configuration |   method: 'unknown'

図6.31 回線情報を取得する


6.2.7. NetworkManagerによる設定例

ここでは、図6.32「ネットワーク構成図」を例にとってNetworkManagerを使った設定例を紹介します。

ネットワーク構成図

図6.32 ネットワーク構成図


表6.7 ネットワークのアドレス情報

ノード名ネットワークデバイスIPアドレスネットワークアドレス
Armadilloeth0192.168.0.2192.168.0.0/24
wlan0172.16.xxx.xxx[a]172.16.0.0/16[a]
[wwan][b]xxx.xxx.xxx.xxx[a]xxx.xxx.xxx.xxx[a]
Routereth0192.168.0.1192.168.0.0/24
eth1192.168.10.1192.168.10.0/24
Servereth0192.168.10.2192.168.10.0/24
Access Pointeth0172.16.0.1172.16.0.0/16

[a] DHCPによる自動取得

[b] 3G/LTEモジュールのネットワークデバイス


6.2.7.1. ネットワーク設定手順

図6.32「ネットワーク構成図」に示すネットワークを構築する際のネットワーク設定手順は以下のようになります。なお、作成したコネクションは/etc/NetworkManager/system-connections/に保存され、Armadilloの再起動後も有効化されます。

手順6.1 ネットワーク設定手順

  1. eth0, [wwan], wlan0の状態がdisconnectedになっていることを確認します。

    [armadillo ~]# nmcli device
    DEVICE    TYPE      STATE         CONNECTION
    eth0      ethernet  disconnected  --
    [wwan]   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     --

    disconnected以外の状態になっていた場合、表6.8「デバイスの状態をdisconnectedにする方法」に従い、各デバイスの状態をdisconnectedにしてください。

    表6.8 デバイスの状態をdisconnectedにする方法

    デバイスの状態対処方法
    unmanaged/etc/network/interfacesにデバイスの設定が記述されていないか確認してください。記述されていた場合は、その記述を削除してください。
    unavailableLANケーブルが抜けていないか確認してください。抜けていた場合、LANケーブルを接続してください。
    connectingデバイスを使用したコネクションを有効化する処理が実行されています。図6.4「コネクションの無効化」を参照してコネクションを無効化してください。
    connectedデバイスを使用してコネクションが有効化されています。図6.4「コネクションの無効化」を参照してコネクションを無効化してください。

  2. 無線 LAN(wlan0)の設定を行います。

    [armadillo ~]# nmcli connection add type wifi ifname wlan0 ssid [essid]  1
    [armadillo ~]# nmcli connection modify wifi-wlan0 ipv4.never-default yes  2
    [armadillo ~]# nmcli connection modify wifi-wlan0 \
    802-11-wireless-security.key-mgmt wpa-psk \
    802-11-wireless-security.psk [passphrase]  3
    [armadillo ~]# nmcli connection down wifi-wlan0  4
    [armadillo ~]# nmcli connection up wifi-wlan0  5

    1

    無線 LAN(wlan0)のコネクションを作成します。

    2

    無線 LAN(wlan0)のコネクションのデフォルトゲートウェイを無効化します。

    3

    暗号化キー管理方式を wpa-psk に設定し、パスフレーズを設定します。

    4

    修正を反映させるため、一旦、無線 LAN(wlan0)のコネクションを無効化します。

    5

    無線 LAN(wlan0)のコネクションを有効化します。

  3. 有線 LAN インターフェース(eth0)の設定を行います。

    [armadillo ~]# nmcli connection add type ethernet ifname eth0  1
    [armadillo ~]# nmcli connection modify ethernet-eth0 ipv4.method manual \
    ipv4.addresses "192.168.0.2/24"  2
    [armadillo ~]# nmcli connection modify ethernet-eth0 \
    ipv4.routes "192.168.10.0/24 192.168.0.1"  3
    
    [armadillo ~]# nmcli connection modify ethernet-eth0 ipv4.never-default yes  4
    [armadillo ~]# nmcli connection down ethernet-eth0  5
    [armadillo ~]# nmcli connection up ethernet-eth0  6

    1

    有線 LAN インターフェース(eth0)のコネクションを作成します。

    2

    有線 LAN インターフェース(eth0)のコネクションに固定 IP アドレスを設定します。

    3

    有線 LAN インターフェース(eth0)のコネクションに経路情報を追加します。

    4

    有線 LAN インターフェース(eth0)のコネクションのデフォルトゲートウェイを無効化します。

    5

    修正を反映させるため、一旦、有線 LAN インターフェース(eth0)のコネクションを無効化します。

    6

    有線 LAN インターフェース(eth0)のコネクションを有効化します。

  4. 3G/LTEの設定を行います。

    [armadillo ~]# nmcli connection add type gsm ifname [wwan] apn [apn] user [user] password [password]  1
                

    1

    3G/LTE(ttyUSB2)のコネクションを作成します。

  5. eth0, [wwan], ppp0, wlan0の状態がconnectedになっていることを確認します。

    [armadillo ~]# nmcli device
    DEVICE    TYPE      STATE      CONNECTION
    eth0      ethernet  connected  ethernet-eth0
    [wwan]    gsm       connected  gsm-[wwan]
    ppp0      unknown   connected  ppp0
    wlan0     wifi      connected  wifi-wlan0
    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. ルーティングテーブルを確認します。

    [armadillo ~]# route
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    default         xxx.xxx.xxx.xxx 0.0.0.0         UG    1024   0        0 ppp0
    link-local      *               255.255.0.0     U     1000   0        0 wlan0
    172.16.0.0      *               255.255.0.0     U     0      0        0 wlan0
    192.168.0.0     *               255.255.255.0   U     0      0        0 eth0
    192.168.10.0    192.168.0.1     255.255.255.0   UG    1      0        0 eth0

6.2.8. ファイアーウォール

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

[armadillo ~]# iptables --list

図6.33 iptables


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

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

[注記]

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

6.2.9.1. HTTPサーバー

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

Armadilloトップページ

図6.34 Armadilloトップページ


6.3. ストレージ

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

表6.9 ストレージデバイス

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

[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.35 mountコマンド書式


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

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

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

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

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

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


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

[armadillo ~]# umount /mnt

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


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

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

パーティション構成を変更したい場合、fdiskコマンドを使用します。fdiskコマンドの使用例として、一つのパーティションで構成されているSDカードのパーティションを、2つに分割する例を図6.38「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.38 fdiskコマンドによるパーティション変更


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

[armadillo ~]# mkfs.ext4 /dev/mmcblk0p1

図6.39 EXT4ファイルシステムの構築


6.4. LED

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

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

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

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

Armadillo-IoT の外観から見たユーザーLEDの位置を次に示します。

ユーザーLEDの位置

図6.40 ユーザーLEDの位置


以降の説明では、任意の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.41 LEDを点灯させる


[ティップ]

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

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

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

図6.42 LEDを消灯させる


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

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

図6.43 LEDの状態を表示する


6.4.2. トリガを使用する

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

表6.11 triggerの種類

設定説明
noneトリガを設定しません。
mmc0SDインターフェース(CON4)のアクセスランプにします。
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.44 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.45 LEDのトリガを表示する


6.5. RTC

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

電源が切断されても時刻を保持させたい場合は、RTCバックアップインターフェース(CON13)に外付けバッテリー(対応バッテリー例: CR1220)を接続することができます。

6.5.1. RTCに時刻を設定する

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

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

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

フィールド意味
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 ~]# date 060212342015.56 2
Tue Jun  2 12:34:56 JST 2015
[armadillo ~]# date 3
Tue Jun  2 12:34:57 JST 2015

1

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

2

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

3

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

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


[ティップ]

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

[armadillo ~]# ntpdate [NTP SERVER]
14 Jun 10:03:23 ntpdate[2176]: adjust time server x.x.x.x offset 0.002323 sec
[armadillo ~]# date
Thu Jun 14 10:03:35 UTC 2018

また、Armadillo-IoTのタイムゾーンはデフォルトでUTCに設定されています。timedatectlコマンドで、これを変更することができます。

[armadillo ~]# date
Thu Jun 14 10:03:35 UTC 2018
[armadillo ~]# timedatectl set-timezone Asia/Tokyo
[armadillo ~]# date
Thu Jun 14 19:04:19 JST 2018

システムクロックを設定後、ハードウェアクロックを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.47 ハードウェアクロックを設定


6.6. ユーザースイッチ

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

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

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

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


[警告]

インプットデバイスは検出された順番にインデックスが割り振られます。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)
    Event code 3 (KEY_2)
    Event code 4 (KEY_3)
Properties:
Testing ... (interrupt to exit)
Event: time 1458887649.091957, type 1 (EV_KEY), code 3 (KEY_2), value 1 1
Event: time 1458887649.091957, -------------- EV_SYN ------------
Event: time 1458887650.311954, type 1 (EV_KEY), code 3 (KEY_2), value 0 2
Event: time 1458887650.311954, -------------- EV_SYN ------------
                 :
[armadillo ~]#

1

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

2

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

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


6.7. 温度センサ

Armadillo-IoTの温度センサーは、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.49 i.MX 7Dualの測定温度を取得する


6.8. ADコンバーター

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

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.50 ADコンバータへの入力電圧の計算式


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

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

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

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

[armadillo ~]# cat /sys/bus/iio/devices/iio:device0/in_voltage0_raw
1766
[armadillo ~]# cat /sys/bus/iio/devices/iio:device0/in_voltage_scale
0.714111328

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


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

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

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

図6.52 電源電圧の計算式


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

[ティップ]

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+24)/24)}'
11770

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.53 vintriggerコマンドのヘルプ


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

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

図6.54 vintriggerコマンド例


[ティップ]

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

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

1

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

2

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

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

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

RS232Cアドオンモジュールを接続するアドオンインターフェースと、TTYデバイスファイルの対応を次に示します。

表6.15 アドオンインターフェースとTTYデバイスファイル

アドオンインターフェースTTYデバイスファイル
CON1/dev/ttymxc0
CON2/dev/ttymxc1

[注記]

工場出荷状態の開発セットは、CON1にRS232Cアドオンモジュールが接続されています。

[ティップ]

RS232Cアドオンモジュールが接続されているアドオンインターフェースは、Linuxカーネルの起動ログで確認することができます。CON1に接続されている場合は次のように出力されます。

Atmark Techno RS232C board detected at CON1(Rev 2, SerialNumber=xxxx).

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

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

絶縁シリアルアドオンモジュールを接続するアドオンインターフェースと、TTYデバイスファイルの対応を次に示します。

表6.16 アドオンインターフェースとTTYデバイスファイル

アドオンインターフェースTTYデバイスファイル
CON1/dev/ttymxc0
CON2/dev/ttymxc1

[ティップ]

絶縁シリアルアドオンモジュールが接続されているアドオンインターフェースは、Linuxカーネルの起動ログで確認することができます。CON1に接続されている場合は次のように出力されます。

Atmark Techno RS485/RS422/RS232C board detected at CON1(Rev 2, SerialNumber=xxxx).

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

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

[警告]

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

変更が可能なRS485設定と、自動的に有効化された場合の初期値を表6.17「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_uart1=

CON1に接続されているUART1(ttymxc0)のRS485設定を指定します。

imx.rs485_uart2=

CON2に接続されているUART2(ttymxc1)のRS485設定を指定します。


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

<flags>,<delay_rts_before_send>,<delay_rts_after_send>

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

=> setenv optargs imx.rs485_uart2=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アドオンモジュールの詳細は「Armadillo-IoT RN4020アドオンモジュール BT00」を参照して下さい。

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

表6.19 アドオンインターフェースとTTYデバイスファイル

アドオンインターフェースTTYデバイスファイル
CON1/dev/ttymxc0
CON2/dev/ttymxc1

[ティップ]

RN4020アドオンモジュールが接続されているアドオンインターフェースは、Linuxカーネルの起動ログで確認することができます。CON1に接続されている場合は次のように出力されます。

Atmark Techno RN4020 board detected at CON1(Rev 2, SerialNumber=xxxx).

6.11.1. 設定情報を取得する

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

アドオンインターフェース(CON2)に接続したRN4020アドオンモジュールに搭載されているRN4020の設定情報を取得する手順を次に示します。

手順6.2 設定情報の取得

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

    [armadillo ~]$ cu -l /dev/ttymxc0 -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アドオンモジュールと記載します)は コアスタッフ製 BP35A3 又は CS35A3が搭載されています。BP35A3/CS35A3にはEnOcean無線トランシーバーTCM410Jが搭載されています。EnOceanアドオンモジュールの詳細は「Armadillo-IoT EnOceanアドオンモジュール EN00」を参照して下さい。

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

表6.20 アドオンインターフェースとTTYデバイスファイル

アドオンインターフェースTTYデバイスファイル
CON1/dev/ttymxc0
CON2/dev/ttymxc1

[ティップ]

EnOceanアドオンモジュールが接続されているアドオンインターフェースは、Linuxカーネルの起動ログで確認することができます。CON1に接続されている場合は次のように出力されます。

Atmark Techno EnOcean board detected at CON1(Rev 2, SerialNumber=xxxx).

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

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

アドオンインターフェース(CON1)に接続したEnOceanアドオンモジュールで受信する手順を次に示します。

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

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

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

    [armadillo ~]$ hexdump -v /dev/ttymxc0
    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アドオンモジュールの詳細は「Armadillo-IoT Wi-SUNアドオンモジュール WS00」を参照して下さい。

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

表6.21 アドオンインターフェースとTTYデバイスファイル

アドオンインターフェースTTYデバイスファイル
CON1/dev/ttymxc0
CON2/dev/ttymxc1

[ティップ]

Wi-SUNアドオンモジュールが接続されているアドオンインターフェースは、Linuxカーネルの起動ログで確認することができます。CON1に接続されている場合は次のように出力されます。

Atmark Techno Wi-SUN board detected at CON1(Rev 2, SerialNumber=xxxx).

6.13.1. 設定情報を取得する

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

アドオンインターフェース(CON1)に接続したWi-SUNアドオンモジュールに搭載されているBP35A1の設定情報を取得する手順を次に示します。

手順6.4 設定情報の取得

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

    [armadillo ~]$ cu -l /dev/ttymxc0 -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デバイスファイルから制御を行うことができます。絶縁RS485アドオンモジュールの詳細は「Armadillo-IoT 絶縁RS485アドオンモジュール RS02」を参照して下さい。

絶縁 RS485アドオンモジュールを接続するアドオンインターフェースと、TTYデバイスファイルの対応を次に示します。

表6.22 アドオンインターフェースとTTYデバイスファイル

アドオンインターフェースTTYデバイスファイル
CON1/dev/ttymxc0
CON2/dev/ttymxc1

[ティップ]

絶縁 RS485アドオンモジュールが接続されているアドオンインターフェースは、Linuxカーネルの起動ログで確認することができます。CON1に接続されている場合は次のように出力されます。

Atmark Techno RS485 board detected at CON1(Rev 1, SerialNumber=xxxx).

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

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

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

表6.23 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.24 Linuxカーネル起動オプションからのRS485設定

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

CON1に接続されているUART1(ttymxc0)のRS485設定を指定します。

imx.rs485_uart2=

CON2に接続されているUART2(ttymxc1)のRS485設定を指定します。


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

<flags>,<delay_rts_before_send>,<delay_rts_after_send>

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

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

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

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

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

絶縁 IO アドオンモジュールを接続するアドオンインターフェースと、GPIO クラスディレクトリの対応を表6.25「アドオンインターフェースとGPIO クラスディレクトリ」に示します。IIO デバイスは、デバイスを認識した順番で iio:deviceN (N は'0'からの連番)となります。

表6.25 アドオンインターフェースとGPIO クラスディレクトリ

アドオンインターフェースポートGPIO クラスディレクトリ
CON1デジタル出力 1/sys/class/gpio/gpio89
デジタル出力 2/sys/class/gpio/gpio90
デジタル入力 1/sys/class/gpio/gpio141
デジタル入力 2/sys/class/gpio/gpio140
CON2デジタル出力 1/sys/class/gpio/gpio106
デジタル出力 2/sys/class/gpio/gpio107
デジタル入力 1/sys/class/gpio/gpio181
デジタル入力 2/sys/class/gpio/gpio180

[ティップ]

絶縁 IO アドオンモジュールが接続されているアドオンインターフェースは、Linuxカーネルの起動ログで確認することができます。CON2に接続されている場合は次のように出力されます。

Atmark Techno DI/DO/AD board detected at CON2(Rev 1, SerialNumber=xxxx).

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

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

アドオンインターフェース(CON2)に接続した絶縁 IO アドオンモジュールのデジタル出力 1を開放に設定する例を次に示します。

[armadillo ~]# echo 0 > /sys/class/gpio/gpio106/value

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


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

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

アドオンインターフェース(CON2)に接続した絶縁 IO アドオンモジュールのデジタル入力 1の状態を取得する例を次に示します。

[armadillo ~]# cat /sys/class/gpio/gpio181/value
1

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


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.57 ADコンバータへの入力電圧の計算式


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

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

ファイル説明
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.58 ADコンバーターへの入力電圧を取得する


図6.58「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


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

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

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

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

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