第7章 動作確認方法

目次

7.1. 動作確認を行う前に
7.2. ネットワーク
7.2.1. 接続可能なネットワーク
7.2.2. ネットワークの設定方法
7.2.2.1. nmcli について
7.2.3. nmcliの基本的な使い方
7.2.3.1. コネクションの一覧
7.2.3.2. コネクションの有効化・無効化
7.2.3.3. コネクションの作成
7.2.3.4. コネクションの削除
7.2.3.5. コネクションを修正する
7.2.3.6. コネクションの修正を反映する
7.2.3.7. デバイスの一覧
7.2.3.8. デバイスの接続
7.2.3.9. デバイスの切断
7.2.4. 有線LAN
7.2.4.1. 有線LANインターフェース(eth0)のコネクションの作成
7.2.4.2. 有線LANのネットワーク設定を変更する
7.2.4.3. 有線LANの接続を確認する
7.2.5. 無線LAN
7.2.5.1. 無線LANアクセスポイントに接続する
7.2.5.2. 無線LANのネットワーク設定を変更する
7.2.5.3. 無線LANの接続を確認する
7.2.6. LTE
7.2.6.1. LTE データ通信設定を行う前に
7.2.6.2. LTEのコネクションを作成する
7.2.6.3. データ接続状態の確認
7.2.6.4. LTEで通信確認をする
7.2.6.5. LTEのデータ通信を終了する
7.2.6.6. LTEのデータ接続を再開する
7.2.6.7. LTEのコネクション設定を編集する場合の注意事項
7.2.6.8. LTE再接続サービス
7.2.6.9. LTEでデータ通信をする場合のネットワーク構成について
7.2.6.10. ModemManager について
7.2.7. NetworkManagerによる設定例
7.2.7.1. ネットワーク設定手順
7.2.8. ファイアーウォール
7.2.9. ネットワークアプリケーション
7.2.9.1. HTTPサーバー
7.2.10. Armadilloにファイルを転送する
7.2.10.1. scp コマンドを使って転送する
7.2.11. Wi-SUN
7.2.11.1. 設定情報を取得する
7.3. ストレージ
7.3.1. ストレージの使用方法
7.3.2. ストレージのパーティション変更とフォーマット
7.4. LED
7.4.1. 初期出荷状態のLEDの動作
7.4.2. LEDを点灯/消灯する
7.4.3. トリガを使用する
7.5. RTC
7.5.1. RTCに時刻を設定する
7.6. ユーザースイッチ
7.6.1. イベントを確認する
7.7. ADコンバーター
7.7.1. 電圧を取得する
7.7.2. 電源電圧を監視する
7.8. RS422/RS485
7.8.1. RS422/RS485の通信設定を変更する

7.1. 動作確認を行う前に

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

イメージファイルの書き換え方法は、6章ソフトウェアの更新と初期化を参照してください。

7.2. ネットワーク

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

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

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

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

ネットワークネットワークデバイス備考
有線LANeth0 
無線LANwlan0TI製 WL1837MOD 搭載
LTE

ttyACM0 または ttyCommModem[a]

Telit 製 ELS31-J 搭載

[a] modemmanager(v1.4.0-1atmark8), atmark-x1-base(v1.6.0-1)以降がインストールされている場合、ttyCommModem が利用可能です。利用方法は「LTE のネットワークデバイス名に ttyCommModem を利用する」をご確認ください。


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

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

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

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

7.2.2.1. nmcli について

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

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

nmcli [ OPTIONS ] OBJECT { COMMAND | help }

図7.1 nmcli のコマンド書式


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

[注記]

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

7.2.3. nmcliの基本的な使い方

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

7.2.3.1. コネクションの一覧

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

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

図7.2 コネクションの一覧


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

コネクションを有効化するには、次のようにコマンドを実行します。[ID] には「コネクションの一覧」で確認したNAMEに表示される値を入力します。

[armadillo ~]# nmcli connection up [ID]

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


[armadillo ~]# nmcli connection up "Wired connection 1"

図7.4 コネクションの有効化の例


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

[armadillo ~]# nmcli connection down [ID]

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


7.2.3.3. コネクションの作成

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

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

図7.6 コネクションの作成


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

[注記]

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

7.2.3.4. コネクションの削除

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

[armadillo ~]# nmcli connection delete [ID]

図7.7 コネクションの削除


[注記]

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

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

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

[ティップ]

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

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

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

[警告]

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

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

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

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

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

[armadillo ~]# nmcli connection delete [ID]
[armadillo ~]# nmcli connection add con-name [ID] type [type] ifname [interface name]
[armadillo ~]# nmcli connection modify [ID] \
ipv4.method manual ipv4.addresses "192.0.2.10/24 192.0.2.1"

図7.8 固定IPアドレス設定


7.2.3.5.2. DHCPに設定する

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

[armadillo ~]# nmcli connection delete [ID]
[armadillo ~]# nmcli connection add con-name [ID] type [type] ifname [interface name]
[armadillo ~]# nmcli connection modify [ID] ipv4.method auto

図7.9 DHCP設定


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

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

[armadillo ~]# nmcli connection delete [ID]
[armadillo ~]# nmcli connection add con-name [ID] type [type] ifname [interface name]
[armadillo ~]# nmcli connection modify [ID] ipv4.dns 192.0.2.10

図7.10 DNSサーバーの指定


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

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

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

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


7.2.3.7. デバイスの一覧

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

[armadillo ~]# nmcli device
DEVICE    TYPE      STATE         CONNECTION
eth0      ethernet  connected     Wired connection 1
ttyACM0   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     --

図7.12 デバイスの一覧


7.2.3.8. デバイスの接続

デバイスを接続するには、次のようにコマンドを実行します。[ifname] には図7.12「デバイスの一覧」で確認したDEVICEに表示される値を入力します。

[armadillo ~]# nmcli device connect [ifname]

図7.13 デバイスの接続


[armadillo ~]# nmcli device connect eth0

図7.14 デバイスの接続例


[注記]

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

7.2.3.9. デバイスの切断

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

[armadillo ~]# nmcli device disconnect [ifname]

図7.15 デバイスの切断


7.2.4. 有線LAN

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

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

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

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

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


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

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

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

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

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

[armadillo ~]# ping -c 4 192.0.2.20

図7.17 有線LANのPING確認


[注記]

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

7.2.5. 無線LAN

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

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

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

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

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

図7.18 無線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  --
	

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


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

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

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

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

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

[armadillo ~]# ping -c 4 192.0.2.20

図7.20 無線LANのPING確認


[注記]

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

7.2.6. LTE

ここでは、Armadillo-IoT に搭載されている LTEモジュール「Telit製LTE通信モジュールELS31-J」の使用方法について説明します。

[ティップ]

LTEモジュール「Telit製LTE通信モジュールELS31-J」はドコモ相互接続性試験を完了しています。

[警告]

LTEモジュールの制約により工場出荷状態では、Armadillo-IoT側から開始されたセッションによる内向きのパケットを除いて、LTE通信網側からのArmadillo-IoTに対するパケットが遮断されます。

このため、Armadillo-IoTにSSHサーバーやWebサーバー等を起動させ、グローバルIPが割り当てられる回線を利用しても、LTE通信網側からアクセスを行うことはできません。

LTE 通信網側からArmadillo-IoTに対してアクセスを行いたい場合は、「ELS31-J Firewall設定変更ツール」を使用して、ELS31-JのFirewall設定を変更してください。

7.2.6.1. LTE データ通信設定を行う前に

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

[警告]

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

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

microSIM

図7.21 microSIM


microSIMの取り付け

図7.22 microSIMの取り付け


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

  • APN

  • ユーザー名

  • パスワード

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

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

7.2.6.2. LTEのコネクションを作成する

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

コネクションの作成後は、自動的にデータ接続が行われます。また、一度コネクションを作成すると起動時は自動的にデータ接続が行われます。

表7.3 APN情報設定例

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

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

図7.23 LTEのコネクションの作成


7.2.6.3. データ接続状態の確認

コネクションの作成後、データ接続が完了する前には40秒程度かかります。この間、nmcli device コマンドを実行することで接続状態の確認を行うことができます。

[armadillo ~]# nmcli device
DEVICE    TYPE      STATE         CONNECTION 
[wwan]   gsm       [status]      -- 
...(省略)...

図7.24 nmcli device コマンドでの接続状態の確認


代表的な[status]を次に示します。

表7.4 nmcli device コマンドで取得可能な代表的なstatus

status
disconnected
connecting
connected

7.2.6.4. LTEで通信確認をする

ご利用になるサービスとの通信を検証する、ICMP に対応しているアドレス (8.8.8.8など) と PING 通信を行うなどの方法で LTE の接続を確認してください。

[armadillo ~]# ping -c 3 8.8.8.8 -I usb1

図7.25 LTEのPING確認


7.2.6.5. LTEのデータ通信を終了する

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

LTEの再接続スクリプトを停止したのち、データ通信を終了します。

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

図7.26 データ通信の終了


7.2.6.6. LTEのデータ接続を再開する

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

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

図7.27 データ通信の開始


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

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

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

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


7.2.6.8. LTE再接続サービス

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

7.2.6.8.1. サービスの仕様

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

コネクションの状態を監視する周期はソフトウェアのバージョンによって異なります。ソフトウェアのバージョンとコネクションの状態を監視する周期の関係を表7.5「ソフトウェアバージョンとコネクション状態を監視周期」に示します。

表7.5 ソフトウェアバージョンとコネクション状態を監視周期

ソフトウェアバージョン監視周期(秒)
atmark-x1-base v1.4.1-1以前(ルートファイルシステム: debian-jessie-armhf_aiotg3l_20161221.tar.gz以前)300
atmark-x1-base v1.5.0-1以降(ルートファイルシステム: debian-jessie-armhf_aiotg3l_20170419.tar.gz以降)120

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

atmark-x1-base v1.5.0-1以降(ルートファイルシステム: debian-jessie-armhf_aiotg3l_20161221.tar.gz以降)に含まれる LTE再接続サービスでは、コネクションの無効化・有効化による再接続が2回以上失敗した場合、LTEモジュールの動作異常と判断し、LTEモジュールの電源をOFF・ONして再接続を実施します。

7.2.6.8.2. 工場出荷状態の設定

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

7.2.6.8.3. 状態確認・停止・開始

LTE再接続サービスの状態を確認するには、次に示すコマンドを実行してください。

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

図7.29 LTE再接続サービスの状態確認


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

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

図7.30 LTE再接続サービスの停止


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

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

図7.31 LTE再接続サービスの開始


7.2.6.9. LTEでデータ通信をする場合のネットワーク構成について

Armadillo-IoT 搭載のLTEモジュール(ELS31-J)は、USBインターフェースでArmadillo-IoTのプロセッサ i.MX 7Dualと接続しています。USBインターフェースはUSB CDC ACM、USB CDC Ethernetとして動作します。デバイスファイルとネットワークインターフェースの割り当ては、「LTE」を参照してください。

Armadillo-IoTでは、このUSB CDC EthernetによってLTEモジュールとLinuxの間でLANを構成します。

それぞれのIPアドレスの割り当てを、図7.32「LTEでデータ通信をする場合のネットワーク構成」に示します。LinuxのIPアドレスを空間で示しているのは、LTEモジュール内部で動作しているDHCPサーバーがIPアドレスを提供するためです。

LTEでデータ通信をする場合のネットワーク構成

図7.32 LTEでデータ通信をする場合のネットワーク構成


LTE回線側から提供されるIPアドレスはLTEモジュール内部で動作するモデムに割り当てられます。

USB CDC Ethernet側のネットワークと、LTE回線網側のネットワークがNATされており、LTEモジュール:192.168.15.1をArmadillo-IoTのデフォルトゲートウェイに設定すると、Armadillo-IoTから、LTE回線網側のアドレスへの通信を行うことができます。

また、LTEモジュール内部ではDNSサーバーが動作しています。 このDNSサーバーは、LTE通信網側から提供されるDNSサーバーを上位のDNSサーバーとして使用します。したがって、LTEでのデータ接続を行なうとNetworkManagerはArmadillo-IoTのDNSサーバーとして192.168.15.1を設定します。これによって、名前解決はLTE通信網から提供されるDNSサーバーによって行うことができます。

7.2.6.10. ModemManager について

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

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

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

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

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

[armadillo ~]# mmcli -L

Found 1 modems:
	/org/freedesktop/ModemManager1/Modem/0 [Cinterion] ELS31-J

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


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

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

[armadillo ~]# mmcli -m 0

/org/freedesktop/ModemManager1/Modem/0 (device id '256a474d480bc596eeaa3b3a2bed156fac53d99d')
  -------------------------
  Hardware |   manufacturer: 'Cinterion'
           |          model: 'ELS31-J'
           |       revision: 'REVISION 4.3.2.1b'
           |      supported: 'gsm-umts, lte'
           |        current: 'gsm-umts, lte'
           |   equipment id: '356778079984978'
  -------------------------
  System   |         device: '/sys/devices/soc/30800000.aips-bus/30b20000.usb/ci_hdrc.1/usb1/1-1'
           |        drivers: 'cdc_acm, cdc_ether'
           |         plugin: 'Cinterion ELS'
           |   primary port: '[wwan]'
           |          ports: '[wwan] (at), usb1 (net)'
  -------------------------

(省略)

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


[ティップ]

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

7.2.6.10.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'

図7.35 microSIMの情報を取得する


7.2.6.10.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'

図7.36 回線情報を取得する


7.2.7. NetworkManagerによる設定例

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

ネットワーク構成図

図7.37 ネットワーク構成図


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

ノード名ネットワークデバイスIPアドレスネットワークアドレス
Armadilloeth0192.168.0.2192.168.0.0/24
wlan0172.16.xxx.xxx[a]172.16.0.0/16[a]
ttyACM0 または ttyCommModem[b][c]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] LTEモジュールのネットワークデバイス

[c] modemmanager(v1.4.0-1atmark8), atmark-x1-base(v1.6.0-1)以降がインストールされている場合、ttyCommModem が利用可能です。利用方法は「LTE のネットワークデバイス名に ttyCommModem を利用する」をご確認ください。


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

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

手順7.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以外の状態になっていた場合、表7.7「デバイスの状態をdisconnectedにする方法」に従い、各デバイスの状態をdisconnectedにしてください。

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

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

  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. LTE(ttyACM0 または ttyCommModem[12])の設定を行います。

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

    1

    LTE(ttyACM0 または ttyCommModem[13])のコネクションを作成します。

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

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

7.2.8. ファイアーウォール

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

[armadillo ~]# iptables --list

図7.38 iptables


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

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

[注記]

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

7.2.9.1. HTTPサーバー

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

Armadilloトップページ

図7.39 Armadilloトップページ


7.2.10. Armadilloにファイルを転送する

ATDE上のテキストファイル(hello.txt)をArmadilloへ転送することを例に、ATDEからArmadilloへファイルを転送する方法を紹介します。

7.2.10.1. scp コマンドを使って転送する

  1. ATDE から Armadillo へ scp コマンドを使ってファイルを転送するには、Armadillo に SSH Server がインストールされている必要があります。 apt-get コマンドで openssh-server をインストールしてください。 [14]

    [armadillo ~]# apt-get install openssh-server
  2. Armadillo のIPアドレスを ip コマンドで確認します。ここで確認したIPアドレスはファイルを転送する時に使用します。

    [armadillo ~]# ip addr show eth0
          2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
        link/ether 00:0c:29:30:b0:e0 brd ff:ff:ff:ff:ff:ff
        inet 192.168.0.10/16 brd 192.168.0.255 scope global dynamic eth0
           valid_lft 65913sec preferred_lft 65913sec
        inet6 fe80::20c:29ff:fe30:b0e0/64 scope link
           valid_lft forever preferred_lft forever
  3. ATDE上で転送するテキストファイル(hello.txt)を作成します。

    [PC ~]$ echo "Hello world." > hello.txt
  4. 作成したテキストファイルをscpコマンドで転送します。IPアドレスは先ほど ip コマンドで確認したものを入力します。

    scp コマンドを実行するとパスワードが要求されますので、atmark ユーザーのパスワードを入力してください。

    [PC /]$ scp hello.txt atmark@192.168.0.10:~/
    atmark@192.168.0.10's password: 
    hello.txt                                     100%   13     0.0KB/s   00:00
  5. Armadillo にファイルが転送されたことを確認します。

    [armadillo ~]# ls /home/atmark/
    hello.txt
    [armadillo ~]# cat /home/atmark/hello.txt
    Hello world.

7.2.11. Wi-SUN

Armadillo-IoT G3L は、「サブユニットCON2 Wi-SUNモジュールインターフェース」 に ROHM製 Wi-SUN モジュール「BP35A1」を搭載させることができます。

Wi-SUNモジュールはシリアル接続されているため、TTYデバイスファイル(/dev/ttymxc2)経由でデーター通信を行うことができます。

7.2.11.1. 設定情報を取得する

BP35A1を制御する例として、設定情報の取得を行います。

手順7.2 設定情報の取得

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

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

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

    Disconnected.
    [armadillo ~]$ 

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

7.3. ストレージ

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

表7.8 ストレージデバイス

デバイス種類ディスクデバイス先頭パーティションインターフェース
microSD/microSDHC/microSDXCカード/dev/mmcblk* [a] /dev/mmcblk*p1microSDインターフェース (メインユニットCON12)
USBフラッシュメモリ/dev/sd* [b] /dev/sd*1USB ホストインターフェース (メインユニットCON11)

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

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


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

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

[ティップ]

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

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

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

mount [-t fstype] device dir

図7.40 mountコマンド書式


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

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

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

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

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

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


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

[armadillo ~]# umount /mnt

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


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

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

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

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


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

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

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


7.4. LED

Armadillo-IoT のLEDは、ソフトウェアで制御することができます。

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

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

LEDクラスディレクトリインターフェースデフォルトトリガ
/sys/class/leds/led3/ユーザーLED3none
/sys/class/leds/led4/ユーザーLED4default-on
/sys/class/leds/led5/ユーザーLED5none

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

ユーザーLEDの位置

図7.45 ユーザーLEDの位置


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

7.4.1. 初期出荷状態のLEDの動作

初期出荷状態のLEDの動作を次に示します。

表7.10 初期出荷状態のLEDの動作

インターフェース用途詳細
ユーザーLED3LTE LED

LTEのデータ接続中に点灯、切断で消灯します

※ 回線の瞬断や再接続処理中等に、点灯状態であるにもかかわらずデータ通信ができない場合があります

ユーザーLED4電源LED本体の電源が入っていると点灯、電源の切断で消灯します
ユーザーLED5未使用常時消灯しています

7.4.2. LEDを点灯/消灯する

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

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

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

図7.46 LEDを点灯させる


[ティップ]

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

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

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

図7.47 LEDを消灯させる


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

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

図7.48 LEDの状態を表示する


7.4.3. トリガを使用する

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

表7.11 triggerの種類

設定説明
noneトリガを設定しません。
mmc0microSDインターフェース(メインユニットCON12)のアクセスランプにします。
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

図7.49 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

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


7.5. RTC

Armadillo-IoT は、i.MX 7DualのRTC機能を利用しています。

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

7.5.1. RTCに時刻を設定する

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

システムクロックの設定方法は 「時刻の設定」 を参照してください。

システムクロックを設定後、ハードウェアクロックを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で正しく設定されていることを確認します。

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


[注記]

hwclockコマンドは、デフォルトで/dev/rtc(/dev/rtc0のシンボリックリンク)を使用します。/dev/rtc0にi.MX 7DualのRTC機能が割り当てられるのは、linux-3.14-x1-at14 以降です。at13以前のバージョンでは、Board Management ICのRTC機能が割り当てられます。

7.6. ユーザースイッチ

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

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

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

ユーザースイッチインプットデバイスファイルイベントコード
SW2/dev/input/event1code 356 (KEY_POWER2)


[警告]

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

7.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 356 (KEY_POWER2)
Properties:
Testing ... (interrupt to exit)
Event: time 1481116235.679594, type 1 (EV_KEY), code 356 (KEY_POWER2), value 1 1
Event: time 1481116235.679594, -------------- EV_SYN ------------
Event: time 1481116235.869587, type 1 (EV_KEY), code 356 (KEY_POWER2), value 0 2
Event: time 1481116235.869587, -------------- EV_SYN ------------
^C
[armadillo ~]#

1

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

2

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

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


7.7. ADコンバーター

Armadillo-IoT は、BMIC(Board Management IC)のADコンバーター機能により、電源電圧を取得することができます。

7.7.1. 電圧を取得する

電源電圧は、分圧されて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]

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


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

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

ファイル説明
in_voltage0_rawシングルエンド入力 CH0(電源電圧)の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

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


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

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

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

図7.55 電源電圧の計算式


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

7.7.2. 電源電圧を監視する

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

[警告]

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

vintriggerはatmark-x1-base v1.5.2-1以降(debian-jessie-armhf_aiotg3l_20180131.tar.gz 以降)で使用可能です。

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.

図7.56 vintriggerコマンドのヘルプ


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

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

図7.57 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

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

7.8. RS422/RS485

Armadillo-IoT には、RS422/RS485 のシリアルポートが 1 ポート登載されています。シリアルポートのデバイスドライバは、TTYデバイスとして実装されているためTTYデバイスファイルから制御を行うことができます。

シリアルポートインターフェースと、TTYデバイスファイルの対応を次に示します。

表7.14 シリアルポートインターフェースとTTYデバイスファイル

シリアルポートインターフェースTTYデバイスファイル
CON4/dev/ttymxc1

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

変更が可能なRS485設定とその初期値を表7.15「RS485設定と初期値」に示します。flagsは各ビットごとの論理和を示します。

表7.15 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をコンソールとして利用することはできません。

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

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

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

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

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

CON4のUART2(ttymxc1)のRS485設定を指定します。


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

<flags>,<delay_rts_before_send>,<delay_rts_after_send>

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

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


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

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

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

[12] modemmanager(v1.4.0-1atmark8), atmark-x1-base(v1.6.0-1)以降がインストールされている場合、ttyCommModem が利用可能です。利用方法は「LTE のネットワークデバイス名に ttyCommModem を利用する」をご確認ください。

[13] modemmanager(v1.4.0-1atmark8), atmark-x1-base(v1.6.0-1)以降がインストールされている場合、ttyCommModem が利用可能です。利用方法は「LTE のネットワークデバイス名に ttyCommModem を利用する」をご確認ください。

[14] Armadillo サイトからダウンロード出来る、ルートファイルシステムおよびインストールディスクには SSH Server がインストールされていません。

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

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

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